Skip to content
This repository was archived by the owner on Jul 12, 2022. It is now read-only.

[FEATURE] Create formula and build #212

Merged
merged 21 commits into from
Jun 30, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
46 changes: 27 additions & 19 deletions cmd/single/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,15 @@ import (
"os"
"time"

"github.com/ZupIT/ritchie-cli/pkg/formula/builder"
"github.com/ZupIT/ritchie-cli/pkg/formula/repo"
"github.com/ZupIT/ritchie-cli/pkg/formula/runner"
"github.com/ZupIT/ritchie-cli/pkg/formula/tree"

"k8s.io/kubectl/pkg/util/templates"

"github.com/ZupIT/ritchie-cli/pkg/formula/builder"
"github.com/ZupIT/ritchie-cli/pkg/formula/creator"

"github.com/ZupIT/ritchie-cli/pkg/upgrade"
"github.com/ZupIT/ritchie-cli/pkg/version"

Expand Down Expand Up @@ -62,30 +67,37 @@ func buildCommands() *cobra.Command {
ctxRemover := rcontext.NewRemover(ritchieHomeDir, ctxFinder)
ctxFindSetter := rcontext.NewFindSetter(ritchieHomeDir, ctxFinder, ctxSetter)
ctxFindRemover := rcontext.NewFindRemover(ritchieHomeDir, ctxFinder, ctxRemover)
repoManager := formula.NewSingleRepoManager(ritchieHomeDir, http.DefaultClient, sessionManager)
repoLoader := formula.NewSingleLoader(cmd.CommonsRepoURL, repoManager)
repoManager := repo.NewSingleRepoManager(ritchieHomeDir, http.DefaultClient, sessionManager)
repoLoader := repo.NewSingleLoader(cmd.CommonsRepoURL, repoManager)
sessionValidator := sesssingle.NewValidator(sessionManager)
passphraseManager := secsingle.NewPassphraseManager(sessionManager)
credSetter := credsingle.NewSetter(ritchieHomeDir, ctxFinder, sessionManager)
credFinder := credsingle.NewFinder(ritchieHomeDir, ctxFinder, sessionManager)
treeManager := formula.NewTreeManager(ritchieHomeDir, repoManager, api.SingleCoreCmds)
treeManager := tree.NewTreeManager(ritchieHomeDir, repoManager, api.SingleCoreCmds)
autocompleteGen := autocomplete.NewGenerator(treeManager)
credResolver := envcredential.NewResolver(credFinder)
envResolvers := make(env.Resolvers)
envResolvers[env.Credential] = credResolver

inputManager := formula.NewInputManager(envResolvers, inputList, inputText, inputBool, inputPassword)
formulaSetup := formula.NewDefaultSingleSetup(ritchieHomeDir, http.DefaultClient)
inputManager := runner.NewInputManager(envResolvers, inputList, inputText, inputBool, inputPassword)
formulaSetup := runner.NewDefaultSingleSetup(ritchieHomeDir, http.DefaultClient)

defaultPreRunner := formula.NewDefaultPreRunner(formulaSetup)
dockerPreRunner := formula.NewDockerPreRunner(formulaSetup)
defaultPreRunner := runner.NewDefaultPreRunner(formulaSetup)
dockerPreRunner := runner.NewDockerPreRunner(formulaSetup)

postRunner := formula.NewPostRunner()
postRunner := runner.NewPostRunner()

defaultRunner := formula.NewDefaultRunner(defaultPreRunner, postRunner, inputManager)
dockerRunner := formula.NewDockerRunner(dockerPreRunner, postRunner, inputManager)
defaultRunner := runner.NewDefaultRunner(defaultPreRunner, postRunner, inputManager)
dockerRunner := runner.NewDockerRunner(dockerPreRunner, postRunner, inputManager)

formulaCreator := formula.NewCreator(userHomeDir, treeManager)
fileManager := stream.NewFileManager()
dirManager := stream.NewDirManager(fileManager)

formulaCreator := creator.NewCreator(treeManager, dirManager, fileManager)
formulaWorkspace := fworkspace.New(ritchieHomeDir, fileManager)
formulaBuilder := builder.New(ritchieHomeDir, dirManager, fileManager)
watchManager := watcher.New(formulaBuilder, dirManager)
createBuilder := formula.NewCreateBuilder(formulaCreator, formulaBuilder)

upgradeManager := upgrade.DefaultManager{Updater: upgrade.DefaultUpdater{}}
defaultUpgradeResolver := version.DefaultVersionResolver{
Expand Down Expand Up @@ -128,13 +140,9 @@ func buildCommands() *cobra.Command {
updateRepoCmd := cmd.NewUpdateRepoCmd(repoManager)
autocompleteZsh := cmd.NewAutocompleteZsh(autocompleteGen)
autocompleteBash := cmd.NewAutocompleteBash(autocompleteGen)
createFormulaCmd := cmd.NewCreateFormulaCmd(formulaCreator, inputText, inputList, inputBool)
fileManager := stream.NewFileManager()
dirManager := stream.NewDirManager(fileManager)
formulaWorkspace := fworkspace.New(ritchieHomeDir, fileManager)
formulaBuilder := builder.New(ritchieHomeDir, dirManager, fileManager)
watchManager := watcher.New(formulaBuilder, dirManager)
buildFormulaCmd := cmd.NewBuildFormulaCmd(userHomeDir, formulaWorkspace, formulaBuilder, watchManager, dirManager, inputText, inputList)

createFormulaCmd := cmd.NewCreateFormulaCmd(userHomeDir, createBuilder, formulaWorkspace, inputText, inputList)
buildFormulaCmd := cmd.NewBuildFormulaCmd(userHomeDir, formulaBuilder, formulaWorkspace, watchManager, dirManager, inputText, inputList)

autocompleteCmd.AddCommand(autocompleteZsh, autocompleteBash)
addCmd.AddCommand(addRepoCmd)
Expand Down
47 changes: 27 additions & 20 deletions cmd/team/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,15 @@ import (
"os"
"time"

"github.com/ZupIT/ritchie-cli/pkg/formula/builder"
"github.com/ZupIT/ritchie-cli/pkg/formula/repo"
"github.com/ZupIT/ritchie-cli/pkg/formula/runner"
"github.com/ZupIT/ritchie-cli/pkg/formula/tree"

"k8s.io/kubectl/pkg/util/templates"

"github.com/ZupIT/ritchie-cli/pkg/formula/builder"
"github.com/ZupIT/ritchie-cli/pkg/formula/creator"

"github.com/ZupIT/ritchie-cli/pkg/upgrade"
"github.com/ZupIT/ritchie-cli/pkg/version"

Expand Down Expand Up @@ -76,8 +81,8 @@ func buildCommands() *cobra.Command {
serverFindSetter := server.NewFindSetter(serverFinder, serverSetter)

httpClient := makeHttpClient(serverFinder)
repoManager := formula.NewTeamRepoManager(ritchieHomeDir, serverFinder, httpClient, sessionManager)
repoLoader := formula.NewTeamLoader(serverFinder, httpClient, sessionManager, repoManager)
repoManager := repo.NewTeamRepoManager(ritchieHomeDir, serverFinder, httpClient, sessionManager)
repoLoader := repo.NewTeamLoader(serverFinder, httpClient, sessionManager, repoManager)
sessionValidator := sessteam.NewValidator(sessionManager)
loginManager := secteam.NewLoginManager(
serverFinder,
Expand All @@ -87,28 +92,34 @@ func buildCommands() *cobra.Command {
credSetter := credteam.NewSetter(serverFinder, httpClient, sessionManager, ctxFinder)
credFinder := credteam.NewFinder(serverFinder, httpClient, sessionManager, ctxFinder)
credSettings := credteam.NewSettings(serverFinder, httpClient, sessionManager, ctxFinder)
treeManager := formula.NewTreeManager(ritchieHomeDir, repoManager, api.TeamCoreCmds)
treeManager := tree.NewTreeManager(ritchieHomeDir, repoManager, api.TeamCoreCmds)
autocompleteGen := autocomplete.NewGenerator(treeManager)
credResolver := envcredential.NewResolver(credFinder)
envResolvers := make(env.Resolvers)
envResolvers[env.Credential] = credResolver

inputManager := formula.NewInputManager(envResolvers, inputList, inputText, inputBool, inputPassword)
formulaSetup := formula.NewDefaultTeamSetup(ritchieHomeDir, httpClient, sessionManager)
inputManager := runner.NewInputManager(envResolvers, inputList, inputText, inputBool, inputPassword)
formulaSetup := runner.NewDefaultTeamSetup(ritchieHomeDir, httpClient, sessionManager)

defaultPreRunner := runner.NewDefaultPreRunner(formulaSetup)
dockerPreRunner := runner.NewDockerPreRunner(formulaSetup)
postRunner := runner.NewPostRunner()

defaultPreRunner := formula.NewDefaultPreRunner(formulaSetup)
dockerPreRunner := formula.NewDockerPreRunner(formulaSetup)
postRunner := formula.NewPostRunner()
defaultRunner := runner.NewDefaultRunner(defaultPreRunner, postRunner, inputManager)
dockerRunner := runner.NewDockerRunner(dockerPreRunner, postRunner, inputManager)

defaultRunner := formula.NewDefaultRunner(defaultPreRunner, postRunner, inputManager)
dockerRunner := formula.NewDockerRunner(dockerPreRunner, postRunner, inputManager)
fileManager := stream.NewFileManager()
dirManager := stream.NewDirManager(fileManager)

formulaCreator := formula.NewCreator(userHomeDir, treeManager)
formulaCreator := creator.NewCreator(treeManager, dirManager, fileManager)
formulaWorkspace := fworkspace.New(ritchieHomeDir, fileManager)
formulaBuilder := builder.New(ritchieHomeDir, dirManager, fileManager)
watchManager := watcher.New(formulaBuilder, dirManager)
createBuilder := formula.NewCreateBuilder(formulaCreator, formulaBuilder)

upgradeManager := upgrade.DefaultManager{Updater: upgrade.DefaultUpdater{}}
uhc := makeHttpClient(serverFinder)
uhc.Timeout = 1 * time.Second
uhc.Timeout = 1 * time.Second
defaultUpgradeResolver := version.DefaultVersionResolver{
StableVersionUrl: cmd.StableVersionUrl,
FileUtilService: fileutil.DefaultService{},
Expand Down Expand Up @@ -153,13 +164,9 @@ func buildCommands() *cobra.Command {
updateRepoCmd := cmd.NewUpdateRepoCmd(repoManager)
autocompleteZsh := cmd.NewAutocompleteZsh(autocompleteGen)
autocompleteBash := cmd.NewAutocompleteBash(autocompleteGen)
createFormulaCmd := cmd.NewCreateFormulaCmd(formulaCreator, inputText, inputList, inputBool)
fileManager := stream.NewFileManager()
dirManager := stream.NewDirManager(fileManager)
formulaWorkspace := fworkspace.New(ritchieHomeDir, fileManager)
formulaBuilder := builder.New(ritchieHomeDir, dirManager, fileManager)
watchManager := watcher.New(formulaBuilder, dirManager)
buildFormulaCmd := cmd.NewBuildFormulaCmd(userHomeDir, formulaWorkspace, formulaBuilder, watchManager, dirManager, inputText, inputList)

createFormulaCmd := cmd.NewCreateFormulaCmd(userHomeDir, createBuilder, formulaWorkspace, inputText, inputList)
buildFormulaCmd := cmd.NewBuildFormulaCmd(userHomeDir, formulaBuilder, formulaWorkspace, watchManager, dirManager, inputText, inputList)

autocompleteCmd.AddCommand(autocompleteZsh, autocompleteBash)
addCmd.AddCommand(addRepoCmd)
Expand Down
1 change: 1 addition & 0 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ go 1.14

require (
github.com/denisbrodbeck/machineid v1.0.1
github.com/docker/docker v0.7.3-0.20190327010347-be7ac8be2ae0
github.com/fatih/color v1.9.0 // indirect
github.com/gofrs/flock v0.7.1
github.com/google/uuid v1.1.1
Expand Down
20 changes: 10 additions & 10 deletions pkg/api/api.go
Original file line number Diff line number Diff line change
Expand Up @@ -63,22 +63,22 @@ type Command struct {
Parent string `json:"parent"`
Usage string `json:"usage"`
Help string `json:"help"`
Formula Formula `json:"formula,omitempty"`
Repo string
Formula *Formula `json:"formula,omitempty"`
Repo string `json:"Repo,omitempty"`
}

type Commands []Command

// Formula type
type Formula struct {
Path string `json:"path"`
Bin string `json:"bin"`
LBin string `json:"binLinux"`
MBin string `json:"binDarwin"`
WBin string `json:"binWindows"`
Bundle string `json:"bundle"`
Config string `json:"config"`
RepoURL string `json:"repoUrl"`
Path string `json:"path,omitempty"`
Bin string `json:"bin,omitempty"`
LBin string `json:"binLinux,omitempty"`
MBin string `json:"binDarwin,omitempty"`
WBin string `json:"binWindows,omitempty"`
Bundle string `json:"bundle,omitempty"`
Config string `json:"config,omitempty"`
RepoURL string `json:"repoUrl,omitempty"`
}

// Edition type that represents Single or Team.
Expand Down
3 changes: 2 additions & 1 deletion pkg/autocomplete/generator_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import (

"github.com/ZupIT/ritchie-cli/pkg/api"
"github.com/ZupIT/ritchie-cli/pkg/formula"
"github.com/ZupIT/ritchie-cli/pkg/formula/tree"
)

type repoListerMock struct{}
Expand All @@ -22,7 +23,7 @@ func TestGenerate(t *testing.T) {
err error
}

treeMan := formula.NewTreeManager("../../testdata", repoListerMock{}, api.SingleCoreCmds)
treeMan := tree.NewTreeManager("../../testdata", repoListerMock{}, api.SingleCoreCmds)
autocomplete := NewGenerator(treeMan)

tests := []struct {
Expand Down
11 changes: 4 additions & 7 deletions pkg/cmd/add_repo.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,16 +4,17 @@ import (
"fmt"
"os"

"github.com/ZupIT/ritchie-cli/pkg/formula"

"github.com/spf13/cobra"

"github.com/ZupIT/ritchie-cli/pkg/formula"
"github.com/ZupIT/ritchie-cli/pkg/prompt"
"github.com/ZupIT/ritchie-cli/pkg/stdin"
)

// addRepoCmd type for add repo command
type addRepoCmd struct {
formula.AddLister
formula.RepoAddLister
prompt.InputText
prompt.InputURL
prompt.InputInt
Expand All @@ -22,7 +23,7 @@ type addRepoCmd struct {

// NewAddRepoCmd creates a new cmd instance
func NewAddRepoCmd(
adl formula.AddLister,
adl formula.RepoAddLister,
it prompt.InputText,
iu prompt.InputURL,
ii prompt.InputInt,
Expand All @@ -39,16 +40,13 @@ func NewAddRepoCmd(
Use: "repo",
Short: "Add a repository.",
Example: "rit add repo ",
//1
RunE: RunFuncE(a.runStdin(), a.runPrompt()),
}
//2
cmd.LocalFlags()

return cmd
}

//3
func (a addRepoCmd) runPrompt() CommandRunnerFunc {
return func(cmd *cobra.Command, args []string) error {
rn, err := a.Text("Name of the repository: ", true)
Expand Down Expand Up @@ -95,7 +93,6 @@ func (a addRepoCmd) runPrompt() CommandRunnerFunc {
}
}

//4
func (a addRepoCmd) runStdin() CommandRunnerFunc {
return func(cmd *cobra.Command, args []string) error {

Expand Down
50 changes: 8 additions & 42 deletions pkg/cmd/build_formula.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,13 @@ package cmd
import (
"errors"
"fmt"
"strings"
"path"
"time"

"github.com/kaduartur/go-cli-spinner/pkg/spinner"
"github.com/spf13/cobra"

"github.com/ZupIT/ritchie-cli/pkg/formula"
"github.com/ZupIT/ritchie-cli/pkg/formula/workspace"
"github.com/ZupIT/ritchie-cli/pkg/prompt"
"github.com/ZupIT/ritchie-cli/pkg/slice/sliceutil"
"github.com/ZupIT/ritchie-cli/pkg/stream"
Expand All @@ -25,7 +24,7 @@ const (

type buildFormulaCmd struct {
userHomeDir string
workspace workspace.AddListValidator
workspace formula.WorkspaceAddListValidator
formula formula.Builder
watcher formula.Watcher
directory stream.DirListChecker
Expand All @@ -35,8 +34,8 @@ type buildFormulaCmd struct {

func NewBuildFormulaCmd(
userHomeDir string,
workManager workspace.AddListValidator,
formula formula.Builder,
workManager formula.WorkspaceAddListValidator,
watcher formula.Watcher,
directory stream.DirListChecker,
inText prompt.InputText,
Expand Down Expand Up @@ -71,57 +70,24 @@ func (b buildFormulaCmd) runFunc() CommandRunnerFunc {
return err
}

defaultWorkspace := fmt.Sprintf(workspace.DefaultWorkspaceDirPattern, b.userHomeDir)
defaultWorkspace := path.Join(b.userHomeDir, formula.DefaultWorkspaceDir)
if b.directory.Exists(defaultWorkspace) {
workspaces[workspace.DefaultWorkspaceName] = defaultWorkspace
workspaces[formula.DefaultWorkspaceName] = defaultWorkspace
}

var items []string
for k, v := range workspaces {
kv := fmt.Sprintf("%s (%s)", k, v)
items = append(items, kv)
}

items = append(items, newWorkspace)
selected, err := b.List("Select a formula workspace: ", items)
wspace, err := FormulaWorkspaceInput(workspaces, b.InputList, b.InputText)
if err != nil {
return err
}

var workspaceName string
var workspacePath string
var wspace workspace.Workspace
if selected == newWorkspace {
workspaceName, err = b.Text("Workspace name: ", true)
if err != nil {
return err
}

workspacePath, err = b.Text("Workspace path (e.g.: /home/user/github):", true)
if err != nil {
if wspace.Dir != defaultWorkspace {
if err := b.workspace.Validate(wspace); err != nil {
return err
}

wspace = workspace.Workspace{
Name: strings.Title(workspaceName),
Dir: workspacePath,
}

if err := b.workspace.Add(wspace); err != nil {
return err
}
} else {
split := strings.Split(selected, " ")
workspaceName = split[0]
workspacePath = workspaces[workspaceName]
wspace = workspace.Workspace{
Name: strings.Title(workspaceName),
Dir: workspacePath,
}

if err := b.workspace.Validate(wspace); err != nil {
return err
}
}

formulaPath, err := b.readFormulas(wspace.Dir)
Expand Down
Loading