Skip to content

Commit

Permalink
feat: add config command
Browse files Browse the repository at this point in the history
Similar to git config, you can use the flag -l to get the list of key
values. The first argument should be a key you're looking for. The
second argument will set a new value for that key.
  • Loading branch information
lgdd committed Apr 30, 2024
1 parent f4a7462 commit 45a932c
Show file tree
Hide file tree
Showing 13 changed files with 146 additions and 77 deletions.
67 changes: 67 additions & 0 deletions internal/cmd/config/config.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
package config

import (
"fmt"
"os"
"slices"
"strings"

"github.com/lgdd/lfr-cli/internal/conf"
"github.com/lgdd/lfr-cli/pkg/util/logger"
"github.com/spf13/cobra"
"github.com/spf13/viper"
)

var (
Cmd = &cobra.Command{
Use: "config",
Short: "Get and set your configuration for lfr",
Args: func(cmd *cobra.Command, args []string) error {
if err := cobra.MaximumNArgs(2)(cmd, args); err != nil {
return err
}
if len(args) > 0 && !slices.Contains(viper.AllKeys(), args[0]) {
return fmt.Errorf("invalid config key")
}
return nil
},
Run: run,
}
List bool
)

func init() {
conf.Init()
Cmd.Flags().BoolVarP(&List, "list", "l", false, "list the key/values for your current configuration")
}

func run(cmd *cobra.Command, args []string) {
if len(args) == 0 {
printConfKeyValues()
cmd.Help()
os.Exit(0)
}

if len(args) == 1 {
logger.Println(viper.GetString(args[0]))
os.Exit(0)
}

if len(args) == 2 {
viper.Set(args[0], args[1])
viper.WriteConfig()
}
}

func printConfKeyValues() {
if List {
for _, key := range viper.AllKeys() {
var keyValueBuilder strings.Builder
keyValueBuilder.WriteString(key)
keyValueBuilder.WriteString("=")
keyValueBuilder.WriteString(viper.GetString(key))
logger.Println(keyValueBuilder.String())
}
os.Exit(0)
}
}
16 changes: 8 additions & 8 deletions internal/cmd/create/create.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import (
"os"

"github.com/charmbracelet/huh"
"github.com/lgdd/lfr-cli/internal/config"
"github.com/lgdd/lfr-cli/internal/conf"
"github.com/lgdd/lfr-cli/internal/prompt"
"github.com/lgdd/lfr-cli/pkg/metadata"
"github.com/lgdd/lfr-cli/pkg/util/logger"
Expand Down Expand Up @@ -37,14 +37,14 @@ func init() {
Cmd.AddCommand(createServiceBuilder)
Cmd.AddCommand(createRESTBuilder)
Cmd.AddCommand(createDocker)
config.Init()
defaultPackage := viper.GetString(config.ModulePackage)
conf.Init()
defaultPackage := viper.GetString(conf.ModulePackage)
Cmd.PersistentFlags().StringVarP(&metadata.PackageName, "package", "p", defaultPackage, "base package name")
}

func runPrompt(cmd *cobra.Command) {
var template, sample, name string
packageName := viper.GetString(config.ModulePackage)
packageName := viper.GetString(conf.ModulePackage)

form := huh.NewForm(
huh.NewGroup(
Expand All @@ -63,9 +63,9 @@ func runPrompt(cmd *cobra.Command) {
).
Value(&template),
),
).WithAccessible(viper.GetBool(config.OutputAccessible))
).WithAccessible(viper.GetBool(conf.OutputAccessible))

if config.NoColor {
if conf.NoColor {
form.WithTheme(huh.ThemeBase())
}

Expand Down Expand Up @@ -100,9 +100,9 @@ func runPrompt(cmd *cobra.Command) {
prompt.NewInputPackageName(&packageName),
prompt.NewInputName(&name),
),
).WithAccessible(viper.GetBool(config.OutputAccessible))
).WithAccessible(viper.GetBool(conf.OutputAccessible))

if config.NoColor {
if conf.NoColor {
form.WithTheme(huh.ThemeBase())
}

Expand Down
8 changes: 4 additions & 4 deletions internal/cmd/create/create_docker.go
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package create

import (
"github.com/lgdd/lfr-cli/internal/config"
"github.com/lgdd/lfr-cli/internal/conf"
"github.com/lgdd/lfr-cli/pkg/scaffold"
"github.com/lgdd/lfr-cli/pkg/util/fileutil"
"github.com/lgdd/lfr-cli/pkg/util/logger"
Expand All @@ -23,9 +23,9 @@ var (
)

func init() {
config.Init()
defaultMultistage := viper.GetBool(config.DockerMultistage)
defaultJDK := viper.GetInt(config.DockerJDK)
conf.Init()
defaultMultistage := viper.GetBool(conf.DockerMultistage)
defaultJDK := viper.GetInt(conf.DockerJDK)
createDocker.Flags().BoolVarP(&MultiStage, "multi-stage", "m", defaultMultistage, "use multi-stage build")
createDocker.Flags().IntVarP(&Java, "java", "j", defaultJDK, "Java version (8 or 11)")
}
Expand Down
12 changes: 6 additions & 6 deletions internal/cmd/create/create_workspace.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import (
"os"

"github.com/lgdd/lfr-cli/internal/cmd/exec"
"github.com/lgdd/lfr-cli/internal/config"
"github.com/lgdd/lfr-cli/internal/conf"
"github.com/lgdd/lfr-cli/pkg/metadata"
"github.com/lgdd/lfr-cli/pkg/scaffold"
"github.com/lgdd/lfr-cli/pkg/util/fileutil"
Expand All @@ -32,11 +32,11 @@ var (
)

func init() {
config.Init()
defaultVersion := viper.GetString(config.WorkspaceVersion)
defaultBuild := viper.GetString(config.WorkspaceBuild)
defaultEdition := viper.GetString(config.WorkspaceEdition)
defaultInit := viper.GetBool(config.WorkspaceInit)
conf.Init()
defaultVersion := viper.GetString(conf.WorkspaceVersion)
defaultBuild := viper.GetString(conf.WorkspaceBuild)
defaultEdition := viper.GetString(conf.WorkspaceEdition)
defaultInit := viper.GetBool(conf.WorkspaceInit)

createWorkspace.Flags().StringVarP(&Version, "version", "v", defaultVersion, "Liferay major version (7.x)")
createWorkspace.Flags().StringVarP(&Build, "build", "b", defaultBuild, "build tool (gradle or maven)")
Expand Down
6 changes: 3 additions & 3 deletions internal/cmd/logs/logs.go
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package logs

import (
"github.com/lgdd/lfr-cli/internal/config"
"github.com/lgdd/lfr-cli/internal/conf"
"github.com/lgdd/lfr-cli/pkg/util/fileutil"
"github.com/lgdd/lfr-cli/pkg/util/logger"

Expand All @@ -22,8 +22,8 @@ var (
)

func init() {
config.Init()
defaultFollow := viper.GetBool(config.LogsFollow)
conf.Init()
defaultFollow := viper.GetBool(conf.LogsFollow)
Cmd.Flags().BoolVarP(&Follow, "follow", "f", defaultFollow, "--follow")
}

Expand Down
10 changes: 6 additions & 4 deletions internal/cmd/root.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import (

"github.com/lgdd/lfr-cli/internal/cmd/build"
"github.com/lgdd/lfr-cli/internal/cmd/completion"
"github.com/lgdd/lfr-cli/internal/cmd/config"
"github.com/lgdd/lfr-cli/internal/cmd/create"
"github.com/lgdd/lfr-cli/internal/cmd/deploy"
"github.com/lgdd/lfr-cli/internal/cmd/diagnose"
Expand All @@ -18,7 +19,7 @@ import (
"github.com/lgdd/lfr-cli/internal/cmd/stop"
"github.com/lgdd/lfr-cli/internal/cmd/update"
"github.com/lgdd/lfr-cli/internal/cmd/version"
"github.com/lgdd/lfr-cli/internal/config"
"github.com/lgdd/lfr-cli/internal/conf"
)

var root = &cobra.Command{
Expand All @@ -41,10 +42,11 @@ func init() {
root.AddCommand(version.Cmd)
root.AddCommand(update.Cmd)
root.AddCommand(diagnose.Cmd)
root.AddCommand(config.Cmd)

config.Init()
defaultNoColor := viper.GetBool(config.OutputNoColor)
root.PersistentFlags().BoolVar(&config.NoColor, "no-color", defaultNoColor, "disable colors for output messages")
conf.Init()
defaultNoColor := viper.GetBool(conf.OutputNoColor)
root.PersistentFlags().BoolVar(&conf.NoColor, "no-color", defaultNoColor, "disable colors for output messages")
}

// Run the the main command
Expand Down
2 changes: 1 addition & 1 deletion internal/config/config.go → internal/conf/conf.go
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package config
package conf

import (
"log"
Expand Down
18 changes: 9 additions & 9 deletions internal/prompt/prompt.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import (
"os"

"github.com/charmbracelet/huh"
"github.com/lgdd/lfr-cli/internal/config"
"github.com/lgdd/lfr-cli/internal/conf"
"github.com/lgdd/lfr-cli/pkg/util/helper"
"github.com/lgdd/lfr-cli/pkg/util/logger"
"github.com/lgdd/lfr-cli/pkg/util/procutil"
Expand Down Expand Up @@ -39,9 +39,9 @@ func ForDocker(cmd *cobra.Command) {
).
Value(&dockerBuildOption),
),
).WithAccessible(viper.GetBool(config.OutputAccessible))
).WithAccessible(viper.GetBool(conf.OutputAccessible))

if config.NoColor {
if conf.NoColor {
form.WithTheme(huh.ThemeBase())
}

Expand Down Expand Up @@ -78,9 +78,9 @@ func ForSpring(cmd *cobra.Command, packageName, name *string) {
NewInputPackageName(packageName),
NewInputName(name),
),
).WithAccessible(viper.GetBool(config.OutputAccessible))
).WithAccessible(viper.GetBool(conf.OutputAccessible))

if config.NoColor {
if conf.NoColor {
form.WithTheme(huh.ThemeBase())
}

Expand Down Expand Up @@ -114,9 +114,9 @@ func ForName(name *string) {
huh.NewGroup(
NewInputName(name),
),
).WithAccessible(viper.GetBool(config.OutputAccessible))
).WithAccessible(viper.GetBool(conf.OutputAccessible))

if config.NoColor {
if conf.NoColor {
form.WithTheme(huh.ThemeBase())
}

Expand All @@ -138,9 +138,9 @@ func ForClientExtension(cmd *cobra.Command, sample, name *string) {
Value(sample),
NewInputName(name),
),
).WithAccessible(viper.GetBool(config.OutputAccessible))
).WithAccessible(viper.GetBool(conf.OutputAccessible))

if config.NoColor {
if conf.NoColor {
form.WithTheme(huh.ThemeBase())
}

Expand Down
6 changes: 3 additions & 3 deletions pkg/scaffold/client_extension.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import (
"strings"

"github.com/ettle/strcase"
"github.com/lgdd/lfr-cli/internal/config"
"github.com/lgdd/lfr-cli/internal/conf"
"github.com/lgdd/lfr-cli/pkg/util/fileutil"
"github.com/lgdd/lfr-cli/pkg/util/logger"

Expand All @@ -20,10 +20,10 @@ func CreateClientExtension(sample, name string) {
logger.Fatal(err.Error())
}

clientExtensionSamplesPath := filepath.Join(config.GetConfigPath(), config.ClientExtensionSampleProjectName)
clientExtensionSamplesPath := filepath.Join(conf.GetConfigPath(), conf.ClientExtensionSampleProjectName)
clientExtensionsWorkspaceDir := filepath.Join(liferayWorkspace, "client-extensions")

samplePath := filepath.Join(clientExtensionSamplesPath, config.ClientExtensionSamplePrefix+sample)
samplePath := filepath.Join(clientExtensionSamplesPath, conf.ClientExtensionSamplePrefix+sample)

name = strcase.ToKebab(strings.ToLower(name))
clientExtensionDir := filepath.Join(clientExtensionsWorkspaceDir, name)
Expand Down
4 changes: 2 additions & 2 deletions pkg/scaffold/client_extension_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import (
"path/filepath"
"testing"

"github.com/lgdd/lfr-cli/internal/config"
"github.com/lgdd/lfr-cli/internal/conf"
"github.com/lgdd/lfr-cli/pkg/util/helper"
)

Expand All @@ -16,7 +16,7 @@ func Test_HandleClientExtensionsOffline_ShouldIncludeGitFolderForFutureUpdates(t
t.Fatal(err)
}
helper.HandleClientExtensionsOffline(configTestPath)
if _, err := os.Stat(filepath.Join(configTestPath, config.ClientExtensionSampleProjectName, ".git")); err != nil {
if _, err := os.Stat(filepath.Join(configTestPath, conf.ClientExtensionSampleProjectName, ".git")); err != nil {
t.Fatal(err)
}
if err := os.RemoveAll(configTestPath); err != nil {
Expand Down
4 changes: 2 additions & 2 deletions pkg/util/fileutil/fileutil.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ import (
"github.com/spf13/viper"

"github.com/lgdd/lfr-cli/internal/assets"
"github.com/lgdd/lfr-cli/internal/config"
"github.com/lgdd/lfr-cli/internal/conf"
"github.com/lgdd/lfr-cli/pkg/util/logger"
)

Expand Down Expand Up @@ -315,7 +315,7 @@ func FindFileInDir(dirPath string, fileName string) (string, error) {
_ = spinner.New().
Title(fmt.Sprintf("Scanning files under %s", dirPath)).
Action(scan).
Accessible(viper.GetBool(config.OutputAccessible)).
Accessible(viper.GetBool(conf.OutputAccessible)).
Run()

if targetFilePath == "" {
Expand Down
Loading

0 comments on commit 45a932c

Please sign in to comment.