Пример #1
0
Interface.prototype.fetch = function(remote, options) {
    var self = this;
    options = options || {};
    options.cwd = options.cwd || self.path;
    var branch = null;
    if (UTIL.isArrayLike(remote)) {
        branch = remote[1];
        remote = remote[0];
    }
/*
Interface.prototype.fetch = function(url, options) {
    var self = this;
    options = options || {};
    options.cwd = options.cwd || self.path;
    var branch = null;
    if (UTIL.isArrayLike(url)) {
        branch = url[1];
        url = url[0];
    }
    return self.remotes().then(function(remotes) {
        var found = false;
        for (var remote in remotes) {
            if (url === remote || remotes[remote]["fetch-url"] === url) {
                found = remote;
                break;
            }
        }
        var done = Q.ref();
        if (!found) {
            if (options.setRemote) {
                remote = "origin";
                done = Q.when(done, function() {
                    return self.setRemote(remote, url)
                });
            } else {
                throw new Error("Cannot fetch from '" + url + "' for repository '" + self.path + "' as remote URI not found in remotes.");
            }
        }
        return Q.when(done, function() {
*/
            var args = [
                "fetch",
                remote
            ];
            if (branch !== null) {
                args.push(branch);
            }
            if (options.tags) {
                args.push("--tags");
            }
            return self.callGit(args, options).then(function(result) {
                // TODO: Detect more failure?
                if (UTIL.trim(result) === "") {
                    return 304;
                }
                return 200;
            });
//        });
//    });
}
Пример #2
0
 UTIL.forEach(keysPath, function(key) {
     if(UTIL.isArrayLike(key)) {
         keys.push(key.join(""));
     } else {
         keys.push(key);
     }
 });
Пример #3
0
				    			info.ipPermissions.item.forEach(function(record) {
				    				if (!UTIL.isArrayLike(record.ipRanges.item)) {
				    					record.ipRanges.item = [ record.ipRanges.item ];
				    				}
				    				record.ipRanges.item.forEach(function(ipRange) {
					    				existingRecords[
					    					record.ipProtocol + ":" + 
					    					record.fromPort + ":" + 
					    					record.toPort + ":" + 
					    					ipRange.cidrIp
				    					] = record;
				    				});
				    			});
Пример #4
0
						REQUEST("http://ipecho.net/plain", function(err, response, ip) {
							if (err) {
								return deferred.reject(err);
							}

				    		var existingRecords = {};

				    		if (info.ipPermissions && info.ipPermissions.item) {
			    				if (!UTIL.isArrayLike(info.ipPermissions.item)) {
			    					info.ipPermissions.item = [ info.ipPermissions.item ];
			    				}
				    			info.ipPermissions.item.forEach(function(record) {
				    				if (!UTIL.isArrayLike(record.ipRanges.item)) {
				    					record.ipRanges.item = [ record.ipRanges.item ];
				    				}
				    				record.ipRanges.item.forEach(function(ipRange) {
					    				existingRecords[
					    					record.ipProtocol + ":" + 
					    					record.fromPort + ":" + 
					    					record.toPort + ":" + 
					    					ipRange.cidrIp
				    					] = record;
				    				});
				    			});
				    		}

				    		var provisionRecords = [];

							// TODO: Allow for custom permissions declared in `program.json`.

				    		if (!existingRecords["tcp:0:65535:" + ip + "/32"]) {
				    			provisionRecords.push({
				    				ipProtocol: "tcp",
				    				fromPort: "0",
				    				toPort: "65535",
				    				cidrIp: ip + "/32"
				    			});
				    		}
				    		if (!existingRecords["udp:0:65535:" + ip + "/32"]) {
				    			provisionRecords.push({
				    				ipProtocol: "udp",
				    				fromPort: "0",
				    				toPort: "65535",
				    				cidrIp: ip + "/32"
				    			});
				    		}
				    		if (!existingRecords["icmp:-1:-1:" + ip + "/32"]) {
				    			provisionRecords.push({
				    				ipProtocol: "icmp",
				    				fromPort: "-1",
				    				toPort: "-1",
				    				cidrIp: ip + "/32"
				    			});
				    		}

							if (provisionRecords.length === 0) {

								deferred.resolve();

							} else {

								var opts = {
									"GroupId": info.groupId
								};

								var index = 1;
								provisionRecords.forEach(function(record) {
									opts["IpPermissions." + index + ".IpProtocol"] = record.ipProtocol;
									opts["IpPermissions." + index + ".FromPort"] = record.fromPort;
									opts["IpPermissions." + index + ".ToPort"] = record.toPort;
									opts["IpPermissions." + index + ".IpRanges.1.CidrIp"] = record.cidrIp;
									index += 1;
								});

								TERM.stdout.writenl("Provisioning " + provisionRecords.length + " records for security group '" + SecurityGroup + "'.");

								ec2.call("AuthorizeSecurityGroupIngress", opts, function(err, result) {
									if (err) {
										deferred.reject(err);
										return;
									}
									deferred.resolve();
								});
							}
						});
Пример #5
0
		}, function(err, result) {
			if (err) {
				deferred.reject(err);
				return;
			}

			var existingTags = {};
			if (result.tagSet && result.tagSet.item) {
				if (!UTIL.isArrayLike(result.tagSet.item)) {
					result.tagSet.item = [
						result.tagSet.item
					];
				}
				result.tagSet.item.forEach(function(tag) {
					existingTags[tag.key] = tag.value;
				});
			}

			var tags = {};

			var done = Q.ref();

			if (!existingTags["pinf:email"]) {
				done = Q.when(done, function() {
					return pm.context.credentials.requestFor("github.com/sourcemint/pm-git/0", "user.email", {
						fetcher: credentialsFetcher				
					}).then(function(GitUserEmail) {
						tags["pinf:email"] = GitUserEmail; 
					});
				});
			}

			if (!existingTags["pinf:user"]) {
				done = Q.when(done, function() {
					return pm.context.credentials.requestFor("github.com/sourcemint/sdk-github/0", "username", {
						fetcher: credentialsFetcher				
					}).then(function(Username) {
						tags["pinf:user"] = Username; 
					});
				});
			}

			if (!existingTags["pinf:uid"] && pm.context.program.descriptor.json.uid) {
				tags["pinf:uid"] = pm.context.program.descriptor.json.uid;
			}

			// TODO: Set name based on program descriptor or prompt?
			//tags["pinf:name"] = "Server"; 

			Q.when(done, function() {

				if (UTIL.len(tags) > 0) {

					var args = {
						"ResourceId.1": InstanceId
					};
					var index = 1;
					for (var name in tags) {
						args["Tag." + index + ".Key"] = name;
						args["Tag." + index + ".Value"] = tags[name];
						index += 1;
					}

					TERM.stdout.writenl("Tagging instance.");

					ec2.call("CreateTags", args, function(err, result) {
						if (err) {
							return deferred.reject(err);
						}
					});
				}
			}).when(deferred.resolve, deferred.reject);
		});