Help us shape the future of Go! Take the 2026 Go Developer Survey

nfpm

package module
v1.5.0 Latest Latest
Warning

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

Go to latest
Published: Jul 21, 2020 License: MIT Imports: 13 Imported by: 27

README ΒΆ

GoReleaser Logo

NFPM

NFPM is Not FPM - a simple deb and rpm 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 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"`
	VersionMetadata string     `yaml:"metadata,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"`
}

DebScripts is scripts only available on deb packages.

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

type FileToCopy struct {
	Source      string
	Destination string
	Config      bool
}

FileToCopy describes the source and destination of one file to copy into a package and whether it is a config file.

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"`
	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"`
	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) FilesToCopy ΒΆ added in v1.3.0

func (info *Info) FilesToCopy() ([]FileToCopy, error)

FilesToCopy lists all of the real files to be copied into the package.

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"`
	EmptyFolders []string          `yaml:"empty_folders,omitempty"`
	Scripts      Scripts           `yaml:"scripts,omitempty"`
	RPM          RPM               `yaml:"rpm,omitempty"`
	Deb          Deb               `yaml:"deb,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"`
	Compression string `yaml:"compression,omitempty"`
}

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

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.

Directories ΒΆ

Path Synopsis
Package acceptance contains acceptance tests
Package acceptance contains acceptance tests
cmd
nfpm command
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 glob provides file globbing for use in nfpm.Packager implementations
Package glob provides file globbing for use in nfpm.Packager implementations
internal
helpers
Package helpers provides common helper methods
Package helpers provides common helper methods
Package rpm implements nfpm.Packager providing .rpm bindings using google/rpmpack.
Package rpm implements nfpm.Packager providing .rpm bindings using google/rpmpack.

Jump to

Keyboard shortcuts

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