From a0a5c9cbeecc40dbaaf3c0bba73f1475ba65f494 Mon Sep 17 00:00:00 2001 From: Segev Finer Date: Tue, 8 Jan 2019 00:40:15 +0200 Subject: [PATCH] Bundle/Install completions with the correct appname Fixes #66154 --- build/gulpfile.vscode.js | 7 ++++++- build/gulpfile.vscode.linux.js | 24 ++++++++++++++---------- resources/completions/bash/code | 4 ++-- resources/completions/zsh/_code | 2 +- resources/linux/rpm/code.spec.template | 12 ++++++------ 5 files changed, 29 insertions(+), 20 deletions(-) diff --git a/build/gulpfile.vscode.js b/build/gulpfile.vscode.js index 2a39f8196bf..0b6bc57404e 100644 --- a/build/gulpfile.vscode.js +++ b/build/gulpfile.vscode.js @@ -385,7 +385,12 @@ function packageTask(platform, arch, opts) { .pipe(electron(_.extend({}, config, { platform, arch, ffmpegChromium: true }))) .pipe(filter(['**', '!LICENSE', '!LICENSES.chromium.html', '!version'])); - // result = es.merge(result, gulp.src('resources/completions/**', { base: '.' })); + result = es.merge(result, gulp.src('resources/completions/bash/code', { base: '.' }) + .pipe(replace('@@APPNAME@@', product.applicationName)) + .pipe(rename(function (f) { f.basename = product.applicationName; }))); + result = es.merge(result, gulp.src('resources/completions/zsh/_code', { base: '.' }) + .pipe(replace('@@APPNAME@@', product.applicationName)) + .pipe(rename(function (f) { f.basename = '_' + product.applicationName; }))); if (platform === 'win32') { result = es.merge(result, gulp.src('resources/win32/bin/code.js', { base: 'resources/win32' })); diff --git a/build/gulpfile.vscode.linux.js b/build/gulpfile.vscode.linux.js index 006235ebeaf..212dda85624 100644 --- a/build/gulpfile.vscode.linux.js +++ b/build/gulpfile.vscode.linux.js @@ -53,11 +53,13 @@ function prepareDebPackage(arch) { const icon = gulp.src('resources/linux/code.png', { base: '.' }) .pipe(rename('usr/share/pixmaps/' + product.applicationName + '.png')); - // const bash_completion = gulp.src('resources/completions/bash/code') - // .pipe(rename('usr/share/bash-completion/completions/code')); + const bash_completion = gulp.src('resources/completions/bash/code') + .pipe(replace('@@APPNAME@@', product.applicationName)) + .pipe(rename('usr/share/bash-completion/completions/' + product.applicationName)); - // const zsh_completion = gulp.src('resources/completions/zsh/_code') - // .pipe(rename('usr/share/zsh/vendor-completions/_code')); + const zsh_completion = gulp.src('resources/completions/zsh/_code') + .pipe(replace('@@APPNAME@@', product.applicationName)) + .pipe(rename('usr/share/zsh/vendor-completions/_' + product.applicationName)); const code = gulp.src(binaryDir + '/**/*', { base: binaryDir }) .pipe(rename(function (p) { p.dirname = 'usr/share/' + product.applicationName + '/' + p.dirname; })); @@ -93,7 +95,7 @@ function prepareDebPackage(arch) { .pipe(replace('@@UPDATEURL@@', product.updateUrl || '@@UPDATEURL@@')) .pipe(rename('DEBIAN/postinst')); - const all = es.merge(control, postinst, postrm, prerm, desktops, appdata, icon, /* bash_completion, zsh_completion, */ code); + const all = es.merge(control, postinst, postrm, prerm, desktops, appdata, icon, bash_completion, zsh_completion, code); return all.pipe(vfs.dest(destination)); }; @@ -143,11 +145,13 @@ function prepareRpmPackage(arch) { const icon = gulp.src('resources/linux/code.png', { base: '.' }) .pipe(rename('BUILD/usr/share/pixmaps/' + product.applicationName + '.png')); - // const bash_completion = gulp.src('resources/completions/bash/code') - // .pipe(rename('BUILD/usr/share/bash-completion/completions/code')); + const bash_completion = gulp.src('resources/completions/bash/code') + .pipe(replace('@@APPNAME@@', product.applicationName)) + .pipe(rename('BUILD/usr/share/bash-completion/completions/' + product.applicationName)); - // const zsh_completion = gulp.src('resources/completions/zsh/_code') - // .pipe(rename('BUILD/usr/share/zsh/site-functions/_code')); + const zsh_completion = gulp.src('resources/completions/zsh/_code') + .pipe(replace('@@APPNAME@@', product.applicationName)) + .pipe(rename('BUILD/usr/share/zsh/site-functions/_' + product.applicationName)); const code = gulp.src(binaryDir + '/**/*', { base: binaryDir }) .pipe(rename(function (p) { p.dirname = 'BUILD/usr/share/' + product.applicationName + '/' + p.dirname; })); @@ -169,7 +173,7 @@ function prepareRpmPackage(arch) { const specIcon = gulp.src('resources/linux/rpm/code.xpm', { base: '.' }) .pipe(rename('SOURCES/' + product.applicationName + '.xpm')); - const all = es.merge(code, desktops, appdata, icon, /* bash_completion, zsh_completion, */ spec, specIcon); + const all = es.merge(code, desktops, appdata, icon, bash_completion, zsh_completion, spec, specIcon); return all.pipe(vfs.dest(getRpmBuildPath(rpmArch))); }; diff --git a/resources/completions/bash/code b/resources/completions/bash/code index e377c5d24e2..9340e946ea6 100644 --- a/resources/completions/bash/code +++ b/resources/completions/bash/code @@ -1,4 +1,4 @@ -_code() +_@@APPNAME@@() { local cur prev words cword split _init_completion -s || return @@ -58,4 +58,4 @@ _code() _filedir } && -complete -F _code code +complete -F _@@APPNAME@@ @@APPNAME@@ diff --git a/resources/completions/zsh/_code b/resources/completions/zsh/_code index 9579cffb2f6..a3526e262d3 100644 --- a/resources/completions/zsh/_code +++ b/resources/completions/zsh/_code @@ -1,4 +1,4 @@ -#compdef code +#compdef @@APPNAME@@ local arguments diff --git a/resources/linux/rpm/code.spec.template b/resources/linux/rpm/code.spec.template index 350c05516e2..a9bcc3af830 100644 --- a/resources/linux/rpm/code.spec.template +++ b/resources/linux/rpm/code.spec.template @@ -18,14 +18,14 @@ Visual Studio Code is a new choice of tool that combines the simplicity of a cod mkdir -p %{buildroot}/usr/share/@@NAME@@ mkdir -p %{buildroot}/usr/share/applications mkdir -p %{buildroot}/usr/share/pixmaps -#mkdir -p %{buildroot}/usr/share/bash-completion/completions -#mkdir -p %{buildroot}/usr/share/zsh/site-functions +mkdir -p %{buildroot}/usr/share/bash-completion/completions +mkdir -p %{buildroot}/usr/share/zsh/site-functions cp -r usr/share/@@NAME@@/* %{buildroot}/usr/share/@@NAME@@ cp -r usr/share/applications/@@NAME@@.desktop %{buildroot}/usr/share/applications cp -r usr/share/applications/@@NAME@@-url-handler.desktop %{buildroot}/usr/share/applications cp -r usr/share/pixmaps/@@NAME@@.png %{buildroot}/usr/share/pixmaps -#cp usr/share/bash-completion/completions/code %{buildroot}/usr/share/bash-completion/completions/code -#cp usr/share/zsh/site-functions/_code %{buildroot}/usr/share/zsh/site-functions/_code +cp usr/share/bash-completion/completions/@@NAME@@ %{buildroot}/usr/share/bash-completion/completions/@@NAME@@ +cp usr/share/zsh/site-functions/_@@NAME@@ %{buildroot}/usr/share/zsh/site-functions/_@@NAME@@ %post # Remove the legacy bin command if this is the stable build @@ -58,5 +58,5 @@ fi /usr/share/applications/@@NAME@@.desktop /usr/share/applications/@@NAME@@-url-handler.desktop /usr/share/pixmaps/@@NAME@@.png -#/usr/share/bash-completion/completions/code -#/usr/share/zsh/site-functions/_code +/usr/share/bash-completion/completions/@@NAME@@ +/usr/share/zsh/site-functions/_@@NAME@@