methods for determining and setting git rev for appium; include in /status

fix #612
This commit is contained in:
Jonathan Lipps
2013-05-24 09:56:13 -07:00
parent 4ad63c84e7
commit 23403f3002
5 changed files with 44 additions and 11 deletions
+13
View File
@@ -17,6 +17,8 @@ var path = require('path')
, generateServerDocs = gruntHelpers.generateServerDocs
, generateAppiumIo = gruntHelpers.generateAppiumIo
, setDeviceConfigVer = gruntHelpers.setDeviceConfigVer
, setGitRev = gruntHelpers.setGitRev
, getGitRev = require('./app/helpers').getGitRev
, runTestsWithServer = gruntHelpers.runTestsWithServer;
module.exports = function(grunt) {
@@ -160,4 +162,15 @@ module.exports = function(grunt) {
grunt.registerTask('setConfigVer', function(device) {
setDeviceConfigVer(grunt, device, this.async());
});
grunt.registerTask('setGitRev', function(rev) {
var done = this.async();
if (typeof rev === "undefined") {
getGitRev(function(err, rev) {
if (err) throw err;
setGitRev(grunt, rev, done);
});
} else {
setGitRev(grunt, rev, done);
}
});
};
+7 -3
View File
@@ -7,6 +7,7 @@ var status = require('./uiauto/lib/status')
, swig = require('swig')
, path = require('path')
, version = require('../package.json').version
, getGitRev = require('./helpers.js').getGitRev
, _ = require('underscore');
function getResponseHandler(req, res) {
@@ -143,9 +144,12 @@ exports.sessionBeforeFilter = function(req, res, next) {
exports.getStatus = function(req, res) {
// Return a static JSON object to the client
respondSuccess(req, res, {
build: {version: version}
});
var gitSha = req.appium.serverConfig['git-sha'];
var data = {build: {version: version}};
if (typeof gitSha !== "undefined") {
data.build.revision = gitSha;
}
respondSuccess(req, res, data);
};
exports.createSession = function(req, res) {
+13 -7
View File
@@ -137,13 +137,15 @@ module.exports.tail = function(grunt, filename, cb) {
};
module.exports.setDeviceConfigVer = function(grunt, device, cb) {
var value = {version: appiumVer};
exports.writeConfigKey(grunt, device, value, cb);
};
module.exports.writeConfigKey = function(grunt, key, value, cb) {
var configPath = path.resolve(__dirname, '.appiumconfig');
fs.readFile(configPath, function(err, data) {
var writeVer = function(config) {
if (typeof config[device] === "undefined") {
config[device] = {};
}
config[device].version = appiumVer;
var writeConfig = function(config) {
config[key] = value;
grunt.log.write("\n");
grunt.log.write(JSON.stringify(config));
fs.writeFile(configPath, JSON.stringify(config), cb);
@@ -151,14 +153,18 @@ module.exports.setDeviceConfigVer = function(grunt, device, cb) {
if (err) {
grunt.log.write("Config file doesn't exist, creating it");
var config = {};
writeVer(config);
writeConfig(config);
} else {
grunt.log.write("Config file exists, updating it");
writeVer(JSON.parse(data.toString('utf8')));
writeConfig(JSON.parse(data.toString('utf8')));
}
});
};
module.exports.setGitRev = function(grunt, rev, cb) {
exports.writeConfigKey(grunt, "git-sha", rev, cb);
};
module.exports.authorize = function(grunt, cb) {
// somewhat messily ported from penguinho's authorize.py
var authFile = '/etc/authorization';
+2
View File
@@ -59,6 +59,8 @@ reset_general() {
run_cmd sudo npm install .
fi
run_cmd mkdir -p build
echo "* Setting git revision data"
run_cmd $grunt setGitRev
}
reset_ios() {
+9 -1
View File
@@ -8,6 +8,7 @@ var http = require('http')
, bodyParser = require('./middleware').parserWrap
, status = require('./app/uiauto/lib/status')
, appiumVer = require('./package.json').version
, appiumRev = null
, async = require('async')
, _ = require("underscore")
, parser = require('./app/parser')
@@ -89,8 +90,10 @@ var main = function(args, readyCb, doneCb) {
}
var versionMismatches = {};
_.each(rawConfig, function(deviceConfig, key) {
if (deviceConfig.version !== appiumVer) {
if (deviceConfig.version !== appiumVer && key !== "git-sha") {
versionMismatches[key] = deviceConfig.version;
} else if (key === "git-sha") {
appiumRev = rawConfig['git-sha'];
}
});
if (_.keys(versionMismatches).length) {
@@ -127,6 +130,11 @@ var main = function(args, readyCb, doneCb) {
var startListening = function(cb) {
var alreadyReturned = false;
server.listen(args.port, args.address, function() {
var welcome = "Welcome to Appium v" + appiumVer;
if (appiumRev) {
welcome += " (REV " + appiumRev + ")";
}
logger.info(welcome.cyan);
var logMessage = "Appium REST http interface listener started on " +
args.address + ":" + args.port;
logger.info(logMessage.cyan);