From fd0cae4366fc95640b261c53dcf0c53e21c39ee6 Mon Sep 17 00:00:00 2001 From: Achilleas Koutsou Date: Thu, 17 Aug 2023 15:05:26 +0200 Subject: [PATCH] cmd: add a osbuild-upload-pulp-ostree utility Simple command line wrapper around the UploadAndDistributeCommit() function. --- cmd/osbuild-upload-pulp-ostree/main.go | 44 ++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 cmd/osbuild-upload-pulp-ostree/main.go diff --git a/cmd/osbuild-upload-pulp-ostree/main.go b/cmd/osbuild-upload-pulp-ostree/main.go new file mode 100644 index 000000000..bab8c2e84 --- /dev/null +++ b/cmd/osbuild-upload-pulp-ostree/main.go @@ -0,0 +1,44 @@ +package main + +import ( + "encoding/json" + "flag" + "fmt" + "io" + "os" + + "github.com/osbuild/osbuild-composer/internal/upload/pulp" +) + +func check(err error) { + if err != nil { + fmt.Fprintln(os.Stderr, err.Error()) + os.Exit(1) + } +} + +func readCredentials(credPath string) *pulp.Credentials { + fp, err := os.Open(credPath) + check(err) + data, err := io.ReadAll(fp) + check(err) + var creds pulp.Credentials + check(json.Unmarshal(data, &creds)) + return &creds +} + +func main() { + var filename, apiURL, repository, basePath, credsFile string + flag.StringVar(&filename, "archive", "", "ostree archive to upload") + flag.StringVar(&apiURL, "url", "", "server URL") + flag.StringVar(&repository, "repository", "", "repository name") + flag.StringVar(&basePath, "base-path", "", "base path for distribution (if the repository does not already exist)") + flag.StringVar(&credsFile, "credentials", "", `file containing credentials (format: {"username": "...", "password": "..."})`) + flag.Parse() + + client := pulp.NewClient(apiURL, readCredentials(credsFile)) + + repoURL, err := client.UploadAndDistributeCommit(filename, repository, basePath) + check(err) + fmt.Printf("The commit will be available in the repository at %s\n", repoURL) +}