如何在 grunt-rpm 插件中添加 shell 命令到 postInstall 和 preInstall
how to add shell commands to postInstall and preInstall in grunt-rpm plugin
在 documentation 之后,我能够设置 grunt 任务并成功构建。
现在我需要 preInstall 和 postInstall 脚本,但我找不到任何关于如何执行此操作的文档。
这是我的设置:
rpm: {
options: {
// Task-specific options go here.
name: 'cdrapi',
version: '1.0.0',
release: false,
homepage: 'www.website.com',
summary: 'api package',
license: '??',
distribution: 'CentOS 6.x',
requires: ['nodejs'],
preInstall: 'echo "You are in the pre install section"'
},
files: {
dest: '/opt/cdr/api/',
src: ['**/*', '!**/*.map', '!**/**/*.ts', '!**/bdd_tests/**'],
cwd: 'build',
expand: true
}
}
上面的 preInstall 标签没有做任何事情,它甚至不会反映在 rpm 规范文件中。
看起来 preInstall
和 postInstall
的参数应该是一个文件而不是内联脚本。
见代码here:
src += readScriptlet('\n%pre', options.preInstall);
src += readScriptlet('\n%post', options.postInstall);
src += readScriptlet('\n%preun', options.preUninstall);
src += readScriptlet('\n%postun', options.postUninstall);
和readScriptlet函数:
function readScriptlet(label, scriptFile) {
var src = '';
if (scriptFile) {
var options = {
encoding: scriptFile.encoding || 'utf8'
};
var data = fs.readFileSync(scriptFile.src, options);
src += label + '\n';
src += data.trim() + '\n\n';
}
return src;
}
在 documentation 之后,我能够设置 grunt 任务并成功构建。 现在我需要 preInstall 和 postInstall 脚本,但我找不到任何关于如何执行此操作的文档。
这是我的设置:
rpm: {
options: {
// Task-specific options go here.
name: 'cdrapi',
version: '1.0.0',
release: false,
homepage: 'www.website.com',
summary: 'api package',
license: '??',
distribution: 'CentOS 6.x',
requires: ['nodejs'],
preInstall: 'echo "You are in the pre install section"'
},
files: {
dest: '/opt/cdr/api/',
src: ['**/*', '!**/*.map', '!**/**/*.ts', '!**/bdd_tests/**'],
cwd: 'build',
expand: true
}
}
上面的 preInstall 标签没有做任何事情,它甚至不会反映在 rpm 规范文件中。
看起来 preInstall
和 postInstall
的参数应该是一个文件而不是内联脚本。
见代码here:
src += readScriptlet('\n%pre', options.preInstall);
src += readScriptlet('\n%post', options.postInstall);
src += readScriptlet('\n%preun', options.preUninstall);
src += readScriptlet('\n%postun', options.postUninstall);
和readScriptlet函数:
function readScriptlet(label, scriptFile) {
var src = '';
if (scriptFile) {
var options = {
encoding: scriptFile.encoding || 'utf8'
};
var data = fs.readFileSync(scriptFile.src, options);
src += label + '\n';
src += data.trim() + '\n\n';
}
return src;
}