@@ -43,7 +43,15 @@ func (r *ConfigReader) Read(logE *logrus.Entry, configFilePath string, cfg *aqua
43
43
if err := yaml .NewDecoder (file ).Decode (cfg ); err != nil {
44
44
return fmt .Errorf ("parse a configuration file as YAML: %w" , err )
45
45
}
46
- var configFileDir string
46
+ configFileDir := filepath .Dir (configFilePath )
47
+ if err := r .readRegistries (configFileDir , cfg ); err != nil {
48
+ return err
49
+ }
50
+ r .readPackages (logE , configFilePath , cfg )
51
+ return nil
52
+ }
53
+
54
+ func (r * ConfigReader ) readRegistries (configFileDir string , cfg * aqua.Config ) error {
47
55
for _ , rgst := range cfg .Registries {
48
56
if rgst .Type == "local" {
49
57
if strings .HasPrefix (rgst .Path , homePrefix ) {
@@ -52,54 +60,64 @@ func (r *ConfigReader) Read(logE *logrus.Entry, configFilePath string, cfg *aqua
52
60
}
53
61
rgst .Path = filepath .Join (r .homeDir , rgst .Path [6 :])
54
62
}
55
- if configFileDir == "" {
56
- configFileDir = filepath .Dir (configFilePath )
57
- }
58
63
rgst .Path = osfile .Abs (configFileDir , rgst .Path )
59
64
}
60
65
}
61
- r .readImports (logE , configFilePath , cfg )
62
66
return nil
63
67
}
64
68
65
- func (r * ConfigReader ) readImports (logE * logrus.Entry , configFilePath string , cfg * aqua.Config ) {
69
+ func (r * ConfigReader ) readPackages (logE * logrus.Entry , configFilePath string , cfg * aqua.Config ) {
66
70
pkgs := []* aqua.Package {}
67
71
for _ , pkg := range cfg .Packages {
68
72
if pkg == nil {
69
73
continue
70
74
}
71
- if pkg .Import == "" {
72
- if err := readGoVersionFile (r .fs , configFilePath , pkg ); err != nil {
73
- logerr .WithError (logE , err ).Error ("read a go version file" )
74
- continue
75
- }
76
- pkgs = append (pkgs , pkg )
77
- continue
78
- }
79
- logE := logE .WithField ("import" , pkg .Import )
80
- p := filepath .Join (filepath .Dir (configFilePath ), pkg .Import )
81
- filePaths , err := afero .Glob (r .fs , p )
75
+ subPkgs , err := r .readPackage (logE , configFilePath , pkg )
82
76
if err != nil {
83
- logerr .WithError (logE , err ).Error ("read files with glob pattern " )
77
+ logerr .WithError (logE , err ).Error ("read a package " )
84
78
continue
85
79
}
86
- sort .Strings (filePaths )
87
- for _ , filePath := range filePaths {
88
- logE := logE .WithField ("imported_file" , filePath )
89
- subCfg := & aqua.Config {}
90
- if err := r .Read (logE , filePath , subCfg ); err != nil {
91
- logerr .WithError (logE , err ).Error ("read an import file" )
92
- continue
93
- }
94
- for _ , pkg := range subCfg .Packages {
95
- pkg .FilePath = filePath
96
- if err := readGoVersionFile (r .fs , filePath , pkg ); err != nil {
97
- logerr .WithError (logE , err ).Error ("read a go version file" )
98
- continue
99
- }
100
- pkgs = append (pkgs , pkg )
101
- }
80
+ if subPkgs == nil {
81
+ pkg .FilePath = configFilePath
82
+ pkgs = append (pkgs , pkg )
83
+ continue
102
84
}
85
+ pkgs = append (pkgs , subPkgs ... )
103
86
}
104
87
cfg .Packages = pkgs
105
88
}
89
+
90
+ func (r * ConfigReader ) readPackage (logE * logrus.Entry , configFilePath string , pkg * aqua.Package ) ([]* aqua.Package , error ) {
91
+ if pkg .GoVersionFile != "" {
92
+ // go_version_file
93
+ if err := readGoVersionFile (r .fs , configFilePath , pkg ); err != nil {
94
+ return nil , fmt .Errorf ("read a go version file: %w" , logerr .WithFields (err , logrus.Fields {
95
+ "go_version_file" : pkg .GoVersionFile ,
96
+ }))
97
+ }
98
+ return nil , nil
99
+ }
100
+ if pkg .Import == "" {
101
+ // version
102
+ return nil , nil
103
+ }
104
+ // import
105
+ logE = logE .WithField ("import" , pkg .Import )
106
+ p := filepath .Join (filepath .Dir (configFilePath ), pkg .Import )
107
+ filePaths , err := afero .Glob (r .fs , p )
108
+ if err != nil {
109
+ return nil , fmt .Errorf ("find files with a glob pattern: %w" , err )
110
+ }
111
+ sort .Strings (filePaths )
112
+ pkgs := []* aqua.Package {}
113
+ for _ , filePath := range filePaths {
114
+ logE := logE .WithField ("imported_file" , filePath )
115
+ subCfg := & aqua.Config {}
116
+ if err := r .Read (logE , filePath , subCfg ); err != nil {
117
+ logerr .WithError (logE , err ).Error ("read an import file" )
118
+ continue
119
+ }
120
+ pkgs = append (pkgs , subCfg .Packages ... )
121
+ }
122
+ return pkgs , nil
123
+ }
0 commit comments