- 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;
 | |
| };
 |