Skip to content

Commit

Permalink
Merge pull request #1738 from camilamacedo86/init-validation
Browse files Browse the repository at this point in the history
✨ not allow to init the project in a directory that is not cleaned (v3+ only)
  • Loading branch information
k8s-ci-robot committed Oct 23, 2020
2 parents 4ebf047 + e0a776b commit cb12414
Showing 1 changed file with 29 additions and 0 deletions.
29 changes: 29 additions & 0 deletions pkg/plugin/v3/init.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ limitations under the License.
package v3

import (
"errors"
"fmt"
"os"
"path/filepath"
Expand Down Expand Up @@ -111,6 +112,11 @@ func (p *initPlugin) Validate() error {
}
}

// Check if the current directory has not files or directories which does not allow to init the project
if err := checkDir(); err != nil {
return err
}

// Check if the project name is a valid k8s namespace (DNS 1123 label).
if p.config.ProjectName == "" {
dir, err := os.Getwd()
Expand Down Expand Up @@ -167,3 +173,26 @@ func (p *initPlugin) PostScaffold() error {
fmt.Printf("Next: define a resource with:\n$ %s create api\n", p.commandName)
return nil
}

// checkDir will return error if the current directory has files which are
// not the go.mod and/or starts with the prefix (.) such as .gitignore.
// Note that, it is expected that the directory to scaffold the project is cleaned.
// Otherwise, it might face issues to do the scaffold. The go.mod is allowed because user might run
// go mod init before use the plugin it for not be required inform
// the go module via the repo --flag.
func checkDir() error {
err := filepath.Walk(".",
func(path string, info os.FileInfo, err error) error {
if err != nil {
return err
}
if info.Name() != "go.mod" && !strings.HasPrefix(info.Name(), ".") {
return errors.New("only the go.mod and files with the prefix \"(.)\" are allowed before the init")
}
return nil
})
if err != nil {
return err
}
return nil
}

0 comments on commit cb12414

Please sign in to comment.