* updated files * queue and ready are now separate * checkpoint * found it! fixed missing call * cleaned up and refactored a bit * cleanup * whoops. make sure linter runs! * Make the queue itself static * addressed formatting issues, added more rules to eslint * more formatting, made ready Promise/void * checkpoint * checkpoint * checkpoint * checkpoint (linting) * checkpoint * checkpoint * checkpoint * checkpoint * renamed path to filepath. * checkpoint * checkpoint * so close... * checkpoint again * before making doc * checkpoint * checkpoint * Checkpoint * renamed awaiters * eslint * fix format on generated native strings * add dummy pretest task back in for the moment * change unit test runing * posix calc test failure * make signal dispose better * add est regen script * missed file * checkpoint * Improve scripts a bit * remove hooks for now * remove unused script * remove unused script * filter out files * ensure that eslint works for scripts too * fix build oses to specific version * cleanups and tweaking * adjusted for cosmetic feedback * more * add eslint rule to fix space before/after semicolon * remove tba/tbd * cleanup * Added space-infix-ops rule * cleanup * resolve comments * resolve comments * add simple debug task * spelling fixes * cleanup more * More changes. yay * remove the extra whitespace from before comments * add eslint rule to ensure that there are never extra spaces * adding another eslint rule to ensure that there isn't spacing around unary operators, which we all know is dangerous. Or weird. I forget which * added a space between vs and code because a space is the desired format * removed all mentions of transpiler which was removed * removed an extra comma * removed a trailing slash * removed useless lines * missed as file * reconfigure no-extra-parens rule * added note about yarn install * whatever * more fun * FIx it so that it webpacks correctly * remove refernces to attic * restore line to correct check * fix whitespace * added blank yarn install * removed
65 lines
2.6 KiB
TypeScript
65 lines
2.6 KiB
TypeScript
/* --------------------------------------------------------------------------------------------
|
|
* Copyright (c) Microsoft Corporation. All Rights Reserved.
|
|
* See 'LICENSE' in the project root for license information.
|
|
* ------------------------------------------------------------------------------------------ */
|
|
|
|
import { error } from 'node:console';
|
|
import { resolve, sep } from 'node:path';
|
|
import { filepath } from '../src/Utility/Filesystem/filepath';
|
|
import { verbose } from '../src/Utility/Text/streams';
|
|
import { $root, Git, brightGreen, cyan, getModifiedIgnoredFiles, rimraf } from './common';
|
|
|
|
// notes:
|
|
// list all gitignore'd files that are modified: `git clean -Xd -n`
|
|
// list all untracked and ignored files that are modified/created: `git clean -Xd -n`
|
|
|
|
export async function main() {
|
|
await rimraf(resolve($root, 'dist'));
|
|
}
|
|
|
|
export async function all() {
|
|
await rimraf(...(await getModifiedIgnoredFiles()).filter(each => !each.includes('node_modules')));
|
|
}
|
|
|
|
export async function reset() {
|
|
verbose(`Resetting all .gitignored files in extension`);
|
|
await rimraf(...await getModifiedIgnoredFiles());
|
|
}
|
|
|
|
async function details(files: string[]) {
|
|
let all = await Promise.all(files.filter(each => each).map(async (each) => {
|
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
const [filename, stats ] = await filepath.stats(each);
|
|
return {
|
|
filename: stats.isDirectory() ? cyan(`${each}${sep}**`) : brightGreen(`${each}`),
|
|
date: stats.mtime.toLocaleDateString().replace(/\b(\d)\//g, '0$1\/'),
|
|
time: stats.mtime.toLocaleTimeString().replace(/^(\d)\:/g, '0$1:'),
|
|
modified: stats.mtime
|
|
};
|
|
}));
|
|
all = all.sort((a, b) => a.modified.getTime() - b.modified.getTime());
|
|
// print a formatted table so the date and time are aligned
|
|
const max = all.reduce((max, each) => Math.max(max, each.filename.length), 0);
|
|
all.forEach(each => console.log(` ${each.filename.padEnd(max)} [${each.date} ${each.time}]`));
|
|
console.log('');
|
|
}
|
|
|
|
export async function show(opt?: string) {
|
|
switch (opt?.toLowerCase()) {
|
|
case 'new':
|
|
console.log(cyan('\n\nNew files:'));
|
|
const r = await Git('ls-files', '--others', '--exclude-standard', '-z');
|
|
return details(r.stdio.all().map(each => resolve(each.trim().replace(/\0/g, ''))));
|
|
|
|
case undefined:
|
|
case '':
|
|
case 'ignored':
|
|
case 'untracked':
|
|
console.log(cyan('\n\nUntracked+Ignored files:'));
|
|
return details(await getModifiedIgnoredFiles());
|
|
|
|
default:
|
|
return error(`Unknown option '${opt}'`);
|
|
}
|
|
}
|