Taskw

taskw generate

Generate code from annotated Go files

taskw generate

Generate various types of code from your annotated Go files, including route registration, dependency injection, and Swagger documentation.

Usage

taskw generate [subcommand]

Subcommands

SubcommandDescriptionDefault
allGenerate routes and dependencies (default)
routesGenerate Fiber route registration
depsGenerate Wire dependency injection

Global Flags

  • --config string - Path to taskw.yaml config file

taskw generate all

Generate both route registration and dependency injection code, plus Swagger documentation.

Usage

taskw generate all
# or simply
taskw generate

Description

This is the default command when no subcommand is specified. It generates:

  • Route Registration - Fiber route registration from handler functions with @Router annotations
  • Dependency Injection - Wire dependency injection setup from provider functions
  • Swagger Documentation - API documentation from handler annotations

Examples

# Generate everything
taskw generate all

# Same as above (default behavior)
taskw generate

Generated Files

  • routes_gen.go - Route registration code
  • dependencies_gen.go - Wire dependency injection code
  • swagger.json - Swagger API documentation

taskw generate routes

Generate Fiber route registration from handler functions with @Router annotations.

Usage

taskw generate routes

Description

Scans your Go code for handler functions with @Router annotations and generates route registration code for Fiber.

Examples

# Generate only routes
taskw generate routes

Generated Files

  • routes_gen.go - Route registration code

Handler Annotation Example

// @Router GET /health
func (h *HealthHandler) GetHealth(c *fiber.Ctx) error {
    return c.JSON(fiber.Map{"status": "ok"})
}

taskw generate deps

Generate Wire dependency injection setup from provider functions.

Usage

taskw generate deps
# or
taskw generate dependencies

Description

Scans your Go code for provider functions and generates Wire dependency injection configuration.

Examples

# Generate only dependencies
taskw generate deps

# Alternative syntax
taskw generate dependencies

Generated Files

  • dependencies_gen.go - Wire dependency injection code

Provider Function Example

// @Provider
func NewHealthHandler() *HealthHandler {
    return &HealthHandler{}
}

Configuration

The generation behavior is controlled by the taskw.yaml configuration file:

generation:
  routes:
    enabled: true
    output_file: "routes_gen.go"
  dependencies:
    enabled: true
    output_file: "dependencies_gen.go"

Generation Settings

SettingDescriptionDefault
routes.enabledEnable route generationtrue
routes.output_fileOutput file for routesroutes_gen.go
dependencies.enabledEnable dependency generationtrue
dependencies.output_fileOutput file for dependenciesdependencies_gen.go

Workflow Examples

Complete Generation

# Generate everything
taskw generate

Selective Generation

# Only generate routes
taskw generate routes

# Only generate dependencies
taskw generate deps

Development Workflow

# 1. Scan to preview changes
taskw scan

# 2. Generate routes only
taskw generate routes

# 3. Test the changes
go run cmd/server/main.go

# 4. Generate dependencies if needed
taskw generate deps

Error Handling

The generate commands will fail if:

  • Required annotations are missing or malformed
  • Output files cannot be written
  • Configuration is invalid
  • Go code has syntax errors

Integration with Wire

When generating dependencies, Taskw creates Wire-compatible code:

//go:build wireinject
// +build wireinject

package main

import (
    "github.com/google/wire"
    "your-project/internal/api"
)

func InitializeServer() (*api.Server, error) {
    wire.Build(
        api.ProviderSet,
        // ... other providers
    )
    return &api.Server{}, nil
}

Integration with Fiber

When generating routes, Taskw creates Fiber-compatible route registration:

func RegisterRoutes(app *fiber.App, handlers *Handlers) {
    app.Get("/health", handlers.Health.GetHealth)
    // ... other routes
}