added create, edit, delete
This commit is contained in:
+112
@@ -0,0 +1,112 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"net/http"
|
||||
"strings"
|
||||
)
|
||||
|
||||
const URL = "http://localhost:3000"
|
||||
|
||||
func showHelp() {
|
||||
fmt.Println("wpm - Wyst Package Manager")
|
||||
fmt.Println("Commands:")
|
||||
fmt.Println(" install <package>[:version] - Install a package (version is optional)")
|
||||
fmt.Println(" create <package> - Create a package")
|
||||
fmt.Println(" edit <package> - Edit a package")
|
||||
fmt.Println(" delete <package> - Delete a package")
|
||||
fmt.Println(" version - Show the wpm version")
|
||||
fmt.Println(" help - Show this help message")
|
||||
fmt.Println(" info <package> - Show package information (author, description, versions)")
|
||||
}
|
||||
|
||||
func parsePackageArg(arg string) (string, string) {
|
||||
parts := strings.Split(arg, ":")
|
||||
if len(parts) == 2 {
|
||||
return parts[0], parts[1]
|
||||
}
|
||||
return parts[0], ""
|
||||
}
|
||||
|
||||
func createPackage(packageName string) {
|
||||
var psw string
|
||||
var repo string
|
||||
var version string
|
||||
fmt.Printf("Enter the password for %s: ", packageName)
|
||||
fmt.Scanln(&psw)
|
||||
fmt.Printf("Enter the repo for %s: ", packageName)
|
||||
fmt.Scanln(&repo)
|
||||
fmt.Printf("Enter the latest version for %s: ", packageName)
|
||||
fmt.Scanln(&version)
|
||||
jsonBody := []byte(fmt.Sprintf(`{"name": "%v", "psw": "%v", "repo": "%v", "latest": "%v"}`, packageName, psw, repo, version))
|
||||
_, err := sendRequest(http.MethodPost, URL, jsonBody)
|
||||
if err != nil {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
func editPackage(packageName string) {
|
||||
pkgidx, err := getPackage(packageName)
|
||||
if err != nil {
|
||||
}
|
||||
var psw string
|
||||
var repo string = pkgidx.Repo
|
||||
var version string = pkgidx.Latest
|
||||
var newPsw string
|
||||
var newPackageName string = packageName
|
||||
|
||||
fmt.Printf("Enter the password for %s: ", packageName)
|
||||
fmt.Scanln(&psw)
|
||||
newPsw = psw
|
||||
|
||||
for true {
|
||||
fmt.Printf("\033[2J")
|
||||
fmt.Println("Choose what you want to modify")
|
||||
fmt.Printf(" 1 -> package name: %s\n", newPackageName)
|
||||
fmt.Printf(" 2 -> password: %s\n", newPsw)
|
||||
fmt.Printf(" 3 -> repo: %s\n", repo)
|
||||
fmt.Printf(" 4 -> latest version: %s\n", version)
|
||||
fmt.Println("Type in 'quit'/'q'/'exit' to discard your changes")
|
||||
fmt.Println("Type in anything else to confirm your changes")
|
||||
var option string
|
||||
fmt.Print("\n> ")
|
||||
fmt.Scanln(&option)
|
||||
switch option {
|
||||
case "1":
|
||||
fmt.Printf("Enter the new name for for %s: ", packageName)
|
||||
fmt.Scanln(&newPackageName)
|
||||
case "2":
|
||||
fmt.Printf("Enter the new password for %s: ", packageName)
|
||||
fmt.Scanln(&newPsw)
|
||||
case "3":
|
||||
fmt.Printf("Enter the repo for %s: ", packageName)
|
||||
fmt.Scanln(&repo)
|
||||
case "4":
|
||||
fmt.Printf("Enter the latest version for %s: ", packageName)
|
||||
fmt.Scanln(&version)
|
||||
case "q":
|
||||
return
|
||||
case "quit":
|
||||
return
|
||||
case "exit":
|
||||
return
|
||||
default:
|
||||
jsonBody := []byte(fmt.Sprintf(`{ "new": {"name": "%v", "psw": "%v", "latest": "%v", "repo": "%v"}, "name": "%v", "psw": "%v"}`, newPackageName, newPsw, version, repo, packageName, psw))
|
||||
req, err := sendRequest(http.MethodPut, URL, jsonBody)
|
||||
if err != nil {
|
||||
fmt.Printf("Error while editing %s: %v", packageName, err)
|
||||
}
|
||||
fmt.Printf(string(req.Body))
|
||||
return
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
func deletePackage(packageName string) {
|
||||
fmt.Printf("Enter the password for %s: ", packageName)
|
||||
var psw string
|
||||
fmt.Scanln(&psw)
|
||||
jsonBody := []byte(fmt.Sprintf(`{"name": "%s", "psw": "%v"}`, packageName, psw))
|
||||
sendRequest(http.MethodDelete, URL, jsonBody)
|
||||
}
|
||||
Reference in New Issue
Block a user