var completionSpec = {
name: ["run-stack", "rst"],
description: "Dockerised local stacks",
subcommands: [
{
name: "create",
description: "Write .run/run.config.json and run init",
args: { name: "dir", template: "folders", isOptional: true },
options: [
{ name: ["--yes", "-y"], description: "Accept defaults" },
{ name: ["--force", "-f"], description: "Overwrite existing config" },
{ name: "--file", args: { name: "json", template: "filepaths" } },
],
},
{ name: "new", description: "Alias for create" },
{
name: "layout-migrate",
description: "Convert legacy run/ to .run/ (also: migrate)",
args: { name: "dir", template: "folders", isOptional: true },
},
{
name: "migrate",
description: "Convert legacy run/ layout, or run DB migrations in a workspace",
args: { name: "dir", template: "folders", isOptional: true },
},
{
name: "upgrade",
description: "Refresh legacy run/ or self-update (config layout)",
args: { name: "dir", template: "folders", isOptional: true },
},
{ name: "update", description: "Alias for upgrade" },
{
name: "self-update",
description: "Install the latest run-stack from npm/volta/pnpm",
options: [{ name: "--verbose", description: "Verbose installer output" }],
},
{
name: "completion",
description: "Shell / Kiro autocompletion",
subcommands: [
{ name: "zsh", description: "Print zsh completer" },
{ name: "bash", description: "Print bash completer" },
{ name: "install", description: "Install zsh + Kiro/Fig completers" },
{ name: "services", description: "List compose service names" },
],
},
{ name: "init", description: "Write .run/run.config.json and .run/.env" },
{
name: "up",
description: "Build if needed and start the stack",
options: [
{ name: "--build", description: "Rebuild images first" },
{
name: "--essential",
description: "Only services listed under essential in run.config.json",
},
],
args: {
name: "service",
isOptional: true,
isVariadic: true,
generators: {
script: ["run-stack", "completion", "services"],
splitOn: "\n",
},
},
},
{
name: "run",
description: "Alias for up",
options: [
{ name: "--build", description: "Rebuild images first" },
{
name: "--essential",
description: "Only services listed under essential in run.config.json",
},
],
args: {
name: "service",
isOptional: true,
isVariadic: true,
generators: {
script: ["run-stack", "completion", "services"],
splitOn: "\n",
},
},
},
{
name: "down",
description: "Stop everything, or just the named services (keeps data)",
args: {
name: "service",
isOptional: true,
isVariadic: true,
generators: {
script: ["run-stack", "completion", "services"],
splitOn: "\n",
},
},
},
{
name: "restart",
description: "Stop then start (down + up)",
args: {
name: "service",
isOptional: true,
isVariadic: true,
generators: {
script: ["run-stack", "completion", "services"],
splitOn: "\n",
},
},
options: [
{ name: "--build", description: "Rebuild images before starting" },
{
name: "--essential",
description: "Only services listed under essential in run.config.json",
},
],
},
{
name: "rebuild",
description: "Rebuild images and recreate containers",
args: {
name: "service",
isOptional: true,
isVariadic: true,
generators: {
script: ["run-stack", "completion", "services"],
splitOn: "\n",
},
},
},
{ name: "clean", description: "Stop and delete volumes" },
{
name: "commands",
description: "List every CLI command in a table",
options: [{ name: "--raw", description: "One command name per line" }],
},
{
name: "apps",
description: "List configured apps (backend, web, mobile, …)",
},
{ name: "list", description: "Alias for apps" },
{
name: "services",
description: "List compose services for this workspace",
options: [{ name: "--raw", description: "One service name per line" }],
},
{
name: "ps",
description: "Service status",
args: {
name: "service",
isOptional: true,
isVariadic: true,
generators: {
script: ["run-stack", "completion", "services"],
splitOn: "\n",
},
},
},
{ name: "status", description: "Alias for ps" },
{
name: "ports",
description: "Host ports + env URLs table",
options: [
{ name: ["--show", "-s"], description: "Print ports + env URL tables (default)" },
{ name: ["-h", "--help"], description: "Show help" },
],
},
{
name: "logs",
description: "Follow logs",
args: {
name: "service",
isOptional: true,
isVariadic: true,
generators: {
script: ["run-stack", "completion", "services"],
splitOn: "\n",
},
},
},
{
name: "shell",
description: "Shell into a container",
args: {
name: "service",
isOptional: true,
generators: {
script: ["run-stack", "completion", "services"],
splitOn: "\n",
},
},
},
{ name: "sh", description: "Alias for shell" },
{ name: "backend", description: "Run a command in the backend container", args: { name: "args", isVariadic: true, isOptional: true } },
{ name: "artisan", description: "php artisan (Laravel)" },
{ name: "composer", description: "composer (Laravel)" },
{ name: "seed", description: "Run database seeders" },
{ name: "fresh", description: "Rebuild schema and seed" },
{ name: "pnpm", description: "pnpm in the frontend workspace" },
{ name: "dash", description: "Open the status dashboard" },
{ name: "dashboard", description: "Alias for dash" },
{ name: "ios", description: "Open mobile app in the iOS Simulator" },
{ name: "android", description: "Open mobile app on an Android emulator" },
{ name: "device", description: "Open on a USB device" },
{
name: "mobile",
description: "Restart mobile-deps / mobile-packages / Metro",
options: [{ name: "--build", description: "Rebuild images before starting" }],
},
{
name: "reload",
description: "Check Metro /status and reload apps (no Docker restart)",
options: [
{ name: "--clear", description: "Wipe Metro/Expo disk caches, then reload" },
],
},
{
name: "prebuild",
description: "expo prebuild for the mobile app (Expo only)",
args: { name: "args", isOptional: true, isVariadic: true },
},
{ name: "desktop", description: "Launch Electron / Tauri shell" },
{
name: "deploy",
description: "Deploy web, mobile or desktop",
args: { name: "target", suggestions: ["web", "mobile", "desktop"] },
},
{ name: "sync-mobile-port", description: "Sync MOBILE_CLIENT_PORT into the mobile app" },
{
name: "bundler",
description: "Point the simulator at Metro (Expo deep link)",
args: { name: "platform", suggestions: ["ios", "android"], isOptional: true },
},
{ name: "configure-bundler", description: "Alias for bundler" },
{ name: "help", description: "Show help" },
],
options: [
{ name: ["-h", "--help"], description: "Show help" },
{ name: ["-v", "--version"], description: "Show version" },
],
};
if (typeof module !== "undefined" && module.exports) {
module.exports = completionSpec;
}