logrocket-cli
Advanced tools
Comparing version 0.9.1 to 0.9.2
@@ -1,112 +0,287 @@ | ||
'use strict';Object.defineProperty(exports,"__esModule",{value:true});var _regenerator=require('babel-runtime/regenerator');var _regenerator2=_interopRequireDefault(_regenerator);var _slicedToArray2=require('babel-runtime/helpers/slicedToArray');var _slicedToArray3=_interopRequireDefault(_slicedToArray2);var _classCallCheck2=require('babel-runtime/helpers/classCallCheck');var _classCallCheck3=_interopRequireDefault(_classCallCheck2);var _createClass2=require('babel-runtime/helpers/createClass');var _createClass3=_interopRequireDefault(_createClass2);exports.default= | ||
'use strict'; | ||
Object.defineProperty(exports, "__esModule", { | ||
value: true | ||
}); | ||
var _regenerator = require('babel-runtime/regenerator'); | ||
var _regenerator2 = _interopRequireDefault(_regenerator); | ||
var _stringify = require('babel-runtime/core-js/json/stringify'); | ||
var _stringify2 = _interopRequireDefault(_stringify); | ||
var _slicedToArray2 = require('babel-runtime/helpers/slicedToArray'); | ||
var _slicedToArray3 = _interopRequireDefault(_slicedToArray2); | ||
var _asyncToGenerator2 = require('babel-runtime/helpers/asyncToGenerator'); | ||
var _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2); | ||
var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck'); | ||
var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); | ||
var _createClass2 = require('babel-runtime/helpers/createClass'); | ||
var _createClass3 = _interopRequireDefault(_createClass2); | ||
exports.default = apiClient; | ||
require('isomorphic-fetch'); | ||
var _package = require('../package.json'); | ||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||
var ApiClient = function () { | ||
function ApiClient(_ref) { | ||
var apikey = _ref.apikey, | ||
_ref$apihost = _ref.apihost, | ||
apihost = _ref$apihost === undefined ? 'http://api.logrocket.com' : _ref$apihost; | ||
(0, _classCallCheck3.default)(this, ApiClient); | ||
this.apikey = apikey; | ||
this.apihost = apihost; | ||
} | ||
(0, _createClass3.default)(ApiClient, [{ | ||
key: '_makeRequest', | ||
value: function () { | ||
var _ref2 = (0, _asyncToGenerator3.default)(_regenerator2.default.mark(function _callee(_ref3) { | ||
var url = _ref3.url, | ||
data = _ref3.data; | ||
var _apikey$split, _apikey$split2, orgSlug, appSlug; | ||
return _regenerator2.default.wrap(function _callee$(_context) { | ||
while (1) { | ||
switch (_context.prev = _context.next) { | ||
case 0: | ||
_apikey$split = this.apikey.split(':'), _apikey$split2 = (0, _slicedToArray3.default)(_apikey$split, 2), orgSlug = _apikey$split2[0], appSlug = _apikey$split2[1]; | ||
return _context.abrupt('return', fetch(this.apihost + '/v1/orgs/' + orgSlug + '/apps/' + appSlug + '/' + url + '/', { | ||
method: 'POST', | ||
headers: this.headers, | ||
body: (0, _stringify2.default)(data) | ||
})); | ||
case 2: | ||
case 'end': | ||
return _context.stop(); | ||
} | ||
} | ||
}, _callee, this); | ||
})); | ||
function _makeRequest(_x) { | ||
return _ref2.apply(this, arguments); | ||
} | ||
return _makeRequest; | ||
}() | ||
}, { | ||
key: 'checkStatus', | ||
value: function () { | ||
var _ref4 = (0, _asyncToGenerator3.default)(_regenerator2.default.mark(function _callee2() { | ||
var res, data; | ||
return _regenerator2.default.wrap(function _callee2$(_context2) { | ||
while (1) { | ||
switch (_context2.prev = _context2.next) { | ||
case 0: | ||
_context2.next = 2; | ||
return fetch(this.apihost + '/cli/status/', { | ||
headers: this.headers | ||
}); | ||
case 2: | ||
res = _context2.sent; | ||
if (!(res.status === 204)) { | ||
_context2.next = 5; | ||
break; | ||
} | ||
return _context2.abrupt('return'); | ||
case 5: | ||
data = void 0; | ||
_context2.prev = 6; | ||
_context2.next = 9; | ||
return res.json(); | ||
case 9: | ||
data = _context2.sent; | ||
_context2.next = 16; | ||
break; | ||
case 12: | ||
_context2.prev = 12; | ||
_context2.t0 = _context2['catch'](6); | ||
console.error('Could not verify CLI status. Check your network connection and reinstall the LogRocket CLI if the problem persists.'); | ||
process.exit(1); | ||
case 16: | ||
if (!res.ok) { | ||
console.error(data.message); | ||
process.exit(1); | ||
} else { | ||
console.info(data.message); | ||
} | ||
case 17: | ||
case 'end': | ||
return _context2.stop(); | ||
} | ||
} | ||
}, _callee2, this, [[6, 12]]); | ||
})); | ||
function checkStatus() { | ||
return _ref4.apply(this, arguments); | ||
} | ||
return checkStatus; | ||
}() | ||
}, { | ||
key: 'createRelease', | ||
value: function () { | ||
var _ref5 = (0, _asyncToGenerator3.default)(_regenerator2.default.mark(function _callee3(_ref6) { | ||
var version = _ref6.version; | ||
return _regenerator2.default.wrap(function _callee3$(_context3) { | ||
while (1) { | ||
switch (_context3.prev = _context3.next) { | ||
case 0: | ||
return _context3.abrupt('return', this._makeRequest({ | ||
url: 'releases', | ||
data: { version: version } | ||
})); | ||
case 1: | ||
case 'end': | ||
return _context3.stop(); | ||
} | ||
} | ||
}, _callee3, this); | ||
})); | ||
function createRelease(_x2) { | ||
return _ref5.apply(this, arguments); | ||
} | ||
return createRelease; | ||
}() | ||
}, { | ||
key: 'uploadFile', | ||
value: function () { | ||
var _ref7 = (0, _asyncToGenerator3.default)(_regenerator2.default.mark(function _callee4(_ref8) { | ||
var release = _ref8.release, | ||
filepath = _ref8.filepath, | ||
contents = _ref8.contents; | ||
var res, fileData, gcloudUrl, result; | ||
return _regenerator2.default.wrap(function _callee4$(_context4) { | ||
while (1) { | ||
switch (_context4.prev = _context4.next) { | ||
case 0: | ||
_context4.next = 2; | ||
return this._makeRequest({ | ||
url: 'releases/' + release + '/artifacts', | ||
data: { filepath: filepath } | ||
}); | ||
case 2: | ||
res = _context4.sent; | ||
if (res.ok) { | ||
_context4.next = 5; | ||
break; | ||
} | ||
return _context4.abrupt('return', res); | ||
case 5: | ||
_context4.next = 7; | ||
return res.json(); | ||
case 7: | ||
fileData = _context4.sent; | ||
gcloudUrl = fileData.signed_url; | ||
if (gcloudUrl) { | ||
_context4.next = 11; | ||
break; | ||
} | ||
throw new Error('Could not get upload url for: ' + filepath); | ||
case 11: | ||
result = fetch(gcloudUrl, { | ||
method: 'PUT', | ||
body: contents | ||
}); | ||
if (!this._gcsBucket) { | ||
_context4.next = 15; | ||
break; | ||
} | ||
_context4.next = 15; | ||
return fetch(this.apihost + '/gcloud/', { | ||
method: 'POST', | ||
headers: { | ||
'Content-Type': 'application/json', | ||
'X-Goog-Channel-Token': this._gcsToken | ||
}, | ||
body: (0, _stringify2.default)({ | ||
name: fileData.name, | ||
bucket: this._gcsBucket | ||
}) | ||
}); | ||
case 15: | ||
return _context4.abrupt('return', result); | ||
case 16: | ||
case 'end': | ||
return _context4.stop(); | ||
} | ||
} | ||
}, _callee4, this); | ||
})); | ||
function uploadFile(_x3) { | ||
return _ref7.apply(this, arguments); | ||
} | ||
return uploadFile; | ||
}() | ||
}, { | ||
key: 'setGCSData', | ||
value: function setGCSData(_ref9) { | ||
var gcsToken = _ref9.gcsToken, | ||
gcsBucket = _ref9.gcsBucket; | ||
this._gcsToken = gcsToken; | ||
this._gcsBucket = gcsBucket; | ||
} | ||
}, { | ||
key: 'headers', | ||
get: function get() { | ||
return { | ||
Authorization: 'Token ' + this.apikey, | ||
Accept: 'application/json', | ||
'Content-Type': 'application/json', | ||
'X-LogRocket-Cli-Version': _package.version | ||
}; | ||
} | ||
}]); | ||
return ApiClient; | ||
}(); | ||
apiClient;require('isomorphic-fetch');var _package=require('../package.json');function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj};}var ApiClient=function(){function ApiClient(_ref){var apikey=_ref.apikey,_ref$apihost=_ref.apihost,apihost=_ref$apihost===undefined?'http://api.logrocket.com':_ref$apihost;(0,_classCallCheck3.default)(this,ApiClient);this.apikey=apikey;this.apihost=apihost;}(0,_createClass3.default)(ApiClient,[{key:'_makeRequest',value:function _makeRequest(_ref2){var url=_ref2.url,data=_ref2.data;var _apikey$split,_apikey$split2,orgSlug,appSlug;return _regenerator2.default.async(function _makeRequest$(_context){while(1){switch(_context.prev=_context.next){case 0:_apikey$split=this.apikey.split(':'),_apikey$split2=(0,_slicedToArray3.default)(_apikey$split,2),orgSlug=_apikey$split2[0],appSlug=_apikey$split2[1];return _context.abrupt('return',fetch(this.apihost+'/v1/orgs/'+orgSlug+'/apps/'+appSlug+'/'+url+'/',{method:'POST',headers:this.headers,body:JSON.stringify(data)}));case 2:case'end':return _context.stop();}}},null,this);}},{key:'checkStatus',value:function checkStatus(){var res,data;return _regenerator2.default.async(function checkStatus$(_context2){while(1){switch(_context2.prev=_context2.next){case 0:_context2.next=2;return _regenerator2.default.awrap(fetch(this.apihost+'/cli/status/',{headers:this.headers}));case 2:res=_context2.sent;if(!(res.status===204)){_context2.next=5;break;}return _context2.abrupt('return');case 5:data=void 0;_context2.prev=6;_context2.next=9;return _regenerator2.default.awrap(res.json());case 9:data=_context2.sent;_context2.next=16;break;case 12:_context2.prev=12;_context2.t0=_context2['catch'](6);console.error('Could not verify CLI status. Check your network connection and reinstall the LogRocket CLI if the problem persists.');process.exit(1);case 16:if(!res.ok){console.error(data.message);process.exit(1);}else{console.info(data.message);}case 17:case'end':return _context2.stop();}}},null,this,[[6,12]]);}},{key:'createRelease',value:function createRelease(_ref3){var version=_ref3.version;return _regenerator2.default.async(function createRelease$(_context3){while(1){switch(_context3.prev=_context3.next){case 0:return _context3.abrupt('return',this._makeRequest({url:'releases',data:{version:version}}));case 1:case'end':return _context3.stop();}}},null,this);}},{key:'uploadFile',value:function uploadFile(_ref4){var release=_ref4.release,filepath=_ref4.filepath,contents=_ref4.contents;var res,fileData,gcloudUrl,result;return _regenerator2.default.async(function uploadFile$(_context4){while(1){switch(_context4.prev=_context4.next){case 0:_context4.next=2;return _regenerator2.default.awrap(this._makeRequest({url:'releases/'+release+'/artifacts',data:{filepath:filepath}}));case 2:res=_context4.sent;if(res.ok){_context4.next=5;break;}return _context4.abrupt('return',res);case 5:_context4.next=7;return _regenerator2.default.awrap(res.json());case 7:fileData=_context4.sent;gcloudUrl=fileData.signed_url;if(gcloudUrl){_context4.next=11;break;}throw new Error('Could not get upload url for: '+filepath);case 11:result=fetch(gcloudUrl,{method:'PUT',body:contents});if(!this._gcsBucket){_context4.next=15;break;}_context4.next=15;return _regenerator2.default.awrap(fetch(this.apihost+'/gcloud/',{method:'POST',headers:{'Content-Type':'application/json','X-Goog-Channel-Token':this._gcsToken},body:JSON.stringify({name:fileData.name,bucket:this._gcsBucket})}));case 15:return _context4.abrupt('return',result);case 16:case'end':return _context4.stop();}}},null,this);}},{key:'setGCSData',value:function setGCSData(_ref5){var gcsToken=_ref5.gcsToken,gcsBucket=_ref5.gcsBucket;this._gcsToken=gcsToken;this._gcsBucket=gcsBucket;}},{key:'headers',get:function get(){return{Authorization:'Token '+this.apikey,Accept:'application/json','Content-Type':'application/json','X-LogRocket-Cli-Version':_package.version};}}]);return ApiClient;}();function apiClient(config){ | ||
return new ApiClient(config); | ||
} | ||
function apiClient(config) { | ||
return new ApiClient(config); | ||
} | ||
module.exports = exports['default']; |
@@ -1,36 +0,91 @@ | ||
'use strict';Object.defineProperty(exports,"__esModule",{value:true});exports.handler=exports.builder=exports.describe=exports.command=undefined;var _regenerator=require('babel-runtime/regenerator');var _regenerator2=_interopRequireDefault(_regenerator);var _apiClient=require('../apiClient');var _apiClient2=_interopRequireDefault(_apiClient); | ||
var _formatError=require('../formatError');var _formatError2=_interopRequireDefault(_formatError);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj};} | ||
'use strict'; | ||
var command=exports.command='release <version>'; | ||
var describe=exports.describe='Create a new release'; | ||
var builder=exports.builder=function builder(args){ | ||
args. | ||
usage('\nUsage: logrocket release [--strict] <version>'). | ||
option('strict',{ | ||
type:'bool', | ||
describe:'Fail on duplicate releases', | ||
default:false}). | ||
Object.defineProperty(exports, "__esModule", { | ||
value: true | ||
}); | ||
exports.handler = exports.builder = exports.describe = exports.command = undefined; | ||
demand(1,'Missing release version: e.g. logrocket release 1.2.3'). | ||
help(); | ||
var _regenerator = require('babel-runtime/regenerator'); | ||
var _regenerator2 = _interopRequireDefault(_regenerator); | ||
var _asyncToGenerator2 = require('babel-runtime/helpers/asyncToGenerator'); | ||
var _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2); | ||
var _apiClient = require('../apiClient'); | ||
var _apiClient2 = _interopRequireDefault(_apiClient); | ||
var _formatError = require('../formatError'); | ||
var _formatError2 = _interopRequireDefault(_formatError); | ||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||
var command = exports.command = 'release <version>'; | ||
var describe = exports.describe = 'Create a new release'; | ||
var builder = exports.builder = function builder(args) { | ||
args.usage('\nUsage: logrocket release [--strict] <version>').option('strict', { | ||
type: 'bool', | ||
describe: 'Fail on duplicate releases', | ||
default: false | ||
}).demand(1, 'Missing release version: e.g. logrocket release 1.2.3').help(); | ||
}; | ||
var handler=exports.handler=function handler(_ref){var version=_ref.version,strict=_ref.strict,apikey=_ref.apikey,apihost=_ref.apihost;var client,res;return _regenerator2.default.async(function handler$(_context){while(1){switch(_context.prev=_context.next){case 0: | ||
console.info('Creating release: '+version+' ...'); | ||
var handler = exports.handler = function () { | ||
var _ref = (0, _asyncToGenerator3.default)(_regenerator2.default.mark(function _callee(_ref2) { | ||
var version = _ref2.version, | ||
strict = _ref2.strict, | ||
apikey = _ref2.apikey, | ||
apihost = _ref2.apihost, | ||
verbose = _ref2.verbose; | ||
var client, res; | ||
return _regenerator2.default.wrap(function _callee$(_context) { | ||
while (1) { | ||
switch (_context.prev = _context.next) { | ||
case 0: | ||
console.info('Creating release: ' + version + ' ...'); | ||
client=(0,_apiClient2.default)({apikey:apikey,apihost:apihost});_context.next=4;return _regenerator2.default.awrap( | ||
client.checkStatus());case 4:_context.next=6;return _regenerator2.default.awrap( | ||
client = (0, _apiClient2.default)({ apikey: apikey, apihost: apihost }); | ||
_context.next = 4; | ||
return client.checkStatus(); | ||
client.createRelease({version:version}));case 6:res=_context.sent; | ||
case 4: | ||
_context.next = 6; | ||
return client.createRelease({ version: version }); | ||
if(strict&&res.status===409){ | ||
console.error('Release already exists. Choose a unique name or call without --strict.'); | ||
process.exit(1); | ||
}if(!( | ||
case 6: | ||
res = _context.sent; | ||
!res.ok&&res.status!==409)){_context.next=12;break;} | ||
console.error('Could not create release: '+version);_context.next=12;return _regenerator2.default.awrap( | ||
(0,_formatError2.default)(res));case 12: | ||
if (strict && res.status === 409) { | ||
console.error('Release already exists. Choose a unique name or call without --strict.'); | ||
process.exit(1); | ||
} | ||
console.info('Success!');case 13:case'end':return _context.stop();}}},null,undefined);}; | ||
if (!(!res.ok && res.status !== 409)) { | ||
_context.next = 12; | ||
break; | ||
} | ||
console.error('Could not create release: ' + version); | ||
_context.next = 12; | ||
return (0, _formatError2.default)(res, { verbose: verbose }); | ||
case 12: | ||
console.info('Success!'); | ||
case 13: | ||
case 'end': | ||
return _context.stop(); | ||
} | ||
} | ||
}, _callee, undefined); | ||
})); | ||
return function handler(_x) { | ||
return _ref.apply(this, arguments); | ||
}; | ||
}(); |
@@ -1,95 +0,339 @@ | ||
'use strict';Object.defineProperty(exports,"__esModule",{value:true});exports.handler=exports.builder=exports.describe=exports.command=undefined;var _regenerator=require('babel-runtime/regenerator');var _regenerator2=_interopRequireDefault(_regenerator);var _path=require('path'); | ||
var _process=require('process'); | ||
var _fs=require('fs'); | ||
var _apiClient=require('../apiClient');var _apiClient2=_interopRequireDefault(_apiClient); | ||
var _formatError=require('../formatError');var _formatError2=_interopRequireDefault(_formatError); | ||
var _glob=require('glob');var _glob2=_interopRequireDefault(_glob);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj};} | ||
'use strict'; | ||
var command=exports.command='upload <path>'; | ||
var describe=exports.describe='Upload JavaScript sourcemaps for a release'; | ||
var builder=exports.builder=function builder(args){ | ||
args. | ||
usage('\nUsage: logrocket upload -r <release> <path>'). | ||
option('r',{ | ||
alias:'release', | ||
type:'string', | ||
describe:'The release version for these files', | ||
demand:'You must specify a release, use -r or --release'}). | ||
Object.defineProperty(exports, "__esModule", { | ||
value: true | ||
}); | ||
exports.handler = exports.builder = exports.describe = exports.command = undefined; | ||
demand(1,'Missing upload path: e.g. logrocket upload -r 1.2.3 dist/'). | ||
option('gcs-token',{ | ||
type:'string', | ||
describe:false}). | ||
var _regenerator = require('babel-runtime/regenerator'); | ||
option('gcs-bucket',{ | ||
type:'string', | ||
describe:false}). | ||
var _regenerator2 = _interopRequireDefault(_regenerator); | ||
implies({ | ||
'gcs-token':'gcs-bucket', | ||
'gcs-bucket':'gcs-token'}). | ||
var _getIterator2 = require('babel-runtime/core-js/get-iterator'); | ||
help('help'); | ||
var _getIterator3 = _interopRequireDefault(_getIterator2); | ||
var _promise = require('babel-runtime/core-js/promise'); | ||
var _promise2 = _interopRequireDefault(_promise); | ||
var _asyncToGenerator2 = require('babel-runtime/helpers/asyncToGenerator'); | ||
var _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2); | ||
var gatherFiles = function () { | ||
var _ref = (0, _asyncToGenerator3.default)(_regenerator2.default.mark(function _callee2(paths) { | ||
var _this = this; | ||
var map; | ||
return _regenerator2.default.wrap(function _callee2$(_context2) { | ||
while (1) { | ||
switch (_context2.prev = _context2.next) { | ||
case 0: | ||
map = []; | ||
_context2.next = 3; | ||
return _promise2.default.all(paths.map(function (path) { | ||
var realPath = (0, _path.join)((0, _process.cwd)(), path); | ||
if ((0, _fs.statSync)(realPath).isFile()) { | ||
map.push({ | ||
path: realPath, | ||
name: (0, _path.basename)(realPath) | ||
}); | ||
return _promise2.default.resolve(); | ||
} | ||
return new _promise2.default(function (resolve) { | ||
(0, _glob2.default)('**/*.{js,jsx,js.map}', { cwd: realPath }, function () { | ||
var _ref2 = (0, _asyncToGenerator3.default)(_regenerator2.default.mark(function _callee(err, files) { | ||
var _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, file; | ||
return _regenerator2.default.wrap(function _callee$(_context) { | ||
while (1) { | ||
switch (_context.prev = _context.next) { | ||
case 0: | ||
_iteratorNormalCompletion = true; | ||
_didIteratorError = false; | ||
_iteratorError = undefined; | ||
_context.prev = 3; | ||
for (_iterator = (0, _getIterator3.default)(files); !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { | ||
file = _step.value; | ||
map.push({ | ||
path: (0, _path.join)(realPath, file), | ||
name: file | ||
}); | ||
} | ||
_context.next = 11; | ||
break; | ||
case 7: | ||
_context.prev = 7; | ||
_context.t0 = _context['catch'](3); | ||
_didIteratorError = true; | ||
_iteratorError = _context.t0; | ||
case 11: | ||
_context.prev = 11; | ||
_context.prev = 12; | ||
if (!_iteratorNormalCompletion && _iterator.return) { | ||
_iterator.return(); | ||
} | ||
case 14: | ||
_context.prev = 14; | ||
if (!_didIteratorError) { | ||
_context.next = 17; | ||
break; | ||
} | ||
throw _iteratorError; | ||
case 17: | ||
return _context.finish(14); | ||
case 18: | ||
return _context.finish(11); | ||
case 19: | ||
resolve(); | ||
case 20: | ||
case 'end': | ||
return _context.stop(); | ||
} | ||
} | ||
}, _callee, _this, [[3, 7, 11, 19], [12,, 14, 18]]); | ||
})); | ||
return function (_x2, _x3) { | ||
return _ref2.apply(this, arguments); | ||
}; | ||
}()); | ||
}); | ||
})); | ||
case 3: | ||
return _context2.abrupt('return', map); | ||
case 4: | ||
case 'end': | ||
return _context2.stop(); | ||
} | ||
} | ||
}, _callee2, this); | ||
})); | ||
return function gatherFiles(_x) { | ||
return _ref.apply(this, arguments); | ||
}; | ||
}(); | ||
var _path = require('path'); | ||
var _process = require('process'); | ||
var _fs = require('fs'); | ||
var _apiClient = require('../apiClient'); | ||
var _apiClient2 = _interopRequireDefault(_apiClient); | ||
var _formatError = require('../formatError'); | ||
var _formatError2 = _interopRequireDefault(_formatError); | ||
var _glob = require('glob'); | ||
var _glob2 = _interopRequireDefault(_glob); | ||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||
var command = exports.command = 'upload <paths..>'; | ||
var describe = exports.describe = 'Upload JavaScript sourcemaps for a release'; | ||
var builder = exports.builder = function builder(args) { | ||
args.usage('\nUsage: logrocket upload -r <release> <paths..>').option('r', { | ||
alias: 'release', | ||
type: 'string', | ||
describe: 'The release version for these files', | ||
demand: 'You must specify a release, use -r or --release' | ||
}).demand(1, 'Missing upload path: e.g. logrocket upload -r 1.2.3 dist/').option('gcs-token', { // for testing, pass the webhook token to get an immediate pending=no | ||
type: 'string', | ||
describe: false | ||
}).option('gcs-bucket', { // for testing, pass the webhook bucket to get an immediate pending=no | ||
type: 'string', | ||
describe: false | ||
}).implies({ | ||
'gcs-token': 'gcs-bucket', | ||
'gcs-bucket': 'gcs-token' | ||
}).help('help'); | ||
}; | ||
var handler=exports.handler=function handler(args){var path,release,apikey,apihost,client,root,isFile,uploadFile;return _regenerator2.default.async(function handler$(_context3){while(1){switch(_context3.prev=_context3.next){case 0: | ||
path=args.path,release=args.release,apikey=args.apikey,apihost=args.apihost; | ||
var handler = exports.handler = function () { | ||
var _ref3 = (0, _asyncToGenerator3.default)(_regenerator2.default.mark(function _callee4(args) { | ||
var paths, release, apikey, apihost, verbose, client, uploadFile, fileList, _iteratorNormalCompletion2, _didIteratorError2, _iteratorError2, _iterator2, _step2, fileInfo; | ||
console.info('Preparing to upload sourcemaps for release '+release+' ...'); | ||
console.info('Gathering file list...'); | ||
return _regenerator2.default.wrap(function _callee4$(_context4) { | ||
while (1) { | ||
switch (_context4.prev = _context4.next) { | ||
case 0: | ||
paths = args.paths, release = args.release, apikey = args.apikey, apihost = args.apihost, verbose = args.verbose; | ||
client=(0,_apiClient2.default)({apikey:apikey,apihost:apihost});_context3.next=6;return _regenerator2.default.awrap( | ||
client.checkStatus());case 6: | ||
if(args['gcs-token']){ | ||
client.setGCSData({ | ||
gcsToken:args['gcs-token'], | ||
gcsBucket:args['gcs-bucket']}); | ||
console.info('Preparing to upload sourcemaps for release ' + release + ' ...'); | ||
console.info('Gathering file list...'); | ||
} | ||
client = (0, _apiClient2.default)({ apikey: apikey, apihost: apihost }); | ||
_context4.next = 6; | ||
return client.checkStatus(); | ||
root=void 0; | ||
isFile=(0,_fs.statSync)(path).isFile(); | ||
case 6: | ||
if(isFile){ | ||
root=(0,_path.join)((0,_process.cwd)(),(0,_path.dirname)(path)); | ||
}else{ | ||
root=(0,_path.join)((0,_process.cwd)(),path); | ||
} | ||
if (args['gcs-token']) { | ||
client.setGCSData({ | ||
gcsToken: args['gcs-token'], | ||
gcsBucket: args['gcs-bucket'] | ||
}); | ||
} | ||
uploadFile=function uploadFile(file){var data,res;return _regenerator2.default.async(function uploadFile$(_context){while(1){switch(_context.prev=_context.next){case 0: | ||
console.info('Uploading: '+file); | ||
uploadFile = function () { | ||
var _ref4 = (0, _asyncToGenerator3.default)(_regenerator2.default.mark(function _callee3(_ref5) { | ||
var path = _ref5.path, | ||
name = _ref5.name; | ||
var data, res; | ||
return _regenerator2.default.wrap(function _callee3$(_context3) { | ||
while (1) { | ||
switch (_context3.prev = _context3.next) { | ||
case 0: | ||
console.info('Uploading: ' + name); | ||
data={ | ||
release:release, | ||
filepath:'*/'+file, | ||
contents:(0,_fs.createReadStream)((0,_path.join)(root,file))};_context.prev=2;_context.next=5;return _regenerator2.default.awrap( | ||
data = { | ||
release: release, | ||
filepath: '*/' + name, | ||
contents: (0, _fs.createReadStream)(path) | ||
}; | ||
_context3.prev = 2; | ||
_context3.next = 5; | ||
return client.uploadFile(data); | ||
case 5: | ||
res = _context3.sent; | ||
client.uploadFile(data));case 5:res=_context.sent;if( | ||
if (res.ok) { | ||
_context3.next = 10; | ||
break; | ||
} | ||
res.ok){_context.next=10;break;} | ||
console.error('Failed to upload: '+file);_context.next=10;return _regenerator2.default.awrap( | ||
(0,_formatError2.default)(res));case 10:_context.next=16;break;case 12:_context.prev=12;_context.t0=_context['catch'](2); | ||
console.error('Failed to upload: ' + name); | ||
_context3.next = 10; | ||
return (0, _formatError2.default)(res, { verbose: verbose }); | ||
case 10: | ||
_context3.next = 16; | ||
break; | ||
console.error(_context.t0.message); | ||
process.exit(1);case 16:case'end':return _context.stop();}}},null,undefined,[[2,12]]);}; | ||
case 12: | ||
_context3.prev = 12; | ||
_context3.t0 = _context3['catch'](2); | ||
console.error(_context3.t0.message); | ||
process.exit(1); | ||
case 16: | ||
case 'end': | ||
return _context3.stop(); | ||
} | ||
} | ||
}, _callee3, undefined, [[2, 12]]); | ||
})); | ||
if(isFile){ | ||
uploadFile((0,_path.basename)(path)).then(function(){ | ||
console.info('Done.'); | ||
}); | ||
}else{ | ||
(0,_glob2.default)('**/*.{js,jsx,js.map}',{cwd:root},function _callee(err,files){var _iteratorNormalCompletion,_didIteratorError,_iteratorError,_iterator,_step,file;return _regenerator2.default.async(function _callee$(_context2){while(1){switch(_context2.prev=_context2.next){case 0: | ||
console.info('Found '+files.length+' files ...');_iteratorNormalCompletion=true;_didIteratorError=false;_iteratorError=undefined;_context2.prev=4;_iterator= | ||
return function uploadFile(_x5) { | ||
return _ref4.apply(this, arguments); | ||
}; | ||
}(); | ||
files[typeof Symbol==='function'?typeof Symbol==='function'?typeof Symbol==='function'?Symbol.iterator:'@@iterator':'@@iterator':'@@iterator']();case 6:if(_iteratorNormalCompletion=(_step=_iterator.next()).done){_context2.next=13;break;}file=_step.value;_context2.next=10;return _regenerator2.default.awrap( | ||
uploadFile(file));case 10:_iteratorNormalCompletion=true;_context2.next=6;break;case 13:_context2.next=19;break;case 15:_context2.prev=15;_context2.t0=_context2['catch'](4);_didIteratorError=true;_iteratorError=_context2.t0;case 19:_context2.prev=19;_context2.prev=20;if(!_iteratorNormalCompletion&&_iterator.return){_iterator.return();}case 22:_context2.prev=22;if(!_didIteratorError){_context2.next=25;break;}throw _iteratorError;case 25:return _context2.finish(22);case 26:return _context2.finish(19);case 27: | ||
_context4.next = 10; | ||
return gatherFiles(paths); | ||
case 10: | ||
fileList = _context4.sent; | ||
console.info('Success!');case 28:case'end':return _context2.stop();}}},null,undefined,[[4,15,19,27],[20,,22,26]]);}); | ||
}case 12:case'end':return _context3.stop();}}},null,undefined);}; | ||
console.info('Found ' + fileList.length + ' file' + (fileList.length === 1 ? '' : 's') + ' ...'); | ||
_iteratorNormalCompletion2 = true; | ||
_didIteratorError2 = false; | ||
_iteratorError2 = undefined; | ||
_context4.prev = 15; | ||
_iterator2 = (0, _getIterator3.default)(fileList); | ||
case 17: | ||
if (_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done) { | ||
_context4.next = 24; | ||
break; | ||
} | ||
fileInfo = _step2.value; | ||
_context4.next = 21; | ||
return uploadFile(fileInfo); | ||
case 21: | ||
_iteratorNormalCompletion2 = true; | ||
_context4.next = 17; | ||
break; | ||
case 24: | ||
_context4.next = 30; | ||
break; | ||
case 26: | ||
_context4.prev = 26; | ||
_context4.t0 = _context4['catch'](15); | ||
_didIteratorError2 = true; | ||
_iteratorError2 = _context4.t0; | ||
case 30: | ||
_context4.prev = 30; | ||
_context4.prev = 31; | ||
if (!_iteratorNormalCompletion2 && _iterator2.return) { | ||
_iterator2.return(); | ||
} | ||
case 33: | ||
_context4.prev = 33; | ||
if (!_didIteratorError2) { | ||
_context4.next = 36; | ||
break; | ||
} | ||
throw _iteratorError2; | ||
case 36: | ||
return _context4.finish(33); | ||
case 37: | ||
return _context4.finish(30); | ||
case 38: | ||
console.info('Success!'); | ||
case 39: | ||
case 'end': | ||
return _context4.stop(); | ||
} | ||
} | ||
}, _callee4, undefined, [[15, 26, 30, 38], [31,, 33, 37]]); | ||
})); | ||
return function handler(_x4) { | ||
return _ref3.apply(this, arguments); | ||
}; | ||
}(); |
@@ -1,20 +0,78 @@ | ||
'use strict';Object.defineProperty(exports,"__esModule",{value:true});var _regenerator=require('babel-runtime/regenerator');var _regenerator2=_interopRequireDefault(_regenerator);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj};}exports.default=function formatError(res){var body,json;return _regenerator2.default.async(function formatError$(_context){while(1){switch(_context.prev=_context.next){case 0:if(!( | ||
res.status<300)){_context.next=2;break;}return _context.abrupt('return');case 2: | ||
'use strict'; | ||
Object.defineProperty(exports, "__esModule", { | ||
value: true | ||
}); | ||
var _regenerator = require('babel-runtime/regenerator'); | ||
console.error(res.status+' '+res.statusText);_context.next=5;return _regenerator2.default.awrap( | ||
var _regenerator2 = _interopRequireDefault(_regenerator); | ||
res.text());case 5:body=_context.sent; | ||
var _asyncToGenerator2 = require('babel-runtime/helpers/asyncToGenerator'); | ||
try{ | ||
json=JSON.parse(body); | ||
var _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2); | ||
if(json.error){ | ||
console.error(json.error); | ||
} | ||
}catch(err){ | ||
console.error('Could not complete request.'); | ||
} | ||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||
process.exit(1);case 8:case'end':return _context.stop();}}},null,this);}; | ||
exports.default = function () { | ||
var _ref = (0, _asyncToGenerator3.default)(_regenerator2.default.mark(function _callee(res) { | ||
var _ref2 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}, | ||
_ref2$verbose = _ref2.verbose, | ||
verbose = _ref2$verbose === undefined ? false : _ref2$verbose; | ||
var body, json; | ||
return _regenerator2.default.wrap(function _callee$(_context) { | ||
while (1) { | ||
switch (_context.prev = _context.next) { | ||
case 0: | ||
if (!(res.status < 300)) { | ||
_context.next = 2; | ||
break; | ||
} | ||
return _context.abrupt('return'); | ||
case 2: | ||
console.error(res.status + ' ' + res.statusText); | ||
_context.next = 5; | ||
return res.text(); | ||
case 5: | ||
body = _context.sent; | ||
if (verbose) { | ||
console.info(body); | ||
} | ||
try { | ||
json = JSON.parse(body); | ||
if (json.error) { | ||
console.error(json.error); | ||
} | ||
} catch (err) { | ||
console.error('Could not complete request.'); | ||
} | ||
process.exit(1); | ||
case 9: | ||
case 'end': | ||
return _context.stop(); | ||
} | ||
} | ||
}, _callee, this); | ||
})); | ||
function formatError(_x) { | ||
return _ref.apply(this, arguments); | ||
} | ||
return formatError; | ||
}(); | ||
module.exports = exports['default']; |
@@ -1,28 +0,29 @@ | ||
'use strict';var _yargs=require('yargs');var _yargs2=_interopRequireDefault(_yargs);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj};} | ||
'use strict'; | ||
process.on('unhandledRejection',function(err){ | ||
console.error(err.message); | ||
process.exit(1); | ||
}); | ||
var _yargs = require('yargs'); | ||
_yargs2.default. | ||
usage('\nUsage: logrocket [-k <apikey>] <command> [<args>]'). | ||
env('LOGROCKET'). | ||
alias('h','help'). | ||
option('k',{ | ||
alias:'apikey', | ||
type:'string', | ||
describe:'Your LogRocket API key', | ||
demand:'You must provide a LogRocket API key.', | ||
global:true, | ||
requiresArg:true}). | ||
var _yargs2 = _interopRequireDefault(_yargs); | ||
option('apihost',{ | ||
type:'string', | ||
describe:false}). | ||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||
commandDir('commands'). | ||
help(). | ||
demand(1,'Missing command, expected `release` or `upload`'). | ||
recommendCommands(). | ||
argv; | ||
process.on('unhandledRejection', function (err) { | ||
console.error(err.message); | ||
process.exit(1); | ||
}); | ||
_yargs2.default // eslint-disable-line no-unused-expressions | ||
.usage('\nUsage: logrocket [-k <apikey>] <command> [<args>]').env('LOGROCKET').alias('h', 'help').option('k', { | ||
alias: 'apikey', | ||
type: 'string', | ||
describe: 'Your LogRocket API key', | ||
demand: 'You must provide a LogRocket API key.', | ||
global: true, | ||
requiresArg: true | ||
}).option('apihost', { // testing param to override api url | ||
type: 'string', | ||
describe: false | ||
}).option('v', { // for debugging | ||
alias: 'verbose', | ||
boolean: true, | ||
describe: false | ||
}).commandDir('commands').help().demand(1, 'Missing command, expected `release` or `upload`').recommendCommands().argv; |
{ | ||
"name": "logrocket-cli", | ||
"version": "0.9.1", | ||
"version": "0.9.2", | ||
"description": "Command line tool for [LogRocket](https://logrocket.com/).", | ||
@@ -8,2 +8,6 @@ "main": "index.js", | ||
"license": "MIT", | ||
"repository": { | ||
"type": "git", | ||
"url": "https://github.com/LogRocket/logrocket-cli" | ||
}, | ||
"files": [ | ||
@@ -17,3 +21,6 @@ "bin/", | ||
"scripts": { | ||
"build": "babel src --presets babel-preset-es2015 --out-dir dist" | ||
"lint": "eslint src/", | ||
"build": "babel src --out-dir dist", | ||
"test:mocha": "mocha --opts test/mocha.opts dist/**/*.spec.js", | ||
"test": "npm run build && npm run test:mocha" | ||
}, | ||
@@ -25,3 +32,25 @@ "dependencies": { | ||
"yargs": "^5.0.0" | ||
}, | ||
"devDependencies": { | ||
"babel-cli": "^6.11.4", | ||
"babel-core": "^6.13.0", | ||
"babel-eslint": "^7.0.0", | ||
"babel-plugin-add-module-exports": "^0.2.1", | ||
"babel-plugin-transform-runtime": "^6.15.0", | ||
"babel-polyfill": "^6.13.0", | ||
"babel-preset-es2015": "^6.13.2", | ||
"babel-preset-stage-3": "^6.17.0", | ||
"chai": "^3.5.0", | ||
"dirty-chai": "^1.2.2", | ||
"eslint": "^3.8.1", | ||
"eslint-config-airbnb": "^12.0.0", | ||
"eslint-plugin-import": "^1.16.0", | ||
"eslint-plugin-jsx-a11y": "^2.2.3", | ||
"eslint-plugin-mocha": "^4.7.0", | ||
"eslint-plugin-react": "^6.4.1", | ||
"fetch-mock": "^5.1.2", | ||
"mocha": "^2.5.3", | ||
"mocha-circleci-reporter": "0.0.2", | ||
"raw-body": "^2.1.7" | ||
} | ||
} |
# LogRocket CLI | ||
The official command line tool for [LogRocket](https://logrocket.com/). | ||
The official command line tool for [LogRocket](https://logrocket.com/). | ||
[![CircleCI](https://circleci.com/gh/LogRocket/logrocket-cli.svg?style=shield)](https://circleci.com/gh/LogRocket/logrocket-cli) | ||
## Requirements | ||
@@ -6,0 +8,0 @@ |
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
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
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
No repository
Supply chain riskPackage does not have a linked source code repository. Without this field, a package will have no reference to the location of the source code use to generate the package.
Found 1 instance in 1 package
28261
10
632
20
1
20
5