Help us shape the future of Go! Take the 2026 Go Developer Survey

cli

package
v0.8.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 7, 2026 License: MIT Imports: 37 Imported by: 0

Documentation

Overview

Package cli provides a composable CLI for visionspec.

Organizations can import this package to build custom CLI tools that include visionspec commands alongside their own:

package main

import (
	"github.com/spf13/cobra"
	"github.com/ProductBuildersHQ/visionspec/pkg/cli"
)

func main() {
	root := &cobra.Command{Use: "org-spec"}
	cfg := cli.DefaultConfig()
	cli.AddCommandsTo(root, cfg)
	root.AddCommand(customCmd)
	root.Execute()
}

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func AddCommandsTo

func AddCommandsTo(root *cobra.Command, cfg *Config)

AddCommandsTo adds all visionspec commands to a root command.

func WithConfig

func WithConfig(ctx context.Context, cfg *Config) context.Context

WithConfig returns a context with the config attached.

Types

type CommandSet

type CommandSet struct {
	Init       *cobra.Command
	Create     *cobra.Command
	Lint       *cobra.Command
	Status     *cobra.Command
	Eval       *cobra.Command
	Render     *cobra.Command
	Synthesize *cobra.Command
	Reconcile  *cobra.Command
	Approve    *cobra.Command
	Export     *cobra.Command
	Targets    *cobra.Command
	Graph      *cobra.Command
	Docs       *cobra.Command
	Serve      *cobra.Command
	Profiles   *cobra.Command
	Context    *cobra.Command
	Rules      *cobra.Command
	Generate   *cobra.Command
	Sync       *cobra.Command
	Drift      *cobra.Command
	Watch      *cobra.Command
	Version    *cobra.Command
}

CommandSet contains all visionspec commands.

func Commands

func Commands(cfg *Config) *CommandSet

Commands returns all visionspec commands. Use this for selective command inclusion.

type Config

type Config struct {
	// TemplateLoader loads spec templates.
	// If nil, uses embedded templates.
	TemplateLoader templates.Loader

	// RubricLoader loads evaluation rubrics.
	// If nil, uses embedded rubrics.
	RubricLoader rubrics.Loader

	// SpecConfig defines which specs are required and their settings.
	// If nil, uses default visionspec requirements.
	SpecConfig *types.SpecConfig

	// ProfileLoader loads configuration profiles.
	// If nil, uses default profiles.
	ProfileLoader profiles.Loader

	// ConstitutionLoader loads organization/team/project constitutions.
	// If nil, no built-in constitutions are available.
	// Organizations typically provide their own loader with prescriptive defaults.
	ConstitutionLoader constitution.Loader

	// AppTypeLoader loads app type specifications.
	// If nil, uses built-in app type specs.
	AppTypeLoader apptypes.Loader

	// DefaultProfile is the profile to use when none is specified.
	// If empty, uses no profile (default visionspec behavior).
	DefaultProfile string

	// Version is the CLI version string.
	Version string
}

Config allows customization of CLI behavior. Organizations can provide custom loaders to override defaults:

cfg := cli.DefaultConfig()
cfg.TemplateLoader = templates.NewChainLoader(
	orgTemplates,     // Organization-specific (prescriptive)
	cfg.TemplateLoader, // Fall back to visionspec defaults
)
cfg.ConstitutionLoader = constitution.NewChainLoader(
	orgConstitutions,
	cfg.ConstitutionLoader,
)

func ConfigFromContext

func ConfigFromContext(ctx context.Context) *Config

ConfigFromContext returns the Config from a context.

func ConfigFromProfile

func ConfigFromProfile(profile *profiles.Profile) *Config

ConfigFromProfile creates a Config from a profile.

func DefaultConfig

func DefaultConfig() *Config

DefaultConfig returns the default configuration. This provides flexible, choice-based defaults suitable for open source use. Organizations should use NewOrgConfig() or customize loaders for prescriptive defaults.

func (*Config) GetAppTypeLoader added in v0.8.0

func (c *Config) GetAppTypeLoader() apptypes.Loader

GetAppTypeLoader returns the AppTypeLoader, falling back to built-in specs if nil.

func (*Config) GetConstitutionLoader added in v0.8.0

func (c *Config) GetConstitutionLoader() constitution.Loader

GetConstitutionLoader returns the ConstitutionLoader. Returns nil if no loader is configured (organizations must provide their own).

func (*Config) GetSpecConfig

func (c *Config) GetSpecConfig() *types.SpecConfig

GetSpecConfig returns the SpecConfig, falling back to defaults if nil.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL