Implementation
final FigSpec springSpec = FigSpec(
name: "spring",
description:
"The Spring Boot CLI is a command line tool that you can use to bootstrap a new project from start.spring.io or encode a password",
icon: "https://start.spring.io/images/icon-48x48.png",
subcommands: [
FigSubcommand(
name: "init",
description: "Initialize a new project using Spring Initializr",
options: [
FigOption(
name: ["-a", "--artifact-id"],
description: "Project coordinates",
args: [FigArg(name: "Name")],
),
FigOption(
name: ["-b", "--boot-version"],
description: "Spring Boot version",
args: [
FigArg(
name: "Version",
generators: [_versionGenerator],
debounce: true,
)
],
),
FigOption(
name: "--build",
description: "Build system to use",
args: [
FigArg(
name: "System",
suggestions: const [
FigSuggestion(name: "maven"),
FigSuggestion(name: "gradle"),
],
defaultValue: "maven",
)
],
),
FigOption(
name: ["-d", "--dependencies"],
description:
"Comma-separated list of dependency identifiers to include in the generated project",
args: [
FigArg(
name: "Dependencies",
generators: [_dependencyGenerator],
isVariadic: true,
debounce: true,
)
],
),
FigOption(
name: "--description",
description: "Project description",
insertValue: "--description '{cursor}'",
args: [FigArg(name: "description")],
),
FigOption(
name: ["-f", "--force"],
description: "Force overwrite of existing files",
isDangerous: true,
),
FigOption(
name: "--format",
description: "Format of the generated content",
args: [
FigArg(
name: "Format",
suggestions: const [
FigSuggestion(name: "build"),
FigSuggestion(name: "project"),
],
defaultValue: "build",
)
],
),
FigOption(
name: ["-g", "--group-id"],
description: "Project coordinates",
args: [FigArg(name: "Group ID")],
),
FigOption(
name: ["-j", "--java-version"],
description: "Language level",
args: [
FigArg(
name: "Version",
generators: [_versionGenerator],
debounce: true,
)
],
),
FigOption(
name: "--list",
description: "List the capabilities of the service",
),
FigOption(
name: ["-n", "--name"],
description: "Project name",
args: [FigArg(name: "name")],
),
FigOption(
name: ["-p", "--packaging"],
description: "Project packaging",
args: [
FigArg(
name: "Packaging",
suggestions: const [
FigSuggestion(name: "jar"),
FigSuggestion(name: "war"),
],
defaultValue: "jar",
)
],
),
FigOption(
name: "--package-name",
description: "Package name",
args: [FigArg(name: "package-name")],
),
FigOption(
name: ["-t", "--type"],
description: "Project type",
args: [
FigArg(
name: "Type",
suggestions: const [
FigSuggestion(
name: "gradle-build",
description: "Generate a Gradle build file",
),
FigSuggestion(
name: "gradle-project",
description:
"Generate a Gradle based project archive using the Groovy DSL",
),
FigSuggestion(
name: "gradle-project-kotlin",
description:
"Generate a Gradle based project archive using the Kotlin DSL",
),
FigSuggestion(
name: "maven-build",
description: "Generate a Maven pom.xml",
),
FigSuggestion(
name: "maven-project",
description: "Generate a Maven based project archive",
),
],
defaultValue: "maven-project",
)
],
),
FigOption(
name: ["-v", "--version"],
description: "Project version",
args: [FigArg(name: "version")],
),
FigOption(
name: ["-x", "--extract"],
description: "Extract the project archive",
),
],
),
FigSubcommand(
name: "encodepassword",
description: "Encode a password for use with Spring Security",
options: [
FigOption(
name: ["-n", "--iterations"],
description: "Number of hash iterations",
args: [FigArg(name: "iterations")],
),
FigOption(
name: ["-s", "--salt"],
description: "Salt to use",
args: [FigArg(name: "salt")],
),
],
args: [FigArg(name: "password")],
),
FigSubcommand(
name: "help",
description: "Display help about the available commands",
args: [FigArg(name: "command", isOptional: true)],
),
FigSubcommand(
name: "version",
description: "Show the version of the Spring Boot CLI",
),
],
);