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] # The official fpm changelog documents the flags rc file search order as # $HOME/.fpm followed by $PWD/.fpm. Only the home-level file is in scope here; # the working-directory file belongs to the project being built. # https://github.com/jordansissel/fpm/blob/main/CHANGELOG.rst 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"]