CLI Command Reference

Complete reference for all Goose CLI commands.

Global Flags

These flags work with any command:

Flag Description
--help, -h Show help for command
--version, -v Show CLI version

Commands

goose app

Create a new Goose application.

Syntax:

goose app --name=<name> --template=<template> [options]

Required Flags:

Flag Description Values
--name Application name Any valid Go package name
--template Application template api, web, cli, multi

Optional Flags:

Flag Description Default
--path Output directory Current directory

Examples:

# Create an API application
goose app --name=myapi --template=api

# Create a web application
goose app --name=myweb --template=web

# Create a CLI application
goose app --name=mycli --template=cli

# Create a multi-platform application
goose app --name=mymulti --template=multi

# Create in specific directory
goose app --name=myapp --template=api --path=/projects

Output:
Creates a directory with the project structure.


goose generate module

Generate a new module in an existing project.

Syntax:

goose generate module --name=<name> --type=<type> [options]
goose g module --name=<name> --type=<type> [options]

Required Flags:

Flag Description Values
--name Module name Any valid Go package name
--type Module type plain, resource

Optional Flags:

Flag Description Default
--template Platform template Auto-detected from project

Examples:

# Generate a plain module
goose g module --name=auth --type=plain

# Generate a resource module
goose g module --name=products --type=resource

# Specify platform explicitly
goose g module --name=users --type=resource --template=api
goose g module --name=pages --type=plain --template=web
goose g module --name=commands --type=plain --template=cli

Output:
Creates module directory under app/ with generated files.


goose --version

Display CLI version information.

Syntax:

goose --version
goose -v

Output:

goose version 0.0.0

goose --help

Display help information.

Syntax:

goose --help
goose -h
goose <command> --help

Output:
Displays available commands and flags.

Template Reference

API Template Structure

app-name/
โ”œโ”€โ”€ .env
โ”œโ”€โ”€ go.mod
โ”œโ”€โ”€ main.go
โ””โ”€โ”€ app/
    โ”œโ”€โ”€ app.module.go
    โ”œโ”€โ”€ app.controller.go
    โ”œโ”€โ”€ app.service.go
    โ”œโ”€โ”€ app.routes.go
    โ”œโ”€โ”€ app.dtos.go
    โ”œโ”€โ”€ jobs/
    โ”‚   โ””โ”€โ”€ sample.job.go
    โ””โ”€โ”€ queries/
        โ””โ”€โ”€ sample.query.go

Web Template Structure

app-name/
โ”œโ”€โ”€ .env
โ”œโ”€โ”€ go.mod
โ”œโ”€โ”€ main.go
โ””โ”€โ”€ app/
    โ”œโ”€โ”€ app.module.go
    โ”œโ”€โ”€ app.controller.go
    โ”œโ”€โ”€ app.service.go
    โ”œโ”€โ”€ app.routes.go
    โ”œโ”€โ”€ app.dtos.go
    โ””โ”€โ”€ templates/
        โ”œโ”€โ”€ base/
        โ”‚   โ””โ”€โ”€ layout.html
        โ”œโ”€โ”€ pages/
        โ”‚   โ””โ”€โ”€ home.html
        โ””โ”€โ”€ partials/
            โ”œโ”€โ”€ header.html
            โ””โ”€โ”€ footer.html

CLI Template Structure

app-name/
โ”œโ”€โ”€ .env
โ”œโ”€โ”€ go.mod
โ”œโ”€โ”€ main.go
โ””โ”€โ”€ app/
    โ”œโ”€โ”€ app.module.go
    โ”œโ”€โ”€ app.controller.go
    โ”œโ”€โ”€ app.service.go
    โ”œโ”€โ”€ app.routes.go
    โ””โ”€โ”€ app.dtos.go

Multi Template Structure

app-name/
โ”œโ”€โ”€ .env
โ”œโ”€โ”€ go.mod
โ”œโ”€โ”€ main.go
โ””โ”€โ”€ app/
    โ”œโ”€โ”€ api/
    โ”‚   โ”œโ”€โ”€ api.module.go
    โ”‚   โ”œโ”€โ”€ api.controller.go
    โ”‚   โ”œโ”€โ”€ api.routes.go
    โ”‚   โ””โ”€โ”€ api.service.go
    โ”œโ”€โ”€ web/
    โ”‚   โ”œโ”€โ”€ web.module.go
    โ”‚   โ”œโ”€โ”€ web.controller.go
    โ”‚   โ”œโ”€โ”€ web.routes.go
    โ”‚   โ”œโ”€โ”€ web.service.go
    โ”‚   โ””โ”€โ”€ templates/
    โ”œโ”€โ”€ cli/
    โ”‚   โ”œโ”€โ”€ cli.module.go
    โ”‚   โ”œโ”€โ”€ cli.controller.go
    โ”‚   โ”œโ”€โ”€ cli.routes.go
    โ”‚   โ””โ”€โ”€ cli.service.go
    โ””โ”€โ”€ shared/
        โ”œโ”€โ”€ shared.module.go
        โ”œโ”€โ”€ shared.service.go
        โ””โ”€โ”€ entities/

Module Types Reference

Plain Module

Generated files:

  • module.go - Module definition
  • controller.go - Request handlers
  • service.go - Business logic
  • routes.go - Route definitions
  • dtos.go - Data transfer objects

Resource Module

Generated files (all from plain module, plus):

  • entity.go - Database entity definition
  • templates/ (web only) - HTML templates

Exit Codes

Code Meaning
0 Success
1 General error
2 Invalid arguments

Environment Variables

The CLI respects these environment variables:

Variable Description
GOOSE_PATH Default output path for goose app

Troubleshooting

Common Issues

Module detection fails:

# Specify template explicitly
goose g module --name=users --type=resource --template=api

Permission denied:

# Check directory permissions
chmod 755 ./app

Go mod errors after generation:

# Tidy dependencies
go mod tidy

See Also