如何在 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 规范文件中。

看起来 preInstallpostInstall 的参数应该是一个文件而不是内联脚本。

见代码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;
}