@@ -116,6 +116,36 @@ func (p *Project) Normalize() error {
116116 return err
117117}
118118
119+ func (p * Project ) checkAndNormalizeDefaults () error {
120+ if p .Defaults .Run .Plugin != "" && ! p .FindLoadedPlugin (p .Defaults .Run .Plugin ).HasAction (plugins .ActionRun ) {
121+ return p .yamlError ("$.defaults.run.plugin" , fmt .Sprintf ("plugin '%s' can't be used for run" , p .Defaults .Run .Plugin ))
122+ }
123+
124+ if p .Defaults .Deploy .Plugin != "" && ! p .FindLoadedPlugin (p .Defaults .Deploy .Plugin ).HasAction (plugins .ActionDeploy ) {
125+ return p .yamlError ("$.defaults.deploy.plugin" , fmt .Sprintf ("plugin '%s' can't be used for deploy" , p .Defaults .Deploy .Plugin ))
126+ }
127+
128+ if p .Defaults .DNS .Plugin != "" && ! p .FindLoadedPlugin (p .Defaults .DNS .Plugin ).HasAction (plugins .ActionDNS ) {
129+ return p .yamlError ("$.defaults.dns.plugin" , fmt .Sprintf ("plugin '%s' can't be used for dns" , p .Defaults .DNS .Plugin ))
130+ }
131+
132+ for _ , plug := range p .LoadedPlugins () {
133+ if plug .HasAction (plugins .ActionDeploy ) && p .Defaults .Deploy .Plugin == "" {
134+ p .Defaults .Deploy .Plugin = plug .Name
135+ }
136+
137+ if plug .HasAction (plugins .ActionDNS ) && p .Defaults .DNS .Plugin == "" {
138+ p .Defaults .DNS .Plugin = plug .Name
139+ }
140+
141+ if plug .HasAction (plugins .ActionRun ) && p .Defaults .Run .Plugin == "" {
142+ p .Defaults .Run .Plugin = plug .Name
143+ }
144+ }
145+
146+ return nil
147+ }
148+
119149// Logic validation after everything is loaded, e.g. check for supported types.
120150func (p * Project ) FullCheck () error {
121151 err := func () error {
@@ -143,21 +173,7 @@ func (p *Project) FullCheck() error {
143173 return err
144174 }
145175
146- for _ , plug := range p .LoadedPlugins () {
147- if plug .HasAction (plugins .ActionDeploy ) && p .Defaults .Deploy .Plugin == "" {
148- p .Defaults .Deploy .Plugin = plug .Name
149- }
150-
151- if plug .HasAction (plugins .ActionDNS ) && p .Defaults .DNS .Plugin == "" {
152- p .Defaults .DNS .Plugin = plug .Name
153- }
154-
155- if plug .HasAction (plugins .ActionRun ) && p .Defaults .Run .Plugin == "" {
156- p .Defaults .Run .Plugin = plug .Name
157- }
158- }
159-
160- return nil
176+ return p .checkAndNormalizeDefaults ()
161177 }()
162178
163179 if err != nil {
0 commit comments