Error on unkown args

This is simply implemented by looking up against all the args. No
conflicts are checked such as using -Ss and -Si at the same time or using
-u with -D.
This commit is contained in:
morganamilo 2018-07-30 04:38:06 +01:00
parent 0746d2828b
commit d9823e4230
No known key found for this signature in database
GPG key ID: 6FE9E7996B0B082E

275
parser.go
View file

@ -181,6 +181,10 @@ func (parser *arguments) addOP(op string) (err error) {
}
func (parser *arguments) addParam(option string, arg string) (err error) {
if !isArg(option) {
return fmt.Errorf("invalid option '%s'", option)
}
if isOp(option) {
err = parser.addOP(option)
return
@ -340,6 +344,277 @@ func formatArg(arg string) string {
return arg
}
func isArg(arg string) bool {
switch arg {
case "D", "database":
return true
case "Q", "query":
return true
case "R", "remove":
return true
case "S", "sync":
return true
case "T", "deptest":
return true
case "U", "upgrade":
return true
case "F", "files":
return true
case "V", "version":
return true
case "h", "help":
return true
case "Y", "yay":
return true
case "P", "print":
return true
case "G", "getpkgbuild":
return true
case "b", "dbpath":
return true
case "r", "root":
return true
case "v", "verbose":
return true
case "arch":
return true
case "cachedir":
return true
case "color":
return true
case "config":
return true
case "debug":
return true
case "gpgdir":
return true
case "hookdir":
return true
case "logfile":
return true
case "noconfirm":
return true
case "confirm":
return true
case "disabledownloadtimeout":
return true
case "sysroot":
return true
case "d", "nodeps":
return true
case "assumeinstalled":
return true
case "dbonly":
return true
case "noprogressbar":
return true
case "noscriptlet":
return true
case "p":
return true
case "printformat":
return true
case "asdeps":
return true
case "asexplicit":
return true
case "ignore":
return true
case "ignoregroup":
return true
case "needed":
return true
case "overwrite":
return true
case "force":
return true
case "c", "changelog":
return true
case "deps":
return true
case "e", "explicit":
return true
case "g", "groups":
return true
case "i", "info":
return true
case "k", "check":
return true
case "l", "list":
return true
case "m", "foreign":
return true
case "n", "native":
return true
case "o", "owns":
return true
case "file":
return true
case "q", "quiet":
return true
case "s", "search":
return true
case "t", "unrequired":
return true
case "u", "upgrades":
return true
case "cascade":
return true
case "nosave":
return true
case "recursive":
return true
case "unneeded":
return true
case "clean":
return true
case "sysupgrade":
return true
case "w", "downloadonly":
return true
case "y", "refresh":
return true
case "x", "regex":
return true
case "machinereadable":
return true
//yay options
case "save":
return true
case "afterclean":
return true
case "noafterclean":
return true
case "devel":
return true
case "nodevel":
return true
case "timeupdate":
return true
case "notimeupdate":
return true
case "topdown":
return true
case "bottomup":
return true
case "completioninterval":
return true
case "sortby":
return true
case "redownload":
return true
case "redownloadall":
return true
case "noredownload":
return true
case "rebuild":
return true
case "rebuildall":
return true
case "rebuildtree":
return true
case "norebuild":
return true
case "answerclean":
return true
case "noanswerclean":
return true
case "answerdiff":
return true
case "noanswerdiff":
return true
case "answeredit":
return true
case "noansweredit":
return true
case "answerupgrade":
return true
case "noanswerupgrade":
return true
case "gitclone":
return true
case "nogitclone":
return true
case "gpgflags":
return true
case "mflags":
return true
case "gitflags":
return true
case "builddir":
return true
case "editor":
return true
case "editorflags":
return true
case "makepkg":
return true
case "makepkgconf":
return true
case "nomakepkgconf":
return true
case "pacman":
return true
case "tar":
return true
case "git":
return true
case "gpg":
return true
case "requestsplitn":
return true
case "sudoloop":
return true
case "nosudoloop":
return true
case "provides":
return true
case "noprovides":
return true
case "pgpfetch":
return true
case "nopgpfetch":
return true
case "upgrademenu":
return true
case "noupgrademenu":
return true
case "cleanmenu":
return true
case "nocleanmenu":
return true
case "diffmenu":
return true
case "nodiffmenu":
return true
case "editmenu":
return true
case "noeditmenu":
return true
case "useask":
return true
case "nouseask":
return true
case "combinedupgrade":
return true
case "nocombinedupgrade":
return true
case "a", "aur":
return true
case "repo":
return true
case "removemake":
return true
case "noremovemake":
return true
case "askremovemake":
return true
default:
return false
}
}
func isOp(op string) bool {
switch op {
case "V", "version":