Skip to content

Commit

Permalink
✨ not allow to init the project in a directory that is not cleaned
Browse files Browse the repository at this point in the history
  • Loading branch information
Camila Macedo committed Oct 22, 2020
1 parent 36124ae commit f513f9e
Showing 1 changed file with 27 additions and 0 deletions.
27 changes: 27 additions & 0 deletions pkg/plugin/v3/init.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ package v3

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

// Check if the current directory has not files which does not allow 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,24 @@ 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 .gitignore and the go.mod. 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 {
files, err := ioutil.ReadDir(".")
if err != nil {
return err
}

for _, file := range files {
if file.Name() != "go.mod" && file.Name() != ".gitignore" {
return fmt.Errorf("this directory has files already. " +
"Only the go.mod and .gitignore are allowed before the init.")
}
}
return nil
}

0 comments on commit f513f9e

Please sign in to comment.