docs: migrate to hugo and hextra (#970)

* docs: migrate to hugo and hextra

Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>

* chore: cleanup

Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>

* fix: htmltest

Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>

* ci: update

Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>

* chore: eof

Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>

* docs: udpate

Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>

* wip

Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>

* docs: improvements

Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>

* ci: fix

Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>

* better icons

Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>

* wip

Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>

* wip

Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>

* fix: updates

Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>

* wip

Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>

---------

Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>
This commit is contained in:
Carlos Alexandro Becker
2025-11-16 21:34:58 -03:00
committed by GitHub
parent 141324a464
commit 21d6ae01e3
51 changed files with 727 additions and 478 deletions
+12 -8
View File
@@ -16,17 +16,21 @@ permissions:
contents: read contents: read
jobs: jobs:
htmltest: build:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
- uses: go-task/setup-task@0ab1b2a65bc55236a3bc64cde78f80e20e8885c2 # v1.0.0 - uses: actions/setup-go@d35c59abb061a4a6fb18e82ac0862c26744d6ab5 # v5.5.0
with: with:
version: 3.x go-version: "1.21"
repo-token: ${{ secrets.GITHUB_TOKEN }} - uses: peaceiris/actions-hugo@75d2e84710de30f6ff7268e08f310b60ef14033f # v3
- run: task docs:build with:
- name: Test HTML hugo-version: "latest"
uses: wjdp/htmltest-action@master extended: true
- run: |
cd www
hugo --minify
- uses: wjdp/htmltest-action@31be84a95c860a331e0cf9a99f71e3eb39d2f86b # master
with: with:
config: www/htmltest.yml config: www/htmltest.yml
path: www/site path: www/public
+11 -11
View File
@@ -128,42 +128,42 @@ tasks:
- ./scripts/cmd_docs.sh - ./scripts/cmd_docs.sh
- CONTRIBUTING.md - CONTRIBUTING.md
generates: generates:
- www/docs/cmd/*.md - www/content/docs/cmd/*.md
- www/docs/contributing.md - www/content/docs/contributing.md
docs:releases: docs:releases:
desc: Generate the latest file desc: Generate the latest file
cmds: cmds:
- ./scripts/pages/releases.sh - ./scripts/pages/releases.sh
generates: generates:
- www/docs/static/latest - www/static/latest
docs:imgs: docs:imgs:
desc: Download and resize images desc: Download and resize images
cmds: cmds:
- wget -O www/docs/static/logo.png https://github.com/goreleaser/artwork/raw/master/goreleaserfundo.png - wget -O www/static/images/logo.png https://github.com/goreleaser/artwork/raw/master/goreleaserfundo.png
- wget -O www/docs/static/card.png "https://og.caarlos0.dev/**GoReleaser**%20%7C%20Deliver%20Go%20binaries%20as%20fast%20and%20easily%20as%20possible.png?theme=light&md=1&fontSize=80px&images=https://github.com/goreleaser.png" - wget -O www/static/images/card.png "https://og.caarlos0.dev/**nFPM**%20%7C%20A a simple deb, rpm, apk, ipk, and arch linux packager written in Go.png?theme=light&md=1&fontSize=80px&images=https://github.com/goreleaser.png"
- wget -O www/docs/static/avatar.png https://github.com/goreleaser.png - wget -O www/static/images/avatar.png https://github.com/goreleaser.png
- convert www/docs/static/avatar.png -define icon:auto-resize=64,48,32,16 www/docs/static/favicon.ico - convert www/static/images/avatar.png -define icon:auto-resize=64,48,32,16 www/static/images/favicon.ico
- convert www/docs/static/avatar.png -resize x120 www/docs/static/apple-touch-icon.png - convert www/static/images/avatar.png -resize x120 www/static/images/apple-touch-icon.png
docs:serve: docs:serve:
desc: Start documentation server desc: Start documentation server
cmds: cmds:
- task: docs:generate - task: docs:generate
- "docker run --rm -p 8000:8000 -v ./www:/docs squidfunk/mkdocs-material:9" - cd www && hugo server --buildDrafts --bind 0.0.0.0 --port 8080
docs:build: docs:build:
desc: Build docs desc: Build docs
cmds: cmds:
- task: docs:generate - task: docs:generate
- "docker run --rm -v ./www:/docs squidfunk/mkdocs-material:9 build" - cd www && hugo --minify
docs:test: docs:test:
desc: Test docs with htmltest desc: Test docs with htmltest
cmds: cmds:
- task: docs:build - task: docs:build
- "htmltest www/site -c www/htmltest.yml" - htmltest www/public -c www/htmltest.yml
release: release:
desc: Create a new tag desc: Create a new tag
+2 -2
View File
@@ -23,10 +23,10 @@ func newDocsCmd() *docsCmd {
ValidArgsFunction: cobra.NoFileCompletions, ValidArgsFunction: cobra.NoFileCompletions,
RunE: func(*cobra.Command, []string) error { RunE: func(*cobra.Command, []string) error {
root.cmd.Root().DisableAutoGenTag = true root.cmd.Root().DisableAutoGenTag = true
return doc.GenMarkdownTreeCustom(root.cmd.Root(), "www/docs/cmd", func(_ string) string { return doc.GenMarkdownTreeCustom(root.cmd.Root(), "www/content/docs/cmd", func(_ string) string {
return "" return ""
}, func(s string) string { }, func(s string) string {
return "/cmd/" + strings.TrimSuffix(s, ".md") + "/" return "/docs/cmd/" + strings.TrimSuffix(s, ".md") + "/"
}) })
}, },
} }
+1 -1
View File
@@ -3,7 +3,7 @@
# #
# The lines below are called `modelines`. See `:help modeline` # The lines below are called `modelines`. See `:help modeline`
# Feel free to remove those if you don't want/need to use them. # Feel free to remove those if you don't want/need to use them.
# yaml-language-server: $schema=https://nfpm.goreleaser.com/static/schema.json # yaml-language-server: $schema=https://nfpm.goreleaser.com/schema.json
# vim: set ts=2 sw=2 tw=0 fo=cnqoj # vim: set ts=2 sw=2 tw=0 fo=cnqoj
name: "foo" name: "foo"
+5 -5
View File
@@ -6,15 +6,15 @@ if which gsed >/dev/null 2>&1; then
SED="gsed" SED="gsed"
fi fi
mkdir -p www/docs/cmd mkdir -p www/content/docs/cmd
rm -rf www/docs/cmd/*.md rm -rf www/content/docs/cmd/nfpm*.md
go run ./cmd/nfpm docs go run ./cmd/nfpm docs
"$SED" \ "$SED" -E -i'' \
-i'' \ -e 's/^## (.*)/---\ntitle: \1\n---/' \
-e 's/SEE ALSO/See also/g' \ -e 's/SEE ALSO/See also/g' \
-e 's/^## /# /g' \ -e 's/^## /# /g' \
-e 's/^### /## /g' \ -e 's/^### /## /g' \
-e 's/^#### /### /g' \ -e 's/^#### /### /g' \
-e 's/^##### /#### /g' \ -e 's/^##### /#### /g' \
./www/docs/cmd/*.md ./www/content/docs/cmd/*.md
+6 -6
View File
@@ -1,7 +1,7 @@
#!/bin/bash #!/bin/bash
set -euo pipefail set -e
pip install -U pip
pip install -U mkdocs-material mkdocs-minify-plugin lunr version="$(cat ./www/static/latest)"
version="$(cat ./www/docs/static/latest)" sed -s'' -i "s/__VERSION__/$version/g" www/content/docs/install.md
sed -s'' -i "s/__VERSION__/$version/g" www/docs/install.md cd www
mkdocs build -f www/mkdocs.yml hugo --minify
+1 -1
View File
@@ -1,4 +1,4 @@
#!/bin/bash #!/bin/bash
set -euo pipefail set -euo pipefail
curl -sSf -H "Authorization: Bearer $GITHUB_TOKEN" "https://api.github.com/repos/goreleaser/nfpm/releases/latest" | curl -sSf -H "Authorization: Bearer $GITHUB_TOKEN" "https://api.github.com/repos/goreleaser/nfpm/releases/latest" |
jq -r '.tag_name' >./www/docs/static/latest jq -r '.tag_name' >./www/static/latest
+1
View File
@@ -1 +1,2 @@
public public
.hugo_build.lock
+5
View File
@@ -0,0 +1,5 @@
+++
date = '{{ .Date }}'
draft = true
title = '{{ replace .File.ContentBaseName "-" " " | title }}'
+++
+57
View File
@@ -0,0 +1,57 @@
---
title: nFPM
layout: hextra-home
---
<div class="hx:mt-6 hx:mb-6">
{{< hextra/hero-headline >}}
<div class="hx-flex hx-justify-center hx-mb-12">
<img src="/images/nfpm-logo.png" alt="nFPM Logo" style="height: 80px; width: auto;" />
</div>
{{< /hextra/hero-headline >}}
</div>
<div class="hx:mb-12">
{{< hextra/hero-subtitle >}}
A simple simple deb, rpm, apk, ipk, and arch linux packager written in Go.
{{< /hextra/hero-subtitle >}}
</div>
<div class="hx:mb-6">
{{< hextra/hero-button text="Get Started" link="docs" >}}
</div>
<div class="hx:mt-6">
{{< hextra/feature-grid >}}
{{< hextra/feature-card
title="No Runtime Dependencies"
subtitle="No Ruby, no tar, no external dependencies. Just a single binary."
icon="cube-transparent"
>}}
{{< hextra/feature-card
title="Multiple Formats"
subtitle="Create deb, rpm, apk, ipk, and arch linux packages."
icon="collection"
>}}
{{< hextra/feature-card
title="Simple Configuration"
subtitle="Define your package with a simple YAML configuration file."
icon="document-text"
>}}
{{< hextra/feature-card
title="Cross Platform"
subtitle="Build packages on any platform that Go supports."
icon="switch-horizontal"
>}}
{{< hextra/feature-card
title="Library & Binary"
subtitle="Use as a standalone binary or integrate as a Go library."
icon="terminal"
>}}
{{< hextra/feature-card
title="Fast & Lightweight"
subtitle="Written in Go for speed and efficiency."
icon="sparkles"
>}}
{{< /hextra/feature-grid >}}
</div>
+31
View File
@@ -0,0 +1,31 @@
---
title: Documentation
cascade:
type: docs
---
Welcome to the nFPM documentation.
## Why nFPM?
While [fpm](https://github.com/jordansissel/fpm) is great, it depends on Ruby, tar and other software. nFPM is a **simpler**, **zero-dependency**, **minimal-assumptions** alternative.
This is a subtle way of saying it won't have all features, nor all formats that `fpm` has: it is supposed to be simpler. And that's OK! Most of us don't need all those features most of the time.
## Features
- **Zero Dependencies**: No Ruby, no tar, no external dependencies
- **Multiple Formats**: deb, rpm, apk, ipk, and arch linux packages
- **Simple Configuration**: Single YAML file for all package formats
- **Cross Platform**: Build on any platform Go supports
- **Fast**: Written in Go for speed and efficiency
## How does it work?
You create a YAML file with the definition of what you need, run the `nfpm` binary, and it takes care of everything. The same configuration file can be used to create packages in all the supported formats.
## nFPM is not FPM
This is a subtle way of saying it won't have all features, nor all formats that `fpm` has: it is supposed to be simpler.
And that's OK! Most of us don't need all those features most of the time.
+8
View File
@@ -0,0 +1,8 @@
---
title: Command Line Reference
weight: 8
cascade:
type: docs
---
Complete reference for all nFPM command line options and subcommands.
+23
View File
@@ -0,0 +1,23 @@
---
title: nfpm
---
Packages apps on RPM, Deb, APK, Arch Linux, and ipk formats based on a YAML configuration file
## Synopsis
nFPM is a simple and 0-dependencies apk, arch, deb, ipk and rpm linux packager written in Go.
## Options
```
-h, --help help for nfpm
```
## See also
* [nfpm completion](/docs/cmd/nfpm_completion/) - Generate the autocompletion script for the specified shell
* [nfpm init](/docs/cmd/nfpm_init/) - Creates a sample nfpm.yaml configuration file
* [nfpm jsonschema](/docs/cmd/nfpm_jsonschema/) - Outputs nFPM's JSON schema
* [nfpm package](/docs/cmd/nfpm_package/) - Creates a package based on the given config file and flags
+26
View File
@@ -0,0 +1,26 @@
---
title: nfpm completion
---
Generate the autocompletion script for the specified shell
## Synopsis
Generate the autocompletion script for nfpm for the specified shell.
See each sub-command's help for details on how to use the generated script.
## Options
```
-h, --help help for completion
```
## See also
* [nfpm](/docs/cmd/nfpm/) - Packages apps on RPM, Deb, APK, Arch Linux, and ipk formats based on a YAML configuration file
* [nfpm completion bash](/docs/cmd/nfpm_completion_bash/) - Generate the autocompletion script for bash
* [nfpm completion fish](/docs/cmd/nfpm_completion_fish/) - Generate the autocompletion script for fish
* [nfpm completion powershell](/docs/cmd/nfpm_completion_powershell/) - Generate the autocompletion script for powershell
* [nfpm completion zsh](/docs/cmd/nfpm_completion_zsh/) - Generate the autocompletion script for zsh
@@ -1,4 +1,6 @@
# nfpm completion bash ---
title: nfpm completion bash
---
Generate the autocompletion script for bash Generate the autocompletion script for bash
@@ -39,5 +41,5 @@ nfpm completion bash
## See also ## See also
* [nfpm completion](/cmd/nfpm_completion/) - Generate the autocompletion script for the specified shell * [nfpm completion](/docs/cmd/nfpm_completion/) - Generate the autocompletion script for the specified shell
@@ -1,4 +1,6 @@
# nfpm completion fish ---
title: nfpm completion fish
---
Generate the autocompletion script for fish Generate the autocompletion script for fish
@@ -30,5 +32,5 @@ nfpm completion fish [flags]
## See also ## See also
* [nfpm completion](/cmd/nfpm_completion/) - Generate the autocompletion script for the specified shell * [nfpm completion](/docs/cmd/nfpm_completion/) - Generate the autocompletion script for the specified shell
@@ -1,4 +1,6 @@
# nfpm completion powershell ---
title: nfpm completion powershell
---
Generate the autocompletion script for powershell Generate the autocompletion script for powershell
@@ -27,5 +29,5 @@ nfpm completion powershell [flags]
## See also ## See also
* [nfpm completion](/cmd/nfpm_completion/) - Generate the autocompletion script for the specified shell * [nfpm completion](/docs/cmd/nfpm_completion/) - Generate the autocompletion script for the specified shell
@@ -1,4 +1,6 @@
# nfpm completion zsh ---
title: nfpm completion zsh
---
Generate the autocompletion script for zsh Generate the autocompletion script for zsh
@@ -41,5 +43,5 @@ nfpm completion zsh [flags]
## See also ## See also
* [nfpm completion](/cmd/nfpm_completion/) - Generate the autocompletion script for the specified shell * [nfpm completion](/docs/cmd/nfpm_completion/) - Generate the autocompletion script for the specified shell
@@ -1,4 +1,6 @@
# nfpm init ---
title: nfpm init
---
Creates a sample nfpm.yaml configuration file Creates a sample nfpm.yaml configuration file
@@ -15,5 +17,5 @@ nfpm init [flags]
## See also ## See also
* [nfpm](/cmd/nfpm/) - Packages apps on RPM, Deb, APK, Arch Linux, and ipk formats based on a YAML configuration file * [nfpm](/docs/cmd/nfpm/) - Packages apps on RPM, Deb, APK, Arch Linux, and ipk formats based on a YAML configuration file
@@ -1,4 +1,6 @@
# nfpm jsonschema ---
title: nfpm jsonschema
---
Outputs nFPM's JSON schema Outputs nFPM's JSON schema
@@ -15,5 +17,5 @@ nfpm jsonschema [flags]
## See also ## See also
* [nfpm](/cmd/nfpm/) - Packages apps on RPM, Deb, APK, Arch Linux, and ipk formats based on a YAML configuration file * [nfpm](/docs/cmd/nfpm/) - Packages apps on RPM, Deb, APK, Arch Linux, and ipk formats based on a YAML configuration file
@@ -1,4 +1,6 @@
# nfpm package ---
title: nfpm package
---
Creates a package based on the given config file and flags Creates a package based on the given config file and flags
@@ -17,5 +19,5 @@ nfpm package [flags]
## See also ## See also
* [nfpm](/cmd/nfpm/) - Packages apps on RPM, Deb, APK, Arch Linux, and ipk formats based on a YAML configuration file * [nfpm](/docs/cmd/nfpm/) - Packages apps on RPM, Deb, APK, Arch Linux, and ipk formats based on a YAML configuration file
@@ -1,10 +1,13 @@
# Configuration ---
title: Configuration
weight: 3
---
## Reference ## Reference
A commented `nfpm.yaml` configuration file example: A commented `nfpm.yaml` configuration file example:
```yaml ```yaml {filename="nfpm.yaml"}
# Name. (required) # Name. (required)
name: foo name: foo
@@ -498,7 +501,14 @@ nFPM also has a [jsonschema][] file which you can use to have better editor
support: support:
``` ```
https://nfpm.goreleaser.com/static/schema.json https://nfpm.goreleaser.com/schema.json
```
You can also add it to your `nfpm.yaml` file if your editor don't automatically
pick it up:
```yaml {filename="nfpm.yaml"}
# yaml-language-server: $schema=https://nfpm.goreleaser.com/schema.json
``` ```
You can also generate it for your specific version using the You can also generate it for your specific version using the
@@ -508,4 +518,4 @@ Note that it is in early stages.
Any help and/or feedback is greatly appreciated! Any help and/or feedback is greatly appreciated!
[jsonschema]: http://json-schema.org/draft/2020-12/json-schema-validation.html [jsonschema]: http://json-schema.org/draft/2020-12/json-schema-validation.html
[schema]: /cmd/nfpm_jsonschema/ [schema]: /docs/cmd/nfpm_jsonschema/
@@ -1,4 +1,7 @@
# Contributing ---
title: Contributing
weight: 6
---
This page will eventually have information for those who want to contribute This page will eventually have information for those who want to contribute
to the project. to the project.
+83
View File
@@ -0,0 +1,83 @@
---
title: GOARCH to Packager
weight: 5
---
nFPM was branched out of [GoReleaser](https://goreleaser.com), so some of it
lean towards "the Go way" (whatever that means).
GoReleaser passes a string joining `GOARCH`, `GOARM`, etc as the package
architecture, and nFPM converts to the correct one for each packager.
Bellow is a list of the current conversions that are made.
Please, feel free to open an issue if you see anything wrong, or if you know the
correct value of some missing architecture.
Thank you!
---
{{< tabs items="Deb,RPM,APK,Arch Linux" >}}
{{< tab >}}
| GOARCH | Value |
| :--------: | :--------: |
| `386` | `i386` |
| `amd64` | `amd64` |
| `arm64` | `arm64` |
| `arm5` | `armel` |
| `arm6` | `armhf` |
| `arm7` | `armhf` |
| `mips64le` | `mips64el` |
| `mips` | `mips` |
| `mipsle` | `mipsel` |
| `ppc64le` | `ppc64el` |
| `s390` | `s390x` |
{{< /tab >}}
{{< tab >}}
| GOARCH | Value |
| :--------: | :--------: |
| `386` | `i386` |
| `amd64` | `x86_64` |
| `arm64` | `aarch64` |
| `arm5` | `armv5tel` |
| `arm6` | `armv6hl` |
| `arm7` | `armv7hl` |
| `mips64le` | `mips64el` |
| `mips` | `mips` |
| `mipsle` | `mipsel` |
{{< /tab >}}
{{< tab >}}
| GOARCH | Value |
| :-------: | :-------: |
| `386` | `x86` |
| `amd64` | `x86_64` |
| `arm64` | `aarch64` |
| `arm6` | `armhf` |
| `arm7` | `armv7` |
| `ppc64le` | `ppc64le` |
| `s390` | `s390x` |
{{< /tab >}}
{{< tab >}}
| GOARCH | Value |
| :-----: | :-------: |
| `386` | `i686` |
| `amd64` | `x86_64` |
| `arm64` | `aarch64` |
| `arm5` | `arm` |
| `arm6` | `arm6h` |
| `arm7` | `armv7h` |
{{< /tab >}}
{{< /tabs >}}
+216
View File
@@ -0,0 +1,216 @@
---
title: Install
weight: 2
---
You can install the pre-compiled binary (in several ways), use Docker or compile from source.
Below you can find the steps for each of them.
## Using a package manager
{{< tabs items="Homebrew Tap,Homebrew,Scoop,APT,Yum,Winget,NPM" >}}
{{< tab >}}
```bash
brew install goreleaser/tap/nfpm
```
{{< /tab >}}
{{< tab >}}
```bash
brew install nfpm
```
> [!INFO]
> The [formula in homebrew-core](https://github.com/Homebrew/homebrew-core/blob/master/Formula/n/nfpm.rb) might be slightly outdated.
> Use our homebrew tap to always get the latest updates.
{{< /tab >}}
{{< tab >}}
```bash
scoop bucket add goreleaser https://github.com/goreleaser/scoop-bucket.git
scoop install nfpm
```
{{< /tab >}}
{{< tab >}}
```bash
echo 'deb [trusted=yes] https://repo.goreleaser.com/apt/ /' | sudo tee /etc/apt/sources.list.d/goreleaser.list
sudo apt update
sudo apt install nfpm
```
{{< /tab >}}
{{< tab >}}
```bash
echo '[goreleaser]
name=GoReleaser
baseurl=https://repo.goreleaser.com/yum/
enabled=1
gpgcheck=0' | sudo tee /etc/yum.repos.d/goreleaser.repo
sudo yum install nfpm
```
{{< /tab >}}
{{< tab >}}
```bash
winget install --id=goreleaser.nfpm
```
{{< /tab >}}
{{< tab >}}
```bash
npm install -g @goreleaser/nfpm
# or
npx @goreleaser/nfpm
```
{{< /tab >}}
{{< /tabs >}}
## Pre-built packages and archives
Download the your format of choice from the
[releases](https://github.com/goreleaser/nfpm/releases)
and install them with the appropriate tools.
You may also download the archives and extract and run the binary inside.
## Running with Docker
You can also use it within a Docker container. To do that, you'll need to execute something more-or-less like the following:
```bash
docker run --rm -v $PWD:/tmp -w /tmp goreleaser/nfpm package \
--config /tmp/pkg/foo.yml \
--target /tmp \
--packager deb
```
## Using go install
```bash
go install github.com/goreleaser/nfpm/v2/cmd/nfpm@latest
```
## Verifying the artifacts
{{< tabs items="Binaries,Docker Images" >}}
{{< tab >}}
All artifacts are checksummed, and the checksum is signed with
[cosign](https://github.com/sigstore/cosign).
{{% steps %}}
### Download
Download the files you want, the `checksums.txt` and `checksums.txt.sig` files
from the [releases](https://github.com/goreleaser/nfpm/releases) page:
```bash
wget 'https://github.com/goreleaser/nfpm/releases/download/__VERSION__/checksums.txt'
```
### Verify the signature
```bash
wget 'https://github.com/goreleaser/nfpm/releases/download/__VERSION__/checksums.txt.sigstore.json'
cosign verify-blob \
--certificate-identity 'https://github.com/goreleaser/nfpm/.github/workflows/release.yml@refs/tags/__VERSION__' \
--certificate-oidc-issuer 'https://token.actions.githubusercontent.com' \
--bundle "checksums.txt.sigstore.json" \
checksums.txt
```
### Verify the checksums
If the signature is valid, you can then verify the SHA256 sums match with the downloaded binary:
```bash
sha256sum --ignore-missing -c checksums.txt
```
{{% /steps %}}
{{< /tab >}}
{{< tab >}}
Our Docker images are signed with [cosign](https://github.com/sigstore/cosign).
{{% steps %}}
### Pull the images
```bash
docker buill goreleaser/nfpm
# or
docker build ghcr.io/goreleaser/nfpm
```
### Verify
```bash
cosign verify goreleaser/nfpm
cosign verify ghcr.io/goreleaser/nfpm
```
{{% /steps %}}
{{< /tab >}}
{{< /tabs >}}
## Building from source
Here you have two options:
If you want to contribute to the project, please follow the steps on our [contributing guide](/docs/contributing).
If you just want to build from source for whatever reason, follow these steps:
**clone:**
```bash
git clone https://github.com/goreleaser/nfpm
cd nfpm
```
**get the dependencies:**
```bash
go mod tidy
```
**build:**
```bash
go build -o nfpm ./cmd/nfpm
```
**verify it works:**
```bash
./nfpm --version
```
## Packaging status
[![Packaging status](https://repology.org/badge/vertical-allrepos/nfpm.svg)](https://repology.org/project/nfpm/versions)
+74
View File
@@ -0,0 +1,74 @@
---
title: Quick Start
weight: 1
---
nFPM can be used both as a command line tool or as a Go library.
## Getting Started
{{% steps %}}
### Install nFPM
You can choose from [several instalation methods](/docs/install), for example:
**Using Homebrew:**
```sh
brew install goreleaser/tap/nfpm
```
**Using go install:**
```sh
go install github.com/goreleaser/nfpm/v2/cmd/nfpm@latest
```
Make sure to [check the complete list](/docs/install) and choose the best option
for your case.
### Initialize your project
Use [`nfpm init`](/docs/cmd/nfpm_init) to create a sample configuration:
```sh
nfpm init
```
This creates a `nfpm.yaml` file with a commented example configuration.
### Build your packages
Use [`nfpm package`](/docs/cmd/nfpm_package) to create your packages:
```sh
# Build specific formats
nfpm pkg --packager deb --target /tmp/
nfpm pkg --packager rpm --target /tmp/
nfpm pkg --packager apk --target /tmp/
```
You can also use `ipk` and `archlinux` as packagers.
{{% /steps %}}
## Command Line Reference
For more information about available options:
```sh
nfpm --help
```
See the [configuration reference](/docs/configuration) to customize your package definition.
Check out the [command line reference](/docs/cmd) for detailed documentation of all commands.
## Using as a Go library
You can also use nFPM as a library in your Go project.
Check out the [GoDocs page](https://pkg.go.dev/github.com/goreleaser/nfpm/v2?tab=doc),
the [nFPM command line implementation](https://github.com/goreleaser/nfpm/blob/main/cmd/nfpm/main.go)
and [GoReleaser's usage](https://github.com/goreleaser/goreleaser/blob/main/internal/pipe/nfpm/nfpm.go).
@@ -1,4 +1,7 @@
# Sponsoring the Project ---
title: Sponsors
weight: 7
---
Does you or your company use nFPM? Does you or your company use nFPM?
You can help keep the project bug-free and feature rich by sponsoring the You can help keep the project bug-free and feature rich by sponsoring the
@@ -1,4 +1,7 @@
# Tips, Hints and useful information ---
title: Tips & Hints
weight: 4
---
## General maintainability of your packages ## General maintainability of your packages
-21
View File
@@ -1,21 +0,0 @@
# nfpm
Packages apps on RPM, Deb, APK, Arch Linux, and ipk formats based on a YAML configuration file
## Synopsis
nFPM is a simple and 0-dependencies apk, arch, deb, ipk and rpm linux packager written in Go.
## Options
```
-h, --help help for nfpm
```
## See also
* [nfpm completion](/cmd/nfpm_completion/) - Generate the autocompletion script for the specified shell
* [nfpm init](/cmd/nfpm_init/) - Creates a sample nfpm.yaml configuration file
* [nfpm jsonschema](/cmd/nfpm_jsonschema/) - Outputs nFPM's JSON schema
* [nfpm package](/cmd/nfpm_package/) - Creates a package based on the given config file and flags
-24
View File
@@ -1,24 +0,0 @@
# nfpm completion
Generate the autocompletion script for the specified shell
## Synopsis
Generate the autocompletion script for nfpm for the specified shell.
See each sub-command's help for details on how to use the generated script.
## Options
```
-h, --help help for completion
```
## See also
* [nfpm](/cmd/nfpm/) - Packages apps on RPM, Deb, APK, Arch Linux, and ipk formats based on a YAML configuration file
* [nfpm completion bash](/cmd/nfpm_completion_bash/) - Generate the autocompletion script for bash
* [nfpm completion fish](/cmd/nfpm_completion_fish/) - Generate the autocompletion script for fish
* [nfpm completion powershell](/cmd/nfpm_completion_powershell/) - Generate the autocompletion script for powershell
* [nfpm completion zsh](/cmd/nfpm_completion_zsh/) - Generate the autocompletion script for zsh
-69
View File
@@ -1,69 +0,0 @@
# Go's GOARCH to packager
nFPM was branched out of [GoReleaser](https://goreleaser.com), so some of it
lean towards "the Go way" (whatever that means).
GoReleaser passes a string joining `GOARCH`, `GOARM`, etc as the package
architecture, and nFPM converts to the correct one for each packager.
Bellow is a list of the current conversions that are made.
Please, feel free to open an issue if you see anything wrong, or if you know the
correct value of some missing architecture.
Thank you!
---
## `deb`
| GOARCH | Value |
| :--: | :--: |
| `386` | `i386` |
| `amd64` | `amd64` |
| `arm64` | `arm64` |
| `arm5` | `armel` |
| `arm6` | `armhf` |
| `arm7` | `armhf` |
| `mips64le` | `mips64el` |
| `mips` | `mips` |
| `mipsle` | `mipsel` |
| `ppc64le` | `ppc64el` |
| `s390` | `s390x` |
## `rpm`
| GOARCH | Value |
| :--: | :--: |
| `386` | `i386` |
| `amd64` | `x86_64` |
| `arm64` | `aarch64` |
| `arm5` | `armv5tel` |
| `arm6` | `armv6hl` |
| `arm7` | `armv7hl` |
| `mips64le` | `mips64el` |
| `mips` | `mips` |
| `mipsle` | `mipsel` |
## `apk`
| GOARCH | Value |
| :--: | :--: |
| `386` | `x86` |
| `amd64` | `x86_64` |
| `arm64` | `aarch64` |
| `arm6` | `armhf` |
| `arm7` | `armv7` |
| `ppc64le` | `ppc64le` |
| `s390` | `s390x` |
## `archlinux`
| GOARCH | Value |
| :--: | :--: |
| `386` | `i686` |
| `amd64` | `x86_64` |
| `arm64` | `aarch64` |
| `arm5` | `arm` |
| `arm6` | `arm6h` |
| `arm7` | `armv7h` |
-33
View File
@@ -1,33 +0,0 @@
# nFPM
![](https://becker.software/nfpm.png)
**nFPM is Not FPM** - a zero dependencies, simple `deb`, `rpm`, `apk`, `ipk`, and
arch linux packager written in Go.
## Why
While [fpm][] is great, for me, it is a bummer that it depends on `ruby`, `tar`
and other software.
I wanted something that could be used as a binary and/or as a library and that
was really simple.
So I decided to create nFPM: a **simpler**, **0-dependency**,
**as-little-assumptions-as-possible** alternative to fpm.
## nFPM is not FPM
This is a subtle way of saying it won't have all features, nor all
formats that `fpm` has: it is supposed to be simpler.
And that's OK! Most of us don't need all those features most of the time.
[fpm]: https://github.com/jordansissel/fpm
## How does it work?
You create a YAML file with the definition of what you need, run the `nfpm`
binary, and it takes care of everything.
The same configuration file can be used to create packages in all the supported
formats.
-159
View File
@@ -1,159 +0,0 @@
# Install
You can install the pre-compiled binary (in several ways), use Docker
or compile from source.
Bellow you can find the steps for each of them.
## Install the pre-compiled binary
### homebrew tap
```bash
brew install goreleaser/tap/nfpm
```
### homebrew
```bash
brew install nfpm
```
!!! info
The [formula in homebrew-core](https://github.com/Homebrew/homebrew-core/blob/master/Formula/n/nfpm.rb) might be slightly outdated.
Use our homebrew tap to always get the latest updates.
### scoop
```bash
scoop bucket add goreleaser https://github.com/goreleaser/scoop-bucket.git
scoop install nfpm
```
### apt
```bash
echo 'deb [trusted=yes] https://repo.goreleaser.com/apt/ /' | sudo tee /etc/apt/sources.list.d/goreleaser.list
sudo apt update
sudo apt install nfpm
```
### yum
```bash
echo '[goreleaser]
name=GoReleaser
baseurl=https://repo.goreleaser.com/yum/
enabled=1
gpgcheck=0' | sudo tee /etc/yum.repos.d/goreleaser.repo
sudo yum install nfpm
```
### deb, apk and rpm packages
Download the `.deb`, `.rpm` or `.apk` from the [releases page][releases] and
install them with the appropriate tools.
### go install
```bash
go install github.com/goreleaser/nfpm/v2/cmd/nfpm@latest
```
### manually
Download the pre-compiled binaries from the [releases page][releases] and copy
them to the desired location.
## Verifying the artifacts
### binaries
All artifacts are checksummed, and the checksum is signed with [cosign][].
1. Download the files you want, the `checksums.txt` and `checksums.txt.sig`
files from the [releases][releases] page:
```bash
wget 'https://github.com/goreleaser/nfpm/releases/download/__VERSION__/checksums.txt'
```
1. Verify the signature:
```bash
cosign verify-blob \
--certificate-identity 'https://github.com/goreleaser/nfpm/.github/workflows/release.yml@refs/tags/__VERSION__' \
--certificate-oidc-issuer 'https://token.actions.githubusercontent.com' \
--signature 'https://github.com/goreleaser/nfpm/releases/download/__VERSION__/checksums.txt.sig' \
--cert 'https://github.com/goreleaser/nfpm/releases/download/__VERSION__/checksums.txt.pem' \
checksums.txt
```
1. If the signature is valid, you can then verify the SHA256 sums match with the
downloaded binary:
```bash
sha256sum --ignore-missing -c checksums.txt
```
### docker images
Our Docker images are signed with [cosign][].
Verify the signature:
```bash
cosign verify goreleaser/nfpm
cosign verify ghcr.io/goreleaser/nfpm
```
## Running with Docker
You can also use it within a Docker container. To do that, you'll need to
execute something more-or-less like the following:
```bash
docker run --rm -v $PWD:/tmp -w /tmp goreleaser/nfpm package \
--config /tmp/pkg/foo.yml \
--target /tmp \
--packager deb
```
## Packaging status
[![Packaging status](https://repology.org/badge/vertical-allrepos/nfpm.svg)](https://repology.org/project/nfpm/versions)
## Compiling from source
Here you have two options:
If you want to contribute to the project, please follow the steps on our
[contributing guide](/contributing).
If you just want to build from source for whatever reason, follow these steps:
**clone:**
```bash
git clone https://github.com/goreleaser/nfpm
cd nfpm
```
**get the dependencies:**
```bash
go mod tidy
```
**build:**
```bash
go build -o nfpm ./cmd/nfpm
```
**verify it works:**
```bash
./nfpm --version
```
[releases]: https://github.com/goreleaser/nfpm/releases
[cosign]: https://github.com/sigstore/cosign
BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 81 KiB

-27
View File
@@ -1,27 +0,0 @@
# Usage
nFPM can be used both as command line tool or as a library.
## Command Line
To create a sample configuration file, run:
```sh
nfpm init
```
You can then customize it and package to the formats you want:
```sh
nfpm pkg --packager deb --target /tmp/
nfpm pkg --packager rpm --target /tmp/
```
You can learn about it in more detail in the
[command line reference section](/cmd/nfpm/).
## Go Library
Check out the [GoDocs page](https://pkg.go.dev/github.com/goreleaser/nfpm/v2?tab=doc),
the [nFPM command line implementation](https://github.com/goreleaser/nfpm/blob/main/cmd/nfpm/main.go)
and [GoReleaser's usage](https://github.com/goreleaser/goreleaser/blob/main/internal/pipe/nfpm/nfpm.go).
+5
View File
@@ -0,0 +1,5 @@
module github.com/goreleaser/nfpm/hugo-docs
go 1.21
require github.com/imfing/hextra v0.11.1 // indirect
+2
View File
@@ -0,0 +1,2 @@
github.com/imfing/hextra v0.11.1 h1:8pTc4ReYbzGTHAnyiebmlT3ijFfIXiGu1r7tM/UGjFI=
github.com/imfing/hextra v0.11.1/go.mod h1:cEfel3lU/bSx7lTE/+uuR4GJaphyOyiwNR3PTqFTXpI=
+18 -13
View File
@@ -1,15 +1,20 @@
IgnoreURLs: # htmltest configuration for nFPM Hugo site
- www.google-analytics.com DirectoryPath: "public"
- fonts.gstatic.com CheckDoctype: true
- opencollective.com CheckAnchors: true
- https://gitlab.com/profile/personal_access_tokens CheckLinks: true
- https://twitter.com/goreleaser CheckImages: true
- goreleaser.com CheckScripts: true
IgnoreDirs: CheckFavicon: true
- overrides CheckOpengraph: false
CheckMetaRefresh: true
CheckMetaViewport: true
EnforceHTTPS: false
IgnoreDirectoryMissingTrailingSlash: true IgnoreDirectoryMissingTrailingSlash: true
IgnoreURLs:
- "https://github.com/goreleaser/nfpm/edit/main/www/content"
- "https://github.com/goreleaser/nfpm/releases"
- "https://becker.software/nfpm.png"
IgnoreAltMissing: true IgnoreAltMissing: true
ExternalTimeout: 60 IgnoreInternalEmptyHash: true
HTTPHeaders: LogLevel: 2
"Range": "bytes=0-10"
"Accept": "*/*"
+75
View File
@@ -0,0 +1,75 @@
baseURL: "https://nfpm.goreleaser.com"
languageCode: "en-us"
title: "nFPM"
module:
imports:
- path: github.com/imfing/hextra
enableRobotsTXT: true
enableGitInfo: true
enableEmoji: true
hasCJKLanguage: true
services:
googleAnalytics:
ID: ""
markup:
goldmark:
renderer:
unsafe: true
highlight:
noClasses: false
menu:
main:
- identifier: install
name: Install
pageRef: /docs/install
weight: 10
- identifier: documentation
name: Documentation
pageRef: /docs/usage
weight: 15
- name: Search
weight: 20
params:
type: search
- name: GitHub
weight: 30
url: "https://github.com/goreleaser/nfpm"
params:
icon: github
params:
navbar:
displayTitle: true
displayLogo: true
logo:
path: images/logo.png
dark: images/logo.png
width: 40
height: 40
link: /
page:
width: wide
theme:
default: system
displayToggle: true
footer:
displayCopyright: true
displayPoweredBy: false
width: normal
displayUpdatedDate: true
dateFormat: "January 2, 2006"
search:
enable: true
type: flexsearch
maxResults: 10
editPage:
enable: true
base: "https://github.com/goreleaser/nfpm/edit/main/www/content"
outputs:
home: [html, llms]
+1
View File
@@ -0,0 +1 @@
copyright: "Made with 🩶 by the nFPM contributors"
@@ -0,0 +1,8 @@
<meta
property="og:image"
content="https://nfpm.goreleaser.com/images/card.png"
/>
<meta
name="twitter:image"
content="https://nfpm.goreleaser.com/images/card.png"
/>
-77
View File
@@ -1,77 +0,0 @@
site_name: nFPM
site_url: https://nfpm.goreleaser.com
site_description: nFPM is not FPM - a simple deb, rpm and apk packager written in Go
copyright: Made with ❤️ by GoReleaser contributors.
repo_name: goreleaser/nfpm
repo_url: https://github.com/goreleaser/nfpm
edit_uri: edit/main/www/docs/
theme:
name: material
language: en
logo: static/avatar.png
favicon: static/favicon.ico
include_search_page: false
search_index_only: true
palette:
- media: "(prefers-color-scheme: light)" # Light mode
scheme: default
toggle:
icon: material/lightbulb-outline
name: Switch to light mode
- media: "(prefers-color-scheme: dark)" # Dark mode
scheme: slate
primary: light blue
accent: indigo
toggle:
icon: material/lightbulb
name: Switch to dark mode
features:
- search.suggest
- search.highlight
- search.share
- content.code.copy
- content.action.edit
- navigation.footer
plugins:
- search
- minify:
minify_html: true
extra:
social:
- icon: fontawesome/brands/github-alt
link: https://github.com/goreleaser
- icon: fontawesome/brands/twitter
link: https://twitter.com/goreleaser
nav:
- Home: index.md
- install.md
- usage.md
- Command Line Usage:
- nfpm: cmd/nfpm.md
- nfpm init: cmd/nfpm_init.md
- nfpm package: cmd/nfpm_package.md
- nfpm completion: cmd/nfpm_completion.md
- nfpm completion bash: cmd/nfpm_completion_bash.md
- nfpm completion fish: cmd/nfpm_completion_fish.md
- nfpm completion powershell: cmd/nfpm_completion_powershell.md
- nfpm completion zsh: cmd/nfpm_completion_zsh.md
- nfpm jsonschema: cmd/nfpm_jsonschema.md
- configuration.md
- tips.md
- goarch-to-pkg.md
- contributing.md
- sponsors.md
markdown_extensions:
- admonition
- codehilite
- meta
- toc:
permalink: true
- pymdownx.tabbed
- pymdownx.superfences
+2
View File
@@ -0,0 +1,2 @@
/static/schema.json /schema.json 301
/static/latest /latest 301

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

Before

Width:  |  Height:  |  Size: 31 KiB

After

Width:  |  Height:  |  Size: 31 KiB

Before

Width:  |  Height:  |  Size: 40 KiB

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 83 KiB

Before

Width:  |  Height:  |  Size: 178 KiB

After

Width:  |  Height:  |  Size: 178 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB