imp: config file: don't require -- before addon-specific opts
This commit is contained in:
parent
361b0016ff
commit
d76677c6ad
@ -34,6 +34,7 @@
|
|||||||
[cashflow] --tree -p 'monthly from 3 months ago' --depth 3
|
[cashflow] --tree -p 'monthly from 3 months ago' --depth 3
|
||||||
[incomestatement] --tree -p 'monthly from 3 months ago' --depth 3
|
[incomestatement] --tree -p 'monthly from 3 months ago' --depth 3
|
||||||
|
|
||||||
# hledger-ui: reload on change (when started via `hledger ui`).
|
# hledger-ui (when started via `hledger ui`):
|
||||||
# A -- is needed before addon-specific flags, as on command line.
|
# start in Cash accounts screen, limited to depth 3, and watch for changes.
|
||||||
[ui] -- --watch
|
# The -- argument needed on the command line is not needed here.
|
||||||
|
[ui] --cash -3 --watch
|
||||||
|
|||||||
@ -236,8 +236,8 @@ main = withGhcDebug' $ do
|
|||||||
---------------------------------------------------------------
|
---------------------------------------------------------------
|
||||||
-- Read extra options from a config file.
|
-- Read extra options from a config file.
|
||||||
|
|
||||||
-- Read any extra general and command-specific args/opts from a config file,
|
-- Read any extra general and command-specific args/opts from a config file.
|
||||||
-- ignoring any general opts not supported by the current command.
|
-- Ignore any general opts not known to be supported by the command.
|
||||||
conf <- getConf
|
conf <- getConf
|
||||||
let
|
let
|
||||||
genargsfromconf = confLookup "general" conf
|
genargsfromconf = confLookup "general" conf
|
||||||
@ -245,7 +245,9 @@ main = withGhcDebug' $ do
|
|||||||
| isaddoncmd = []
|
| isaddoncmd = []
|
||||||
| otherwise = dropUnsupportedOpts effectivemode genargsfromconf
|
| otherwise = dropUnsupportedOpts effectivemode genargsfromconf
|
||||||
excludedgenargsfromconf = genargsfromconf \\ supportedgenargsfromconf
|
excludedgenargsfromconf = genargsfromconf \\ supportedgenargsfromconf
|
||||||
cmdargsfromconf = if null cmd then [] else confLookup cmd conf
|
cmdargsfromconf
|
||||||
|
| null cmd = []
|
||||||
|
| otherwise = confLookup cmd conf & if isaddoncmd then ("--":) else id
|
||||||
dbgIO1 "extra general args from config file" genargsfromconf
|
dbgIO1 "extra general args from config file" genargsfromconf
|
||||||
dbgIO1 "excluded general args from config file, not supported by this command" excludedgenargsfromconf
|
dbgIO1 "excluded general args from config file, not supported by this command" excludedgenargsfromconf
|
||||||
dbgIO1 "extra command args from config file" cmdargsfromconf
|
dbgIO1 "extra command args from config file" cmdargsfromconf
|
||||||
@ -326,14 +328,19 @@ main = withGhcDebug' $ do
|
|||||||
-- all other builtin commands - read the journal and if successful run the command with it
|
-- all other builtin commands - read the journal and if successful run the command with it
|
||||||
| otherwise -> withJournalDo opts $ cmdaction opts
|
| otherwise -> withJournalDo opts $ cmdaction opts
|
||||||
|
|
||||||
-- external addon command found - run it, passing
|
-- external addon command found - run it,
|
||||||
-- 1. any cli arguments written after the command name, except "--"
|
-- passing any cli arguments written after the command name
|
||||||
-- 2. and any command-specific opts from the config file.
|
-- and any command-specific opts from the config file.
|
||||||
|
-- Any "--" arguments, which sometimes must be used in the command line
|
||||||
|
-- to hide addon-specific opts from hledger's cmdargs parsing,
|
||||||
|
-- (and are also accepted in the config file, though not required there),
|
||||||
|
-- will be removed.
|
||||||
|
-- (hledger does not preserve -- arguments)
|
||||||
-- Arguments written before the command name, and general opts from the config file,
|
-- Arguments written before the command name, and general opts from the config file,
|
||||||
-- are not passed since we can't be sure they're supported.
|
-- are not passed since we can't be sure they're supported.
|
||||||
| isaddoncmd -> do
|
| isaddoncmd -> do
|
||||||
let
|
let
|
||||||
addonargs = cmdargsfromconf <> filter (/="--") cliargsaftercmd
|
addonargs = filter (/="--") $ cmdargsfromconf <> cliargsaftercmd
|
||||||
shellcmd = printf "%s-%s %s" progname cmd (unwords' addonargs) :: String
|
shellcmd = printf "%s-%s %s" progname cmd (unwords' addonargs) :: String
|
||||||
dbgIO "addon command selected" cmd
|
dbgIO "addon command selected" cmd
|
||||||
dbgIO "addon command arguments" (map quoteIfNeeded addonargs)
|
dbgIO "addon command arguments" (map quoteIfNeeded addonargs)
|
||||||
@ -414,7 +421,6 @@ cmdargsParse args0 addons =
|
|||||||
-- - Unknown flags (from addons) are assumed to be valueless or have a joined value,
|
-- - Unknown flags (from addons) are assumed to be valueless or have a joined value,
|
||||||
-- and will be moved - but later rejected by cmdargs.
|
-- and will be moved - but later rejected by cmdargs.
|
||||||
-- Instead these should be written to the right of a "--" argument, which hides them.
|
-- Instead these should be written to the right of a "--" argument, which hides them.
|
||||||
-- (We could perhaps automate this, but currently don't.)
|
|
||||||
--
|
--
|
||||||
moveFlagsAfterCommand :: [String] -> [String]
|
moveFlagsAfterCommand :: [String] -> [String]
|
||||||
moveFlagsAfterCommand args = insertFlagsAfterCommand $ moveFlagArgs (args, [])
|
moveFlagsAfterCommand args = insertFlagsAfterCommand $ moveFlagArgs (args, [])
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user