From 3 Big O to O on parsing and --help

This commit is contained in:
Jguer 2016-10-29 02:52:12 +01:00
parent ec8cc5501e
commit ed78f3b5c8

70
yay.go
View File

@ -16,33 +16,49 @@ const BuildDir string = "/tmp/yaytmp/"
// SearchMode is search without numbers. // SearchMode is search without numbers.
const SearchMode int = -1 const SearchMode int = -1
func operation() (operation string, err error) { func usage() {
fmt.Println(`usage: yay <operation> [...]
operations:
yay {-h --help}
yay {-V --version}
yay {-D --database} <options> <package(s)>
yay {-F --files} [options] [package(s)]
yay {-Q --query} [options] [package(s)]
yay {-R --remove} [options] <package(s)>
yay {-S --sync} [options] [package(s)]
yay {-T --deptest} [options] [package(s)]
yay {-U --upgrade} [options] <file(s)>
New operations:
yay -Qstats - Displays system information
`)
}
func parser() (op string, options []string, packages []string, err error) {
if len(os.Args) < 2 { if len(os.Args) < 2 {
return "noop", fmt.Errorf("No operation specified.") err = fmt.Errorf("No operation specified.")
return
} }
for _, arg := range os.Args[1:] { for _, arg := range os.Args[1:] {
if arg[0] == '-' && arg[1] != '-' { if arg[0] == '-' && arg[1] != '-' {
return arg, nil op = arg
} }
}
return "yogurt", nil
}
func packages() ([]string, error) {
var ps []string
for _, arg := range os.Args[1:] {
if arg[0] != '-' {
ps = append(ps, arg)
}
}
return ps, nil
}
func flags() (fs []string, err error) {
for _, arg := range os.Args[1:] {
if arg[0] == '-' && arg[1] == '-' { if arg[0] == '-' && arg[1] == '-' {
fs = append(fs, arg) if arg == "--help" {
op = arg
}
options = append(options, arg)
} }
if arg[0] != '-' {
packages = append(packages, arg)
}
}
if op == "" {
op = "yogurt"
} }
return return
@ -52,16 +68,12 @@ func main() {
var err error var err error
conf, err := readConfig(PacmanConf) conf, err := readConfig(PacmanConf)
op, err := operation() op, pkgs, options, err := parser()
if err != nil { if err != nil {
fmt.Println(err) fmt.Println(err)
os.Exit(1) os.Exit(1)
} }
pkgs, _ := packages()
flag, _ := flags()
switch op { switch op {
case "-Qstats": case "-Qstats":
err = stats(&conf) err = stats(&conf)
@ -70,15 +82,17 @@ func main() {
err = searchMode(pkg, &conf) err = searchMode(pkg, &conf)
} }
case "-S": case "-S":
err = InstallPackage(pkgs, &conf, flag) err = InstallPackage(pkgs, &conf, options)
case "-Syu", "-Suy": case "-Syu", "-Suy":
err = updateAndInstall(&conf, flag) err = updateAndInstall(&conf, options)
case "yogurt": case "yogurt":
for _, pkg := range pkgs { for _, pkg := range pkgs {
err = searchAndInstall(pkg, &conf, flag) err = searchAndInstall(pkg, &conf, options)
} }
case "--help", "-h":
usage()
default: default:
err = passToPacman(op, pkgs, flag) err = passToPacman(op, pkgs, options)
} }
if err != nil { if err != nil {