Implementation
final FigSpec tmuxinatorSpec = FigSpec(
name: 'tmuxinator',
description: 'Create and manage tmux sessions easily',
subcommands: [
FigSubcommand(
name: 'commands',
description: 'Lists commands available in tmuxinator',
),
FigSubcommand(
name: 'completions',
description: 'Used for shell completion',
),
FigSubcommand(
name: 'copy',
description:
'Copy an existing project to a new project and open it in your editor',
args: [
FigArg(
name: 'source',
description: 'The source project name',
generators: projects,
),
FigArg(
name: 'target',
description: 'The target project name',
generators: projects,
),
],
),
FigSubcommand(
name: 'debug',
description: 'Output the shell commands that are generated by tmuxinator',
options: [
FigOption(
name: ['-a', '--attach'],
description: 'Attach to tmux session after creation',
args: [
FigArg(
name: 'attach-session',
description: 'Attach to tmux session',
),
],
),
FigOption(
name: ['-n', '--name'],
description: 'Give the session a different name',
args: [
FigArg(
name: 'name',
description: 'Give the session a different name',
),
],
),
FigOption(
name: ['-p', '--project-config'],
description: 'Path to project config file',
args: [
FigArg(
name: 'project-config',
description: 'Path to project config file',
template: ['folders', 'filepaths'],
),
],
),
],
),
FigSubcommand(
name: 'delete',
description: 'Deletes given project',
args: [
FigArg(
name: 'project',
description: 'The project name',
generators: projects,
isVariadic: true,
),
],
),
FigSubcommand(
name: 'doctor',
description: 'Look for problems in your configuration',
),
FigSubcommand(
name: 'help',
description: 'Describe available commands or one specific command',
args: [
FigArg(
name: 'command',
description: 'The tmuxinator commands',
template: 'help',
),
],
),
FigSubcommand(
name: 'implode',
description: 'Deletes all tmuxinator projects',
),
FigSubcommand(
name: 'list',
description: 'Lists all tmuxinator projects',
options: [
FigOption(
name: ['-n', '--newline'],
description: 'Force output to be one entry per line',
),
],
),
FigSubcommand(
name: 'local',
description: 'Start a tmux session using ./.tmuxinator.y[a]ml',
options: [
FigOption(
name: '--suppress-tmux-version-warning',
description: "Don't show a warning for unsupported tmux versions",
),
],
),
FigSubcommand(
name: 'new',
description: 'Create a new project file and open it in your editor',
args: [
FigArg(
name: 'project',
description: 'The project name',
),
FigArg(
name: 'tmux-session',
description: 'The tmux session name',
generators: tmuxsessions,
isOptional: true,
),
],
options: [
FigOption(
name: '-l',
description: 'Create local project file at ./.tmuxinator.y[a]ml',
),
],
),
FigSubcommand(
name: 'edit',
description: 'Open a project file it in your editor',
args: [
FigArg(
name: 'project',
description: 'The project name',
generators: projects,
),
],
options: [
FigOption(
name: '-l',
description: 'Open local project file at ./.tmuxinator.y[a]ml',
),
],
),
FigSubcommand(
name: 'open',
description: 'Open a project file it in your editor',
args: [
FigArg(
name: 'project',
description: 'The project name',
generators: projects,
),
],
options: [
FigOption(
name: '-l',
description: 'Open local project file at ./.tmuxinator.y[a]ml',
),
],
),
FigSubcommand(
name: 'start',
description:
"Start a tmux session using a project's name (with an optional [ALIAS] for project reuse) or a path to a project config file (via the -p flag)",
args: [
FigArg(
name: 'project',
description: 'The project name',
generators: projects,
loadSpec: FigSubcommand(
name: 'project',
options: [
FigOption(
name: ['-a', '--attach'],
description: 'Attach to tmux session after creation',
args: [
FigArg(
name: 'attach-session',
description: 'Attach to tmux session',
),
],
),
FigOption(
name: ['-n', '--name'],
description: 'Give the session a different name',
args: [
FigArg(
name: 'name',
description: 'Give the session a different name',
),
],
),
FigOption(
name: ['-p', '--project-config'],
description: 'Path to project config file',
args: [
FigArg(
name: 'project-config',
description: 'Path to project config file',
template: ['folders', 'filepaths'],
),
],
),
FigOption(
name: '--suppress-tmux-version-warning',
description:
"Don't show a warning for unsupported tmux versions",
),
],
),
),
],
),
FigSubcommand(
name: 'stop',
description: "Stop a tmux session using a project's tmuxinator config",
args: [
FigArg(
name: 'project',
description: 'The project name',
generators: projects,
loadSpec: FigSubcommand(
name: 'project',
options: [
FigOption(
name: '--suppress-tmux-version-warning',
description:
"Don't show a warning for unsupported tmux versions",
),
],
),
),
],
),
FigSubcommand(
name: 'version',
description: 'Display installed tmuxinator version',
),
],
);