Skip to content

Instantly share code, notes, and snippets.

@cherifGsoul
Last active June 13, 2019 20:52
Show Gist options
  • Save cherifGsoul/def29ecbfa9ff53b859d466c7929870c to your computer and use it in GitHub Desktop.
Save cherifGsoul/def29ecbfa9ff53b859d466c7929870c to your computer and use it in GitHub Desktop.
var fs = require('fs');
var path = require('path');
var yaml = require('js-yaml');
module.exports = {
getOptions: function () {
return [];
},
updateTravis,
run: function (directory, opts) {
return Promise.all([
getTravisFileByName(directory, '.travis')
]).then(([travis]) => {
return new Promise(function (resolve, reject) {
if (!travis) {
travis = path.join(directory, '.travis.yml');
return resolve('');
}
fs.readFile(travis, {encoding: 'utf8'}, function (error, text) {
error ? reject(error) : resolve(text);
});
}).then(function (text) {
var travis = updateTravis(text);
return travis;
}).then(function (newText) {
return new Promise(function (resolve, reject) {
fs.writeFile(travis, newText, function (error) {
error ? reject(error) : resolve();
});
});
});
});
}
};
function getTravisFileByName(directory, name){
return new Promise((resolve, reject) => {
fs.readdir(directory, (err, files) => {
if(err) return reject(err);
var fileName = files.find(item => {
item = item.toLowerCase();
return item.startsWith(name) && item.endsWith('yml') || item === name;
});
resolve(fileName ? path.join(directory, fileName) : null);
});
});
}
function updateTravis(text) {
let ymlObject = yaml.load(text);
ymlObject.dist = "xenial";
if (ymlObject.before_install) {
delete ymlObject.before_install;
}
const services = `services:\n - xvfb`;
const servicesObject = yaml.load(services);
Object.assign(ymlObject, servicesObject);
return yaml.safeDump(ymlObject);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment