diff --git a/internal/controllers/cli/add.go b/cmd/add.go similarity index 99% rename from internal/controllers/cli/add.go rename to cmd/add.go index 7b07e45..26855bf 100644 --- a/internal/controllers/cli/add.go +++ b/cmd/add.go @@ -1,4 +1,4 @@ -package cli +package cmd import ( "fmt" diff --git a/internal/controllers/cli/export.go b/cmd/export.go similarity index 98% rename from internal/controllers/cli/export.go rename to cmd/export.go index 234be49..c192fbb 100644 --- a/internal/controllers/cli/export.go +++ b/cmd/export.go @@ -1,4 +1,4 @@ -package cli +package cmd import ( "bufio" diff --git a/internal/controllers/cli/import.go b/cmd/import.go similarity index 98% rename from internal/controllers/cli/import.go rename to cmd/import.go index 90780fe..018cb3b 100644 --- a/internal/controllers/cli/import.go +++ b/cmd/import.go @@ -1,4 +1,4 @@ -package cli +package cmd import ( "bufio" diff --git a/internal/controllers/cli/rm.go b/cmd/rm.go similarity index 97% rename from internal/controllers/cli/rm.go rename to cmd/rm.go index 5f6d61a..49b5a3c 100644 --- a/internal/controllers/cli/rm.go +++ b/cmd/rm.go @@ -1,4 +1,4 @@ -package cli +package cmd import ( "fmt" diff --git a/internal/controllers/cli/root.go b/cmd/root.go similarity index 80% rename from internal/controllers/cli/root.go rename to cmd/root.go index 01bff86..5de902d 100644 --- a/internal/controllers/cli/root.go +++ b/cmd/root.go @@ -1,14 +1,25 @@ -package cli +package cmd import ( "context" "github.com/abelith/spellbook/internal/models" "github.com/olekukonko/tablewriter" "github.com/spf13/cobra" + "io" "os" "strings" ) +type Application interface { + AddSpell(ctx context.Context, spell models.Spell) error + GetSpell(ctx context.Context, spellName string) (models.Spell, error) + GetSpells(ctx context.Context, query models.SearchQuery) ([]models.Spell, error) + DeleteSpell(ctx context.Context, spellName string) error + CastSpell(ctx context.Context, spellCast models.SpellCast) (models.CastResult, error) + ExportSpells(ctx context.Context, exp string, w io.Writer) error + ImportSpells(ctx context.Context, exp string, r io.Reader) error +} + func rootCmd(app Application) func(*cobra.Command, []string) error { return func(cmd *cobra.Command, args []string) error { ctx := cmd.Context() diff --git a/internal/controllers/cli/search.go b/cmd/search.go similarity index 98% rename from internal/controllers/cli/search.go rename to cmd/search.go index 0b1f00d..832c293 100644 --- a/internal/controllers/cli/search.go +++ b/cmd/search.go @@ -1,4 +1,4 @@ -package cli +package cmd import ( "fmt" diff --git a/internal/controllers/cli/cli.go b/internal/controllers/cli/cli.go deleted file mode 100644 index 61040d9..0000000 --- a/internal/controllers/cli/cli.go +++ /dev/null @@ -1,41 +0,0 @@ -package cli - -import ( - "context" - "github.com/abelith/spellbook/internal/models" - "github.com/spf13/cobra" - "io" -) - -type Application interface { - AddSpell(ctx context.Context, spell models.Spell) error - GetSpell(ctx context.Context, spellName string) (models.Spell, error) - GetSpells(ctx context.Context, query models.SearchQuery) ([]models.Spell, error) - DeleteSpell(ctx context.Context, spellName string) error - CastSpell(ctx context.Context, spellCast models.SpellCast) (models.CastResult, error) - ExportSpells(ctx context.Context, exp string, w io.Writer) error - ImportSpells(ctx context.Context, exp string, r io.Reader) error -} - -type CLI struct { - root *cobra.Command -} - -func NewCLI(ver string, app Application) *CLI { - root := NewRootCmd(ver, app) - root.AddCommand( - NewAddCommand(app), - NewRmCommand(app), - NewSearchCmd(app), - NewExportCmd(app), - NewImportCmd(app), - ) - - return &CLI{ - root: root, - } -} - -func (c *CLI) Run(_ context.Context) error { - return c.root.Execute() -} diff --git a/cmd/main.go b/main.go similarity index 78% rename from cmd/main.go rename to main.go index c5d74cc..e1e8d8b 100644 --- a/cmd/main.go +++ b/main.go @@ -4,11 +4,11 @@ import ( "context" "database/sql" "fmt" + "github.com/abelith/spellbook/cmd" "github.com/abelith/spellbook/internal/adapters/caster" "github.com/abelith/spellbook/internal/adapters/sqlite" "github.com/abelith/spellbook/internal/application" "github.com/abelith/spellbook/internal/config" - "github.com/abelith/spellbook/internal/controllers/cli" _ "modernc.org/sqlite" "os" "os/signal" @@ -44,9 +44,16 @@ func main() { app := application.NewApplication(&caster.SpellCaster{}, repo, repo) - c := cli.NewCLI(Version, app) + root := cmd.NewRootCmd(Version, app) + root.AddCommand( + cmd.NewAddCommand(app), + cmd.NewRmCommand(app), + cmd.NewSearchCmd(app), + cmd.NewExportCmd(app), + cmd.NewImportCmd(app), + ) - if err := c.Run(ctx); err != nil { + if err := root.Execute(); err != nil { os.Exit(1) } }