diff options
Diffstat (limited to 'main.go')
| -rw-r--r-- | main.go | 58 |
1 files changed, 36 insertions, 22 deletions
@@ -4,19 +4,19 @@ import ( "fmt" "os" "path/filepath" + paths "qulay/config" "qulay/database" - "qulay/config" - "qulay/package" "qulay/helpers" + pkg "qulay/package" "slices" "strings" ) var _name string = filepath.Base(os.Args[0]) -var _cmds = []string{"h", "+", "-", "g", "s", "p", "u", "r", "q", "v"} +var _cmds = []string{"h", "+", "-", "g", "s", "p", "u", "r", "q", "f", "v"} var _root_cmds = []string{"+", "-", "u", "i"} -const _version string = "0.6" +const _version string = "0.7" const _help string = `{_name}: command-line interface to the Qulay Package Manager Usage: {_name} h -> help menu @@ -28,13 +28,15 @@ Usage: {_name} u -> update all repositories {_name} r -> get all repositories URLs {_name} q -> get all installed packages + {_name} f -> get files path for destDir {_name} v -> get {_name} version Options: - :v -> verbose output - :a -> ask before doing - :nl -> disable recording in databases and logs - :nd -> do not download deps - :r -> reinstall already installed deps + :v -> verbose output + :a -> ask before doing + :nl -> disable recording in databases and logs + :nd -> do not download deps + :nrc -> disable uid 0 (root) checks + :r -> reinstall already installed deps Vars: DESTDIR -> path where the package will be installed/removed` @@ -66,12 +68,18 @@ func main() { destDir = "/" } + absDestDir, err := filepath.Abs(destDir) + if err != nil { + fmt.Fprintf(os.Stderr, "!! failed to get absolute path of destDir: %v\n", err) + os.Exit(1) + } + if len(args) == 0 || len(cmds) == 0 { printHelp() os.Exit(1) } - if os.Getuid() != 0 && slices.Contains(_root_cmds, cmds[0]) { + if os.Getuid() != 0 && slices.Contains(_root_cmds, cmds[0]) && !slices.Contains(opts, ":nrc") { fmt.Println("!! this command is root-only. run this with root privileges") os.Exit(1) } @@ -85,7 +93,7 @@ func main() { os.Exit(1) } for _, n := range oths { - err := pkg.Install(n, opts, destDir) + err := pkg.Install(n, opts, absDestDir) if err != nil { fmt.Println("!!", err) os.Exit(1) @@ -97,36 +105,35 @@ func main() { os.Exit(1) } for _, n := range oths { - err := pkg.Remove(n, opts, destDir) + err := pkg.Remove(n, opts, absDestDir) if err != nil { fmt.Println("!!", err) os.Exit(1) } } } else if cmds[0] == "u" { - database.DownloadRepos(database.GetReposUrls(destDir), destDir) + database.DownloadRepos(database.GetReposUrls(absDestDir), absDestDir) } else if cmds[0] == "g" { if len(oths) < 1 { fmt.Println("!! no package(s) received") os.Exit(1) } for _, name := range oths { - fmt.Println(database.GetPackageVersion(name, destDir)) + fmt.Println(database.GetPackageVersion(name, absDestDir)) } } else if cmds[0] == "r" { - for _, url := range database.GetReposUrls(destDir) { + for _, url := range database.GetReposUrls(absDestDir) { fmt.Println(url) } } else if cmds[0] == "q" { - for name, version := range database.ReadInstalled(destDir) { + for name, version := range database.ReadInstalled(absDestDir) { fmt.Println(name, "-", version[0]) } } else if cmds[0] == "s" { if len(oths) < 1 { - pkgs := pkg.GetPackages(destDir) - fmt.Println(pkgs) + pkgs := pkg.GetPackages(absDestDir) for _, p := range pkgs { - if database.IsInstalled(p.Repo + "/" + p.Name, destDir) { + if database.IsInstalled(p.Repo+"/"+p.Name, absDestDir) { fmt.Printf("[+] %s/%s - %v - %v\n", p.Repo, p.Name, p.Data[0], p.Data[1]) } else { fmt.Printf(" %s/%s - %v - %v\n", p.Repo, p.Name, p.Data[0], p.Data[1]) @@ -134,9 +141,9 @@ func main() { } } else { for _, n := range oths { - pkgs := pkg.FindPackages(n, destDir) + pkgs := pkg.FindPackages(n, absDestDir) for _, p := range pkgs { - if database.IsInstalled(p.Repo + "/" + p.Name, destDir) { + if database.IsInstalled(p.Repo+"/"+p.Name, absDestDir) { fmt.Printf("[+] %s/%s - %v - %v\n", p.Repo, p.Name, p.Data[0], p.Data[1]) } else { fmt.Printf(" %s/%s - %v - %v\n", p.Repo, p.Name, p.Data[0], p.Data[1]) @@ -152,7 +159,7 @@ func main() { } if len(oths) >= 1 { for _, n := range oths { - err := database.PurgeRepository(n, destDir) + err := database.PurgeRepository(n, absDestDir) if err != nil { fmt.Println("!!", err) os.Exit(1) @@ -161,6 +168,13 @@ func main() { } } } + } else if cmds[0] == "f" { + fmt.Printf("dest dir: %v\n", destDir) + fmt.Printf("abs dest dir: %v\n", absDestDir) + fmt.Printf("is abs: %v\n", filepath.IsAbs(destDir)) + fmt.Printf("repos urls file: %v\n", filepath.Join(absDestDir, paths.ReposUrlsFile)) + fmt.Printf("repos dir: %v\n", filepath.Join(absDestDir, paths.ReposDir)) + fmt.Printf("installed pkgs database: %v\n", filepath.Join(absDestDir, paths.InstalledFile)) } else if cmds[0] == "v" { fmt.Println(_version) } else { |