153 lines
4.1 KiB
JavaScript
153 lines
4.1 KiB
JavaScript
/*
|
|
* Copyright (c) 2016 Hewlett Packard Enterprise Development Company, LP
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License"); you may
|
|
* not use this file except in compliance with the License. You may obtain
|
|
* a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
|
* License for the specific language governing permissions and limitations
|
|
* under the License.
|
|
*/
|
|
|
|
/**
|
|
* gerrit module
|
|
* @module
|
|
*/
|
|
|
|
'use strict';
|
|
|
|
var projectBuilder = require('../project_builder');
|
|
var pkgBuilder = require('../pkg_builder');
|
|
var ini = require('ini');
|
|
var Q = require('q');
|
|
|
|
var gerritFile = '.gitreview';
|
|
var iniContent;
|
|
var gerritFileExists = false;
|
|
|
|
/**
|
|
* Internal helper method. Returns true if gerrit has been enabled.
|
|
*
|
|
* @param {String} answers The collection of answers.
|
|
* @returns {Function} True if enableGerrit is set, otherwise false.
|
|
*/
|
|
var gerritEnabled = function(answers) {
|
|
return !!answers.enableGerrit;
|
|
};
|
|
|
|
/**
|
|
* Initialize the gerrit component of this generator. In this case, we're
|
|
* only adding default configuration values.
|
|
*
|
|
* @param {generator} generator The currently active generator.
|
|
* @returns {generator} The passed generator, for promise chaining.
|
|
*/
|
|
function init (generator) {
|
|
// Define our defaults
|
|
iniContent = {
|
|
gerrit: {
|
|
host: 'review.openstack.org',
|
|
port: '29418',
|
|
project: 'openstack/test-project.git'
|
|
}
|
|
};
|
|
return generator;
|
|
}
|
|
|
|
/**
|
|
* Initialize the gerrit component of this generator. In this case, we're
|
|
* only adding default configuration values.
|
|
*
|
|
* @param {generator} generator The currently active generator.
|
|
* @returns {generator} The passed generator, for promise chaining.
|
|
*/
|
|
function prompt (generator) {
|
|
|
|
// Read the existing file and populate it as defaults.
|
|
if (generator.fs.exists(gerritFile)) {
|
|
gerritFileExists = true;
|
|
iniContent = ini.parse(generator.fs.read(gerritFile));
|
|
} else {
|
|
// Create project name from package name if gerrit file does not exist
|
|
var projectName = pkgBuilder.getValue("name");
|
|
iniContent.gerrit.project = 'openstack/' + projectName + '.git';
|
|
}
|
|
|
|
var deferred = Q.defer();
|
|
|
|
if (!generator.options['non-interactive']) {
|
|
// Go through the prompts.
|
|
generator.prompt(
|
|
[{
|
|
type: 'confirm',
|
|
name: 'enableGerrit',
|
|
message: 'Gerrit- Enable:',
|
|
default: gerritFileExists
|
|
}, {
|
|
when: gerritEnabled,
|
|
type: 'input',
|
|
name: 'gerritHost',
|
|
message: 'Gerrit- Host:',
|
|
default: iniContent.gerrit.host
|
|
}, {
|
|
when: gerritEnabled,
|
|
type: 'input',
|
|
name: 'gerritPort',
|
|
message: 'Gerrit- Port:',
|
|
default: iniContent.gerrit.port
|
|
}, {
|
|
when: gerritEnabled,
|
|
type: 'input',
|
|
name: 'gerritProject',
|
|
message: 'Gerrit- Project Path:',
|
|
default: iniContent.gerrit.project
|
|
}],
|
|
function(answers) {
|
|
gerritFileExists = answers.enableGerrit;
|
|
iniContent.gerrit = {
|
|
host: answers.gerritHost,
|
|
port: answers.gerritPort,
|
|
project: answers.gerritProject
|
|
};
|
|
deferred.resolve(generator);
|
|
});
|
|
} else {
|
|
deferred.resolve(generator);
|
|
}
|
|
return deferred.promise;
|
|
}
|
|
|
|
/**
|
|
* Configure gerrit
|
|
*
|
|
* @param {generator} generator The currently active generator.
|
|
* @returns {generator} The passed generator, for promise chaining.
|
|
*/
|
|
function configure (generator) {
|
|
if (gerritFileExists) {
|
|
projectBuilder.writeFile(gerritFile, buildGerritFile);
|
|
} else {
|
|
projectBuilder.removeFile(gerritFile);
|
|
}
|
|
|
|
return generator;
|
|
}
|
|
|
|
function buildGerritFile () {
|
|
return ini.stringify(iniContent);
|
|
}
|
|
|
|
module.exports = {
|
|
/** @see {@link module:component/gerrit~init} */
|
|
init: init,
|
|
/** @see {@link module:component/gerrit~prompt} */
|
|
prompt: prompt,
|
|
/** @see {@link module:component/gerrit~configure} */
|
|
configure: configure
|
|
};
|