cli: clarify spec
This commit is contained in:
		
							parent
							
								
									f3c90a1351
								
							
						
					
					
						commit
						dbd35fbe3e
					
				@ -2,38 +2,39 @@
 | 
				
			|||||||
#
 | 
					#
 | 
				
			||||||
# Quick guide to terms used here:
 | 
					# Quick guide to terms used here:
 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
# - flag: generally a synonym for option. Or sometimes, just the first
 | 
					# - flag: a synonym for option. Or, just the first part of an option,
 | 
				
			||||||
#   part of an option: a hyphen followed by a letter (short flag) or a
 | 
					#   which can be either a short flag (hyphen followed by a letter) or
 | 
				
			||||||
#   word (long flag).
 | 
					#   a long flag (double hyphen followed by a word).
 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
# - option: a command modifier. An option consists of a short flag, a
 | 
					# - option: a command modifier. An option consists of a short flag, a
 | 
				
			||||||
#   long flag, or both, and possibly an optional or required value.
 | 
					#   long flag, or both, and possibly an optional or required value.
 | 
				
			||||||
#   Each option has some effect on program execution, and is described
 | 
					#   Each option has some effect on program execution, and is described
 | 
				
			||||||
#   in the command line help.
 | 
					#   in the command line help.
 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
# - argument:
 | 
					# - raw arguments: everything following the program name on the
 | 
				
			||||||
#   - raw command line arguments: everything following the program
 | 
					#   command line, ie what is returned by getArgs.
 | 
				
			||||||
#     name on the command line, ie what is returned by getArgs
 | 
					 | 
				
			||||||
#   - parsed arguments: all raw command line arguments that are not
 | 
					 | 
				
			||||||
#     options (flags or values).
 | 
					 | 
				
			||||||
#   - (sub)command arguments: all parsed arguments except the first
 | 
					 | 
				
			||||||
#     (which is the subcommand's name)
 | 
					 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
# - RawOpts: the command, options and arguments as parsed by cmdargs,
 | 
					# - parsed arguments: all raw arguments that are not options.
 | 
				
			||||||
#   as an assocation list. Eg:
 | 
					#
 | 
				
			||||||
 | 
					# - command arguments: all parsed arguments after the first, which is
 | 
				
			||||||
 | 
					#   the command name.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# - RawOpts: the command name, options, and arguments parsed by cmdargs,
 | 
				
			||||||
 | 
					#   as an assocation list of strings. Eg:
 | 
				
			||||||
#   [("command","register"),("args","a"),("debug",""),("help","")]
 | 
					#   [("command","register"),("args","a"),("debug",""),("help","")]
 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
# - CliOpts: the command, options and arguments from cmdargs, plus
 | 
					# - CliOpts: a RawOpts, plus the same information with some additional
 | 
				
			||||||
#   additional cleanup, in a more convenient data structure used
 | 
					#   cleanup in a more convenient data structure. Used throughout the
 | 
				
			||||||
#   throughout the hledger CLI code.
 | 
					#   hledger CLI code.
 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
# - command:
 | 
					# - command line, shell command: what you type in the shell or
 | 
				
			||||||
#   - command line, shell command: what you type in the shell/terminal window to start a program
 | 
					#   terminal window to start a program.
 | 
				
			||||||
#   - hledger command, subcommand: one of hledger's several modes of operation,
 | 
					#
 | 
				
			||||||
#     usually selected by the first command-line argument that isn't an option.
 | 
					# - hledger command, subcommand: one of hledger's modes of operation,
 | 
				
			||||||
#     Commands are listed in the general command line help. There are two kinds:
 | 
					#   named and selected by the first parsed argument. There are two kinds:
 | 
				
			||||||
#     - internal commands: built in to the main hledger executable
 | 
					#   - internal or built-in commands are part of the main hledger executable.
 | 
				
			||||||
#     - external commands, or add-ons: any other hledger-* executables in the users's PATH
 | 
					#   - external or add-on commands are provided by hledger-* executables in
 | 
				
			||||||
 | 
					#     the PATH.
 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
# Description of existing/expected behaviour as of 2013/9/16:
 | 
					# Description of existing/expected behaviour as of 2013/9/16:
 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
@ -42,8 +43,8 @@
 | 
				
			|||||||
# - commands are internal (built in to the main hledger executable) or external (any hledger-* executables found in the PATH)
 | 
					# - commands are internal (built in to the main hledger executable) or external (any hledger-* executables found in the PATH)
 | 
				
			||||||
# - some internal commands have aliases, which are displayed in the general help
 | 
					# - some internal commands have aliases, which are displayed in the general help
 | 
				
			||||||
# - there are also a few hidden internal commands
 | 
					# - there are also a few hidden internal commands
 | 
				
			||||||
# - COMMAND is an exact command or alias name, or any unique prefix of one (eg reg for register)
 | 
					# - COMMAND is an exact command (balance), an alias (bal), or any unique command prefix (inc)
 | 
				
			||||||
# - when COMMAND is a non-unique prefix, matching commands will be listed, including hidden ones (eg hledger c)
 | 
					# - when COMMAND is a non-unique prefix, all matched commands will be listed, including hidden ones (eg hledger c)
 | 
				
			||||||
# - an unrecognised command shows an error and gives non-zero exit status
 | 
					# - an unrecognised command shows an error and gives non-zero exit status
 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
# - usually the command must come first, followed by options and arguments in any order
 | 
					# - usually the command must come first, followed by options and arguments in any order
 | 
				
			||||||
@ -52,9 +53,9 @@
 | 
				
			|||||||
# - if the command is external, options and arguments after the command are handled by that executable, not hledger
 | 
					# - if the command is external, options and arguments after the command are handled by that executable, not hledger
 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
# - the --help flag has highest priority
 | 
					# - the --help flag has highest priority
 | 
				
			||||||
# - --help before the command, or no command, shows general help, including available commands
 | 
					# - --help before the command (or no command) shows general help, including the commands list
 | 
				
			||||||
# - --help after an internal command shows command-specific help, including command and general flags
 | 
					# - --help after an internal command shows command-specific help, including command and general flags
 | 
				
			||||||
# - there is no built-in "help" command
 | 
					# - there is no internal "help" command
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# version 
 | 
					# version 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user