Skip to content

Commit

Permalink
feat: snap restart-condition (goreleaser#1837)
Browse files Browse the repository at this point in the history
* feat: snap restart-condition

Signed-off-by: Carlos Alexandro Becker <caarlos0@gmail.com>

* docs: restart-condition

Signed-off-by: Carlos Alexandro Becker <caarlos0@gmail.com>
  • Loading branch information
caarlos0 committed Oct 6, 2020
1 parent f41ac3c commit 2d8823b
Show file tree
Hide file tree
Showing 4 changed files with 25 additions and 15 deletions.
14 changes: 8 additions & 6 deletions internal/pipe/snapcraft/snapcraft.go
Original file line number Diff line number Diff line change
Expand Up @@ -49,10 +49,11 @@ type Metadata struct {

// AppMetadata for the binaries that will be in the snap package.
type AppMetadata struct {
Command string
Plugs []string `yaml:",omitempty"`
Daemon string `yaml:",omitempty"`
Completer string `yaml:",omitempty"`
Command string
Plugs []string `yaml:",omitempty"`
Daemon string `yaml:",omitempty"`
Completer string `yaml:",omitempty"`
RestartCondition string `yaml:"restart-condition,omitempty"`
}

const defaultNameTemplate = "{{ .ProjectName }}_{{ .Version }}_{{ .Os }}_{{ .Arch }}{{ if .Arm }}v{{ .Arm }}{{ end }}{{ if .Mips }}_{{ .Mips }}{{ end }}"
Expand Down Expand Up @@ -255,8 +256,9 @@ func create(ctx *context.Context, snap config.Snapcraft, arch string, binaries [
command,
config.Args,
}, " ")),
Plugs: config.Plugs,
Daemon: config.Daemon,
Plugs: config.Plugs,
Daemon: config.Daemon,
RestartCondition: config.RestartCondition,
}

if config.Completer != "" {
Expand Down
10 changes: 6 additions & 4 deletions internal/pipe/snapcraft/snapcraft_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -202,9 +202,10 @@ func TestRunPipeMetadata(t *testing.T) {
Description: "test description",
Apps: map[string]config.SnapcraftAppMetadata{
"mybin": {
Plugs: []string{"home", "network", "personal-files"},
Daemon: "simple",
Args: "--foo --bar",
Plugs: []string{"home", "network", "personal-files"},
Daemon: "simple",
Args: "--foo --bar",
RestartCondition: "always",
},
},
Plugs: map[string]interface{}{
Expand All @@ -231,7 +232,8 @@ func TestRunPipeMetadata(t *testing.T) {
require.Equal(t, []string{"home", "network", "personal-files"}, metadata.Apps["mybin"].Plugs)
require.Equal(t, "simple", metadata.Apps["mybin"].Daemon)
require.Equal(t, "mybin --foo --bar", metadata.Apps["mybin"].Command)
require.Equal(t, map[interface{}]interface{}(map[interface{}]interface{}{"read": []interface{}{"$HOME/test"}}), metadata.Plugs["personal-files"])
require.Equal(t, map[interface{}]interface{}{"read": []interface{}{"$HOME/test"}}, metadata.Plugs["personal-files"])
require.Equal(t, "always", metadata.Apps["mybin"].RestartCondition)
}

func TestNoSnapcraftInPath(t *testing.T) {
Expand Down
11 changes: 6 additions & 5 deletions pkg/config/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -353,11 +353,12 @@ type Sign struct {

// SnapcraftAppMetadata for the binaries that will be in the snap package.
type SnapcraftAppMetadata struct {
Plugs []string
Daemon string
Args string
Completer string `yaml:",omitempty"`
Command string `yaml:"command"`
Plugs []string
Daemon string
Args string
Completer string `yaml:",omitempty"`
Command string `yaml:"command"`
RestartCondition string `yaml:"restart_condition,omitempty"`
}

// Snapcraft config.
Expand Down
5 changes: 5 additions & 0 deletions www/docs/customization/snapcraft.md
Original file line number Diff line number Diff line change
Expand Up @@ -128,6 +128,11 @@ snapcrafts:
# Defaults is the app name.
command: bin/drumroll.wrapper

# Restart condition of the snap.
# Defaults to empty.
# https://snapcraft.io/docs/snapcraft-yaml-reference
restart_condition: "always"

# Allows plugs to be configured. Plugs like system-files and personal-files
# require this.
# Default is empty.
Expand Down

0 comments on commit 2d8823b

Please sign in to comment.