Skip to content

Commit

Permalink
fix: snap autocompletions (#1346)
Browse files Browse the repository at this point in the history
closes #1343

Signed-off-by: Carlos Alexandro Becker <caarlos0@gmail.com>
  • Loading branch information
caarlos0 committed Feb 17, 2020
1 parent d7c5405 commit a099acf
Show file tree
Hide file tree
Showing 3 changed files with 23 additions and 17 deletions.
29 changes: 14 additions & 15 deletions internal/pipe/snapcraft/snapcraft.go
Expand Up @@ -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).
Expand All @@ -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).
Expand All @@ -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
Expand Down
11 changes: 9 additions & 2 deletions internal/pipe/snapcraft/snapcraft_test.go
Expand Up @@ -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)
Expand Down Expand Up @@ -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)
Expand All @@ -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)
Expand Down Expand Up @@ -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)
Expand Down Expand Up @@ -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)
Expand Down Expand Up @@ -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)
Expand Down Expand Up @@ -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)
Expand All @@ -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"},
Expand All @@ -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) {
Expand Down

0 comments on commit a099acf

Please sign in to comment.