Skip to content

Commit 8c18197

Browse files
committed
doc: possible configuration
1 parent 77a5fd4 commit 8c18197

File tree

4 files changed

+231
-143
lines changed

4 files changed

+231
-143
lines changed

README.md

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,55 @@ using deb packager...
3838
created package: /home/ubuntu/example/target/tmp/example_1.4.2-1_amd64.deb
3939
```
4040

41+
## Config
42+
43+
Instead of configuring `nfpm` via it's own yaml configuration (`nfpm.yml`) the
44+
entire configuration is contained in the extra metadata in `Cargo.toml`.
45+
46+
The following configuration (from `test-projects/single-project`) ...
47+
48+
```toml
49+
# Cargo.toml
50+
51+
[package.metadata.nfpm]
52+
epoch = "2"
53+
contents = [
54+
{ src = "LICENSE", dst = "/usr/share/licenses/single-project/LICENSE" },
55+
]
56+
```
57+
58+
... will be automatically translated into:
59+
60+
```yaml
61+
# nfpm.yml
62+
63+
name: single-project
64+
arch: amd64
65+
version: 0.1.0
66+
contents:
67+
- dst: /usr/share/licenses/single-project/LICENSE
68+
src: LICENSE
69+
- dst: /usr/bin/single-project
70+
expand: false
71+
file_info:
72+
mode: 493
73+
src: /home/ubuntu/cargo-nfpm/test-projects/single-project/target/release/single-project
74+
epoch: '2'
75+
maintainer: Arvid Gerstmann <github@arvid.io>
76+
platform: linux
77+
priority: extra
78+
release: '1'
79+
section: default
80+
```
81+
82+
With the necessary fields already filled out with the general metdata contained
83+
in the `package` section of your `Cargo.toml`.
84+
85+
The types are generated from the latest `nfpm` JSON schema and will always
86+
track the latest version.
87+
88+
All possible options are demonstrated in [all.toml](./fixtures/all.toml).
89+
4190

4291
## Full Options
4392

fixtures/all.toml

Lines changed: 90 additions & 77 deletions
Original file line numberDiff line numberDiff line change
@@ -1,97 +1,118 @@
11
# A TOML file that defines all variables.
22

33
[package.metadata.nfpm]
4+
name = "cargo-nfpm"
45
arch = "amd64"
5-
changelog = "changelog"
6-
conflicts = ["conflicts"]
7-
depends = ["depends"]
8-
description = "description"
9-
disable_globbing = false
10-
epoch = "epoch"
11-
homepage = "homepage"
12-
license = "license"
13-
maintainer = "maintainer"
14-
mtime = "mtime"
15-
name = "foo"
16-
platform = "platform"
17-
prerelease = "prerelease"
18-
priority = "priority"
19-
provides = ["provides"]
20-
recommends = ["recommends"]
21-
release = "release"
22-
replaces = ["replaces"]
23-
section = "section"
24-
suggests = ["suggests"]
25-
umask = 2
26-
vendor = "vendor"
6+
platform = "linux"
7+
license = "MIT OR Apache-2.0"
8+
279
version = "1.0.0"
28-
version_metadata = "version_metadata"
10+
epoch = "1"
11+
prerelease = "0"
12+
release = "1"
13+
mtime = "2009-11-10T23:00:00Z"
14+
version_metadata = "version"
2915
version_schema = "none"
3016

17+
section = "default"
18+
priority = "extra"
19+
20+
maintainer = "Arvid Gerstmann <github@arvid.io>"
21+
description = "A simple and lightweight Cargo plugin for using nFPM from Any Rust project."
22+
vendor = "Arvid Gerstmann <github@arvid.io>"
23+
homepage = "https://github.com/RagnarLab/cargo-nfpm/"
24+
changelog = "changelog.yml"
25+
26+
conflicts = ["package-which-conflicts"]
27+
depends = ["package-dependencies"]
28+
provides = ["cargo-nfpm"]
29+
recommends = ["recommended-package-to-install"]
30+
replaces = ["package-that-it-replaces"]
31+
suggests = ["suggested-package"]
32+
33+
disable_globbing = false
34+
umask = 2
35+
36+
# Scripts to run at specific stages. (overridable)
37+
[package.metadata.nfpm.scripts]
38+
postinstall = "postinstall-script.sh"
39+
postremove = "postremove-script.sh"
40+
preinstall = "preinstall-script.sh"
41+
preremove = "preremove-script.sh"
42+
43+
# Package contents
44+
[[package.metadata.nfpm.contents]]
45+
dst = "/usr/bin/cargo-nfpm"
46+
expand = false
47+
packager = "deb"
48+
src = "/home/ubuntu/cargo-nfpm/target/release/cargo-nfpm"
49+
type = ""
50+
51+
# Overrides
52+
[package.metadata.nfpm.overrides.umask]
53+
umask = 2
54+
55+
# APK overrides
3156
[package.metadata.nfpm.apk]
32-
arch = "amd64"
57+
arch = "x86_64"
3358

3459
[package.metadata.nfpm.apk.scripts]
35-
postupgrade = "postupgrade"
36-
preupgrade = "preupgrade"
60+
postupgrade = "postupgrade-script.sh"
61+
preupgrade = "preupgrade-script.sh"
3762

3863
[package.metadata.nfpm.apk.signature]
39-
key_file = "key_file"
40-
key_id = "key_id"
41-
key_name = "key_name"
64+
key_file = "key.gpg"
65+
key_id = "ignored"
66+
key_name = "origin"
4267

68+
# Archlinux overrides
4369
[package.metadata.nfpm.archlinux]
44-
arch = "amd64"
45-
packager = "packager"
46-
pkgbase = "pkgbase"
70+
arch = "x86_64"
71+
packager = "Arvid Gerstmann <github@arvid.io>"
72+
pkgbase = "cargo-nfpm"
4773

4874
[package.metadata.nfpm.archlinux.scripts]
49-
postupgrade = "postupgrade"
50-
preupgrade = "preupgrade"
51-
52-
[[package.metadata.nfpm.contents]]
53-
dst = "destination"
54-
expand = false
55-
packager = "me"
56-
src = "source"
57-
type = "config"
75+
postupgrade = "./scripts/postupgrade.sh"
76+
preupgrade = "./scripts/preupgrade.sh"
5877

78+
# Deb overrides
5979
[package.metadata.nfpm.deb]
6080
arch = "amd64"
61-
breaks = ["breaks"]
81+
breaks = ["installation-will-fail-if-this-is-installed"]
6282
compression = "gzip"
6383
predepends = ["predepends"]
6484

6585
[package.metadata.nfpm.deb.fields]
66-
Foo = "Bar"
86+
Bugs = "https://github.com/RagnarLab/cargo-nfpm/issues"
6787

6888
[package.metadata.nfpm.deb.scripts]
69-
config = "config"
70-
rules = "rules"
71-
templates = "templates"
89+
config = "config-for-debconf"
90+
rules = "rules-script-for-debconf.sh"
91+
templates = "templates-file-for-debconf"
7292

7393
[package.metadata.nfpm.deb.signature]
74-
key_file = "key_file"
75-
key_id = "key_id"
94+
key_file = "key.gpg"
95+
key_id = "bc8acdd415bd80b3"
7696
method = "debsign"
7797
signer = "signer"
7898
type = "maint"
7999

80100
[package.metadata.nfpm.deb.triggers]
81-
activate = ["activate"]
82-
activate_await = ["activate_await"]
83-
activate_noawait = ["activate_noawait"]
84-
interest = ["interest"]
85-
interest_await = ["interest_await"]
86-
interest_noawait = ["interest_noawait"]
87-
101+
activate = ["activate-trigger-name"]
102+
activate_await = ["activate_await-trigger-name"]
103+
activate_noawait = ["activate_noawait-trigger-name"]
104+
interest = ["interest-trigger-name"]
105+
interest_await = ["interest_await-trigger-name"]
106+
interest_noawait = ["interest_noawait-trigger-name"]
107+
108+
# IPK overrides
88109
[package.metadata.nfpm.ipk]
89110
abi_version = "abi_version"
90-
arch = "arch"
111+
arch = "x86_64"
91112
auto_installed = false
92113
essential = false
93-
predepends = ["predepends"]
94-
tags = ["tags"]
114+
predepends = ["cargo"]
115+
tags = ["build-tools"]
95116

96117
[[package.metadata.nfpm.ipk.alternatives]]
97118
link_name = "link_name"
@@ -101,28 +122,20 @@ target = "target"
101122
[package.metadata.nfpm.ipk.fields]
102123
Foo = "Bar"
103124

104-
[package.metadata.nfpm.overrides.umask]
105-
umask = 2
106-
125+
# RPM overrides
107126
[package.metadata.nfpm.rpm]
108-
arch = "arch"
127+
arch = "x86_64"
109128
compression = "gzip"
110-
group = "group"
111-
packager = "packager"
112-
prefixes = ["prefixes"]
113-
summary = "summary"
129+
group = "Unspecified"
130+
packager = "Arvid Gerstmann <github@arvid.io>"
131+
prefixes = ["/usr/bin"]
132+
summary = "Explicit summary for the package. Defaults to first line of description."
114133

115134
[package.metadata.nfpm.rpm.scripts]
116-
posttrans = "posttrans"
117-
pretrans = "pretrans"
118-
verify = "verify"
135+
posttrans = "./scripts/posttrans.sh"
136+
pretrans = "./scripts/pretrans.sh"
137+
verify = "./scripts/verify.sh"
119138

120139
[package.metadata.nfpm.rpm.signature]
121-
key_file = "key_file"
122-
key_id = "key_id"
123-
124-
[package.metadata.nfpm.scripts]
125-
postinstall = "postinstall"
126-
postremove = "postremove"
127-
preinstall = "preinstall"
128-
preremove = "preremove"
140+
key_file = "key.gpg"
141+
key_id = "012345ABCDEF"

test-projects/single-project/Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
[package]
22
name = "single-project"
33
version = "0.1.0"
4+
authors = ["Arvid Gerstmann <github@arvid.io>"]
45
edition = "2024"
56

67
[dependencies]

0 commit comments

Comments
 (0)