docker-hub-description-updater/cmd/root.go

89 lines
2.2 KiB
Go

package cmd
import (
"io/ioutil"
"log"
"os"
"github.com/spf13/cobra"
"github.com/volker-raschek/docker-hub-description-updater/pkg/hub"
"github.com/volker-raschek/docker-hub-description-updater/pkg/types"
)
var (
dockerHubNamespace string
dockerHubUser string
dockerHubPassword string
dockerHubRepository string
file string
)
var rootCmd = &cobra.Command{
Use: "dhdu",
Short: "docker hub description updater (dhdu)",
Run: func(cmd *cobra.Command, args []string) {
if len(dockerHubUser) <= 0 {
log.Fatalf("No user defined over flags")
}
if len(dockerHubPassword) <= 0 {
log.Fatalf("No password defined over flags")
}
if len(dockerHubNamespace) <= 0 {
log.Printf("No namespace defined over flags: Use docker username %v instead", dockerHubUser)
dockerHubNamespace = dockerHubUser
}
if len(dockerHubRepository) <= 0 {
log.Fatalf("No repository defined over flags")
}
if _, err := os.Stat(file); os.IsNotExist(err) && len(file) <= 0 {
log.Fatalf("Can not find file: %v", file)
}
f, err := ioutil.ReadFile(file)
if err != nil {
log.Fatalf("Can not read file %v: %v", file, err)
}
fullDescription := string(f)
loginCredentials := &types.LoginCredentials{
User: dockerHubUser,
Password: dockerHubPassword,
}
token, err := hub.GetToken(loginCredentials)
if err != nil {
log.Fatalf("%v", err)
}
repository := &types.Repository{
Name: dockerHubRepository,
Namespcace: dockerHubNamespace,
FullDescription: fullDescription,
}
_, err = hub.PatchRepository(repository, token)
if err != nil {
log.Fatalf("%v", err)
}
},
}
// Execute a
func Execute(version string) {
rootCmd.Version = version
rootCmd.Flags().StringVarP(&dockerHubNamespace, "namespace", "n", "", "Docker Hub Namespace (default \"username\")")
rootCmd.Flags().StringVarP(&dockerHubPassword, "password", "p", "", "Docker Hub Password")
rootCmd.Flags().StringVarP(&dockerHubRepository, "repository", "r", "", "Docker Hub Repository")
rootCmd.Flags().StringVarP(&dockerHubUser, "username", "u", "", "Docker Hub Username")
rootCmd.Flags().StringVarP(&file, "file", "f", "./README.md", "File which should be uploaded as docker hub description")
rootCmd.Execute()
}