1
0
mirror of https://github.com/goreleaser/goreleaser.git synced 2025-02-09 13:36:56 +02:00

fix: snap autocompletions (#1346)

closes #1343

Signed-off-by: Carlos Alexandro Becker <caarlos0@gmail.com>
This commit is contained in:
Carlos Alexandro Becker 2020-02-17 09:12:32 -03:00 committed by GitHub
parent d7c540523d
commit a099acf5f5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 23 additions and 17 deletions

View File

@ -210,7 +210,6 @@ func create(ctx *context.Context, snap config.Snapcraft, arch string, binaries [
for _, binary := range binaries {
// build the binaries and link resources
completerPath := ""
destBinaryPath := filepath.Join(primeDir, filepath.Base(binary.Path))
log.WithField("src", binary.Path).
WithField("dst", destBinaryPath).
@ -223,19 +222,6 @@ func create(ctx *context.Context, snap config.Snapcraft, arch string, binaries [
return errors.Wrap(err, "failed to change binary permissions")
}
if completerPath != "" {
destCompleterPath := filepath.Join(primeDir, filepath.Base(completerPath))
log.WithField("src", completerPath).
WithField("dst", destCompleterPath).
Debug("linking")
if err := os.Link(completerPath, destCompleterPath); err != nil {
return errors.Wrap(err, "failed to link completer")
}
if err := os.Chmod(destCompleterPath, 0444); err != nil {
return errors.Wrap(err, "failed to change completer permissions")
}
}
// setup the apps: directive for each binary
for name, config := range snap.Apps {
log.WithField("path", binary.Path).
@ -252,7 +238,20 @@ func create(ctx *context.Context, snap config.Snapcraft, arch string, binaries [
}
if config.Completer != "" {
appMetadata.Completer = filepath.Base(config.Completer)
destCompleterPath := filepath.Join(primeDir, config.Completer)
if err := os.MkdirAll(filepath.Dir(destCompleterPath), 0755); err != nil {
return errors.Wrapf(err, "failed to create folder")
}
log.WithField("src", config.Completer).
WithField("dst", destCompleterPath).
Debug("linking")
if err := os.Link(config.Completer, destCompleterPath); err != nil {
return errors.Wrap(err, "failed to link completer")
}
if err := os.Chmod(destCompleterPath, 0444); err != nil {
return errors.Wrap(err, "failed to change completer permissions")
}
appMetadata.Completer = config.Completer
}
metadata.Apps[name] = appMetadata

View File

@ -46,6 +46,7 @@ func TestRunPipeMissingInfo(t *testing.T) {
func TestRunPipe(t *testing.T) {
folder, err := ioutil.TempDir("", "archivetest")
assert.NoError(t, err)
defer os.RemoveAll(folder)
var dist = filepath.Join(folder, "dist")
assert.NoError(t, os.Mkdir(dist, 0755))
assert.NoError(t, err)
@ -88,6 +89,7 @@ func TestRunPipe(t *testing.T) {
func TestRunPipeInvalidNameTemplate(t *testing.T) {
folder, err := ioutil.TempDir("", "archivetest")
assert.NoError(t, err)
defer os.RemoveAll(folder)
var dist = filepath.Join(folder, "dist")
assert.NoError(t, os.Mkdir(dist, 0755))
assert.NoError(t, err)
@ -112,6 +114,7 @@ func TestRunPipeInvalidNameTemplate(t *testing.T) {
func TestRunPipeWithName(t *testing.T) {
folder, err := ioutil.TempDir("", "archivetest")
assert.NoError(t, err)
defer os.RemoveAll(folder)
var dist = filepath.Join(folder, "dist")
assert.NoError(t, os.Mkdir(dist, 0755))
assert.NoError(t, err)
@ -148,6 +151,7 @@ func TestRunPipeWithName(t *testing.T) {
func TestRunPipeWithBinaryInDir(t *testing.T) {
folder, err := ioutil.TempDir("", "archivetest")
assert.NoError(t, err)
defer os.RemoveAll(folder)
var dist = filepath.Join(folder, "dist")
assert.NoError(t, os.Mkdir(dist, 0755))
assert.NoError(t, err)
@ -182,6 +186,7 @@ func TestRunPipeWithBinaryInDir(t *testing.T) {
func TestRunPipeMetadata(t *testing.T) {
folder, err := ioutil.TempDir("", "archivetest")
assert.NoError(t, err)
defer os.RemoveAll(folder)
var dist = filepath.Join(folder, "dist")
assert.NoError(t, os.Mkdir(dist, 0755))
assert.NoError(t, err)
@ -248,6 +253,7 @@ func TestNoSnapcraftInPath(t *testing.T) {
func TestRunNoArguments(t *testing.T) {
folder, err := ioutil.TempDir("", "archivetest")
assert.NoError(t, err)
defer os.RemoveAll(folder)
var dist = filepath.Join(folder, "dist")
assert.NoError(t, os.Mkdir(dist, 0755))
assert.NoError(t, err)
@ -284,6 +290,7 @@ func TestRunNoArguments(t *testing.T) {
func TestCompleter(t *testing.T) {
folder, err := ioutil.TempDir("", "archivetest")
require.NoError(t, err)
defer os.RemoveAll(folder)
var dist = filepath.Join(folder, "dist")
require.NoError(t, os.Mkdir(dist, 0755))
require.NoError(t, err)
@ -299,7 +306,7 @@ func TestCompleter(t *testing.T) {
"mybin": {
Daemon: "simple",
Args: "",
Completer: "mybin-completer.bash",
Completer: "testdata/mybin-completer.bash",
},
},
Builds: []string{"foo"},
@ -316,7 +323,7 @@ func TestCompleter(t *testing.T) {
err = yaml.Unmarshal(yamlFile, &metadata)
require.NoError(t, err)
assert.Equal(t, "mybin", metadata.Apps["mybin"].Command)
assert.Equal(t, "mybin-completer.bash", metadata.Apps["mybin"].Completer)
assert.Equal(t, "testdata/mybin-completer.bash", metadata.Apps["mybin"].Completer)
}
func TestDefault(t *testing.T) {