fix plugin manager on windows

pull/85/head
nightwing 2015-04-04 00:13:29 +04:00 zatwierdzone przez nightwing
rodzic fd9092aabe
commit b5b6255302
4 zmienionych plików z 24 dodań i 7 usunięć

Wyświetl plik

@ -7,6 +7,17 @@ module.exports = function(options) {
assert(options.workspaceName, "Option 'workspaceName' must be set");
assert(options.home, "Option 'home' must be set");
assert(options.platform, "Option 'platform' must be set");
// normalize workspacedir and home paths
function normalize(path) {
path = path.replace(/([^/])\/$/, "$1");
if (options.platform == "win32")
path = path.replace(/\\/g, "/");
return path;
}
options.workspaceDir = normalize(options.workspaceDir);
options.installPath = normalize(options.installPath);
options.home = normalize(options.home);
var workspaceDir = options.workspaceDir;
var debug = options.debug !== undefined ? options.debug : false;

Wyświetl plik

@ -348,10 +348,10 @@ define(function(require, exports, module) {
};
plugin.escapeShell = function(cmd) {
var re = /([\#\&\;\`\|\*\?<>\^\(\)\[\]\{\}\$\,\x0A\xFF\' \"])/g;
var re = /([\#\&\;\`\|\*\?<>\^\(\)\[\]\{\}\$\,\x0A\xFF\' \"\\])/g;
return cmd.replace(re, "\\$1");//.replace(/^~/, "\\~");
};
var cloneObject = plugin.cloneObject = function(obj) {
if (obj === null || typeof obj !== "object")
return obj;

Wyświetl plik

@ -1,6 +1,6 @@
define(function(require, exports, module) {
main.consumes = [
"Plugin", "proc", "c9", "pubsub", "auth"
"Plugin", "proc", "c9", "pubsub", "auth", "util"
];
main.provides = ["plugin.installer"];
return main;
@ -8,10 +8,12 @@ define(function(require, exports, module) {
function main(options, imports, register) {
var Plugin = imports.Plugin;
var c9 = imports.c9;
var util = imports.util;
var proc = imports.proc;
var auth = imports.auth;
var pubsub = imports.pubsub;
var escapeShell = util.escapeShell;
var updates = options.updates;
var architect;
@ -103,7 +105,7 @@ define(function(require, exports, module) {
function installPlugin(name, version, callback){
proc.spawn("bash", {
args: ["-c", ["c9", "install", "--local", "--force", "--accessToken=" + auth.accessToken, name + "@" + version].join(" ")]
args: ["-c", ["c9", "install", "--local", "--force", "--accessToken=" + auth.accessToken, escapeShell(name) + "@" + escapeShell(version)].join(" ")]
}, function(err, process){
if (err) return callback(err);
@ -127,7 +129,7 @@ define(function(require, exports, module) {
function uninstallPlugin(name, callback){
proc.spawn("c9", {
args: ["remove", "--local", "--force", "--accessToken=" + auth.accessToken, name]
args: ["remove", "--local", "--force", "--accessToken=" + auth.accessToken, escapeShell(name)]
}, function(err, process){
if (err) return callback(err);

Wyświetl plik

@ -580,14 +580,18 @@ define(function(require, exports, module) {
// Download tar file with template for plugin
proc.execFile("bash", {
args: ["-c", ["curl", "-L", url, "--create-dirs", "-o", tarPathAbsolute].join(" ")]
args: ["-c", [
// using mkdirp since "--create-dirs" is broken on windows
"mkdir", "-p", util.escapeShell(dirname(tarPathAbsolute)), ";",
"curl", "-L", util.escapeShell(url), "-o", util.escapeShell(tarPathAbsolute)].join(" ")
]
}, function(err, stderr, stdout){
if (err)
return handleError(err);
// Untar tar file
proc.execFile("bash", {
args: ["-c", ["tar", "-zxvf", tarPath, "-C", pluginsDirAbsolute].join(" ")]
args: ["-c", ["tar", "-zxvf", util.escapeShell(tarPath), "-C", util.escapeShell(pluginsDirAbsolute)].join(" ")]
}, function(err, stderr, stdout){
if (err)
return handleError(err);