Browse Source

optimize command line interaction

MaysWind 3 năm trước cách đây
mục cha
commit
0379ef3c86
4 tập tin đã thay đổi với 64 bổ sung35 xóa
  1. 21 11
      copy-app-modules.js
  2. 25 14
      copy-main-modules.js
  3. 17 9
      main/cmd.js
  4. 1 1
      main/main.js

+ 21 - 11
copy-app-modules.js

@@ -1,23 +1,29 @@
 const fs = require('fs-extra');
 const path = require('path');
-const argv = require('yargs')
+const yargs = require('yargs')(process.argv.slice(2));
+const argv = yargs
     .usage('Usage: $0 -d <dist>')
-    .option('d', {
-        alias: 'dist',
+    .help('help')
+    .alias('version', 'v')
+    .option('help', {
+        alias: 'h'
+    })
+    .option('dist', {
+        alias: 'd',
         type: 'string',
+        requiresArg: true,
         describe: 'The directory where dependencies would be copies to.',
     })
-    .option('r', {
-        alias: 'dryrun',
+    .option('dryrun', {
         type: 'boolean',
         describe: 'Find the dependencies and log to the screen only.',
     })
-    .option('v', {
-        alias: 'verbose',
+    .option('verbose', {
+        alias: 'V',
         type: 'boolean',
         describe: 'Enable verbose log.',
     })
-    .parse();
+    .argv;
 
 const pkgfile = require('./package');
 
@@ -91,8 +97,12 @@ function copyDependencies(dependencies, dist) {
     }
 }
 
-let dependencies = getDependencies(pkgfile.entry);
+if (!argv.dist || argv.help) {
+    yargs.showHelp();
+} else {
+    let dependencies = getDependencies(pkgfile.entry);
 
-if (!argv.dryrun) {
-    copyDependencies(dependencies, argv.dist);
+    if (!argv.dryrun) {
+        copyDependencies(dependencies, argv.dist);
+    }
 }

+ 25 - 14
copy-main-modules.js

@@ -1,29 +1,36 @@
 const fs = require('fs-extra');
 const path = require('path');
 const jsonfile = require('jsonfile');
-const argv = require('yargs')
-    .usage('Usage: $0 -d <dist>')
-    .option('s', {
-        alias: 'source',
+const yargs = require('yargs')(process.argv.slice(2));
+const argv = yargs
+    .usage('Usage: $0 -s <source> -d <dist>')
+    .help('help')
+    .alias('version', 'v')
+    .option('help', {
+        alias: 'h'
+    })
+    .option('source', {
+        alias: 's',
         type: 'string',
+        requiresArg: true,
         describe: 'The directory where dependencies is.',
     })
-    .option('d', {
-        alias: 'dist',
+    .option('dist', {
+        alias: 'd',
         type: 'string',
+        requiresArg: true,
         describe: 'The directory where dependencies would be copies to.',
     })
-    .option('r', {
-        alias: 'dryrun',
+    .option('dryrun', {
         type: 'boolean',
         describe: 'Find the dependencies and log to the screen only.',
     })
-    .option('v', {
-        alias: 'verbose',
+    .option('verbose', {
+        alias: 'V',
         type: 'boolean',
         describe: 'Enable verbose log.',
     })
-    .parse();
+    .argv;
 
 const pkgfile = require('./package');
 
@@ -104,8 +111,12 @@ function copyDependencies(dependenciesDir, dist) {
     }
 }
 
-let dependencies = getDependencies([], 0, argv.source, pkgfile.mainDependencies);
+if (!argv.source || !argv.dist || argv.help) {
+    yargs.showHelp();
+} else {
+    let dependencies = getDependencies([], 0, argv.source, pkgfile.mainDependencies);
 
-if (!argv.dryrun) {
-    copyDependencies(dependencies, argv.dist);
+    if (!argv.dryrun) {
+        copyDependencies(dependencies, argv.dist);
+    }
 }

+ 17 - 9
main/cmd.js

@@ -3,21 +3,29 @@
 const os = require('os');
 const yargs = require('yargs');
 
-const argv = yargs
-    .usage('Usage: $0 <file> [options]')
-    .option('d', {
-        alias: 'development',
+const argv = yargs(process.argv.slice(1))
+    .usage('Usage: $0 [file] [options]')
+    .help('help')
+    .alias('version', 'v')
+    .option('help', {
+        alias: 'h'
+    })
+    .option('development', {
+        alias: 'd',
         type: 'boolean',
         describe: 'Enable Development Mode (press F12 to open DevTools)',
     })
-    .option('c', {
-        alias: 'classic',
+    .option('classic', {
+        alias: 'c',
         type: 'boolean',
         describe: 'Use classic window title bar (for Windows only)',
     })
-    .help('h')
-    .alias('h', 'help')
-    .parse(process.argv.slice(1));
+    .command({
+        command: '$0 [file]',
+        aliases: ['new'],
+        desc: 'Create new download task from exist torrent/metalink file'
+    })
+    .argv;
 
 module.exports = {
     argv: argv

+ 1 - 1
main/main.js

@@ -22,7 +22,7 @@ if (!singletonLock) {
     app.quit();
 }
 
-let filePathInCommandLine = process.argv.length > 1 && process.argv[1];
+let filePathInCommandLine = cmd.argv.file;
 
 function isEnableCloseToHide() {
     return (tray.isEnabled() || os.platform() === 'darwin') && config.minimizedToTray;