README
NFPM
NFPM is Not FPM - a simple deb, rpm and apk packager written in Go.
Why
While fpm is great, for me, it is a bummer that it depends on ruby
, tar
and other softwares.
I wanted something that could be used as a binary and/or as a library and that was really simple.
So I created NFPM: a simpler, 0-dependency, as-little-assumptions-as-possible alternative to fpm.
Usage
Check the documentation at https://nfpm.goreleaser.com
Special thanks 🙏
Thanks to the fpm authors for fpm, which inspires nfpm a lot.
Donate
Donations are very much appreciated! You can donate/sponsor on the main goreleaser opencollective! It's easy and will surely help the developers at least buy some ☕️ or 🍺!
Stargazers over time
Would you like to fix something in the documentation? Feel free to open an issue.
Documentation
Overview ¶
Package nfpm provides ways to package programs in some linux packaging formats.
Index ¶
- func ClearPackagers()
- func RegisterPackager(format string, p Packager)
- func Validate(info *Info) (err error)
- type APK
- type APKSignature
- type Config
- type Deb
- type DebScripts
- type DebSignature
- type DebTriggers
- type ErrFieldEmpty
- type ErrNoPackager
- type ErrSigningFailure
- type Info
- type Overridables
- type PackageSignature
- type Packager
- type RPM
- type RPMSignature
- type Scripts
Constants ¶
Variables ¶
Functions ¶
func ClearPackagers ¶
func ClearPackagers()
ClearPackagers clear all registered packagers, used for testing.
func RegisterPackager ¶
RegisterPackager a new packager for the given format.
Types ¶
type APK ¶
type APK struct {
Signature APKSignature `yaml:"signature,omitempty"`
}
type APKSignature ¶
type APKSignature struct { PackageSignature `yaml:",inline"` // defaults to <maintainer email>.rsa.pub KeyName string `yaml:"key_name,omitempty"` }
type Config ¶
type Config struct { Info `yaml:",inline"` Overrides map[string]Overridables `yaml:"overrides,omitempty"` }
Config contains the top level configuration for packages.
type Deb ¶
type Deb struct { Scripts DebScripts `yaml:"scripts,omitempty"` Triggers DebTriggers `yaml:"triggers,omitempty"` Breaks []string `yaml:"breaks,omitempty"` Signature DebSignature `yaml:"signature,omitempty"` }
Deb is custom configs that are only available on deb packages.
type DebScripts ¶
type DebScripts struct { Rules string `yaml:"rules,omitempty"` Templates string `yaml:"templates,omitempty"` }
DebScripts is scripts only available on deb packages.
type DebSignature ¶
type DebSignature struct { PackageSignature `yaml:",inline"` // origin, maint or archive (defaults to origin) Type string `yaml:"type,omitempty"` }
type DebTriggers ¶
type DebTriggers struct { Interest []string `yaml:"interest,omitempty"` InterestAwait []string `yaml:"interest_await,omitempty"` InterestNoAwait []string `yaml:"interest_noawait,omitempty"` Activate []string `yaml:"activate,omitempty"` ActivateAwait []string `yaml:"activate_await,omitempty"` ActivateNoAwait []string `yaml:"activate_noawait,omitempty"` }
DebTriggers contains triggers only available for deb packages. https://wiki.debian.org/DpkgTriggers https://man7.org/linux/man-pages/man5/deb-triggers.5.html
type ErrFieldEmpty ¶
type ErrFieldEmpty struct {
// contains filtered or unexported fields
}
ErrFieldEmpty happens when some required field is empty.
func (ErrFieldEmpty) Error ¶
func (e ErrFieldEmpty) Error() string
type ErrNoPackager ¶
type ErrNoPackager struct {
// contains filtered or unexported fields
}
ErrNoPackager happens when no packager is registered for the given format.
func (ErrNoPackager) Error ¶
func (e ErrNoPackager) Error() string
type ErrSigningFailure ¶
type ErrSigningFailure struct {
Err error
}
ErrSigningFailure is returned whenever something went wrong during the package signing process. The underlying error can be unwrapped and could be crypto-related or something that occurred while adding the signature to the package.
func (*ErrSigningFailure) Error ¶
func (s *ErrSigningFailure) Error() string
func (*ErrSigningFailure) Unwarp ¶
func (s *ErrSigningFailure) Unwarp() error
type Info ¶
type Info struct { Overridables `yaml:",inline"` Name string `yaml:"name,omitempty"` Arch string `yaml:"arch,omitempty"` Platform string `yaml:"platform,omitempty"` Epoch string `yaml:"epoch,omitempty"` Version string `yaml:"version,omitempty"` Release string `yaml:"release,omitempty"` Prerelease string `yaml:"prerelease,omitempty"` VersionMetadata string `yaml:"version_metadata,omitempty"` Section string `yaml:"section,omitempty"` Priority string `yaml:"priority,omitempty"` Maintainer string `yaml:"maintainer,omitempty"` Description string `yaml:"description,omitempty"` Vendor string `yaml:"vendor,omitempty"` Homepage string `yaml:"homepage,omitempty"` License string `yaml:"license,omitempty"` Changelog string `yaml:"changelog,omitempty"` DisableGlobbing bool `yaml:"disable_globbing"` Target string `yaml:"-"` }
Info contains information about a single package.
func WithDefaults ¶
WithDefaults set some sane defaults into the given Info.
func (*Info) GetChangeLog ¶
func (i *Info) GetChangeLog() (log *chglog.PackageChangeLog, err error)
GetChangeLog parses the provided changelog file.
type Overridables ¶
type Overridables struct { Replaces []string `yaml:"replaces,omitempty"` Provides []string `yaml:"provides,omitempty"` Depends []string `yaml:"depends,omitempty"` Recommends []string `yaml:"recommends,omitempty"` Suggests []string `yaml:"suggests,omitempty"` Conflicts []string `yaml:"conflicts,omitempty"` Contents files.Contents `yaml:"contents,omitempty"` EmptyFolders []string `yaml:"empty_folders,omitempty"` Scripts Scripts `yaml:"scripts,omitempty"` RPM RPM `yaml:"rpm,omitempty"` Deb Deb `yaml:"deb,omitempty"` APK APK `yaml:"apk,omitempty"` }
Overridables contain the field which are overridable in a package.
type PackageSignature ¶
type Packager ¶
type Packager interface { Package(info *Info, w io.Writer) error ConventionalFileName(info *Info) string }
Packager represents any packager implementation.
type RPM ¶
type RPM struct { Group string `yaml:"group,omitempty"` Summary string `yaml:"summary,omitempty"` Compression string `yaml:"compression,omitempty"` Signature RPMSignature `yaml:"signature,omitempty"` }
RPM is custom configs that are only available on RPM packages.
type RPMSignature ¶
type RPMSignature struct {
PackageSignature `yaml:",inline"`
}
Directories
Path | Synopsis |
---|---|
apk | Package apk implements nfpm.Packager providing .apk bindings. |
cmd/nfpm | Package main contains the main nfpm cli source code. |
deb | Package deb implements nfpm.Packager providing .deb bindings. |
files | |
internal/glob | Package glob provides file globbing for use in nfpm.Packager implementations |
internal/sign | |
rpm | Package rpm implements nfpm.Packager providing .rpm bindings using google/rpmpack. |