R/parse_help.R
cmd_help_parse_flags.Rd
When using cmdfun to write lazy shell wrappers, the user can easily mistype a commandline flag since there is not text completion. Some programs behave unexpectedly when flags are typed incorrectly, and for this reason return uninformative error messages.
cmd_help_parse_flags(help_lines, split_newline = FALSE)
help_lines |
|
---|---|
split_newline |
|
character vector of flag names parsed from help text
cmd_help_parse_flags
tries to grab flags from --help documentation which
can be used for error checking. It will try to parse flags following "-" or
"--" while ignoring hyphenated words in help text. Although this should cover
most use-cases, it may be necessary to write a custom help-text parser for
nonstandard tools. Inspect this output carefully before proceeding. Most
often, characters are leftover at the end of parsed names, which will
require additional parsing.
if (.Platform$OS.type == "unix" & file.exists("/bin/tar")) { # below are two examples parsing the --help method of GNU tar # with processx if (require(processx)) { out <- processx::run("tar", "--help", error_on_status = FALSE) fn_flags <- cmd_help_parse_flags(out$stdout, split_newline = TRUE) } # with system2 lines <- system2("tar", "--help", stderr = TRUE) fn_flags <- cmd_help_parse_flags(lines) # NOTE: some of the "tar" flags contain the extra characters: "\[", "\)", and ";" # ie "one-top-level\[" which should be "one-top-level" # These can be additionally parsed using gsub("[\\[;\\)]", "", fn_flags) }