config

package
v0.13.2 Latest Latest
Warning

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

Go to latest
Published: Mar 23, 2026 License: MIT Imports: 29 Imported by: 0

Documentation

Index

Constants

View Source
const RuntimeComposeOverrideName = "docker-compose.override.yml"

Variables

View Source
var ErrContextNotFound = errors.New("context not found")

Functions

func ConfigFilePath

func ConfigFilePath() string

func ContextExists

func ContextExists(name string) (bool, error)

func Current

func Current() (string, error)

func DeleteCronSpec added in v0.13.0

func DeleteCronSpec(name string) error

func DetectComposeNetworkName added in v0.10.0

func DetectComposeNetworkName(projectDir, composeProjectName string) string

func DetectComposeProjectName added in v0.10.0

func DetectComposeProjectName(projectDir string) string

func DetectContextComposeNetwork added in v0.10.0

func DetectContextComposeNetwork(ctx *Context) string

func ExpandProjectDir added in v0.10.0

func ExpandProjectDir(value string) (string, error)

func GetDefaultLocalDockerSocket

func GetDefaultLocalDockerSocket(dockerSocket string) string

for local contexts, try a bunch of common paths grab the docker socket this is mostly needed for Mac OS

func GetInput

func GetInput(question ...string) (string, error)

func IsDockerSocketAlive added in v0.9.0

func IsDockerSocketAlive(socket string) bool

func LooksLikeComposeProject added in v0.9.0

func LooksLikeComposeProject(projectDir string) bool

func ResolveCurrentContextName added in v0.9.0

func ResolveCurrentContextName(f *pflag.FlagSet) (string, error)

func Save

func Save(cfg *Config) error

func SaveContext

func SaveContext(ctx *Context, setDefault bool) error

func SaveCronSpec added in v0.13.0

func SaveCronSpec(spec CronSpec) error

func SetCommandFlags

func SetCommandFlags(flags *pflag.FlagSet)

func ValidateExistingComposeProjectDir added in v0.9.0

func ValidateExistingComposeProjectDir(projectDir string) error

Types

type Config

type Config struct {
	CurrentContext string     `yaml:"current-context"`
	Contexts       []Context  `yaml:"contexts"`
	CronSpecs      []CronSpec `yaml:"cron-specs,omitempty"`
}

func Load

func Load() (*Config, error)

type Context

type Context struct {
	Name                string      `yaml:"name"`
	Site                string      `yaml:"site"`
	Plugin              string      `yaml:"plugin"`
	DockerHostType      ContextType `mapstructure:"type" yaml:"type"`
	Environment         string      `yaml:"environment,omitempty"`
	DockerSocket        string      `yaml:"docker-socket"`
	ProjectName         string      `yaml:"project-name"`
	ComposeProjectName  string      `yaml:"compose-project-name,omitempty"`
	ComposeNetwork      string      `yaml:"compose-network,omitempty"`
	ProjectDir          string      `yaml:"project-dir"`
	DrupalRootfs        string      `yaml:"drupal-rootfs,omitempty"`
	DrupalContainerRoot string      `yaml:"drupal-container-root,omitempty"`
	SSHUser             string      `yaml:"ssh-user"`
	SSHHostname         string      `yaml:"ssh-hostname,omitempty"`
	SSHPort             uint        `yaml:"ssh-port,omitempty"`
	SSHKeyPath          string      `yaml:"ssh-key,omitempty"`
	EnvFile             []string    `yaml:"env-file"`
	ComposeFile         []string    `yaml:"compose-file,omitempty"`

	// Database connection configuration
	DatabaseService        string `yaml:"database-service,omitempty"`
	DatabaseUser           string `yaml:"database-user,omitempty"`
	DatabasePasswordSecret string `yaml:"database-password-secret,omitempty"`
	DatabaseName           string `yaml:"database-name,omitempty"`

	ReadSmallFileFunc func(filename string) (string, error) `yaml:"-"`

	// Extra holds plugin-specific configuration.
	// Each plugin uses its own key (e.g., "drupal", "isle", "wordpress").
	Extra map[string]yaml.Node `yaml:"extra,omitempty"`
}

func CurrentContext

func CurrentContext(f *pflag.FlagSet) (*Context, error)

func DiscoverCurrentContext added in v0.9.0

func DiscoverCurrentContext() (*Context, error)

func FindLocalContextByProjectDir added in v0.9.0

func FindLocalContextByProjectDir(projectDir string) (*Context, error)

func GetContext

func GetContext(name string) (Context, error)

func LoadFromFlags

func LoadFromFlags(f *pflag.FlagSet, context Context) (*Context, error)

func PromptAndSaveLocalContext added in v0.5.0

func PromptAndSaveLocalContext(opts LocalContextCreateOptions) (*Context, error)

func (*Context) DialSSH

func (c *Context) DialSSH() (*ssh.Client, error)

func (Context) EffectiveComposeNetwork added in v0.10.0

func (c Context) EffectiveComposeNetwork() string

func (Context) EffectiveComposeProjectName added in v0.10.0

func (c Context) EffectiveComposeProjectName() string

func (*Context) EffectiveDrupalContainerRoot added in v0.13.0

func (c *Context) EffectiveDrupalContainerRoot() string

func (*Context) EffectiveDrupalRootfs added in v0.13.0

func (c *Context) EffectiveDrupalRootfs() string
func (c Context) EnsureTrackedComposeOverrideSymlink() error

func (*Context) FileExists added in v0.9.0

func (c *Context) FileExists(path string) (bool, error)

func (*Context) GetSshUri added in v0.2.0

func (c *Context) GetSshUri() string

GetSshUri returns an SSH connection URI

func (*Context) HasComposeProject added in v0.9.0

func (c *Context) HasComposeProject() (bool, error)

func (*Context) ListFiles added in v0.5.0

func (c *Context) ListFiles(root string) ([]string, error)

ListFiles lists files under a directory relative to the directory root.

func (*Context) NewFileAccessor added in v0.12.0

func (c *Context) NewFileAccessor() (*FileAccessor, error)

func (Context) OverrideEnvironment added in v0.9.0

func (c Context) OverrideEnvironment() string

func (*Context) ProjectDirExists

func (c *Context) ProjectDirExists() (bool, error)

func (*Context) ReadFile added in v0.5.0

func (c *Context) ReadFile(filename string) ([]byte, error)

ReadFile reads a file from the context, supporting local and remote paths.

func (*Context) ReadSmallFile

func (c *Context) ReadSmallFile(filename string) (string, error)

func (*Context) RemoveFile added in v0.5.0

func (c *Context) RemoveFile(filename string) error

RemoveFile removes a file from the context.

func (*Context) ResolveProjectPath added in v0.9.0

func (c *Context) ResolveProjectPath(path string) string

func (*Context) RunCommand

func (c *Context) RunCommand(cmd *exec.Cmd) (string, error)

func (*Context) RunCommandContext added in v0.12.0

func (c *Context) RunCommandContext(ctx context.Context, cmd *exec.Cmd) (string, error)

func (*Context) RunQuietCommand added in v0.9.0

func (c *Context) RunQuietCommand(cmd *exec.Cmd) (string, error)

func (*Context) RunQuietCommandContext added in v0.12.0

func (c *Context) RunQuietCommandContext(ctx context.Context, cmd *exec.Cmd) (string, error)

func (Context) RuntimeComposeOverridePath added in v0.9.0

func (c Context) RuntimeComposeOverridePath() string

func (Context) String

func (context Context) String() (string, error)

func (Context) TrackedComposeOverrideName added in v0.9.0

func (c Context) TrackedComposeOverrideName() string

func (Context) TrackedComposeOverridePath added in v0.9.0

func (c Context) TrackedComposeOverridePath() string

func (*Context) UploadFile

func (c *Context) UploadFile(source, destination string) error

func (*Context) ValidateComposeAccess added in v0.9.0

func (c *Context) ValidateComposeAccess() error
func (c Context) ValidateTrackedComposeOverrideSymlink() error

func (*Context) VerifyRemoteInput

func (cc *Context) VerifyRemoteInput(existingSite bool) error

func (*Context) WriteFile added in v0.5.0

func (c *Context) WriteFile(filename string, data []byte) error

WriteFile writes a file to the context, creating parent directories as needed.

type ContextType

type ContextType string
const (
	ContextLocal  ContextType = "local"
	ContextRemote ContextType = "remote"
)

type CronSpec added in v0.13.0

type CronSpec struct {
	Name                 string   `yaml:"name"`
	Context              string   `yaml:"context"`
	Schedule             string   `yaml:"schedule"`
	OutputDir            string   `yaml:"output-dir"`
	Components           []string `yaml:"components,omitempty"`
	RetentionDays        int      `yaml:"retention-days,omitempty"`
	PreserveFirstOfMonth bool     `yaml:"preserve-first-of-month,omitempty"`
	DockerPrune          bool     `yaml:"docker-prune,omitempty"`
}

func GetCronSpec added in v0.13.0

func GetCronSpec(name string) (CronSpec, error)

type FileAccessor added in v0.12.0

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

func NewFileAccessor added in v0.12.0

func NewFileAccessor(ctx *Context) (*FileAccessor, error)

func NewFileAccessorWithSSH added in v0.12.0

func NewFileAccessorWithSSH(ctx *Context, sshClient *ssh.Client, ownsSSH bool) (*FileAccessor, error)

func (*FileAccessor) Close added in v0.12.0

func (a *FileAccessor) Close() error

func (*FileAccessor) FileExists added in v0.12.0

func (a *FileAccessor) FileExists(path string) (bool, error)

func (*FileAccessor) ListFiles added in v0.12.0

func (a *FileAccessor) ListFiles(root string) ([]string, error)

func (*FileAccessor) MkdirAll added in v0.13.0

func (a *FileAccessor) MkdirAll(path string) error

func (*FileAccessor) ReadFile added in v0.12.0

func (a *FileAccessor) ReadFile(filename string) ([]byte, error)

func (*FileAccessor) ReadFileContext added in v0.12.0

func (a *FileAccessor) ReadFileContext(ctx context.Context, filename string) ([]byte, error)

func (*FileAccessor) ReadFiles added in v0.12.0

func (a *FileAccessor) ReadFiles(paths []string) (map[string][]byte, error)

func (*FileAccessor) ReadFilesContext added in v0.12.0

func (a *FileAccessor) ReadFilesContext(ctx context.Context, paths []string) (map[string][]byte, error)

func (*FileAccessor) RemoveAll added in v0.13.0

func (a *FileAccessor) RemoveAll(path string) error

func (*FileAccessor) RemoveFile added in v0.12.0

func (a *FileAccessor) RemoveFile(filename string) error

func (*FileAccessor) Stat added in v0.12.0

func (a *FileAccessor) Stat(path string) (fs.FileInfo, error)

func (*FileAccessor) StatVFS added in v0.13.1

func (a *FileAccessor) StatVFS(path string) (*sftp.StatVFS, error)

func (*FileAccessor) UploadFile added in v0.12.0

func (a *FileAccessor) UploadFile(source, destination string) error

func (*FileAccessor) WriteFile added in v0.12.0

func (a *FileAccessor) WriteFile(filename string, data []byte) error

type FileReader

type FileReader interface {
	ReadSmallFile(path string) (string, error)
}

FileReader defines the behavior needed to read small files.

type InputFunc added in v0.5.0

type InputFunc func(question ...string) (string, error)

type LocalContextCreateOptions added in v0.5.0

type LocalContextCreateOptions struct {
	Name                string
	DefaultName         string
	Site                string
	DefaultSite         string
	Plugin              string
	DefaultPlugin       string
	ProjectDir          string
	DefaultProjectDir   string
	ProjectName         string
	DefaultProjectName  string
	ComposeProjectName  string
	ComposeNetwork      string
	Environment         string
	DockerSocket        string
	DrupalRootfs        string
	DrupalContainerRoot string
	SetDefault          bool
	ConfirmOverwrite    bool
	Input               InputFunc
	ProjectDirValidator func(string) error
	ContextNamePrompt   []string
	ProjectDirPrompt    []string
	OverwritePrompt     []string
}

Jump to

Keyboard shortcuts

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