mirror of
https://github.com/Shiva108/ai-llm-red-team-handbook.git
synced 2026-08-28 22:00:37 +02:00
adding mermaid packages
This commit is contained in:
+198
@@ -0,0 +1,198 @@
|
||||
#! /usr/bin/env node
|
||||
|
||||
var Q = require('q');
|
||||
var _ = require('lodash');
|
||||
var path = require('path');
|
||||
var program = require('commander');
|
||||
var parsedArgv = require('optimist').argv;
|
||||
var color = require('bash-color');
|
||||
|
||||
var pkg = require('../package.json');
|
||||
var manager = require('../lib');
|
||||
var tags = require('../lib/tags');
|
||||
var commands = require('../lib/commands');
|
||||
|
||||
// Which book is concerned?
|
||||
var bookRoot = parsedArgv._[1] || process.cwd();
|
||||
|
||||
function runPromise(p) {
|
||||
return p
|
||||
.then(function() {
|
||||
process.exit(0);
|
||||
}, function(err) {
|
||||
console.log('');
|
||||
console.log(color.red(err.toString()));
|
||||
if (program.debug || process.env.DEBUG) console.log(err.stack || '');
|
||||
process.exit(1);
|
||||
});
|
||||
}
|
||||
|
||||
function printGitbookVersion(v) {
|
||||
var actualVersion = (v.name != v.version)? ' ('+v.version+')' : '';
|
||||
return v.name + actualVersion;
|
||||
}
|
||||
|
||||
// Init gitbook-cli
|
||||
manager.init();
|
||||
|
||||
program
|
||||
.option('-v, --gitbook [version]', 'specify GitBook version to use')
|
||||
.option('-d, --debug', 'enable verbose error')
|
||||
.option('-V, --version', 'Display running versions of gitbook and gitbook-cli', function() {
|
||||
console.log('CLI version:', pkg.version);
|
||||
runPromise(
|
||||
manager.ensure(bookRoot, program.gitbook)
|
||||
.then(function(v) {
|
||||
console.log('GitBook version:', printGitbookVersion(v));
|
||||
process.exit(0);
|
||||
})
|
||||
);
|
||||
});
|
||||
|
||||
program
|
||||
.command('ls')
|
||||
.description('List versions installed locally')
|
||||
.action(function(){
|
||||
var versions = manager.versions();
|
||||
|
||||
if (versions.length > 0) {
|
||||
console.log('GitBook Versions Installed:');
|
||||
console.log('');
|
||||
|
||||
_.each(versions,function(v, i) {
|
||||
var text = v.name;
|
||||
if (v.name != v.version) text += ' [' + v.version + ']';
|
||||
if (v.link) text = text + ' (alias of ' + v.link + ')';
|
||||
|
||||
console.log(' ', i == 0? '*' : ' ', text);
|
||||
});
|
||||
console.log('');
|
||||
console.log('Run "gitbook update" to update to the latest version.');
|
||||
} else {
|
||||
console.log('There is no versions installed');
|
||||
console.log('You can install the latest version using: "gitbook fetch"');
|
||||
}
|
||||
});
|
||||
|
||||
program
|
||||
.command('current')
|
||||
.description('Display currently activated version')
|
||||
.action(function(){
|
||||
runPromise(
|
||||
manager.ensure(bookRoot, program.gitbook)
|
||||
.then(function(v) {
|
||||
console.log('GitBook version is', printGitbookVersion(v));
|
||||
})
|
||||
);
|
||||
});
|
||||
|
||||
program
|
||||
.command('ls-remote')
|
||||
.description('List remote versions available for install')
|
||||
.action(function(){
|
||||
runPromise(
|
||||
manager.available()
|
||||
.then(function(available) {
|
||||
console.log('Available GitBook Versions:');
|
||||
console.log('');
|
||||
console.log(' ', available.versions.join(', '));
|
||||
console.log('');
|
||||
console.log('Tags:');
|
||||
console.log('');
|
||||
_.each(available.tags, function(version, tagName) {
|
||||
console.log(' ', tagName, ':', version);
|
||||
});
|
||||
console.log('');
|
||||
})
|
||||
);
|
||||
});
|
||||
|
||||
program
|
||||
.command('fetch [version]')
|
||||
.description('Download and install a <version>')
|
||||
.action(function(version){
|
||||
version = version || '*';
|
||||
|
||||
runPromise(
|
||||
manager.install(version)
|
||||
.then(function(installedVersion) {
|
||||
console.log('');
|
||||
console.log(color.green('GitBook '+installedVersion+' has been installed'));
|
||||
})
|
||||
);
|
||||
});
|
||||
|
||||
program
|
||||
.command('alias [folder] [version]')
|
||||
.description('Set an alias named <version> pointing to <folder>')
|
||||
.action(function(folder, version) {
|
||||
folder = path.resolve(folder || process.cwd());
|
||||
version = version || 'latest';
|
||||
|
||||
runPromise(
|
||||
manager.link(version, folder)
|
||||
.then(function() {
|
||||
console.log(color.green('GitBook '+version+' point to '+folder));
|
||||
})
|
||||
);
|
||||
});
|
||||
|
||||
program
|
||||
.command('uninstall [version]')
|
||||
.description('Uninstall a version')
|
||||
.action(function(version){
|
||||
runPromise(
|
||||
manager.uninstall(version)
|
||||
.then(function() {
|
||||
console.log(color.green('GitBook '+version+' has been uninstalled.'));
|
||||
})
|
||||
);
|
||||
});
|
||||
|
||||
program
|
||||
.command('update [tag]')
|
||||
.description('Update to the latest version of GitBook')
|
||||
.action(function(tag){
|
||||
runPromise(
|
||||
manager.update(tag)
|
||||
.then(function(version) {
|
||||
if (!version) {
|
||||
console.log('No update found!');
|
||||
} else {
|
||||
console.log('');
|
||||
console.log(color.green('GitBook has been updated to '+version));
|
||||
}
|
||||
})
|
||||
);
|
||||
});
|
||||
|
||||
program
|
||||
.command('help')
|
||||
.description('List commands for GitBook')
|
||||
.action(function(){
|
||||
runPromise(
|
||||
manager.ensureAndLoad(bookRoot, program.gitbook)
|
||||
.get('commands')
|
||||
.then(commands.help)
|
||||
);
|
||||
});
|
||||
|
||||
program
|
||||
.command('*')
|
||||
.description('run a command with a specific gitbook version')
|
||||
.action(function(commandName){
|
||||
var args = parsedArgv._.slice(1);
|
||||
var kwargs = _.omit(parsedArgv, '$0', '_');
|
||||
|
||||
runPromise(
|
||||
manager.ensureAndLoad(bookRoot, program.gitbook)
|
||||
.then(function(gitbook) {
|
||||
return commands.exec(gitbook.commands, commandName, args, kwargs);
|
||||
})
|
||||
);
|
||||
});
|
||||
|
||||
// Parse and fallback to help if no args
|
||||
if(_.isEmpty(program.parse(process.argv).args) && process.argv.length === 2) {
|
||||
program.help();
|
||||
}
|
||||
Reference in New Issue
Block a user