Added message command and verbose mode for cli and fixes output for zip and tar.gz

pull/85/head
Ruben Daniels 2015-04-27 19:07:00 +00:00 zatwierdzone przez nightwing
rodzic 09b19b4557
commit af9d420266
6 zmienionych plików z 189 dodań i 146 usunięć

Wyświetl plik

@ -83,6 +83,7 @@ return [
"./c9.ide.installer/commands/gem",
"./c9.ide.installer/commands/zip",
"./c9.ide.installer/commands/symlink",
"./c9.ide.installer/commands/message",
{
packagePath: "./c9.ide.installer/commands/tar.gz",
bashBin: "bash"
@ -93,7 +94,8 @@ return [
packagePath: "./c9.ide.installer/installer",
homeDir: process.env.HOME,
installSelfCheck: false,
installPath: process.env.HOME + "/.c9"
installPath: process.env.HOME + "/.c9",
cli: true
},
// "./c9.cli.sync/sync",
//"./c9.ide.keys/commands",
@ -108,6 +110,7 @@ return [
debug: true,
hosted: false,
local: true,
home: process.env.HOME,
setStatus: function(){}
},
error_handler: {

Wyświetl plik

@ -529,6 +529,7 @@ module.exports = function(options) {
"plugins/c9.ide.installer/commands/gem",
"plugins/c9.ide.installer/commands/zip",
"plugins/c9.ide.installer/commands/symlink",
"plugins/c9.ide.installer/commands/message",
{
packagePath: "plugins/c9.ide.installer/commands/tar.gz",
bashBin: options.bashBin

Wyświetl plik

@ -83,7 +83,7 @@
"c9.ide.help.support": "#60e88f5680",
"c9.ide.imgeditor": "#08bbc53578",
"c9.ide.immediate": "#6845a93705",
"c9.ide.installer": "#564748e5e7",
"c9.ide.installer": "#2dc739e7e3",
"c9.ide.mount": "#32e79866ee",
"c9.ide.navigate": "#64156c7f4a",
"c9.ide.newresource": "#f1f0624768",

Wyświetl plik

@ -1,5 +1,8 @@
define(function(require, exports, module) {
main.consumes = ["Plugin", "cli_commands", "proc", "api", "auth", "installer"];
main.consumes = [
"Plugin", "cli_commands", "proc", "api", "auth", "installer",
"installer.cli"
];
main.provides = ["cli.install"];
return main;
@ -10,6 +13,7 @@ define(function(require, exports, module) {
var auth = imports.auth;
var api = imports.api;
var installer = imports.installer;
var installerCLI = imports["installer.cli"];
var TEST_MODE = !!process.env.C9_TEST_MODE;
var SHELLSCRIPT = TEST_MODE ? "" : require("text!./publish.git.sh").toString("utf8");
@ -83,7 +87,7 @@ define(function(require, exports, module) {
"boolean": true
},
"dry-run" : {
"description": "Only build a test version",
"description": "Installs current directory as a package",
"default": false,
"boolean": true
},
@ -199,7 +203,7 @@ define(function(require, exports, module) {
var version = parts[1];
var repository;
if (!version || options.debug) {
if ((!version || options.debug) && !options.dryRun) {
if (verbose)
console.log("Retrieving package info");
@ -242,19 +246,71 @@ define(function(require, exports, module) {
}
function installPackage(){
if (!version)
if (!version && !options.dryRun)
return callback(new Error("No version found for this package"));
if (options.local) {
if (!options.dryRun)
return callback(new Error("Dry run is not supported for local installation"));
installLocal();
}
else if (options.debug) {
installDebug();
}
else {
installFull();
}
}
function installLocal(){
if (verbose)
console.log("Installing package locally");
prepareDirectory(function(err, packagePath){
if (err) return callback(err);
function installNPM(){
proc.spawn(join(process.env.HOME, ".c9/node/bin/npm"), {
args: ["install"],
cwd: packagePath
}, function(err, p){
if (err) return callback(err);
if (verbose) {
p.stdout.on("data", function(c){
process.stdout.write(c.toString("utf8"));
});
p.stderr.on("data", function(c){
process.stderr.write(c.toString("utf8"));
});
}
p.on("exit", function(code){
// Done
callback(err, {
version: version
});
});
});
}
if (options.dryRun) {
try {
var json = JSON.parse(fs.readFileSync(join(process.cwd(), "package.json")));
if (json.private)
return callback(new Error("ERROR: Private flag in package.json prevents from installing"));
}
catch(e) {
return callback(new Error("ERROR: Invalid package"));
}
proc.execFile("bash", { args: ["-c", "cp -a " + join(process.cwd(), "/*") + " " + packagePath] }, function(err){
if (err) return callback(err);
installNPM();
});
return;
}
// Download package
var gzPath = join(os.tmpDir(), name + "@" + version + ".tar.gz");
var file = fs.createWriteStream(gzPath);
@ -309,39 +365,19 @@ define(function(require, exports, module) {
: null;
if (err) return callback(err);
proc.spawn(join(process.env.HOME, ".c9/node/bin/npm"), {
args: ["install"],
cwd: packagePath
}, function(err, p){
if (err) return callback(err);
if (verbose) {
p.stdout.on("data", function(c){
process.stdout.write(c.toString("utf8"));
});
p.stderr.on("data", function(c){
process.stderr.write(c.toString("utf8"));
});
}
p.on("exit", function(code){
// Done
callback(err, {
version: version
});
});
});
installNPM();
});
});
});
});
}
else if (options.debug) {
function installDebug(){
if (verbose)
console.log("Installing debug version of package");
if (!options.dryRun)
return callback(new Error("Dry run is not supported for debug installation"));
return callback(new Error("Dry run is not supported for debug installations"));
prepareDirectory(function(err, packagePath){
if (err) return callback(err);
@ -376,18 +412,17 @@ define(function(require, exports, module) {
});
});
}
else {
function installFull(){
if (verbose)
console.log("Notifying c9.io that packages needs to be installed");
var dryRun = options.dryRun;
// Install Locally
options.local = true;
install(name + "@" + version, options, function(err){
if (err) return callback(err);
var path = "~/.c9/plugins/" + name;
var path = process.env.HOME + "/.c9/plugins/" + name;
fs.readFile(path + "/package.json", "utf8", function(err, data){
if (err) return callback(new Error("Package.json not found in " + path));
@ -398,6 +433,7 @@ define(function(require, exports, module) {
}
if (installPath) {
installerCLI.verbose = verbose;
installer.createSession(name, version, require(path + "/" + installPath), function(err){
if (err) return callback(new Error("Error Installing Package " + name + "@" + version));
installToDatabase();
@ -409,6 +445,9 @@ define(function(require, exports, module) {
function installToDatabase(){
if (options.dryRun)
return callback(null, { version: "dry-run" });
var endpoint = options.global ? api.user : api.project;
var url = "install/" + packageName + "/" + version + "?mode=silent";
@ -417,8 +456,6 @@ define(function(require, exports, module) {
});
}
});
}
}
}

Wyświetl plik

@ -219,6 +219,8 @@ define(function(require, exports, module) {
}
// Basic Validation
if (json.private)
return callback(new Error("ERROR: Private flag in package.json prevents from publishing"));
if (!json.name)
return callback(new Error("ERROR: Missing name property in package.json"));
if (basename(cwd) != json.name) {

Wyświetl plik

@ -9,7 +9,7 @@ define(function(require, module, exports) {
var vfs = new localFs({
root: "/",
nopty: true,
// nopty: true,
defaultEnv: { CUSTOM: 43 }
});