cmdapi

package
v0.13.1 Latest Latest
Warning

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

Go to latest
Published: Aug 8, 2023 License: Apache-2.0 Imports: 41 Imported by: 0

Documentation

Overview

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

Index

Constants

This section is empty.

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 EnvByName added in v0.12.0

func EnvByName(name string, opts ...LoadOption) (*Project, []*Env, error)

EnvByName parses and returns the project configuration with selected environments.

func Version added in v0.8.0

func Version() string

Version returns the current Atlas binary version.

Types

type Diff added in v0.11.0

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

Diff represents the schema diffing policy.

func (*Diff) Extend added in v0.11.0

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 added in v0.11.0

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 added in v0.11.0

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 added in v0.5.0

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

Sources returns the paths containing the Atlas schema.

type Format added in v0.10.0

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 Lint added in v0.6.5

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"`
	schemahcl.DefaultExtension
}

Lint represents the configuration of migration linting.

func (*Lint) Extend added in v0.6.5

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 LoadOption

type LoadOption func(*loadConfig)

LoadOption configures the LoadEnv function.

func WithInput

func WithInput(values map[string]cty.Value) LoadOption

WithInput is a LoadOption that sets the input values for the LoadEnv function.

type MigrateReport added in v0.11.0

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

MigrateReport responsible for reporting 'migrate apply' reports.

func (*MigrateReport) CloudEnabled added in v0.11.0

func (r *MigrateReport) CloudEnabled() bool

CloudEnabled reports if cloud reporting is enabled.

func (*MigrateReport) Done added in v0.11.0

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

Done closes and flushes this report.

func (*MigrateReport) Init added in v0.11.0

Init the report if the necessary dependencies.

func (*MigrateReport) RecordTargetID added in v0.11.0

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 added in v0.11.0

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

MigrateReportSet is a set of reports.

func NewReportProvider added in v0.12.0

func NewReportProvider(project *Project, envs []*Env) *MigrateReportSet

NewReportProvider returns a new ReporterProvider.

func (*MigrateReportSet) Flush added in v0.11.0

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 added in v0.12.0

func (*MigrateReportSet) RedactedURL(u string) string

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

func (*MigrateReportSet) ReportFor added in v0.11.0

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

ReportFor returns a new MigrateReport for the given environment.

func (*MigrateReportSet) Step added in v0.12.0

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

Step starts a new reporting step.

func (*MigrateReportSet) StepLog added in v0.12.0

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

StepLog logs a line to the current reporting step.

func (*MigrateReportSet) StepLogError added in v0.12.0

func (s *MigrateReportSet) StepLogError(text string)

StepLogError logs a line to the current reporting step.

type Migration added in v0.6.0

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

Migration represents the migration directory for the Env.

type Project added in v0.6.5

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 added in v0.11.0

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"`
	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"`
}

SkipChanges represents the skip changes policy.

type Vars added in v0.8.0

type Vars map[string]cty.Value

Vars implements pflag.Value.

func (Vars) Copy added in v0.8.3

func (v Vars) Copy() Vars

Copy returns a copy of the current variables.

func (*Vars) Replace added in v0.8.3

func (v *Vars) Replace(vc Vars)

Replace overrides the variables.

func (*Vars) Set added in v0.8.0

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

Set implements pflag.Value.Set.

func (Vars) String added in v0.8.0

func (v Vars) String() string

String implements pflag.Value.String.

func (*Vars) Type added in v0.8.0

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