Documentation ¶
Overview ¶
Package workspace contains functionality to manage a user's local workspace. This includes creating an application directory, reading and writing a summary file to associate the workspace with the application, and managing infrastructure-as-code files. The typical workspace will be structured like:
. ├── copilot (application directory) │ ├── .workspace (workspace summary) │ ├── my-service │ │ └── manifest.yml (service manifest) | | environments | | └── test │ │ └── manifest.yml (environment manifest for the environment test) │ ├── buildspec.yml (legacy buildspec for the pipeline's build stage) │ ├── pipeline.yml (legacy pipeline manifest) │ ├── pipelines │ │ ├── pipeline-app-beta │ │ │ ├── buildspec.yml (buildspec for the pipeline 'pipeline-app-beta') │ ┴ ┴ └── manifest.yml (pipeline manifest for the pipeline 'pipeline-app-beta') └── my-service-src (customer service code)
Index ¶
- Constants
- Variables
- func IsEmptyErr(err error) bool
- func IsInGitRepository(fs FileStat) bool
- func TraverseUp(startDir string, maxLevels int, process TraverseUpProcessFn) (string, error)
- type EnvironmentManifest
- type ErrFileExists
- type ErrFileNotExists
- type ErrNoAssociatedApplication
- type ErrTargetNotFound
- type ErrWorkspaceNotFound
- type FileStat
- type PipelineManifest
- type Summary
- type TraverseUpProcessFn
- type WorkloadManifest
- type Workspace
- func (ws *Workspace) DeleteWorkspaceFile() error
- func (ws *Workspace) EnvAddonFileAbsPath(fName string) string
- func (ws *Workspace) EnvAddonFilePath(fName string) string
- func (ws *Workspace) EnvAddonsAbsPath() string
- func (ws *Workspace) EnvOverridesPath() string
- func (ws *Workspace) HasEnvironments() (bool, error)
- func (ws *Workspace) ListEnvironments() ([]string, error)
- func (ws *Workspace) ListFiles(dirPath string) ([]string, error)
- func (ws *Workspace) ListJobs() ([]string, error)
- func (ws *Workspace) ListPipelines() ([]PipelineManifest, error)
- func (ws *Workspace) ListServices() ([]string, error)
- func (ws *Workspace) ListWorkloads() ([]string, error)
- func (ws *Workspace) Path() string
- func (ws *Workspace) PipelineOverridesPath(name string) string
- func (ws *Workspace) ProjectRoot() string
- func (ws *Workspace) ReadEnvironmentManifest(mftDirName string) (EnvironmentManifest, error)
- func (ws *Workspace) ReadFile(fPath string) ([]byte, error)
- func (ws *Workspace) ReadPipelineManifest(path string) (*manifest.Pipeline, error)
- func (ws *Workspace) ReadWorkloadManifest(mftDirName string) (WorkloadManifest, error)
- func (ws *Workspace) Rel(path string) (string, error)
- func (ws *Workspace) Summary() (*Summary, error)
- func (ws *Workspace) WorkloadAddonFileAbsPath(wkldName, fName string) string
- func (ws *Workspace) WorkloadAddonFilePath(wkldName, fName string) string
- func (ws *Workspace) WorkloadAddonsAbsPath(name string) string
- func (ws *Workspace) WorkloadExists(name string) (bool, error)
- func (ws *Workspace) WorkloadOverridesPath(name string) string
- func (ws *Workspace) Write(content encoding.BinaryMarshaler, path string) (string, error)
- func (ws *Workspace) WriteEnvironmentManifest(marshaler encoding.BinaryMarshaler, name string) (string, error)
- func (ws *Workspace) WriteJobManifest(marshaler encoding.BinaryMarshaler, name string) (string, error)
- func (ws *Workspace) WritePipelineBuildspec(marshaler encoding.BinaryMarshaler, name string) (string, error)
- func (ws *Workspace) WritePipelineManifest(marshaler encoding.BinaryMarshaler, name string) (string, error)
- func (ws *Workspace) WriteServiceManifest(marshaler encoding.BinaryMarshaler, name string) (string, error)
Constants ¶
const ( // CopilotDirName is the name of the directory where generated infrastructure code for an application will be stored. CopilotDirName = "copilot" // SummaryFileName is the name of the file that is associated with the application. SummaryFileName = ".workspace" // AddonsParametersFileName is the name of the file that define extra parameters for an addon. AddonsParametersFileName = "addons.parameters.yml" )
Variables ¶
var ErrNoPipelineInWorkspace = errors.New("no pipeline manifest found in the workspace")
ErrNoPipelineInWorkspace means there was no pipeline manifest in the workspace dir.
var ErrTraverseUpShouldStop = errors.New("should stop")
ErrTraverseUpShouldStop signals that TraverseUp should stop.
Functions ¶
func IsEmptyErr ¶ added in v1.24.0
IsEmptyErr returns true if the error is related to an empty workspace.
func IsInGitRepository ¶ added in v0.3.0
IsInGitRepository returns true if the current working directory is a git repository.
func TraverseUp ¶ added in v1.29.0
func TraverseUp(startDir string, maxLevels int, process TraverseUpProcessFn) (string, error)
TraverseUp traverses at most `maxLevels` up from the starting directory, invoke TraverseUpProcessFn at each level, and returns the value that it gets TraverseUpProcessFn process upon receiving an ErrTraverseUpShouldStop signal. If after traversing up `maxLevels`, it still hasn't received a ErrTraverseUpShouldStop signal, it will return ErrTargetNotFound.
Types ¶
type EnvironmentManifest ¶ added in v1.19.0
type EnvironmentManifest []byte
EnvironmentManifest represents raw local environment manifest.
type ErrFileExists ¶
type ErrFileExists struct {
FileName string
}
ErrFileExists means we tried to create an existing file.
func (*ErrFileExists) Error ¶
func (e *ErrFileExists) Error() string
type ErrFileNotExists ¶ added in v1.13.0
type ErrFileNotExists struct {
FileName string
}
ErrFileNotExists means we tried to read a non-existing file.
func (*ErrFileNotExists) Error ¶ added in v1.13.0
func (e *ErrFileNotExists) Error() string
type ErrNoAssociatedApplication ¶ added in v1.24.0
type ErrNoAssociatedApplication struct{}
ErrNoAssociatedApplication means we couldn't locate a workspace summary file.
func (*ErrNoAssociatedApplication) Error ¶ added in v1.24.0
func (e *ErrNoAssociatedApplication) Error() string
func (*ErrNoAssociatedApplication) RecommendActions ¶ added in v1.24.0
func (_ *ErrNoAssociatedApplication) RecommendActions() string
RecommendActions suggests steps clients can take to mitigate the .workspace file not found error.
type ErrTargetNotFound ¶ added in v1.29.0
type ErrTargetNotFound struct {
// contains filtered or unexported fields
}
ErrTargetNotFound means that we couldn't locate the target file or the target directory.
func (*ErrTargetNotFound) Error ¶ added in v1.29.0
func (e *ErrTargetNotFound) Error() string
type ErrWorkspaceNotFound ¶ added in v1.13.0
type ErrWorkspaceNotFound struct { *ErrTargetNotFound // contains filtered or unexported fields }
ErrWorkspaceNotFound means we couldn't locate a workspace root.
func (*ErrWorkspaceNotFound) Error ¶ added in v1.13.0
func (e *ErrWorkspaceNotFound) Error() string
func (*ErrWorkspaceNotFound) RecommendActions ¶ added in v1.24.0
func (_ *ErrWorkspaceNotFound) RecommendActions() string
RecommendActions suggests steps clients can take to mitigate the copilot/ directory not found error.
type PipelineManifest ¶ added in v1.16.0
type PipelineManifest struct { Name string // Name of the pipeline inside the manifest file. Path string // Absolute path to the manifest file for the pipeline. }
PipelineManifest holds identifying information about a pipeline manifest file.
type Summary ¶
type Summary struct { Application string `yaml:"application"` // Name of the application. Path string `yaml:"-"` // Absolute path to the summary file. }
Summary is a description of what's associated with this workspace.
type TraverseUpProcessFn ¶ added in v1.29.0
TraverseUpProcessFn represents a function that TraverseUp invokes at each level of traversal. If TraverseUpProcessFn returns an ErrTraverseUpShouldStop, TraverseUp will stop traversing, return the result and a nil error. If TraverseUpProcessFn returns some other error, TraverseUp will stop traversing, return an empty string and the error. If TraverseUpProcessFn returns a nil error, TraverseUp will keep traversing up the directory tree.
type WorkloadManifest ¶ added in v1.13.0
type WorkloadManifest []byte
WorkloadManifest represents raw local workload manifest.
func (WorkloadManifest) WorkloadType ¶ added in v1.13.0
func (w WorkloadManifest) WorkloadType() (string, error)
WorkloadType returns the workload type of the manifest.
type Workspace ¶
type Workspace struct { CopilotDirAbs string // TODO: make private by adding mocks for selector unit testing. // contains filtered or unexported fields }
Workspace typically represents a Git repository where the user has its infrastructure-as-code files as well as source files.
func Create ¶ added in v1.24.0
Create creates a new Workspace in the current working directory for appName with summary if it doesn't already exist.
func Use ¶ added in v1.24.0
Use returns an existing workspace, searching for a copilot/ directory from the current wd, up to 5 levels above. It returns ErrWorkspaceNotFound if no copilot/ directory is found.
func (*Workspace) DeleteWorkspaceFile ¶
DeleteWorkspaceFile removes the .workspace file under copilot/ directory. This will be called during app delete, we do not want to delete any other generated files.
func (*Workspace) EnvAddonFileAbsPath ¶ added in v1.26.0
EnvAddonFileAbsPath returns the absolute path of an addon file for environments.
func (*Workspace) EnvAddonFilePath ¶ added in v1.24.0
EnvAddonFilePath returns the path under the workspace of an addon file for environments.
func (*Workspace) EnvAddonsAbsPath ¶ added in v1.26.0
EnvAddonsAbsPath returns the absolute path for the addons/ directory of environments.
func (*Workspace) EnvOverridesPath ¶ added in v1.26.0
EnvOverridesPath returns the default path to the overrides/ directory for environments.
func (*Workspace) HasEnvironments ¶ added in v1.26.0
HasEnvironments returns true if the workspace manages environments.
func (*Workspace) ListEnvironments ¶ added in v1.19.0
ListEnvironments returns the name of the environments in the workspace.
func (*Workspace) ListFiles ¶ added in v1.24.0
ListFiles returns a list of file paths to all the files under the dir.
func (*Workspace) ListJobs ¶ added in v1.13.0
ListJobs returns the names of all jobs in the workspace.
func (*Workspace) ListPipelines ¶ added in v1.16.0
func (ws *Workspace) ListPipelines() ([]PipelineManifest, error)
ListPipelines returns all pipelines in the workspace.
func (*Workspace) ListServices ¶ added in v1.13.0
ListServices returns the names of the services in the workspace.
func (*Workspace) ListWorkloads ¶ added in v1.13.0
ListWorkloads returns the name of all the workloads in the workspace (could be unregistered in SSM).
func (*Workspace) PipelineOverridesPath ¶ added in v1.29.0
PipelineOverridesPath returns the default path to the overrides/ directory for a given pipeline.
func (*Workspace) ProjectRoot ¶ added in v1.28.0
ProjectRoot returns a path to the presumed root of the project, the directory that contains the copilot dir and .workspace file.
func (*Workspace) ReadEnvironmentManifest ¶ added in v1.19.0
func (ws *Workspace) ReadEnvironmentManifest(mftDirName string) (EnvironmentManifest, error)
ReadEnvironmentManifest returns the contents of the environment's manifest under copilot/environments/{name}/manifest.yml.
func (*Workspace) ReadFile ¶ added in v1.24.0
ReadFile returns the content of a file. Returns ErrFileNotExists if the file does not exist.
func (*Workspace) ReadPipelineManifest ¶
ReadPipelineManifest returns the contents of the pipeline manifest under the given path.
func (*Workspace) ReadWorkloadManifest ¶ added in v0.4.0
func (ws *Workspace) ReadWorkloadManifest(mftDirName string) (WorkloadManifest, error)
ReadWorkloadManifest returns the contents of the workload's manifest under copilot/{name}/manifest.yml.
func (*Workspace) Rel ¶ added in v1.16.0
Rel returns the relative path to path from the workspace copilot directory.
func (*Workspace) Summary ¶
Summary returns a summary of the workspace. The method assumes that the workspace exists and the path is known.
func (*Workspace) WorkloadAddonFileAbsPath ¶ added in v1.26.0
WorkloadAddonFileAbsPath returns the absolute path of an addon file for a given workload.
func (*Workspace) WorkloadAddonFilePath ¶ added in v1.24.0
WorkloadAddonFilePath returns the path under the workspace of an addon file for a given workload.
func (*Workspace) WorkloadAddonsAbsPath ¶ added in v1.26.0
WorkloadAddonsAbsPath returns the absolute path for the addons/ directory file path of a given workload.
func (*Workspace) WorkloadExists ¶ added in v1.26.0
WorkloadExists returns true if a workload exists in the workspace.
func (*Workspace) WorkloadOverridesPath ¶ added in v1.26.0
WorkloadOverridesPath returns the default path to the overrides/ directory for a given workload.
func (*Workspace) Write ¶ added in v1.26.0
Write writes the content under the path relative to "copilot/" directory. If successful returns the full path of the file, otherwise an empty string and an error.
func (*Workspace) WriteEnvironmentManifest ¶ added in v1.20.0
func (ws *Workspace) WriteEnvironmentManifest(marshaler encoding.BinaryMarshaler, name string) (string, error)
WriteEnvironmentManifest writes the environment manifest under the copilot/environments/{name}/ directory. If successful returns the full path of the file, otherwise returns an empty string and the error.
func (*Workspace) WriteJobManifest ¶ added in v0.5.0
func (ws *Workspace) WriteJobManifest(marshaler encoding.BinaryMarshaler, name string) (string, error)
WriteJobManifest writes the job's manifest under the copilot/{name}/ directory.
func (*Workspace) WritePipelineBuildspec ¶
func (ws *Workspace) WritePipelineBuildspec(marshaler encoding.BinaryMarshaler, name string) (string, error)
WritePipelineBuildspec writes the pipeline buildspec under the copilot/pipelines/{name}/ directory. If successful returns the full path of the file, otherwise returns an empty string and the error.
func (*Workspace) WritePipelineManifest ¶
func (ws *Workspace) WritePipelineManifest(marshaler encoding.BinaryMarshaler, name string) (string, error)
WritePipelineManifest writes the pipeline manifest under the copilot/pipelines/{name}/ directory. If successful returns the full path of the file, otherwise returns an empty string and the error.
func (*Workspace) WriteServiceManifest ¶
func (ws *Workspace) WriteServiceManifest(marshaler encoding.BinaryMarshaler, name string) (string, error)
WriteServiceManifest writes the service's manifest under the copilot/{name}/ directory.