sourcecontrol
Version:
A modern TypeScript CLI application for source control
65 lines • 2.81 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.ignoreCommand = void 0;
const commander_1 = require("commander");
const fs_extra_1 = __importDefault(require("fs-extra"));
const path_1 = __importDefault(require("path"));
const ignore_manager_1 = require("../../core/ignore/ignore-manager");
const ignore_display_1 = require("./ignore.display");
const ignore_handler_1 = require("./ignore.handler");
const helpers_1 = require("../../utils/helpers");
exports.ignoreCommand = new commander_1.Command('ignore')
.description('🙈 Manage ignored file patterns')
.option('-a, --add <patterns...>', 'Add patterns to .sourceignore')
.option('-l, --list', 'List all ignore patterns')
.option('-c, --check <files...>', 'Check if files are ignored')
.option('--create', 'Create default .sourceignore file')
.option('-e, --edit', 'Open .sourceignore in editor')
.option('-s, --stats', 'Show ignore statistics')
.option('-v, --verbose', 'Verbose output')
.option('-q, --quiet', 'Suppress output')
.action(async (options) => {
try {
const repo = await (0, helpers_1.getRepo)();
const ignoreManager = new ignore_manager_1.IgnoreManager(repo);
await ignoreManager.initialize();
if (options.create) {
await (0, ignore_handler_1.createDefaultIgnoreFile)(repo);
}
else if (options.add && options.add.length > 0) {
await (0, ignore_handler_1.addPatternsToIgnore)(repo, ignoreManager, options.add);
}
else if (options.list) {
await (0, ignore_handler_1.listIgnorePatterns)(repo);
}
else if (options.check && options.check.length > 0) {
await (0, ignore_handler_1.checkIgnoreStatus)(ignoreManager, options.check);
}
else if (options.stats) {
await showIgnoreStats(ignoreManager);
}
else if (options.edit) {
await (0, ignore_handler_1.editIgnoreFile)(repo);
}
else {
await showIgnoreHelp(repo);
}
}
catch (error) {
(0, ignore_display_1.handleIgnoreError)(error, options.quiet || false);
process.exit(1);
}
});
async function showIgnoreStats(ignoreManager) {
const stats = ignoreManager.getStats();
(0, ignore_display_1.displayIgnoreStats)(stats);
}
async function showIgnoreHelp(repository) {
const ignorePath = path_1.default.join(repository.workingDirectory().toString(), '.sourceignore');
const exists = await fs_extra_1.default.pathExists(ignorePath);
(0, ignore_display_1.displayIgnoreHelp)(exists);
}
//# sourceMappingURL=ignore.js.map