mirror of
https://github.com/Jguer/yay
synced 2024-10-05 23:59:13 +00:00
From 3 Big O to O on parsing and --help
This commit is contained in:
parent
ec8cc5501e
commit
ed78f3b5c8
70
yay.go
70
yay.go
|
@ -16,33 +16,49 @@ const BuildDir string = "/tmp/yaytmp/"
|
|||
// SearchMode is search without numbers.
|
||||
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 {
|
||||
return "noop", fmt.Errorf("No operation specified.")
|
||||
err = fmt.Errorf("No operation specified.")
|
||||
return
|
||||
}
|
||||
|
||||
for _, arg := range os.Args[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] == '-' {
|
||||
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
|
||||
|
@ -52,16 +68,12 @@ func main() {
|
|||
var err error
|
||||
conf, err := readConfig(PacmanConf)
|
||||
|
||||
op, err := operation()
|
||||
op, pkgs, options, err := parser()
|
||||
if err != nil {
|
||||
fmt.Println(err)
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
pkgs, _ := packages()
|
||||
|
||||
flag, _ := flags()
|
||||
|
||||
switch op {
|
||||
case "-Qstats":
|
||||
err = stats(&conf)
|
||||
|
@ -70,15 +82,17 @@ func main() {
|
|||
err = searchMode(pkg, &conf)
|
||||
}
|
||||
case "-S":
|
||||
err = InstallPackage(pkgs, &conf, flag)
|
||||
err = InstallPackage(pkgs, &conf, options)
|
||||
case "-Syu", "-Suy":
|
||||
err = updateAndInstall(&conf, flag)
|
||||
err = updateAndInstall(&conf, options)
|
||||
case "yogurt":
|
||||
for _, pkg := range pkgs {
|
||||
err = searchAndInstall(pkg, &conf, flag)
|
||||
err = searchAndInstall(pkg, &conf, options)
|
||||
}
|
||||
case "--help", "-h":
|
||||
usage()
|
||||
default:
|
||||
err = passToPacman(op, pkgs, flag)
|
||||
err = passToPacman(op, pkgs, options)
|
||||
}
|
||||
|
||||
if err != nil {
|
||||
|
|
Loading…
Reference in a new issue