Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: snap autocompletions #1346

Merged
merged 1 commit into from Feb 17, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
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