Documentation
¶
Index ¶
- Constants
- Variables
- func PascalCase(s string) string
- type CommandContext
- type CommandFlag
- type CommandPipeline
- type Config
- type Generator
- func (g *Generator) FindCommandParentPath(name string) ([]string, error)
- func (g *Generator) Generate(ctx context.Context) error
- func (g *Generator) GenerateCommandFile(ctx context.Context, cmdDir string, data *templates.CommandData) error
- func (g *Generator) GenerateDocs(ctx context.Context, target string, isPackage bool) error
- func (g *Generator) GenerateSkeleton(ctx context.Context, config SkeletonConfig) error
- func (g *Generator) RegenerateManifest(ctx context.Context) error
- func (g *Generator) RegenerateProject(ctx context.Context) error
- func (g *Generator) Remove(ctx context.Context) error
- func (g *Generator) SetProtection(ctx context.Context, commandName string, protected bool) error
- type Manifest
- type ManifestCommand
- type ManifestCommandUpdate
- type ManifestFeature
- type ManifestFlag
- type ManifestHelp
- type ManifestProperties
- type ManifestReleaseSource
- type ManifestVersion
- type MultilineString
- type PipelineOptions
- type PipelineResult
- type SkeletonConfig
- type StepWarning
Constants ¶
const ( DefaultFileMode = 0o644 DefaultDirMode = 0o755 )
Variables ¶
var ( ErrNotGoToolBaseProject = errors.New("the current project at '%s' is not a gtb project (.gtb/manifest.yaml not found)") ErrParentPathNotFound = errors.New("parent path not found in manifest") ErrModuleNotFound = errors.New("could not find module name in go.mod") ErrFuncNotFound = errors.New("target function not found") ErrParentCommandFileNotFound = errors.New("parent command file not found") )
var BreakingChanges = map[string]string{
"v2.10.0": "Breaking changes to Assets interface and command signatures. Please refer to the migration guide.",
}
BreakingChanges is a map of version strings to descriptions of breaking changes introduced in that version. The keys should be valid semantic version strings (e.g., "v2.10.0"). The values are messages displayed to the user when they upgrade across these versions.
var ErrCommandProtected = errors.New("command is protected")
var ErrInvalidPackageName = errors.Newf("invalid package name")
Functions ¶
func PascalCase ¶
Types ¶
type CommandContext ¶ added in v1.1.2
type CommandContext struct {
// Identity
Name string
ParentPath []string // empty = direct child of root
// Display
Short string
Long string
// Routing / feature options
Aliases []string
Args string
WithAssets bool
WithInitializer bool
PersistentPreRun bool
PreRun bool
Protected *bool
Hidden bool
// Project-level settings (carried from the originating generator)
ProjectPath string
Force bool
UpdateDocs bool
}
CommandContext holds the fully resolved configuration for a single command generation or regeneration pass. It is a value type so recursive invocations cannot accidentally share or mutate each other's state.
func (CommandContext) ToConfig ¶ added in v1.1.2
func (c CommandContext) ToConfig() *Config
ToConfig converts the CommandContext into a *Config suitable for constructing a Generator scoped to this specific command.
type CommandFlag ¶
type CommandPipeline ¶ added in v1.1.2
type CommandPipeline struct {
// contains filtered or unexported fields
}
CommandPipeline owns the ordered post-generation steps that are shared by both generate command and regenerate project. Constructing a pipeline and calling Run centralises all registration, hash, manifest, and documentation logic so a fix in one place applies to both entrypoints.
func (*CommandPipeline) Run ¶ added in v1.1.2
func (p *CommandPipeline) Run(ctx context.Context, data templates.CommandData, cmdDir string) (PipelineResult, error)
Run executes the pipeline steps in order for the given command data and directory. Fatal steps (asset generation) return an error immediately. Advisory steps (registration, manifest) log a warning and accumulate into PipelineResult so callers can inspect partial failures.
type Config ¶
type Config struct {
Agentless bool
AIModel string
AIProvider string
Aliases []string
Args string
Flags []string
Force bool
Hidden bool
Overwrite string // allow, deny, or ask (default ask)
Long string
Name string
Parent string
Path string
PersistentPreRun bool
PreRun bool
Prompt string
Protected *bool
ScriptPath string
Short string
UpdateDocs bool
WithAssets bool
WithInitializer bool
}
type Generator ¶
type Generator struct {
// contains filtered or unexported fields
}
func (*Generator) FindCommandParentPath ¶
func (*Generator) GenerateCommandFile ¶
func (*Generator) GenerateDocs ¶
GenerateDocs generates documentation for the command or package.
func (*Generator) GenerateSkeleton ¶
func (g *Generator) GenerateSkeleton(ctx context.Context, config SkeletonConfig) error
func (*Generator) RegenerateManifest ¶
func (*Generator) RegenerateProject ¶
type Manifest ¶
type Manifest struct {
Properties ManifestProperties `yaml:"properties"`
ReleaseSource ManifestReleaseSource `yaml:"release_source"`
Version ManifestVersion `yaml:"version"`
Hashes map[string]string `yaml:"hashes,omitempty"` // project-level file hashes (relative path → SHA256)
Commands []ManifestCommand `yaml:"commands,omitempty"`
}
func (*Manifest) GetReleaseSource ¶
GetReleaseSource returns the release source type, owner, and repo.
type ManifestCommand ¶
type ManifestCommand struct {
Name string `yaml:"name"`
Description MultilineString `yaml:"description"`
LongDescription MultilineString `yaml:"long_description,omitempty"`
Aliases []string `yaml:"aliases,omitempty"`
Hidden bool `yaml:"hidden,omitempty"`
Args string `yaml:"args,omitempty"`
Hash string `yaml:"hash,omitempty"` // Deprecated: use Hashes
Hashes map[string]string `yaml:"hashes,omitempty"`
WithAssets bool `yaml:"with_assets,omitempty"`
WithInitializer bool `yaml:"with_initializer,omitempty"`
Protected *bool `yaml:"protected,omitempty"`
PersistentPreRun bool `yaml:"persistent_pre_run,omitempty"`
PreRun bool `yaml:"pre_run,omitempty"`
MutuallyExclusive [][]string `yaml:"mutually_exclusive,omitempty"`
RequiredTogether [][]string `yaml:"required_together,omitempty"`
Flags []ManifestFlag `yaml:"flags,omitempty"`
Commands []ManifestCommand `yaml:"commands,omitempty"`
Warning string `yaml:"-"` // Used for comments
}
func (ManifestCommand) MarshalYAML ¶
func (c ManifestCommand) MarshalYAML() (any, error)
type ManifestCommandUpdate ¶ added in v1.1.2
type ManifestCommandUpdate struct {
Name string
Description string
LongDescription string
Aliases []string
Args string
Hashes map[string]string
Flags []ManifestFlag
WithAssets bool
WithInitializer bool
PersistentPreRun bool
PreRun bool
Protected *bool
Hidden bool
}
ManifestCommandUpdate carries all fields that updateCommandRecursive writes to a ManifestCommand entry. Adding a new manifest field means adding it here rather than extending the function signature.
type ManifestFeature ¶
type ManifestFlag ¶
type ManifestFlag struct {
Name string `yaml:"name"`
Type string `yaml:"type"`
Description MultilineString `yaml:"description"`
Persistent bool `yaml:"persistent,omitempty"`
Shorthand string `yaml:"shorthand,omitempty"`
Default string `yaml:"default,omitempty"`
DefaultIsCode bool `yaml:"default_is_code,omitempty"`
Required bool `yaml:"required,omitempty"`
Hidden bool `yaml:"hidden,omitempty"`
Warning string `yaml:"-"` // Used for comments
}
func (ManifestFlag) MarshalYAML ¶
func (f ManifestFlag) MarshalYAML() (any, error)
type ManifestHelp ¶
type ManifestProperties ¶
type ManifestProperties struct {
Name string `yaml:"name"`
Description MultilineString `yaml:"description"`
Features []ManifestFeature `yaml:"features"`
Help ManifestHelp `yaml:"help,omitempty"`
}
type ManifestReleaseSource ¶
type ManifestVersion ¶
type ManifestVersion struct {
GoToolBase string `yaml:"gtb"`
}
type MultilineString ¶
type MultilineString string
func (MultilineString) MarshalYAML ¶
func (s MultilineString) MarshalYAML() (any, error)
type PipelineOptions ¶ added in v1.1.2
type PipelineOptions struct {
SkipAssets bool // do not generate asset files
SkipDocumentation bool // do not run documentation generation
SkipRegistration bool // do not modify the parent cmd.go
}
PipelineOptions controls which steps CommandPipeline executes. The zero value enables all steps.
type PipelineResult ¶ added in v1.1.2
type PipelineResult struct {
Warnings []StepWarning
}
PipelineResult is returned by CommandPipeline.Run and carries any advisory warnings accumulated during execution. A non-empty Warnings slice does not indicate overall failure — the pipeline continued past those steps.
type SkeletonConfig ¶
type SkeletonConfig struct {
Name string
Repo string
Host string
Description string
Path string
GoVersion string // overrides autodetected version when set
Features []ManifestFeature
Private bool // true if the repository requires authentication to access
HelpType string // "slack", "teams", or ""
SlackChannel string
SlackTeam string
TeamsChannel string
TeamsTeam string
}
type StepWarning ¶ added in v1.1.2
StepWarning records a non-fatal failure within a pipeline step.