2017-11-03 02:09:34 +02:00
const { BaseCommand } = require ( './base-command.js' ) ;
const { app } = require ( './app.js' ) ;
const { renderCommandHelp } = require ( './help-utils.js' ) ;
const { Database } = require ( 'lib/database.js' ) ;
2017-12-14 20:12:14 +02:00
const Setting = require ( 'lib/models/Setting.js' ) ;
2017-11-03 02:09:34 +02:00
const { wrap } = require ( 'lib/string-utils.js' ) ;
const { _ } = require ( 'lib/locale.js' ) ;
const { cliUtils } = require ( './cli-utils.js' ) ;
2017-08-04 19:11:10 +02:00
class Command extends BaseCommand {
usage ( ) {
return 'help [command]' ;
}
description ( ) {
return _ ( 'Displays usage information.' ) ;
}
2017-10-29 17:41:30 +02:00
allCommands ( ) {
2017-12-07 20:12:46 +02:00
const commands = app ( ) . commands ( app ( ) . uiType ( ) ) ;
2017-10-29 17:41:30 +02:00
let output = [ ] ;
for ( let n in commands ) {
if ( ! commands . hasOwnProperty ( n ) ) continue ;
const command = commands [ n ] ;
if ( command . hidden ( ) ) continue ;
if ( ! command . enabled ( ) ) continue ;
output . push ( command ) ;
}
output . sort ( ( a , b ) => a . name ( ) < b . name ( ) ? - 1 : + 1 ) ;
return output ;
}
2017-08-04 19:11:10 +02:00
async action ( args ) {
2017-10-09 00:34:01 +02:00
const stdoutWidth = app ( ) . commandStdoutMaxWidth ( ) ;
2017-08-04 19:11:10 +02:00
2017-10-09 00:34:01 +02:00
if ( args . command === 'shortcuts' ) {
2017-10-29 17:41:30 +02:00
if ( app ( ) . gui ( ) . isDummy ( ) ) {
throw new Error ( _ ( 'Shortcuts are not available in CLI mode.' ) ) ;
}
2017-10-09 00:34:01 +02:00
const shortcuts = app ( ) . gui ( ) . shortcuts ( ) ;
let rows = [ ] ;
for ( let n in shortcuts ) {
if ( ! shortcuts . hasOwnProperty ( n ) ) continue ;
const shortcut = shortcuts [ n ] ;
if ( ! shortcut . description ) continue ;
n = shortcut . friendlyName ? shortcut . friendlyName : n ;
2017-10-31 00:43:11 +02:00
rows . push ( [ n , shortcut . description ( ) ] ) ;
2017-10-09 00:34:01 +02:00
}
cliUtils . printArray ( this . stdout . bind ( this ) , rows ) ;
2017-10-29 17:41:30 +02:00
} else if ( args . command === 'all' ) {
const commands = this . allCommands ( ) ;
const output = commands . map ( ( c ) => renderCommandHelp ( c ) ) ;
this . stdout ( output . join ( '\n\n' ) ) ;
2017-10-09 00:34:01 +02:00
} else if ( args . command ) {
const command = app ( ) . findCommandByName ( args [ 'command' ] ) ;
if ( ! command ) throw new Error ( _ ( 'Cannot find "%s".' , args . command ) ) ;
this . stdout ( renderCommandHelp ( command , stdoutWidth ) ) ;
} else {
2017-10-29 17:41:30 +02:00
const commandNames = this . allCommands ( ) . map ( ( a ) => a . name ( ) ) ;
2017-10-09 00:34:01 +02:00
2017-12-15 09:31:57 +02:00
this . stdout ( _ ( 'Type `help [command]` for more information about a command; or type `help all` for the complete usage information.' ) ) ;
2017-10-17 19:18:31 +02:00
this . stdout ( '' ) ;
this . stdout ( _ ( 'The possible commands are:' ) ) ;
this . stdout ( '' ) ;
this . stdout ( commandNames . join ( ', ' ) ) ;
this . stdout ( '' ) ;
2017-10-29 22:40:53 +02:00
this . stdout ( _ ( 'In any command, a note or notebook can be refered to by title or ID, or using the shortcuts `$n` or `$b` for, respectively, the currently selected note or notebook. `$c` can be used to refer to the currently selected item.' ) ) ;
this . stdout ( '' ) ;
2017-10-31 00:29:17 +02:00
this . stdout ( _ ( 'To move from one pane to another, press Tab or Shift+Tab.' ) ) ;
2017-10-24 23:09:22 +02:00
this . stdout ( _ ( 'Use the arrows and page up/down to scroll the lists and text areas (including this console).' ) ) ;
2017-10-31 00:29:17 +02:00
this . stdout ( _ ( 'To maximise/minimise the console, press "TC".' ) ) ;
2017-10-17 19:18:31 +02:00
this . stdout ( _ ( 'To enter command line mode, press ":"' ) ) ;
this . stdout ( _ ( 'To exit command line mode, press ESCAPE' ) ) ;
2017-10-24 22:22:57 +02:00
this . stdout ( _ ( 'For the complete list of available keyboard shortcuts, type `help shortcuts`' ) ) ;
2017-10-09 00:34:01 +02:00
}
2017-08-04 22:13:29 +02:00
2017-10-17 19:18:31 +02:00
app ( ) . gui ( ) . showConsole ( ) ;
2017-10-09 00:34:01 +02:00
app ( ) . gui ( ) . maximizeConsole ( ) ;
2017-08-04 19:11:10 +02:00
}
}
module . exports = Command ;