id = "fpm"
name = "fpm"
homepage = "https://fpm.readthedocs.io"
description = "The goal of fpm is to make it easy and quick to build packages such as rpms, debs, OSX packages, etc."
executables = ["fpm"]
[dotfiles]
paths = ["~/.fpm"]
secret = []
[commands]
format = 1
label = "Build a package"
description = "Build a package (deb, rpm, tar, ...) from a directory, gem, python package or other input with fpm. Per-format options and maintainer scripts are left out."
quality = "ai-draft"
parser = { end_of_options = "--", interleave = "permute", long_equals = false, short_attached = false, short_bundles = false }
[[commands.source]]
id = "help"
kind = "help"
revision = "fpm 1.18.0 (fpm --help)"
evidence = """
[ARGS] ... Inputs to the source package type. For the 'dir' type, this is the files and directories you want to include in the package.
-t, --output-type OUTPUT_TYPE the type of package you want to create (deb, rpm, solaris, etc)
-s, --input-type INPUT_TYPE the package type to use as input (gem, rpm, python, etc)
-C, --chdir CHDIR Change directory to here before searching for files
--prefix PREFIX A path to prefix files with when building the target package.
-p, --package OUTPUT The package file path to output.
-f, --force Force output even if it will overwrite an existing file (default: false)
-n, --name NAME The name to give to the package
-v, --version VERSION The version to give to the package (default: 1.0)
--iteration ITERATION The iteration to give to the package.
--license LICENSE (optional) license name for this package
-d, --depends DEPENDENCY A dependency. This flag can be specified multiple times.
-a, --architecture ARCHITECTURE The architecture name. Usually matches 'uname -m'.
-m, --maintainer MAINTAINER The maintainer of this package.
-x, --exclude EXCLUDE_PATTERN Exclude paths matching pattern (shell wildcard globs valid here).
--description DESCRIPTION Add a description for this package.
--url URI Add a url for this package.
"""
[[commands.field]]
id = "inputs"
label = "Inputs"
description = "For the dir type: files and directories to include. For gem, python and similar types: the package names to fetch."
type = "string"
position = 0
multiple = true
sources = ["help"]
[[commands.field]]
id = "input_type"
label = "Input type"
type = "string"
option = ["-s", "--input-type"]
suggestions = [{ value = "dir", label = "Directory" }, { value = "gem", label = "Ruby gem" }, { value = "python", label = "Python" }, { value = "npm", label = "npm" }, { value = "rpm", label = "RPM" }, { value = "deb", label = "Deb" }]
sources = ["help"]
[[commands.field]]
id = "output_type"
label = "Output type"
type = "string"
option = ["-t", "--output-type"]
suggestions = [{ value = "deb", label = "Deb" }, { value = "rpm", label = "RPM" }, { value = "tar", label = "Tarball" }, { value = "zip", label = "Zip" }, { value = "osxpkg", label = "macOS pkg" }, { value = "apk", label = "Alpine apk" }]
sources = ["help"]
[[commands.field]]
id = "name"
label = "Package name"
type = "string"
option = ["-n", "--name"]
sources = ["help"]
[[commands.field]]
id = "version"
label = "Version"
type = "string"
option = ["-v", "--version"]
observed_default = "1.0"
sources = ["help"]
[[commands.field]]
id = "iteration"
label = "Iteration / release"
type = "string"
option = ["--iteration"]
sources = ["help"]
[[commands.field]]
id = "arch"
label = "Architecture"
type = "string"
option = ["-a", "--architecture"]
suggestions = [{ value = "native", label = "Native" }, { value = "all", label = "All" }]
sources = ["help"]
[[commands.field]]
id = "depends"
label = "Dependencies"
type = "string"
option = ["-d", "--depends"]
multiple = true
sources = ["help"]
[[commands.field]]
id = "chdir"
label = "Change directory first"
type = "path"
option = ["-C", "--chdir"]
path = { kind = "directory", role = "input" }
sources = ["help"]
[[commands.field]]
id = "prefix"
label = "Install prefix"
type = "string"
option = ["--prefix"]
sources = ["help"]
[[commands.field]]
id = "package"
label = "Output package path"
type = "path"
option = ["-p", "--package"]
path = { kind = "any", role = "output", must_exist = false }
sources = ["help"]
[[commands.field]]
id = "force"
label = "Overwrite existing package"
type = "boolean"
option = ["-f", "--force"]
effect = "overwrite"
sources = ["help"]
[[commands.field]]
id = "maintainer"
label = "Maintainer"
type = "string"
option = ["-m", "--maintainer"]
sources = ["help"]
[[commands.field]]
id = "license"
label = "License"
type = "string"
option = ["--license"]
sources = ["help"]
[[commands.field]]
id = "description"
label = "Description"
type = "string"
option = ["--description"]
sources = ["help"]
[[commands.field]]
id = "url"
label = "Project URL"
type = "url"
option = ["--url"]
sources = ["help"]
[[commands.field]]
id = "exclude"
label = "Exclude patterns"
type = "string"
option = ["-x", "--exclude"]
multiple = true
sources = ["help"]
[[commands.task]]
id = "dir_to_deb"
label = "Directory to .deb"
fields = ["inputs", "name", "version", "output_type", "input_type"]
required = ["inputs", "name", "version"]
set = { input_type = ["dir"], output_type = ["deb"] }
[[commands.task]]
id = "dir_to_rpm"
label = "Directory to .rpm"
fields = ["inputs", "name", "version", "output_type", "input_type"]
required = ["inputs", "name", "version"]
set = { input_type = ["dir"], output_type = ["rpm"] }
[[commands.group]]
id = "basic"
label = "Basic"
fields = ["input_type", "output_type", "name", "version", "inputs", "package", "force"]
[[commands.group]]
id = "advanced"
label = "Advanced"
fields = ["iteration", "arch", "depends", "chdir", "prefix", "maintainer", "license", "description", "url", "exclude"]