nfpm

package module
Version: v1.10.3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 9, 2020 License: MIT Imports: 8 Imported by: 27

README

GoReleaser Logo

NFPM

NFPM is Not FPM - a simple deb, rpm and apk packager written in Go.

Release Software License GitHub Actions Codecov branch Go Report Card Go Doc

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

goreleaser/nfpm 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

Constants

This section is empty.

Variables

This section is empty.

Functions

func Register

func Register(format string, p Packager)

Register a new packager for the given format.

func Validate added in v0.6.3

func Validate(info *Info) error

Validate the given Info and returns an error if it is invalid.

Types

type APK added in v1.8.0

type APK struct {
	Signature APKSignature `yaml:"signature,omitempty"`
}

type APKSignature added in v1.8.0

type APKSignature struct {
	// RSA private key in PEM format
	KeyFile       string `yaml:"key_file,omitempty"`
	KeyPassphrase string `yaml:"-"` // populated from environment variable
	// defaults to <maintainer email>.rsa.pub
	KeyName string `yaml:"key_name,omitempty"`
}

type Config added in v0.8.0

type Config struct {
	Info      `yaml:",inline"`
	Overrides map[string]Overridables `yaml:"overrides,omitempty"`
}

Config contains the top level configuration for packages.

func Parse added in v0.8.0

func Parse(in io.Reader) (config Config, err error)

Parse decodes YAML data from an io.Reader into a configuration struct.

func ParseFile added in v0.8.0

func ParseFile(path string) (config Config, err error)

ParseFile decodes YAML data from a file path into a configuration struct.

func (*Config) Get added in v0.8.0

func (c *Config) Get(format string) (info *Info, err error)

Get returns the Info struct for the given packager format. Overrides for the given format are merged into the final struct.

func (*Config) Validate added in v0.8.0

func (c *Config) Validate() error

Validate ensures that the config is well typed.

type Deb added in v0.13.0

type Deb struct {
	Scripts         DebScripts   `yaml:"scripts,omitempty"`
	Triggers        DebTriggers  `yaml:"triggers,omitempty"`
	Breaks          []string     `yaml:"breaks,omitempty"`
	VersionMetadata string       `yaml:"metadata,omitempty"` // Deprecated: Moved to Info
	Signature       DebSignature `yaml:"signature,omitempty"`
}

Deb is custom configs that are only available on deb packages.

type DebScripts added in v0.13.0

type DebScripts struct {
	Rules     string `yaml:"rules,omitempty"`
	Templates string `yaml:"templates,omitempty"`
}

DebScripts is scripts only available on deb packages.

type DebSignature added in v1.8.0

type DebSignature struct {
	// PGP secret key, can be ASCII-armored
	KeyFile       string `yaml:"key_file,omitempty"`
	KeyPassphrase string `yaml:"-"` // populated from environment variable
	// origin, maint or archive (defaults to origin)
	Type string `yaml:"type,omitempty"`
}

type DebTriggers added in v1.6.0

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 added in v1.3.0

type ErrFieldEmpty struct {
	// contains filtered or unexported fields
}

ErrFieldEmpty happens when some required field is empty.

func (ErrFieldEmpty) Error added in v1.3.0

func (e ErrFieldEmpty) Error() string

type ErrNoPackager added in v1.3.0

type ErrNoPackager struct {
	// contains filtered or unexported fields
}

ErrNoPackager happens when no packager is registered for the given format.

func (ErrNoPackager) Error added in v1.3.0

func (e ErrNoPackager) Error() string

type ErrSigningFailure added in v1.8.0

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 added in v1.8.0

func (s *ErrSigningFailure) Error() string

func (*ErrSigningFailure) Unwarp added in v1.8.0

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"`
	Bindir          string `yaml:"bindir,omitempty"` // Deprecated: this does nothing. TODO: remove.
	Changelog       string `yaml:"changelog,omitempty"`
	DisableGlobbing bool   `yaml:"disable_globbing"`
	Target          string `yaml:"-"`
}

Info contains information about a single package.

func WithDefaults

func WithDefaults(info *Info) *Info

WithDefaults set some sane defaults into the given Info.

func (*Info) GetChangeLog added in v1.5.0

func (info *Info) GetChangeLog() (log *chglog.PackageChangeLog, err error)

GetChangeLog parses the provided changelog file.

type Overridables added in v0.8.0

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"`
	Files        map[string]string `yaml:"files,omitempty"`
	ConfigFiles  map[string]string `yaml:"config_files,omitempty"`
	Symlinks     map[string]string `yaml:"symlinks,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 Packager

type Packager interface {
	Package(info *Info, w io.Writer) error
	ConventionalFileName(info *Info) string
}

Packager represents any packager implementation.

func Get

func Get(format string) (Packager, error)

Get a packager for the given format.

type RPM added in v0.13.0

type RPM struct {
	Group       string `yaml:"group,omitempty"`
	Summary     string `yaml:"summary,omitempty"`
	Compression string `yaml:"compression,omitempty"`
	// https://www.cl.cam.ac.uk/~jw35/docs/rpm_config.html
	ConfigNoReplaceFiles map[string]string `yaml:"config_noreplace_files,omitempty"`
	Signature            RPMSignature      `yaml:"signature,omitempty"`
	GhostFiles           []string          `yaml:"ghost_files,omitempty"`
}

RPM is custom configs that are only available on RPM packages.

type RPMSignature added in v1.8.0

type RPMSignature struct {
	// PGP secret key, can be ASCII-armored
	KeyFile       string `yaml:"key_file,omitempty"`
	KeyPassphrase string `yaml:"-"` // populated from environment variable
}

type Scripts added in v0.7.0

type Scripts struct {
	PreInstall  string `yaml:"preinstall,omitempty"`
	PostInstall string `yaml:"postinstall,omitempty"`
	PreRemove   string `yaml:"preremove,omitempty"`
	PostRemove  string `yaml:"postremove,omitempty"`
}

Scripts contains information about maintainer scripts for packages.

Source Files

Directories

Path Synopsis
Package acceptance contains acceptance tests
Package acceptance contains acceptance tests
Package apk implements nfpm.Packager providing .apk bindings.
Package apk implements nfpm.Packager providing .apk bindings.
cmd
nfpm
Package main contains the main nfpm cli source code.
Package main contains the main nfpm cli source code.
Package deb implements nfpm.Packager providing .deb bindings.
Package deb implements nfpm.Packager providing .deb bindings.
Package rpm implements nfpm.Packager providing .rpm bindings using google/rpmpack.
Package rpm implements nfpm.Packager providing .rpm bindings using google/rpmpack.
internal
glob
Package glob provides file globbing for use in nfpm.Packager implementations
Package glob provides file globbing for use in nfpm.Packager implementations

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL