blob: cb7d60d30022cb916e931544fed6afbc2da6f78e [file] [log] [blame]
/*
* Copyright 2012 Research In Motion Limited.
*
* 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.
*/
var path = require('path'),
fs = require("fs"),
os = require('os'),
childProcess = require("child_process"),
util = require("util"),
utils = require("./utils"),
conf = require("./conf"),
pkgrUtils = require("./packager-utils"),
logger = require("./logger"),
AUTHOR_P12 = "author.p12",
CSK = "barsigner.csk",
DB = "barsigner.db",
_self;
function getDefaultPath(file) {
// The default location where signing key files are stored will vary based on the OS:
// Windows XP: %HOMEPATH%\Local Settings\Application Data\Research In Motion
// Windows Vista and Windows 7: %HOMEPATH%\AppData\Local\Research In Motion
// Mac OS: ~/Library/Research In Motion
// UNIX or Linux: ~/.rim
var p = "";
if (os.type().toLowerCase().indexOf("windows") >= 0) {
// Try Windows XP location
p = process.env.HOMEDRIVE + process.env.HOMEPATH + "\\Local Settings\\Application Data\\Research In Motion\\" + file;
if (fs.existsSync(p)) {
return p;
}
// Try Windows Vista and Windows 7 location
p = process.env.HOMEDRIVE + process.env.HOMEPATH + "\\AppData\\Local\\Research In Motion\\" + file;
if (fs.existsSync(p)) {
return p;
}
} else if (os.type().toLowerCase().indexOf("darwin") >= 0) {
// Try Mac OS location
p = process.env.HOME + "/Library/Research In Motion/" + file;
if (fs.existsSync(p)) {
return p;
}
} else if (os.type().toLowerCase().indexOf("linux") >= 0) {
// Try Linux location
p = process.env.HOME + "/.rim/" + file;
if (fs.existsSync(p)) {
return p;
}
}
}
function execSigner(session, target, callback) {
var script = path.join(process.env.CORDOVA_BBTOOLS, "blackberry-signer"),
signer,
params = session.getParams("blackberry-signer"),
args = [];
args.push("-keystore");
args.push(session.keystore);
args.push("-storepass");
args.push(session.storepass);
if (params) {
Object.getOwnPropertyNames(params).forEach(function (p) {
args.push(p);
if (params[p]) {
args.push(params[p]);
}
});
}
args.push(path.resolve(util.format(session.barPath, target)));
utils.exec(script, args, {
"env": process.env
}, callback);
}
_self = {
getKeyStorePath : function () {
// Todo: decide where to put sigtool.p12 which is genereated and used in WebWorks SDK for Tablet OS
return getDefaultPath(AUTHOR_P12);
},
getCskPath : function () {
return getDefaultPath(CSK);
},
getDbPath : function () {
return getDefaultPath(DB);
},
execSigner: execSigner
};
module.exports = _self;