Tools
Tools are located under the tools/ subdirectory. Each tool directory must have manifest.yaml and Dockerfile.template.
Template files are located in @template/.
manifest.yaml
The manifest file contains all information about a tool except for the installation instructions. The schema is available at https://uniget.dev/schema.yaml - the source is located here https://gitlab.com/uniget-org/tools.uniget.dev/-/blob/main/site/static/schema.yaml?ref_type=heads.
# yaml-language-server: $schema=https://uniget.dev/schema.yaml
$schema: https://uniget.dev/schema.yaml
name: foo
version: "1.2.3"
binary: fooctl
check: ${binary} --version | cut -d' ' -f3 | tr -d v
build_dependencies:
- bar
runtime_dependencies:
- baz
platforms:
- linux/amd64
- linux/arm64
tags:
- docker
- oci
homepage: https://github.com/foo/foo
description: More foo than bar
renovate:
datasource: github-releases
package: foo/foo
extractVersion: ^v(?<version>.+?)$
allowPrereleases: false
The following fields are mandatory for uniget to operate:
-
name- The name must be unique and must match the name of the subdirectory undertools/. -
version- Version contains the version string without any prefixes or suffixes.
The following fields are strongly recommended for additional value:
-
tags- Every tool should have a list of tags. Tags offer a different approach of installing tools by specifying a topics to install multiple tools at once. -
homepage- The homepage points to a site with more information about the tool, e.g. project homepage. -
repository- The repository points to the source code repository of the tool, e.g. GitHub repository. -
description- The description contains a short summary what the tool does, e.g. the description from the GitHub project page.
Optional fields:
-
binarydefaults to${name}and will be interpreted relative to${target}/bin/.binarycan also be set to the string"false"if the tool does not contain a binary, e.g. only configuration files. -
checkis optional and may contain a command or pipe to extract the version of the installed tool. Ifcheck is empty,unigetdefault to using a marker file located at${uniget_cache}/<name>/<version>. -
build_dependenciesandruntime_dependenciesare lists of dependent tools. Build dependencies are installed before a new version is packaged and runtime dependencies are automatically installed with the tool. -
platforms- This contains the platforms supported for the tool. If empty or missing, a value of["linux/amd64"]is assumed. Onlylinux/amd64andlinux/arm64are supported. -
renovate- The fields are used to generate one regex manager per tool. IfallowPrereleaseis specified, a package rule is generated per tool as well.datasourcecontains the name of the datasource, e.g.github-releaesand maps to datasourceTemplatepackagecontains the name of the dependency under the specified datasource and maps to depNameTemplateextractVersiondefines how to extract the version from maps to extractVersionTemplateallowPrereleasemaps to ignoreUnstable
Dockerfile.template
The Dockerfile.template file is used to create the Dockerfile. The Dockerfile.template must define a target called prepare which contains a subdirectory called uniget_bootstrap. The contents of this directory will be copied to the final image.
Reference of variables
The following variables are available in Dockerfile.template:
arch- system architecture (x86_64oraarch64)alt_arch- alternative name for system architecture (amd64orarm64)prefix- used to install into a subdirectory (empty by default)