Complete list of available actions. See tasks/ directory for usage examples.
Creates multiple directories.
action, err := file.NewCreateDirectoriesAction(logger).WithParameters(
engine.StaticParameter{Value: "/path/to/root"},
engine.StaticParameter{Value: []string{"src", "tests", "docs"}},
)Writes content to files.
action, err := file.NewWriteFileAction(logger).WithParameters(
engine.StaticParameter{Value: "/path/to/file"},
engine.StaticParameter{Value: []byte("content")},
true, // overwrite
nil, // inputBuffer (use content param instead)
)Reads file contents into a buffer.
var content []byte
action, err := file.NewReadFileAction(logger).WithParameters(
engine.StaticParameter{Value: "/path/to/file"},
&content,
)Compresses files (gzip).
action, err := file.NewCompressFileAction(logger).WithParameters(
engine.StaticParameter{Value: "/source/file"},
engine.StaticParameter{Value: "/dest/file.gz"},
file.GzipCompression,
)Decompresses files with auto-detection.
action, err := file.NewDecompressFileAction(logger).WithParameters(
engine.StaticParameter{Value: "/source/file.gz"},
engine.StaticParameter{Value: "/dest/file"},
"", // auto-detect
)Copies files and directories.
action, err := file.NewCopyFileAction(logger).WithParameters(
engine.StaticParameter{Value: "/source"},
engine.StaticParameter{Value: "/dest"},
true, // createDirs
false, // recursive
)Safely deletes files and directories.
action, err := file.NewDeletePathAction(logger).WithParameters(
engine.StaticParameter{Value: "/path/to/delete"},
true, // recursive
false, // dryRun
false, // includeHidden
nil, // excludePatterns
)Replaces text using regex patterns.
action, err := file.NewReplaceLinesAction(logger).WithParameters(
engine.StaticParameter{Value: "/path/to/file"},
map[*regexp.Regexp]engine.ActionParameter{
regexp.MustCompile("old"): engine.StaticParameter{Value: "new"},
},
)Creates symbolic links.
action, err := file.NewCreateSymlinkAction(logger).WithParameters(
engine.StaticParameter{Value: "/path/to/target"},
engine.StaticParameter{Value: "/path/to/link"},
false, // overwrite existing link
true, // createDirs (create parent directories)
)Changes file ownership.
action, err := file.NewChangeOwnershipAction(logger).WithParameters(
engine.StaticParameter{Value: "/path"},
engine.StaticParameter{Value: "user"},
engine.StaticParameter{Value: "group"},
true, // recursive
)Changes file permissions.
action, err := file.NewChangePermissionsAction(logger).WithParameters(
engine.StaticParameter{Value: "/path"},
engine.StaticParameter{Value: "755"},
true, // recursive
)Moves/renames files.
action, err := file.NewMoveFileAction(logger).WithParameters(
engine.StaticParameter{Value: "/source"},
engine.StaticParameter{Value: "/dest"},
true, // createDirs
)Extracts archives (tar, zip) with security features.
action, err := file.NewExtractFileAction(logger).WithParameters(
engine.StaticParameter{Value: "/archive.tar"},
engine.StaticParameter{Value: "/extract/dir"},
file.AutoDetect, // or file.TarArchive, file.ZipArchive
)Gets container status by name or ID. Pass multiple names/IDs via a []string; omit the parameter (pass nil) to get all containers.
// Get specific containers
action, err := docker.NewGetContainerStateAction(logger).WithParameters(
engine.StaticParameter{Value: []string{"container1", "container2"}},
)
// Get all containers
action, err := docker.NewGetContainerStateAction(logger).WithParameters(nil)Starts Docker Compose services.
action, err := docker.NewDockerComposeUpAction(logger).WithParameters(
engine.StaticParameter{Value: "/path/to/compose"}, // workingDir
engine.StaticParameter{Value: []string{"web", "db"}}, // services
)Stops Docker Compose services.
action, err := docker.NewDockerComposeDownAction(logger).WithParameters(
engine.StaticParameter{Value: "/path/to/compose"},
engine.StaticParameter{Value: []string{"web"}},
)Executes commands in containers.
action, err := docker.NewDockerComposeExecAction(logger).WithParameters(
engine.StaticParameter{Value: "web"},
engine.StaticParameter{Value: []string{"ls", "-la"}},
engine.StaticParameter{Value: "/path/to/compose"},
)Runs a Docker container. Accepts an image parameter, an optional output buffer, and variadic run arguments.
action, err := docker.NewDockerRunAction(logger).WithParameters(
engine.StaticParameter{Value: "nginx:latest"}, // image
nil, // outputBuffer (*bytes.Buffer)
"-p", "8080:80", "-d", // runArgs (variadic)
)
// With dynamic image from a previous action/task:
action, err := docker.NewDockerRunAction(logger).WithParameters(
engine.TaskOutputField("build-task", "imageID"),
nil,
"-p", "8080:80", "-d",
)Performs health checks with retries.
action, err := docker.NewCheckContainerHealthAction(logger).WithParameters(
engine.StaticParameter{Value: "container"},
engine.StaticParameter{Value: 3}, // maxRetries
engine.StaticParameter{Value: time.Second}, // retryDelay
engine.StaticParameter{Value: "/workdir"},
)Loads images from tar files.
docker.NewDockerLoadAction(logger, "/path/to/image.tar")
// With options:
docker.NewDockerLoadAction(logger, "/path/to/image.tar",
docker.WithPlatform("linux/amd64"),
docker.WithQuiet(),
)Removes Docker images.
// By name
docker.NewDockerImageRmByNameAction(logger, "nginx:latest")
// By ID
docker.NewDockerImageRmByIDAction(logger, "sha256:abc123")
// With options:
docker.NewDockerImageRmByNameAction(logger, "nginx:latest",
docker.WithForce(),
docker.WithNoPrune(),
)Lists Docker images.
docker.NewDockerImageListAction(logger)
// With options:
docker.NewDockerImageListAction(logger,
docker.WithAll(),
docker.WithDigests(),
docker.WithFilter("dangling=true"),
)Lists Docker Compose stacks.
docker.NewDockerComposeLsAction(logger)
// With options:
docker.NewDockerComposeLsAction(logger,
docker.WithAll(),
docker.WithWorkingDir("/path/to/compose"),
)Lists services in Docker Compose stacks.
docker.NewDockerComposePsAction(logger, []string{"web"})
// With options:
docker.NewDockerComposePsAction(logger, []string{"web"},
docker.WithAll(),
docker.WithWorkingDir("/path/to/compose"),
)Lists Docker containers.
docker.NewDockerPsAction(logger)
// With options:
docker.NewDockerPsAction(logger,
docker.WithPsAll(),
docker.WithPsFilter("status=running"),
)Pulls Docker images.
images := map[string]docker.ImageSpec{
"nginx": {Image: "nginx", Tag: "latest", Architecture: "amd64"},
}
docker.NewDockerPullAction(logger, images)
// With options:
docker.NewDockerPullAction(logger, images,
docker.WithAllTags(),
docker.WithPullPlatform("linux/amd64"),
)Pulls images for multiple architectures.
images := map[string]docker.MultiArchImageSpec{
"nginx": {
Image: "nginx",
Tag: "latest",
Architectures: []string{"amd64", "arm64"},
},
}
docker.NewDockerPullMultiArchAction(logger, images)Executes generic Docker commands.
docker.NewDockerGenericAction(logger, []string{"images", "-q"})Gets systemd service status for one or more services.
action, err := system.NewServiceStatusAction(logger).WithParameters(
engine.StaticParameter{Value: []string{"nginx", "mysql"}},
)Controls systemd services (start, stop, restart, enable, disable).
action, err := system.NewManageServiceAction(logger).WithParameters(
engine.StaticParameter{Value: "nginx"},
engine.StaticParameter{Value: "restart"},
)Shuts down or restarts system.
action, err := system.NewShutdownAction(logger).WithParameters(
engine.StaticParameter{Value: "restart"},
engine.StaticParameter{Value: "5"}, // delay in minutes
)Installs packages (apt/brew). Package manager is auto-detected from the OS; pass an empty string to auto-detect.
action, err := system.NewUpdatePackagesAction(logger).WithParameters(
engine.StaticParameter{Value: []string{"git", "curl"}},
engine.StaticParameter{Value: ""}, // package manager: "" = auto-detect, "apt", or "brew"
)Waits for specified duration.
action, err := utility.NewWaitAction(logger).WithParameters(
engine.StaticParameter{Value: time.Second * 5},
)Conditional execution based on custom checks. The check function returns (abortTask bool, err error).
action, err := utility.NewPrerequisiteCheckAction(logger).WithParameters(
engine.StaticParameter{Value: "checking disk space"},
engine.StaticParameter{Value: utility.PrerequisiteCheckFunc(func(ctx context.Context, logger *slog.Logger) (bool, error) {
// Return (true, nil) to abort the task, (false, nil) to continue
return false, nil
})},
)Gets network interface information.
utility.NewFetchInterfacesAction(logger)Reads MAC address of network interface.
action, err := utility.NewReadMacAction(logger).WithParameters(
engine.StaticParameter{Value: "eth0"},
)See tasks/ directory for complete workflows:
NewFileOperationsTask()- File management pipelineNewDockerSetupTask()- Docker environment setupNewPackageManagementTask()- Package installationNewExtractOperationsTask()- Archive extraction