UNPKG

4.21 kBJavaScriptView Raw
1'use strict';
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6exports.UploadError = undefined;
7
8let upload = (() => {
9 var _ref = _asyncToGenerator(function* (options) {
10 const {
11 directory,
12 ignore = [],
13 token: tokenOption,
14 branch: branchOption,
15 commit: commitOption
16 } = options;
17
18 const token = tokenOption || _config2.default.get('token');
19 let environment = {};
20
21 if (process.env.ARGOS_CLI_TEST !== 'true') {
22 environment = (0, _getEnvironment2.default)(process.env);
23 }
24 const branch = branchOption || _config2.default.get('branch') || environment.branch;
25 const commit = commitOption || _config2.default.get('commit') || environment.commit;
26
27 if (environment.ci) {
28 (0, _display.displayInfo)(`identified \`${environment.ci}\` environment`);
29 }
30
31 if (!token) {
32 throw new UploadError('Token missing: use ARGOS_TOKEN or the --token option.');
33 }
34
35 if (!branch) {
36 throw new UploadError('Branch missing: use ARGOS_BRANCH or the --branch option.');
37 }
38
39 if (!commit) {
40 throw new UploadError('Commit missing: use ARGOS_COMMIT or the --commit option.');
41 }
42
43 if (!(yield (0, _isDirectory2.default)(directory))) {
44 throw new UploadError('The path provided is not a directory.');
45 }
46
47 if (!(yield (0, _isReadable2.default)(directory))) {
48 throw new UploadError('The path provided is not a readable, please check fs rights.');
49 }
50
51 (0, _display.displayInfo)(`using \`${branch}\` as branch`);
52 (0, _display.displayInfo)(`using \`${commit}\` as commit`);
53
54 const screenshots = yield (0, _readScreenshots2.default)({ cwd: directory, ignore });
55
56 if (screenshots.length === 0) {
57 throw new UploadError(`The path provided doesn't contain any image (${_readScreenshots.GLOB_PATTERN}).`);
58 }
59
60 (0, _display.displayInfo)(`found ${screenshots.length} screenshots to upload`);
61
62 const body = new _formData2.default();
63 body.append('data', JSON.stringify({
64 branch,
65 commit,
66 token,
67 names: screenshots.map(function (screenshot) {
68 return screenshot.name;
69 })
70 }));
71
72 screenshots.reduce(function (body, screenshot) {
73 body.append('screenshots[]', _fs2.default.createReadStream(screenshot.filename));
74 return body;
75 }, body);
76
77 return (0, _nodeFetch2.default)(`${_config2.default.get('endpoint')}/builds`, {
78 headers: {
79 'X-Argos-CLI-Version': _package2.default.version
80 },
81 method: 'POST',
82 body
83 });
84 });
85
86 return function upload(_x) {
87 return _ref.apply(this, arguments);
88 };
89})();
90
91var _fs = require('mz/fs');
92
93var _fs2 = _interopRequireDefault(_fs);
94
95var _nodeFetch = require('node-fetch');
96
97var _nodeFetch2 = _interopRequireDefault(_nodeFetch);
98
99var _formData = require('form-data');
100
101var _formData2 = _interopRequireDefault(_formData);
102
103var _isDirectory = require('./isDirectory');
104
105var _isDirectory2 = _interopRequireDefault(_isDirectory);
106
107var _isReadable = require('./isReadable');
108
109var _isReadable2 = _interopRequireDefault(_isReadable);
110
111var _readScreenshots = require('./readScreenshots');
112
113var _readScreenshots2 = _interopRequireDefault(_readScreenshots);
114
115var _getEnvironment = require('./getEnvironment');
116
117var _getEnvironment2 = _interopRequireDefault(_getEnvironment);
118
119var _config = require('./config');
120
121var _config2 = _interopRequireDefault(_config);
122
123var _display = require('./display');
124
125var _package = require('../package.json');
126
127var _package2 = _interopRequireDefault(_package);
128
129function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
130
131function _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step("next", value); }, function (err) { step("throw", err); }); } } return step("next"); }); }; }
132
133class UploadError extends Error {}
134
135exports.UploadError = UploadError;
136exports.default = upload;
\No newline at end of file