diff --git a/command/config.go b/command/config.go index 4dbcc38..d71ef75 100644 --- a/command/config.go +++ b/command/config.go @@ -12,5 +12,5 @@ var configCmd = &cobra.Command{ Use: "config", Short: "Application configuration", Long: `Menu for setting up the application.`, - Hidden: true, + Hidden: false, } diff --git a/command/config_repo.go b/command/config_repo.go new file mode 100644 index 0000000..d0cb5f3 --- /dev/null +++ b/command/config_repo.go @@ -0,0 +1,63 @@ +package command + +import ( + "fmt" + "log" + + "github.com/dixonwille/wmenu/v5" + "github.com/spf13/cobra" + "github.com/spf13/viper" +) + +func init() { + configCmd.AddCommand(configRepoCmd) +} + +var configRepoCmd = &cobra.Command{ + Use: "repo", + Short: "Repository source configuration", + Long: `Menu for setting up the images source repository.`, + Run: func(cmd *cobra.Command, args []string) { + setRepo() + }, + Hidden: false, +} + +func setRepo() { + menu := wmenu.NewMenu("Select application repository source:") + menu.LoopOnInvalid() + + menu.Action(func(opts []wmenu.Opt) error { fmt.Println(opts[0].Value); return nil }) + + locale := viper.GetString("repo") + + menu.Option("ghcr.io", "ghcr.io", locale == "ghcr.io", func(opt wmenu.Opt) error { + saveRepoConfig(opt.Value) + return nil + }) + + menu.Option("quay.io", "quay.io", locale == "quay.io", func(opt wmenu.Opt) error { + saveRepoConfig(opt.Value) + return nil + }) + + err := menu.Run() + if err != nil { + log.Fatal(err) + } +} + +func saveRepoConfig(lang interface{}) { + viper.Set("repo", lang) + err := viper.WriteConfig() + if err != nil { + log.Fatal(err) + } + + switch lang { + case "ghcr.io": + fmt.Println("Selected ghcr.io") + case "quay.io": + fmt.Println("Selected quay.io") + } +} diff --git a/command/self_update.go b/command/self_update.go index 38f217f..8370b11 100644 --- a/command/self_update.go +++ b/command/self_update.go @@ -91,6 +91,12 @@ func selfUpdate() { spinnerTmp.Success() viper.Set("version", *release.TagName) + + repo := viper.GetString("repo") + if len(repo) == 0 { + viper.Set("repo", "ghcr.io") + } + err = viper.WriteConfig() if err != nil { pterm.FgRed.Println(err) diff --git a/config-files/docker-compose-apache.yaml b/config-files/docker-compose-apache.yaml index 8a9bd32..1c44f1a 100644 --- a/config-files/docker-compose-apache.yaml +++ b/config-files/docker-compose-apache.yaml @@ -3,7 +3,7 @@ version: "3.8" services: php: container_name: ${HOST_NAME}_php - image: quay.io/local-deploy/php${PHP_VERSION:-7.3-apache}:${PHP_IMAGE_VERSION:-latest} + image: ${REPO}/local-deploy/php${PHP_VERSION:-7.4-apache}:${PHP_IMAGE_VERSION:-latest} environment: - "DOCUMENT_ROOT=${DOCUMENT_ROOT:-/var/www/html}" - "HOST_NAME=${HOST_NAME:-localhost}" diff --git a/config-files/docker-compose-fpm.yaml b/config-files/docker-compose-fpm.yaml index ac1b0c1..45377a4 100644 --- a/config-files/docker-compose-fpm.yaml +++ b/config-files/docker-compose-fpm.yaml @@ -3,7 +3,7 @@ version: "3.8" services: php: container_name: ${HOST_NAME}_php - image: quay.io/local-deploy/php${PHP_VERSION:-7.3-fpm}:${PHP_IMAGE_VERSION:-latest} + image: ${REPO}/local-deploy/php${PHP_VERSION:-7.4-fpm}:${PHP_IMAGE_VERSION:-latest} environment: - "DOCUMENT_ROOT=${DOCUMENT_ROOT:-/var/www/html}" - "HOST_NAME=${HOST_NAME:-localhost}" diff --git a/main.go b/main.go index c5522b8..b66ad6a 100644 --- a/main.go +++ b/main.go @@ -13,7 +13,7 @@ import ( "github.com/varrcan/dl/helper" ) -var version = "0.2.5" +var version = "0.2.6" func main() { if !helper.IsConfigDirExists() { @@ -66,6 +66,7 @@ func createConfigFile() error { viper.Set("version", version) viper.Set("locale", "en") + viper.Set("repo", "ghcr.io") errWrite := viper.SafeWriteConfig() diff --git a/project/env.go b/project/env.go index ae94640..fd5736a 100644 --- a/project/env.go +++ b/project/env.go @@ -17,12 +17,12 @@ import ( var Env *viper.Viper var phpImagesVersion = map[string]string{ - "7.3-apache": "1.1.0", - "7.3-fpm": "1.0.0", - "7.4-apache": "1.0.1", - "7.4-fpm": "1.0.0", - "8.0-apache": "1.0.2", - "8.0-fpm": "1.0.1", + "7.3-apache": "1.1.1", + "7.3-fpm": "1.0.1", + "7.4-apache": "1.0.3", + "7.4-fpm": "1.0.1", + "8.0-apache": "1.0.3", + "8.0-fpm": "1.0.2", } // LoadEnv Get variables from .env file @@ -74,6 +74,8 @@ func setDefaultEnv() { Env.SetDefault("LOCAL_IP", host) Env.SetDefault("NIP_DOMAIN", fmt.Sprintf("%s.%s.nip.io", projectName, host)) Env.SetDefault("LOCAL_DOMAIN", fmt.Sprintf("%s.localhost", projectName)) + + Env.SetDefault("REPO", viper.GetString("repo")) } // setComposeFile Set docker-compose files