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://tools.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://tools.uniget.dev/schema.yaml
$schema: https://tools.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. -
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. -
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.
The following fields are strongly recommended for additional value:
homepage- The homepage points to a site with more information about the tool, e.g. project homepage.
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,unigetdefaults to a marker file named<name>.txtunder the state directory (var/lib/uniget/manifests/in global context or~/.local/state/uniget/manifests/in user context). -
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. Useuniget dependencies tree TOOLanduniget dependencies who-uses TOOLto inspect the dependency relationships between tools. -
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 read by the custom manager defined in the rootrenovate.jsonwhich queries the manifests directly:datasourcecontains the name of the datasource, e.g.github-releasespackagecontains the name of the dependency under the specified datasource, e.g.foo/fooextractVersiondefines how to extract the version from the release, e.g.^v(?<version>.+?)$versioningoptionally defines the versioning strategypriorityoptionally hints how eagerly updates are merged (low,mediumorhigh)
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)