Skip to content

Commit 73025d4

Browse files
committed
feat: config support directory
Signed-off-by: Bird <[email protected]>
1 parent 76d2ed8 commit 73025d4

File tree

14 files changed

+166
-19
lines changed

14 files changed

+166
-19
lines changed

cmd/devstream/apply.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ func applyCMDFunc(cmd *cobra.Command, args []string) {
3333
}
3434

3535
func init() {
36-
applyCMD.Flags().StringVarP(&configFilePath, configFlagName, "f", "config.yaml", "config file")
36+
applyCMD.Flags().StringVarP(&configFilePath, configFlagName, "f", "", "config file or directory")
3737
applyCMD.Flags().StringVarP(&pluginDir, pluginDirFlagName, "d", defaultPluginDir, "plugins directory")
3838
applyCMD.Flags().BoolVarP(&continueDirectly, "yes", "y", false, "apply directly without confirmation")
3939

cmd/devstream/delete.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ func deleteCMDFunc(cmd *cobra.Command, args []string) {
3232

3333
func init() {
3434
deleteCMD.Flags().BoolVarP(&isForceDelete, "force", "", false, "force delete by config")
35-
deleteCMD.Flags().StringVarP(&configFilePath, configFlagName, "f", "config.yaml", "config file")
35+
deleteCMD.Flags().StringVarP(&configFilePath, configFlagName, "f", "", "config file or directory")
3636
deleteCMD.Flags().StringVarP(&pluginDir, pluginDirFlagName, "d", defaultPluginDir, "plugins directory")
3737
deleteCMD.Flags().BoolVarP(&continueDirectly, "yes", "y", false, "delete directly without confirmation")
3838

cmd/devstream/destroy.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ func destroyCMDFunc(cmd *cobra.Command, args []string) {
3030

3131
func init() {
3232
destroyCMD.Flags().BoolVarP(&isForceDestroy, "force", "", false, "force destroy by config")
33-
destroyCMD.Flags().StringVarP(&configFilePath, configFlagName, "f", "config.yaml", "config file")
33+
destroyCMD.Flags().StringVarP(&configFilePath, configFlagName, "f", "", "config file or directory")
3434
destroyCMD.Flags().StringVarP(&pluginDir, pluginDirFlagName, "d", defaultPluginDir, "plugins directory")
3535
destroyCMD.Flags().BoolVarP(&continueDirectly, "yes", "y", false, "destroy directly without confirmation")
3636

cmd/devstream/init.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,7 @@ func GetPluginsFromFlags() (tools configmanager.Tools, err error) {
118118

119119
func init() {
120120
// flags for init from config file
121-
initCMD.Flags().StringVarP(&configFilePath, configFlagName, "f", "config.yaml", "config file")
121+
initCMD.Flags().StringVarP(&configFilePath, configFlagName, "f", "", "config file or directory")
122122
initCMD.Flags().StringVarP(&pluginDir, pluginDirFlagName, "d", defaultPluginDir, "plugins directory")
123123

124124
// downloading specific plugins from flags

internal/pkg/configmanager/configmanager.go

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,19 +2,20 @@ package configmanager
22

33
import (
44
"fmt"
5-
"os"
65
"strings"
6+
7+
"github.com/devstream-io/devstream/pkg/util/file"
78
)
89

910
// Manager is used to load the config file from the ConfigFilePath and finally get the Config object.
1011
type Manager struct {
1112
ConfigFilePath string
1213
}
1314

14-
// NewManager takes configFilePath, then return a *Manager object.
15-
func NewManager(configFilePath string) *Manager {
15+
// NewManager takes configFilePath(file or directory), then return a *Manager object.
16+
func NewManager(configPath string) *Manager {
1617
return &Manager{
17-
ConfigFilePath: configFilePath,
18+
ConfigFilePath: configPath,
1819
}
1920
}
2021

@@ -46,7 +47,7 @@ func (m *Manager) LoadConfig() (*Config, error) {
4647
// 1. variables rendered must be before the yaml.Unmarshal() called for the [[ foo ]] will be treated as a two-dimensional array by the yaml parser;
4748
// 2. the variables used([[ foo ]]) in the Config.PipelineTemplates can be defined in the Config.Apps or Config.Vars;
4849
func (m *Manager) getConfigFromFileWithGlobalVars() (*Config, error) {
49-
configBytes, err := os.ReadFile(m.ConfigFilePath)
50+
configBytes, err := file.ReadYamls(m.ConfigFilePath)
5051
if err != nil {
5152
return nil, err
5253
}

internal/pkg/plugin/installer/ci/cifile/server/githubci.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ func (g *GitHubWorkflow) CIFilePath() string {
2222
return filepath.Join(ciGitHubWorkConfigLocation, ciGithubTempName)
2323
}
2424

25-
func (g *GitHubWorkflow) FilterCIFilesFunc() file.DirFIleFilterFunc {
25+
func (g *GitHubWorkflow) FilterCIFilesFunc() file.DirFileFilterFunc {
2626
return func(filePath string, isDir bool) bool {
2727
// not process dir
2828
if isDir {

internal/pkg/plugin/installer/ci/cifile/server/gitlabci.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ func (g *GitLabCI) CIFilePath() string {
1919
return ciGitLabConfigLocation
2020
}
2121

22-
func (g *GitLabCI) FilterCIFilesFunc() file.DirFIleFilterFunc {
22+
func (g *GitLabCI) FilterCIFilesFunc() file.DirFileFilterFunc {
2323
return func(filePath string, isDir bool) bool {
2424
// not process dir
2525
if isDir {

internal/pkg/plugin/installer/ci/cifile/server/jenkinsci.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ func (j *JenkinsPipeline) CIFilePath() string {
2020
}
2121

2222
// FilterCIFilesFunc only get file with name Jenkinsfile
23-
func (j *JenkinsPipeline) FilterCIFilesFunc() file.DirFIleFilterFunc {
23+
func (j *JenkinsPipeline) FilterCIFilesFunc() file.DirFileFilterFunc {
2424
return func(filePath string, isDir bool) bool {
2525
// not process dir
2626
if isDir {

internal/pkg/plugin/installer/ci/cifile/server/server.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ type CIServerOptions interface {
1515
CIFilePath() string
1616

1717
// FilterCIFilesFunc returns a filter function to select ci config file
18-
FilterCIFilesFunc() file.DirFIleFilterFunc
18+
FilterCIFilesFunc() file.DirFileFilterFunc
1919
// GetGitNameFunc returns a function to transform file path to git name of ci config file
2020
GetGitNameFunc() file.DirFileNameFunc
2121
}

pkg/util/file/dir.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,9 @@ import (
88
"github.com/devstream-io/devstream/pkg/util/log"
99
)
1010

11-
// DirFIleFilterFunc is used to filter files when walk directory
11+
// DirFileFilterFunc is used to filter files when walk directory
1212
// if this func return false, this file's content will not return
13-
type DirFIleFilterFunc func(filePath string, isDir bool) bool
13+
type DirFileFilterFunc func(filePath string, isDir bool) bool
1414

1515
// DirFileContentFunc is used to get file content then return this content
1616
type DirFileContentFunc func(filePath string) ([]byte, error)
@@ -21,7 +21,7 @@ type DirFileNameFunc func(filePath, srcPath string) string
2121

2222
// GetFileMapByWalkDir will walk in directory return contentMap
2323
func GetFileMapByWalkDir(
24-
srcPath string, filterFunc DirFIleFilterFunc, fileNameFunc DirFileNameFunc, processFunc DirFileContentFunc,
24+
srcPath string, filterFunc DirFileFilterFunc, fileNameFunc DirFileNameFunc, processFunc DirFileContentFunc,
2525
) (map[string][]byte, error) {
2626
contentMap := make(map[string][]byte)
2727
if err := filepath.Walk(srcPath, func(path string, info fs.FileInfo, err error) error {
@@ -54,7 +54,7 @@ func GetFileMapByWalkDir(
5454
// if srcPath is a directory, it will invoke GetFileMapByWalkDir to get content map
5555
// if srcPath is a file, it will use fileNameFunc and fileContentFunc to create a map
5656
func GetFileMap(
57-
srcPath string, filterFunc DirFIleFilterFunc, fileNameFunc DirFileNameFunc, fileContentFunc DirFileContentFunc,
57+
srcPath string, filterFunc DirFileFilterFunc, fileNameFunc DirFileNameFunc, fileContentFunc DirFileContentFunc,
5858
) (map[string][]byte, error) {
5959
pathInfo, err := os.Stat(srcPath)
6060
if err != nil {

0 commit comments

Comments
 (0)