Comparing version 1.9.9 to 2.0.0
@@ -6,4 +6,18 @@ 'use strict'; | ||
var Client = syncLib.Client; | ||
var Download = require('download'); | ||
var path = require('path'); | ||
var _ = require('lodash'); | ||
var fs = require('fs'); | ||
var URL = require('url'); | ||
var Q = require('q'); | ||
var $28 = (function(){ | ||
var $28 = (function() { | ||
var toPath = function(ns) { | ||
var url = URL.parse(ns); | ||
var segments = url.hostname.split('.').reverse(); | ||
segments = segments.concat(url.path.split('/').slice(1)); | ||
return segments.join('/') + '.jq'; | ||
}; | ||
function $28(apiEndpoint){ | ||
@@ -33,2 +47,52 @@ this.api = require('28.io-nodejs').$28(apiEndpoint); | ||
$28.prototype.install = function(){ | ||
var defered = Q.defer(); | ||
var manifest = JSON.parse(fs.readFileSync('28.json', 'utf-8')); | ||
var root = path.dirname(path.resolve('28.json')) + '/'; | ||
_.forEach(manifest.dependencies, function(url, name){ | ||
url = URL.parse(url); | ||
url.hash = url.hash.substring(1); | ||
url.path = _.endsWith(url.path, '.git') ? url.path.substring(0, url.path.length - 4) : url.path; | ||
var href = _.template('<%= protocol %>//<%= hostname %><%= path %>/archive/<%= hash %>.zip')(url); | ||
console.log('Installing ' + name + '...'); | ||
var output = root + 'jsoniq_modules/'; | ||
var base = output + name + '-' + url.hash; | ||
new Download({ mode: '755', extract: true }) | ||
.get(href) | ||
.dest(output) | ||
.run(function(){ | ||
var manifest = JSON.parse(fs.readFileSync(base + '/28.json', 'utf-8')); | ||
manifest.exports.forEach(function(ns){ | ||
var path = toPath(ns); | ||
fs.createReadStream(base + '/queries/modules/' + path) | ||
.pipe(fs.createWriteStream('queries/modules/' + path)).on('finish', function(){ | ||
defered.resolve(); | ||
}); | ||
}); | ||
}); | ||
}); | ||
return defered.promise; | ||
}; | ||
$28.prototype.uninstall = function(){ | ||
var defered = Q.defer(); | ||
var manifest = JSON.parse(fs.readFileSync('28.json', 'utf-8')); | ||
var root = path.dirname(path.resolve('28.json')) + '/'; | ||
_.forEach(manifest.dependencies, function(url, name){ | ||
url = URL.parse(url); | ||
url.hash = url.hash.substring(1); | ||
url.path = _.endsWith(url.path, '.git') ? url.path.substring(0, url.path.length - 4) : url.path; | ||
console.log('Uninstalling ' + name + '...'); | ||
var output = root + 'jsoniq_modules/'; | ||
var base = output + name + '-' + url.hash; | ||
var manifest = JSON.parse(fs.readFileSync(base + '/28.json', 'utf-8')); | ||
manifest.exports.forEach(function(ns){ | ||
var path = toPath(ns); | ||
fs.unlinkSync('queries/modules/' + path); | ||
}); | ||
defered.resolve(); | ||
}); | ||
return defered.promise; | ||
}; | ||
$28.prototype.refreshTokens = function(email, token){ | ||
@@ -35,0 +99,0 @@ return this.api.Auth.authenticate({ |
'use strict'; | ||
var fs = require('fs'); | ||
var URL = require('url'); | ||
var cli = require('commander'); | ||
var _ = require('lodash'); | ||
var Download = require('download'); | ||
var path = require('path'); | ||
var Config = require('../config').Config; | ||
var $28 = Config.getAPIClient(); | ||
var toPath = function(ns) { | ||
var url = URL.parse(ns); | ||
var segments = url.hostname.split('.').reverse(); | ||
segments = segments.concat(url.path.split('/').slice(1)); | ||
return segments.join('/') + '.jq'; | ||
}; | ||
//Install command | ||
@@ -22,26 +12,11 @@ cli | ||
.action(function() { | ||
var manifest = JSON.parse(fs.readFileSync('28.json', 'utf-8')); | ||
var root = path.dirname(path.resolve('28.json')) + '/'; | ||
_.forEach(manifest.dependencies, function(url, name){ | ||
url = URL.parse(url); | ||
url.hash = url.hash.substring(1); | ||
url.path = _.endsWith(url.path, '.git') ? url.path.substring(0, url.path.length - 4) : url.path; | ||
var href = _.template('<%= protocol %>//<%= hostname %><%= path %>/archive/<%= hash %>.zip')(url); | ||
return $28.install(); | ||
}); | ||
console.log('Installing ' + name + '...'); | ||
var output = root + 'jsoniq_modules/'; | ||
var base = output + name + '-' + url.hash; | ||
new Download({ mode: '755', extract: true }) | ||
.get(href) | ||
.dest(output) | ||
.run(function(){ | ||
var manifest = JSON.parse(fs.readFileSync(base + '/28.json', 'utf-8')); | ||
manifest.exports.forEach(function(ns){ | ||
var path = toPath(ns); | ||
console.log(path); | ||
fs.createReadStream(base + '/queries/modules/' + path) | ||
.pipe(fs.createWriteStream('queries/modules/' + path)); | ||
}); | ||
}); | ||
}); | ||
//Install command | ||
cli | ||
.command('uninstall') | ||
.description('This command uninstalls a JSONiq package, and any packages that it depends on..') | ||
.action(function() { | ||
return $28.uninstall(); | ||
}); |
@@ -9,3 +9,3 @@ { | ||
"description": "Command line utility to download and upload 28.io queries.", | ||
"version": "1.9.9", | ||
"version": "2.0.0", | ||
"keywords": [ | ||
@@ -12,0 +12,0 @@ "jsoniq", |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
180459
1210