cmdapi

package
v0.0.0-...-13ce33a Latest Latest
Warning

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

Go to latest
Published: Oct 29, 2024 License: Apache-2.0 Imports: 45 Imported by: 0

Documentation

Overview

Package cmdapi holds the atlas commands used to build an atlas distribution.

Index

Constants

View Source
const (
	ReviewAlways  = "ALWAYS"  // Always review changes. The default mode.
	ReviewWarning = "WARNING" // Review changes only if there are any diagnostics (including warnings).
	ReviewError   = "ERROR"   // Review changes only if there are severe diagnostics (error level).
)

Review modes for 'schema apply'.

Variables

View Source
var (
	// Root represents the root command when called without any subcommands.
	Root = &cobra.Command{
		Use:          "atlas",
		Short:        "A database toolkit.",
		SilenceUsage: true,
	}

	// GlobalFlags contains flags common to many Atlas sub-commands.
	GlobalFlags struct {
		// Config defines the path to the Atlas project/config file.
		ConfigURL string
		// SelectedEnv contains the environment selected from the active project via the --env flag.
		SelectedEnv string
		// Vars contains the input variables passed from the CLI to Atlas DDL or project files.
		Vars Vars
	}
)

Functions

func AbortErrorf

func AbortErrorf(format string, a ...any) error

AbortErrorf is like fmt.Errorf for creating AbortError.

func EnvByName

func EnvByName(cmd *cobra.Command, name string, vars map[string]cty.Value) (*Project, []*Env, error)

EnvByName parses and returns the project configuration with selected environments.

func RunE

func RunE(f func(*cobra.Command, []string) error) func(*cobra.Command, []string) error

RunE wraps the command cobra.Command.RunE function with additional postrun logic.

func Version

func Version() string

Version returns the current Atlas binary version.

Types

type AbortError

type AbortError struct {
	Err error
}

AbortError returns a command error that is formatted as "Abort: ..." when the execution is aborted by the user.

func (*AbortError) Error

func (e *AbortError) Error() string

func (*AbortError) FormatError

func (e *AbortError) FormatError(cmd *cobra.Command)

type Diff

type Diff struct {
	// SkipChanges configures the skip changes policy.
	SkipChanges *SkipChanges `spec:"skip"`
	schemahcl.DefaultExtension
}

Diff represents the schema diffing policy.

func (*Diff) Extend

func (d *Diff) Extend(global *Diff) *Diff

Extend allows extending environment blocks with a global one. For example:

diff {
  skip {
    drop_schema = true
  }
}

env "local" {
  ...
  diff {
    concurrent_index {
      create = true
      drop = true
    }
  }
}

func (*Diff) Options

func (d *Diff) Options() (opts []schema.DiffOption)

Options converts the diff policy into options.

type Env

type Env struct {
	// Name for this environment.
	Name string `spec:"name,name"`

	// URL of the database.
	URL string `spec:"url"`

	// URL of the dev-database for this environment.
	// See: https://atlasgo.io/dev-database
	DevURL string `spec:"dev"`

	// List of schemas in this database that are managed by Atlas.
	Schemas []string `spec:"schemas"`

	// Exclude defines a list of glob patterns used to filter
	// resources on inspection.
	Exclude []string `spec:"exclude"`

	// Migration containing the migration configuration of the env.
	Migration *Migration `spec:"migration"`

	// Diff policy of the environment.
	Diff *Diff `spec:"diff"`

	// Lint policy of the environment.
	Lint *Lint `spec:"lint"`

	// Format of the environment.
	Format Format `spec:"format"`

	schemahcl.DefaultExtension
	// contains filtered or unexported fields
}

Env represents an Atlas environment.

func (*Env) DiffOptions

func (e *Env) DiffOptions() []schema.DiffOption

DiffOptions returns the diff options configured for the environment, or nil if no environment or diff policy were set.

func (*Env) Sources

func (e *Env) Sources() ([]string, error)

Sources returns the paths containing the Atlas schema.

func (*Env) VarFromURL

func (e *Env) VarFromURL(s string) (string, error)

VarFromURL returns the string variable (env attribute) from the URL.

type ErrorFormatter

type ErrorFormatter interface {
	FormatError(*cobra.Command)
}

ErrorFormatter implemented by the errors below to allow them format command output on error.

type Format

type Format struct {
	Migrate struct {
		// Apply configures the formatting for 'migrate apply'.
		Apply string `spec:"apply"`
		// Lint configures the formatting for 'migrate lint'.
		Lint string `spec:"lint"`
		// Status configures the formatting for 'migrate status'.
		Status string `spec:"status"`
		// Apply configures the formatting for 'migrate diff'.
		Diff string `spec:"diff"`
	} `spec:"migrate"`
	Schema struct {
		// Apply configures the formatting for 'schema apply'.
		Apply string `spec:"apply"`
		// Apply configures the formatting for 'schema diff'.
		Diff string `spec:"diff"`
	} `spec:"schema"`
	schemahcl.DefaultExtension
}

Format represents the output formatting configuration of an environment.

type FormattedError

type FormattedError struct {
	Err    error
	Prefix string // Prefix to use on error.
	Silent bool   // Silent errors are not printed.
}

FormattedError is an error that format the command output when returned.

func (*FormattedError) Error

func (e *FormattedError) Error() string

func (*FormattedError) FormatError

func (e *FormattedError) FormatError(cmd *cobra.Command)

type Lint

type Lint struct {
	// Format configures the --format option.
	Format string `spec:"log"`
	// Latest configures the --latest option.
	Latest int `spec:"latest"`
	Git    struct {
		// Dir configures the --git-dir option.
		Dir string `spec:"dir"`
		// Base configures the --git-base option.
		Base string `spec:"base"`
	} `spec:"git"`
	// Review defines when Atlas will ask the user to review and approve the changes.
	Review string `spec:"review"`
	schemahcl.DefaultExtension
}

Lint represents the configuration of migration linting.

func (*Lint) Extend

func (l *Lint) Extend(global *Lint) *Lint

Extend allows extending environment blocks with a global one. For example:

lint {
  log = <<EOS
    ...
  EOS
}

env "local" {
  ...
  lint {
    latest = 1
  }
}

env "ci" {
  ...
  lint {
    git {
      dir = "../"
      base = "master"
    }
  }
}

type MigrateReport

type MigrateReport struct {
	// contains filtered or unexported fields
}

MigrateReport responsible for reporting 'migrate apply' reports.

func (*MigrateReport) CloudEnabled

func (r *MigrateReport) CloudEnabled(ctx context.Context) bool

CloudEnabled reports if cloud reporting is enabled.

func (*MigrateReport) Done

func (r *MigrateReport) Done(cmd *cobra.Command, flags migrateApplyFlags) error

Done closes and flushes this report.

func (*MigrateReport) Init

Init the report if the necessary dependencies.

func (*MigrateReport) RecordTargetID

func (r *MigrateReport) RecordTargetID(ctx context.Context) error

RecordTargetID asks the revisions-table to allow or provide the target identifier if cloud reporting is enabled.

type MigrateReportSet

type MigrateReportSet struct {
	cloudapi.ReportMigrationSetInput
	// contains filtered or unexported fields
}

MigrateReportSet is a set of reports.

func NewReportProvider

func NewReportProvider(ctx context.Context, p *Project, envs []*Env, flags *migrateApplyFlags) (*MigrateReportSet, error)

NewReportProvider returns a new ReporterProvider.

func (*MigrateReportSet) Flush

func (s *MigrateReportSet) Flush(cmd *cobra.Command, cmdErr error)

Flush report the migration deployment to the cloud. The current implementation is simplistic and sends each report separately without marking them as part of a group.

Note that reporting errors are logged, but not cause Atlas to fail.

func (*MigrateReportSet) RedactedURL

func (*MigrateReportSet) RedactedURL(u string) string

RedactedURL returns the redacted URL of the given environment at index i.

func (*MigrateReportSet) ReportFor

func (s *MigrateReportSet) ReportFor(flags migrateApplyFlags, e *Env) *MigrateReport

ReportFor returns a new MigrateReport for the given environment.

func (*MigrateReportSet) Step

func (s *MigrateReportSet) Step(format string, args ...interface{})

Step starts a new reporting step.

func (*MigrateReportSet) StepLog

func (s *MigrateReportSet) StepLog(format string, args ...interface{})

StepLog logs a line to the current reporting step.

func (*MigrateReportSet) StepLogError

func (s *MigrateReportSet) StepLogError(text string)

StepLogError logs a line to the current reporting step.

type Migration

type Migration struct {
	Dir             string `spec:"dir"`
	Format          string `spec:"format"`
	Baseline        string `spec:"baseline"`
	ExecOrder       string `spec:"exec_order"`
	LockTimeout     string `spec:"lock_timeout"`
	RevisionsSchema string `spec:"revisions_schema"`
}

Migration represents the migration directory for the Env.

type Project

type Project struct {
	Envs []*Env `spec:"env"`  // List of environments
	Lint *Lint  `spec:"lint"` // Optional global lint policy
	Diff *Diff  `spec:"diff"` // Optional global diff policy
	// contains filtered or unexported fields
}

Project represents an atlas.hcl project config file.

type SkipChanges

type SkipChanges struct {
	AddSchema        bool `spec:"add_schema"`
	DropSchema       bool `spec:"drop_schema"`
	ModifySchema     bool `spec:"modify_schema"`
	AddTable         bool `spec:"add_table"`
	DropTable        bool `spec:"drop_table"`
	ModifyTable      bool `spec:"modify_table"`
	RenameTable      bool `spec:"rename_table"`
	AddColumn        bool `spec:"add_column"`
	DropColumn       bool `spec:"drop_column"`
	ModifyColumn     bool `spec:"modify_column"`
	AddIndex         bool `spec:"add_index"`
	DropIndex        bool `spec:"drop_index"`
	ModifyIndex      bool `spec:"modify_index"`
	AddForeignKey    bool `spec:"add_foreign_key"`
	DropForeignKey   bool `spec:"drop_foreign_key"`
	ModifyForeignKey bool `spec:"modify_foreign_key"`
	AddView          bool `spec:"add_view"`
	DropView         bool `spec:"drop_view"`
	ModifyView       bool `spec:"modify_view"`
	RenameView       bool `spec:"rename_view"`
	AddFunc          bool `spec:"add_func"`
	DropFunc         bool `spec:"drop_func"`
	ModifyFunc       bool `spec:"modify_func"`
	RenameFunc       bool `spec:"rename_func"`
	AddProc          bool `spec:"add_proc"`
	DropProc         bool `spec:"drop_proc"`
	ModifyProc       bool `spec:"modify_proc"`
	RenameProc       bool `spec:"rename_proc"`
	AddTrigger       bool `spec:"add_trigger"`
	DropTrigger      bool `spec:"drop_trigger"`
	ModifyTrigger    bool `spec:"modify_trigger"`
	RenameTrigger    bool `spec:"rename_trigger"`
}

SkipChanges represents the skip changes policy.

type Vars

type Vars map[string]cty.Value

Vars implements pflag.Value.

func (Vars) Copy

func (v Vars) Copy() Vars

Copy returns a copy of the current variables.

func (*Vars) Replace

func (v *Vars) Replace(vc Vars)

Replace overrides the variables.

func (*Vars) Set

func (v *Vars) Set(s string) error

Set implements pflag.Value.Set.

func (Vars) String

func (v Vars) String() string

String implements pflag.Value.String.

func (*Vars) Type

func (v *Vars) Type() string

Type implements pflag.Value.Type.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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