Socket
Socket
Sign inDemoInstall

vizion

Package Overview
Dependencies
1
Maintainers
2
Versions
32
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 0.1.0 to 0.1.1

151

lib/svn.js

@@ -0,78 +1,97 @@

var fs = require("fs");
var async = require('async');
var exec = require("child_process").exec;
var fs = require("fs");
var svn = {};
var halt = false;
svn.parse = function(folder, cb) {
var getMeta = function(cb) {
exec("cd '"+folder+"';svn info", function(err, stdout, stderr) {
if(err !== null)
return cb(err);
var data = {};
data.type = 'svn';
data.url = stdout.match(/Repository Root:([^\n]+)/);
if (data.url) data.url = data.url[1];
data.branch = data.url.match(/[^/]+$/);
if (data.branch) data.branch = data.branch[0];
return cb(null, data);
});
}
function error(repoType, task, errorMsg, cb) {
if (halt) return false;
var getRevComment = function(data, cb) {
exec("cd '"+folder+"';svn log -r BASE", function(err, stdout, stderr) {
if(err !== null)
return cb(err);
data.revision = stdout.match(/^(r[0-9]+)\s\|/m);
data.comment = stdout.match(/lines?\s*\n((.|\n)*)\n-{72}\n$/);
if (data.revision) data.revision = data.revision[1];
if (data.comment) data.comment = data.comment[1].replace(/\n/g, '');
cb(null, data);
});
}
console.error("[Repo-Parser] An error occured while " + task + " in a " + repoType + " repository: " + errorMsg);
halt = true;
return cb("[Repo-Parser] An error occured while " + task + " in a " + repoType + " repository: " + errorMsg);
var getDate = function(data, cb) {
fs.stat(folder+".svn", function(err, stats) {
if(err !== null)
return cb(err);
data.update_time = stats.mtime;
return cb(null, data);
});
}
async.waterfall([getMeta, getRevComment, getDate],
function(err, data) {
if (err !== null)
return cb(err);
return cb(null, data);
});
}
function checkReturn(dataArray, cb) {
if (halt) {
return false;
}
if (Object.keys(dataArray).length > 6) {
Object.keys(dataArray).forEach(function(key) {
if (typeof(dataArray[key]) === 'string') {
dataArray[key] = dataArray[key].replace(/\n/g, '');
}
});
cb(null, dataArray);
}
};
svn.isUpdated = function(folder, cb) {
var res = {};
var getRev = function(str) {
var matches = str.match(/Changed Rev: ([^\n]+)/);
if (matches) matches = matches[1];
return matches;
}
module.exports.parse = function parseSvn(folder, cb) {
var data = {};
exec("cd '"+folder+"';svn info", function(err, stdout, stderr) {
if(err !== null)
return cb(err);
var current_rev = getRev(stdout);
exec("cd '"+folder+"';svn info -r HEAD", function(err, stdout, stderr) {
if(err !== null)
return cb(err);
var recent_rev = getRev(stdout);
res.is_up_to_date = (recent_rev === current_rev);
res.new_revision = recent_rev;
res.current_revision = current_rev;
return cb(null, res);
});
});
}
data.type = 'svn';
data.commit_history = []; // temporary
svn.update = function(folder, cb) {
var res = {};
exec("cd '"+folder+"'; svn info | grep 'Repository Root' | awk '{print $NF}'", function(err, stdout, stderr) {
if(err !== null) {
error("subversion", "fetching path", stderr, cb);
}
else {
data.url = stdout;
checkReturn(data, cb);
}
});
exec("cd '"+folder+"';svn update", function(err, stdout, stderr) {
if(err !== null)
return cb(err);
var new_rev = stdout.match(/Updated to revision ([^\.]+)/);
if (new_rev === null)
{
res.success = false;
var old_rev = stdout.match(/At revision ([^\.]+)/);
res.current_revision = (old_rev) ? old_rev[1] : null;
}
else {
res.success = true;
res.current_revision = new_rev[1];
}
return cb(null, res);
});
}
exec("cd '"+folder+"'; svn log -r COMMITTED", function(err, stdout, stderr) {
if(err !== null) {
error("subversion", "fetching log", stderr, cb);
}
else {
var message = stdout.match(/^(r[0-9]+)\s\|/m);
//date = stdout.match(/^date:\s+:([^\n]+)$/m);
var summary = stdout.match(/lines?\s*\n((.|\n)*)\n-{72}\n$/);
data.revision = message[1];
data.comment = summary[1];
//data.update_time = date;
checkReturn(data, cb);
}
});
exec("cd '"+folder+"'; svn info | sed -n \"/URL:/s/.*\\///p\"", function(err, stdout, stderr) {
if(err !== null) {
error("subversion", "fetching branch", stderr, cb);
}
else {
data.branch = stdout;
checkReturn(data, cb);
}
});
fs.stat(folder+".svn", function(err, stats) {
if(err !== null) {
error("subversion", "fetching stats", "no error available", cb);
}
else {
data.update_time = stats.mtime;
checkReturn(data, cb);
}
});
}
module.exports = svn;

@@ -34,4 +34,4 @@ var hg = require('./hg.js');

// return hg.isUpdated(folder, cb);
// else if (type === 'svn')
// return svn.isUpdated(folder, cb);
else if (type === 'svn')
return svn.isUpdated(folder, cb);
else

@@ -53,4 +53,4 @@ return cb({

// return hg.update(folder, cb);
// else if (type === 'svn')
// return svn.update(folder, cb);
else if (type === 'svn')
return svn.update(folder, cb);
else

@@ -57,0 +57,0 @@ return cb({

{
"name": "vizion",
"version": "0.1.0",
"version": "0.1.1",
"engines": {

@@ -5,0 +5,0 @@ "node": ">=0.10"

@@ -27,4 +27,4 @@

* commment : 'This is a comment',
* update_time : 'DATE',
* url : 'http://an.url',
* update_time : Tue Oct 28 2014 14:33:30 GMT+0100 (CET),
* url : 'https://github.com/keymetrics/vizion.git',
* revision : 'f0a1d45936cf7a3c969e4caba96546fd23255796',

@@ -31,0 +31,0 @@ * next_rev : null, // null if its latest in the branch

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc