- Implemented gitzone services command for managing MongoDB and MinIO containers - Added smart port assignment (20000-30000 range) to avoid conflicts - Project-specific container names for complete isolation - Data persistence in .nogit/ directories - MongoDB Compass connection string generation with network IP detection - Auto-configuration via .nogit/env.json with secure defaults - Commands: start, stop, restart, status, config, compass, logs, remove, clean - Interactive confirmations for destructive operations - Comprehensive documentation and Task Venture Capital GmbH legal update
		
			
				
	
	
		
			146 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			146 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
import * as plugins from './plugins.js';
 | 
						|
import * as paths from './paths.js';
 | 
						|
import { GitzoneConfig } from './classes.gitzoneconfig.js';
 | 
						|
 | 
						|
const gitzoneSmartcli = new plugins.smartcli.Smartcli();
 | 
						|
 | 
						|
export let run = async () => {
 | 
						|
  const done = plugins.smartpromise.defer();
 | 
						|
 | 
						|
  // get packageInfo
 | 
						|
  const projectInfo = new plugins.projectinfo.ProjectInfo(paths.packageDir);
 | 
						|
 | 
						|
  // check for updates
 | 
						|
  const smartupdateInstance = new plugins.smartupdate.SmartUpdate();
 | 
						|
  await smartupdateInstance.check(
 | 
						|
    'gitzone',
 | 
						|
    projectInfo.npm.version,
 | 
						|
    'http://gitzone.gitlab.io/gitzone/changelog.html',
 | 
						|
  );
 | 
						|
  console.log('---------------------------------------------');
 | 
						|
  gitzoneSmartcli.addVersion(projectInfo.npm.version);
 | 
						|
 | 
						|
  // ======> Standard task <======
 | 
						|
 | 
						|
  /**
 | 
						|
   * standard task
 | 
						|
   */
 | 
						|
  gitzoneSmartcli.standardCommand().subscribe(async (argvArg) => {
 | 
						|
    const modStandard = await import('./mod_standard/index.js');
 | 
						|
    await modStandard.run();
 | 
						|
  });
 | 
						|
 | 
						|
  // ======> Specific tasks <======
 | 
						|
 | 
						|
  /**
 | 
						|
   * commit something
 | 
						|
   */
 | 
						|
  gitzoneSmartcli.addCommand('commit').subscribe(async (argvArg) => {
 | 
						|
    const modCommit = await import('./mod_commit/index.js');
 | 
						|
    await modCommit.run(argvArg);
 | 
						|
  });
 | 
						|
 | 
						|
  /**
 | 
						|
   * deprecate a package on npm
 | 
						|
   */
 | 
						|
  gitzoneSmartcli.addCommand('deprecate').subscribe(async (argvArg) => {
 | 
						|
    const modDeprecate = await import('./mod_deprecate/index.js');
 | 
						|
    await modDeprecate.run();
 | 
						|
  });
 | 
						|
 | 
						|
  /**
 | 
						|
   * docker
 | 
						|
   */
 | 
						|
  gitzoneSmartcli.addCommand('docker').subscribe(async (argvArg) => {
 | 
						|
    const modDocker = await import('./mod_docker/index.js');
 | 
						|
    await modDocker.run(argvArg);
 | 
						|
  });
 | 
						|
 | 
						|
  /**
 | 
						|
   * Update all files that comply with the gitzone standard
 | 
						|
   */
 | 
						|
  gitzoneSmartcli.addCommand('format').subscribe(async (argvArg) => {
 | 
						|
    const config = GitzoneConfig.fromCwd();
 | 
						|
    const modFormat = await import('./mod_format/index.js');
 | 
						|
 | 
						|
    // Handle rollback commands
 | 
						|
    if (argvArg.rollback) {
 | 
						|
      await modFormat.handleRollback(argvArg.rollback);
 | 
						|
      return;
 | 
						|
    }
 | 
						|
 | 
						|
    if (argvArg['list-backups']) {
 | 
						|
      await modFormat.handleListBackups();
 | 
						|
      return;
 | 
						|
    }
 | 
						|
 | 
						|
    if (argvArg['clean-backups']) {
 | 
						|
      await modFormat.handleCleanBackups();
 | 
						|
      return;
 | 
						|
    }
 | 
						|
 | 
						|
    // Handle format with options
 | 
						|
    await modFormat.run({
 | 
						|
      dryRun: argvArg['dry-run'],
 | 
						|
      yes: argvArg.yes,
 | 
						|
      planOnly: argvArg['plan-only'],
 | 
						|
      savePlan: argvArg['save-plan'],
 | 
						|
      fromPlan: argvArg['from-plan'],
 | 
						|
      detailed: argvArg.detailed,
 | 
						|
      interactive: argvArg.interactive !== false,
 | 
						|
      parallel: argvArg.parallel !== false,
 | 
						|
      verbose: argvArg.verbose,
 | 
						|
    });
 | 
						|
  });
 | 
						|
 | 
						|
  /**
 | 
						|
   * run meta commands
 | 
						|
   */
 | 
						|
  gitzoneSmartcli.addCommand('meta').subscribe(async (argvArg) => {
 | 
						|
    const config = GitzoneConfig.fromCwd();
 | 
						|
    const modMeta = await import('./mod_meta/index.js');
 | 
						|
    modMeta.run(argvArg);
 | 
						|
  });
 | 
						|
 | 
						|
  /**
 | 
						|
   * open assets
 | 
						|
   */
 | 
						|
  gitzoneSmartcli.addCommand('open').subscribe(async (argvArg) => {
 | 
						|
    const modOpen = await import('./mod_open/index.js');
 | 
						|
    modOpen.run(argvArg);
 | 
						|
  });
 | 
						|
 | 
						|
  /**
 | 
						|
   * add a readme to a project
 | 
						|
   */
 | 
						|
  gitzoneSmartcli.addCommand('template').subscribe(async (argvArg) => {
 | 
						|
    const modTemplate = await import('./mod_template/index.js');
 | 
						|
    modTemplate.run(argvArg);
 | 
						|
  });
 | 
						|
 | 
						|
  /**
 | 
						|
   * start working on a project
 | 
						|
   */
 | 
						|
  gitzoneSmartcli.addCommand('start').subscribe(async (argvArg) => {
 | 
						|
    const modTemplate = await import('./mod_start/index.js');
 | 
						|
    modTemplate.run(argvArg);
 | 
						|
  });
 | 
						|
 | 
						|
  gitzoneSmartcli.addCommand('helpers').subscribe(async (argvArg) => {
 | 
						|
    const modHelpers = await import('./mod_helpers/index.js');
 | 
						|
    modHelpers.run(argvArg);
 | 
						|
  });
 | 
						|
 | 
						|
  /**
 | 
						|
   * manage development services (MongoDB, S3/MinIO)
 | 
						|
   */
 | 
						|
  gitzoneSmartcli.addCommand('services').subscribe(async (argvArg) => {
 | 
						|
    const modServices = await import('./mod_services/index.js');
 | 
						|
    await modServices.run(argvArg);
 | 
						|
  });
 | 
						|
 | 
						|
  // start parsing of the cli
 | 
						|
  gitzoneSmartcli.startParse();
 | 
						|
  return await done.promise;
 | 
						|
};
 |