Skip to content

Commit

Permalink
Merge pull request #2014 from Adirio/accept-github-fefault-files
Browse files Browse the repository at this point in the history
✨ Accept auto-generated files from GitHub into the allowed set of files
  • Loading branch information
k8s-ci-robot committed Feb 13, 2021
2 parents 685558d + 9fafbf9 commit 46c65ba
Showing 1 changed file with 26 additions and 14 deletions.
40 changes: 26 additions & 14 deletions pkg/plugins/golang/v3/init.go
Original file line number Diff line number Diff line change
Expand Up @@ -189,34 +189,46 @@ func (p *initSubcommand) PostScaffold() error {
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.
// checkDir will return error if the current directory has files which are not allowed.
// 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.
// Otherwise, it might face issues to do the scaffold.
func checkDir() error {
err := filepath.Walk(".",
func(path string, info os.FileInfo, err error) error {
if err != nil {
return err
}
// Allow the whole .git directory tree
// Allow directory trees starting with '.'
if info.IsDir() && strings.HasPrefix(info.Name(), ".") && info.Name() != "." {
return filepath.SkipDir
}
// Also allow go.mod and dot-files
if info.Name() != "go.mod" && info.Name() != "go.sum" && !strings.HasPrefix(info.Name(), ".") {
return fmt.Errorf(
"target directory is not empty "+
"(only go.mod, go.sum, and files and directories with the prefix \".\" are allowed); "+
"found existing file %q",
path)
// Allow files starting with '.'
if strings.HasPrefix(info.Name(), ".") {
return nil
}
// Allow files in the following list
allowedFiles := []string{
"go.mod", // user might run `go mod init` instead of providing the `--flag` at init
"go.sum", // auto-generated file related to go.mod
"LICENSE", // can be generated when initializing a GitHub project
"README.md", // can be generated when initializing a GitHub project
}
for _, allowedFile := range allowedFiles {
if info.Name() == allowedFile {
return nil
}
}
return nil
// Do not allow any other file
return fmt.Errorf(
"target directory is not empty (only %s, and files and directories with the prefix \".\" are "+
"allowed); found existing file %q", strings.Join(allowedFiles, ", "), path)
})
if err != nil {
return err
}
return nil
}

// 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.

0 comments on commit 46c65ba

Please sign in to comment.