From cb44a26ef58c5d34c3b6a9cbe500e65acea5a55c Mon Sep 17 00:00:00 2001 From: Isaac Martinez Date: Sun, 23 Jul 2023 12:48:07 -0400 Subject: [PATCH] feat: add support to use flow package --- cmd/branch.go | 3 + cmd/branch/main.go | 2 +- cmd/pr.go | 3 + cmd/publish.go | 3 + config/main.go | 6 +- controllers/folders/Create.go | 8 ++- controllers/project/main.go | 63 ++++++++++++++++--- .../project/{structs.go => structs/main.go} | 3 +- main.go | 2 - pkg/cli/actions/branch.go | 1 + 10 files changed, 79 insertions(+), 15 deletions(-) rename controllers/project/{structs.go => structs/main.go} (93%) diff --git a/cmd/branch.go b/cmd/branch.go index 5c98364..906da5d 100644 --- a/cmd/branch.go +++ b/cmd/branch.go @@ -2,6 +2,7 @@ package cmd import ( "github.com/Minnek-Digital-Studio/cominnek/cmd/branch" + "github.com/Minnek-Digital-Studio/cominnek/controllers/project" pkg_action "github.com/Minnek-Digital-Studio/cominnek/pkg/cli/actions" "github.com/spf13/cobra" ) @@ -10,6 +11,8 @@ var branchCmd = &cobra.Command{ Use: "branch", Short: "Create a new branch.", Run: func(cmd *cobra.Command, args []string) { + project.ReadConfigFile(true) + pkg_action.Branch() }, } diff --git a/cmd/branch/main.go b/cmd/branch/main.go index ec8f860..73dee80 100644 --- a/cmd/branch/main.go +++ b/cmd/branch/main.go @@ -10,7 +10,7 @@ import ( var stash bool func SetCommands(Command *cobra.Command) { - project.ReadConfigFile() + project.ReadConfigFile(false) for _, branch := range project.Config.Git.Branches { if branch.Config.Hidden { diff --git a/cmd/pr.go b/cmd/pr.go index 5b276aa..7aaac26 100644 --- a/cmd/pr.go +++ b/cmd/pr.go @@ -2,6 +2,7 @@ package cmd import ( "github.com/Minnek-Digital-Studio/cominnek/config" + "github.com/Minnek-Digital-Studio/cominnek/controllers/project" pkg_action "github.com/Minnek-Digital-Studio/cominnek/pkg/cli/actions" "github.com/spf13/cobra" ) @@ -10,6 +11,8 @@ var prCmd = &cobra.Command{ Use: "pr", Short: "Create a new pull request", Run: func(cmd *cobra.Command, args []string) { + project.ReadConfigFile(true) + config.AppData.PullRequest.Ticket = ticket config.AppData.PullRequest.Base = baseBranch diff --git a/cmd/publish.go b/cmd/publish.go index 745afa7..7fd7711 100644 --- a/cmd/publish.go +++ b/cmd/publish.go @@ -2,6 +2,7 @@ package cmd import ( "github.com/Minnek-Digital-Studio/cominnek/config" + "github.com/Minnek-Digital-Studio/cominnek/controllers/project" pkg_action "github.com/Minnek-Digital-Studio/cominnek/pkg/cli/actions" "github.com/Minnek-Digital-Studio/cominnek/pkg/git" "github.com/spf13/cobra" @@ -11,6 +12,8 @@ var publishCmd = &cobra.Command{ Use: "publish ", Short: "Publish a branch to GitHub and create a pull request as Draft", Run: func(cmd *cobra.Command, args []string) { + project.ReadConfigFile(true) + msg := "" body := "" diff --git a/config/main.go b/config/main.go index 0e04b29..90661d0 100644 --- a/config/main.go +++ b/config/main.go @@ -5,7 +5,7 @@ import ( "path/filepath" "time" - "github.com/Minnek-Digital-Studio/cominnek/controllers/project" + project_structs "github.com/Minnek-Digital-Studio/cominnek/controllers/project/structs" ) type ICommit struct { @@ -36,7 +36,7 @@ type IAppData struct { Base string } Branch struct { - Data project.Branch + Data project_structs.Branch Stash bool Ticket string } @@ -64,6 +64,7 @@ type IAppData struct { type IConfig struct { AppPath string TempPath string + FlowPath string KeyPath string TokenPath string Version string @@ -83,6 +84,7 @@ var Public = IConfig{ KeyPath: filepath.Join(cominnekPath, "key.bin"), TokenPath: filepath.Join(cominnekPath, "auth.bin"), PRBody: filepath.Join(cominnekPath, "pr-body.md"), + FlowPath: filepath.Join(cominnekPath, "flows"), AppPath: cominnekPath, TempPath: cominnekTempPath, Logs: false, diff --git a/controllers/folders/Create.go b/controllers/folders/Create.go index dcaa6ee..3d78236 100644 --- a/controllers/folders/Create.go +++ b/controllers/folders/Create.go @@ -3,5 +3,9 @@ package folders import "os" func Create(_path string) { - os.Mkdir(_path, os.ModePerm) -} \ No newline at end of file + err := os.MkdirAll(_path, 0755) + + if err != nil { + panic(err) + } +} diff --git a/controllers/project/main.go b/controllers/project/main.go index 9704cbc..a222159 100644 --- a/controllers/project/main.go +++ b/controllers/project/main.go @@ -2,13 +2,21 @@ package project import ( "encoding/json" + "os" + "path/filepath" + "github.com/Minnek-Digital-Studio/cominnek/config" "github.com/Minnek-Digital-Studio/cominnek/controllers/files" + "github.com/Minnek-Digital-Studio/cominnek/controllers/folders" + project_structs "github.com/Minnek-Digital-Studio/cominnek/controllers/project/structs" + "github.com/fatih/color" ) -var Config Cominnek +var Config project_structs.Cominnek +var exitOnFail bool -func ReadConfigFile() bool { +func ReadConfigFile(_exitOnFail bool) bool { + exitOnFail = _exitOnFail fileNames := []string{ "mnk-config.json", } @@ -16,7 +24,8 @@ func ReadConfigFile() bool { for _, fileName := range fileNames { if files.CheckExist(fileName) { configByte := files.Read(fileName) - Config = convertToJSON(configByte).Cominnek + converted := convertToJSON(configByte).Cominnek + Config = getFlow(converted) return true } } @@ -24,8 +33,8 @@ func ReadConfigFile() bool { return false } -func convertToJSON(data []byte) Project { - var project Project +func convertToJSON(data []byte) project_structs.Project { + var project project_structs.Project err := json.Unmarshal([]byte(data), &project) if err != nil { @@ -35,12 +44,52 @@ func convertToJSON(data []byte) Project { return project } -func GetConfigByName(name string) Branch { +func GetConfigByName(name string) project_structs.Branch { for _, branch := range Config.Git.Branches { if branch.Name == name { return branch } } - return Branch{} + return project_structs.Branch{} +} + +func getFlow(cmk project_structs.Cominnek) project_structs.Cominnek { + flowStr := cmk.Git.Flow + + if flowStr == "custom" { + return cmk + } + + if !folders.CheckExists(config.Public.FlowPath) { + folders.Create(config.Public.FlowPath) + } + + var flow project_structs.Git + fileName := filepath.Join(config.Public.FlowPath, flowStr+".json") + + if !files.CheckExist(fileName) { + println("Sorry but the flow " + flowStr + " does not exist") + println("Try to download it with the command:") + + color.Green("\tcominnek add flow:" + flowStr) + + if exitOnFail { + os.Exit(1) + } else { + return cmk + } + } + + file := files.Read(fileName) + + err := json.Unmarshal([]byte(file), &flow) + + if err != nil { + panic(err) + } + + cmk.Git = flow + + return cmk } diff --git a/controllers/project/structs.go b/controllers/project/structs/main.go similarity index 93% rename from controllers/project/structs.go rename to controllers/project/structs/main.go index 85c7cc6..015fd09 100644 --- a/controllers/project/structs.go +++ b/controllers/project/structs/main.go @@ -1,4 +1,4 @@ -package project +package project_structs type Project struct { Cominnek Cominnek `json:"cominnek"` @@ -11,6 +11,7 @@ type Cominnek struct { type Git struct { GitConfig Flow string `json:"flow"` // flow: "git", "github" or "custom" + Version string `json:"version"` Extends GitConfig `json:"extends"` } diff --git a/main.go b/main.go index 891fd26..11c70b3 100644 --- a/main.go +++ b/main.go @@ -8,7 +8,6 @@ import ( "github.com/Minnek-Digital-Studio/cominnek/controllers" "github.com/Minnek-Digital-Studio/cominnek/controllers/loading" "github.com/Minnek-Digital-Studio/cominnek/controllers/logger" - "github.com/Minnek-Digital-Studio/cominnek/controllers/project" "github.com/Minnek-Digital-Studio/cominnek/helper" "github.com/Minnek-Digital-Studio/cominnek/pkg/emitters" "github.com/Minnek-Digital-Studio/cominnek/pkg/events" @@ -18,7 +17,6 @@ import ( func init() { events.Watcher() config.AppData.Start = time.Now() - project.ReadConfigFile() } func main() { diff --git a/pkg/cli/actions/branch.go b/pkg/cli/actions/branch.go index 44f12b5..9ce89d8 100644 --- a/pkg/cli/actions/branch.go +++ b/pkg/cli/actions/branch.go @@ -66,6 +66,7 @@ func branchQuestion() { } func Branch() { + project.ReadConfigFile(true) branchQuestion() ticket := config.AppData.Branch.Ticket data := emitterTypes.IBranchEventData{