kibana/tasks/build/os_packages.js

77 lines
2.7 KiB
JavaScript
Raw Normal View History

2016-05-25 22:19:16 +02:00
import { resolve } from 'path';
import { indexBy } from 'lodash';
import exec from '../utils/exec';
2016-05-25 21:21:36 +02:00
2016-05-25 22:19:16 +02:00
export default (grunt) => {
const targetDir = grunt.config.get('target');
const packageScriptsDir = grunt.config.get('packageScriptsDir');
const servicesByName = indexBy(grunt.config.get('services'), 'name');
const config = grunt.config.get('packages');
2016-05-25 22:15:09 +02:00
const fpm = args => exec('fpm', args);
2015-08-14 06:16:54 +02:00
grunt.registerTask('_build:osPackages', function () {
2016-05-25 22:19:16 +02:00
grunt.config.get('platforms')
2016-05-25 22:15:09 +02:00
.filter(({ name }) => /linux-x(86|64)$/.test(name))
.map(({ name, buildDir }) => {
const architecture = /x64$/.test(name) ? 'x86_64' : 'i386';
return {
buildDir,
architecture
};
})
.forEach(({ buildDir, architecture }) => {
const baseOptions = [
'--force',
'--package', targetDir,
'-s', 'dir', // input type
2016-05-25 22:15:09 +02:00
'--architecture', architecture,
2016-05-25 22:19:16 +02:00
'--name', config.name,
'--description', config.description,
'--version', config.version,
'--url', config.site,
'--vendor', config.vendor,
'--maintainer', config.maintainer,
'--license', config.license,
'--after-install', resolve(packageScriptsDir, 'post_install.sh'),
'--before-install', resolve(packageScriptsDir, 'pre_install.sh'),
'--before-remove', resolve(packageScriptsDir, 'pre_remove.sh'),
'--after-remove', resolve(packageScriptsDir, 'post_remove.sh'),
2016-05-25 22:19:16 +02:00
'--config-files', config.path.kibanaConfig,
'--template-value', `user=${config.user}`,
'--template-value', `group=${config.group}`,
2016-05-25 23:27:20 +02:00
'--template-value', `optimizeDir=${config.path.home}/optimize`,
2016-05-25 21:21:36 +02:00
//config folder is moved to path.conf, exclude {path.home}/config
//uses relative path to --prefix, strip the leading /
2016-05-25 22:19:16 +02:00
'--exclude', `${config.path.home.slice(1)}/config`
2015-08-14 06:16:54 +02:00
];
2016-05-25 22:15:09 +02:00
const debOptions = [
'-t', 'deb',
'--deb-priority', 'optional'
];
const rpmOptions = [
'-t', 'rpm',
'--rpm-os', 'linux'
];
const args = [
2016-05-25 22:19:16 +02:00
`${buildDir}/=${config.path.home}/`,
`${buildDir}/config/=${config.path.conf}/`,
`${servicesByName.sysv.outputDir}/etc/=/etc/`,
`${servicesByName.systemd.outputDir}/lib/=/lib/`
];
2015-08-14 06:16:54 +02:00
//Manually find flags, multiple args without assignment are not entirely parsed
2016-05-25 22:19:16 +02:00
const flags = grunt.option.flags().filter(flag => /deb|rpm/.test(flag)).join(',');
2016-05-25 22:15:09 +02:00
const buildDeb = flags.includes('deb') || !flags.length;
const buildRpm = flags.includes('rpm') || !flags.length;
if (buildDeb) {
fpm([...baseOptions, ...debOptions, ...args]);
2015-08-14 06:16:54 +02:00
}
2016-05-25 22:15:09 +02:00
if (buildRpm) {
fpm([...baseOptions, ...rpmOptions, ...args]);
}
2015-08-14 06:16:54 +02:00
});
});
};