package main import ( "fmt" "github.com/go-resty/resty/v2" "os" "path/filepath" "strings" ) const APT_SERVICE_API = "https://apt.lumeweb.com" func main() { err := run() if err != nil { fmt.Printf("%s", err) } } func run() error { client := resty.New() files, _ := filepath.Glob("*.deb") pkg := files[0] pkg_name := strings.TrimSuffix(pkg, filepath.Ext(pkg)) pkg_parts := strings.Split(pkg_name, "_") pkg_parts = pkg_parts[:len(pkg_parts)-1] pkg_name = strings.Join(pkg_parts, "-") repo := os.Getenv("PLUGIN_REPO") gpg_pass := os.Getenv("PLUGIN_GPG_PASSWORD") distro := os.Getenv("PLUGIN_DISTRO") folder := os.Getenv("PLUGIN_FOLDER") client.SetBasicAuth(os.Getenv("PLUGIN_APT_USERNAME"), os.Getenv("PLUGIN_APT_PASSWORD")).SetBaseURL(APT_SERVICE_API) resp, err := client.R(). SetFile("file", pkg). Post("/api/files/" + pkg_name) if err != nil { return err } resp, err = client.R(). Post("/api/repos/" + repo + "/file/" + pkg_name) if err != nil { return err } resp, err = client.R(). SetBody(map[string]interface{}{ "Architectures": []string{"amd64"}, "Passphrase": gpg_pass, "SourceKind": "local", "Signing": map[string]interface{}{ "Batch": true, "Passphrase": gpg_pass, }, "ForceOverwrite": true, }). Put(fmt.Sprintf("/api/publish/s3:%s:%s/%s", repo, folder, distro)) if err != nil { return err } _ = resp return nil }