Skip to content

Commit

Permalink
organize code so cobra is not used in pkg
Browse files Browse the repository at this point in the history
  • Loading branch information
apoorvam committed May 26, 2019
1 parent dd92221 commit d49616a
Show file tree
Hide file tree
Showing 3 changed files with 32 additions and 16 deletions.
13 changes: 12 additions & 1 deletion cmd/initialize.go
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
package cmd

import (
"github.com/leopardslab/dunner/internal/logger"
"github.com/leopardslab/dunner/pkg/initialize"
"github.com/spf13/cobra"
"github.com/spf13/viper"
)

func init() {
Expand All @@ -13,7 +15,16 @@ var initCmd = &cobra.Command{
Use: "init",
Short: "Generates a dunner task file `.dunner.yaml`",
Long: "You can initialize any project with dunner task file. It generates a default task file `.dunner.yaml`, you can customize it based on needs. You can override the name of task file using -t flag.",
Run: initialize.Initialize,
Run: Initialize,
Args: cobra.NoArgs,
Aliases: []string{"i"},
}

// Initialize command invoked from command line generates a dunner task file with default template
func Initialize(_ *cobra.Command, args []string) {
var dunnerFile = viper.GetString("DunnerTaskFile")
if err := initialize.InitProject(dunnerFile); err != nil {
logger.Log.Fatalf("Failed to initialize project: %s", err.Error())
}
logger.Log.Infof("Dunner task file `%s` created. Please make any required changes.", dunnerFile)
}
14 changes: 2 additions & 12 deletions pkg/initialize/initialize.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,20 +7,10 @@ import (

"github.com/leopardslab/dunner/internal"
"github.com/leopardslab/dunner/internal/logger"
"github.com/spf13/cobra"
"github.com/spf13/viper"
)

// Initialize command invoked from command line generates a dunner task file with default template
func Initialize(_ *cobra.Command, args []string) {
var dunnerFile = viper.GetString("DunnerTaskFile")
if err := initProject(dunnerFile); err != nil {
logger.Log.Fatalf("Failed to initialize project: %s", err.Error())
}
logger.Log.Infof("Dunner task file `%s` created. Please make any required changes.", dunnerFile)
}

func initProject(filename string) error {
// InitProject generates a dunner task file with default template
func InitProject(filename string) error {
if _, err := os.Stat(filename); !os.IsNotExist(err) {
if err != nil {
return err
Expand Down
21 changes: 18 additions & 3 deletions pkg/initialize/initialize_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -32,11 +32,11 @@ func setup(t *testing.T) func() {
}
}

func TestInitializeSuccess(t *testing.T) {
func TestInitProjectSuccess(t *testing.T) {
revert := setup(t)
defer revert()
var filename = ".test_dunner.yml"
if err := initProject(filename); err != nil {
if err := InitProject(filename); err != nil {
t.Errorf("Failed to open dunner task file %s: %s", filename, err.Error())
}

Expand All @@ -63,7 +63,22 @@ func TestInitializeWhenFileExists(t *testing.T) {
createFile(t, filename, internal.DefaultTaskFileContents)

expected := fmt.Sprintf("%s already exists", filename)
err := initProject(filename)
err := InitProject(filename)
if err == nil {
t.Errorf("expected: %s, got nil", expected)
}
if expected != err.Error() {
t.Errorf("expected: %s, got: %s", expected, err.Error())
}
}

func TestInitializeFilenameIsInvalid(t *testing.T) {
revert := setup(t)
defer revert()
var filename = "#Q$EJL_doesntexist/.test_dunner.yml"

expected := fmt.Sprintf("open %s: no such file or directory", filename)
err := InitProject(filename)
if err == nil {
t.Errorf("expected: %s, got nil", expected)
}
Expand Down

0 comments on commit d49616a

Please sign in to comment.