Commit 2bb835ed2e96ac2de0ed6f420cbba1f24104609f

Authored by Adhidarma Hadiwinoto
1 parent ead957d4b1
Exists in master

Ready to rock

Showing 8 changed files with 427 additions and 1 deletions Inline Diff

lib/apiserver-caller.js
File was created 1 "use strict";
2
3 const request = require('request');
4 const prettyDump = require('./pretty-dump');
5
6 module.exports = function(reqOptions) {
7 console.error('Calling ' + reqOptions.url);
8 request(reqOptions, function(err, res, body) {
9 if (err) {
10 console.error(err);
11 return;
12 }
13
14 if (res.statusCode != 200) {
15 console.error('APISERVER not returning HTTP status code 200, instead ' + res.statusCode);
16 console.error('\nBody:\n');
17 console.error(body)
18 return;
19 }
20
21 console.error('\nRESULT:');
22 prettyDump(body);
23 })
24 }
25
lib/apiserver-url.js
File was created 1 "use strict";
2
3 const config = require('./config-reader');
4
5 if (!config || !config.apiserver || !config.apiserver.port || !config.apiserver.apikey) {
6 console.error('No suitable config entry.');
7 process.exit(1);
8 }
9
10 const url = `http://localhost:${config.apiserver.port}/apikey/${config.apiserver.apikey}`;
11 module.exports = url;
12
lib/config-reader.js
File was created 1 "use strict";
2 const configFile = process.cwd() + '/config.json';
3
4 const fs = require('fs');
5 if (!fs.existsSync(configFile)) {
6 console.error('No config file found.');
7 process.exit();
8 }
9
10 const config = require( configFile );
11
12 module.exports = config;
13
File was created 1 "use strict";
2
3 module.exports = function(body) {
4 try {
5 const obj = JSON.parse(body);
6 console.log(JSON.stringify(obj, null, 2));
7 }
8 catch(e) { console.log(body); }
9 }
10
File was created 1 #!/usr/bin/env node
2 "use strict";
3 const baseUrl = require('./lib/apiserver-url');
4 const apiserverCaller = require('./lib/apiserver-caller');
5
6 apiserverCaller({
7 url: baseUrl + '/matrix'
8 })
9
File was created 1 {
2 "name": "komodo-cli",
3 "version": "1.0.0",
4 "lockfileVersion": 1,
5 "requires": true,
6 "dependencies": {
7 "ajv": {
8 "version": "6.9.1",
9 "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.9.1.tgz",
10 "integrity": "sha512-XDN92U311aINL77ieWHmqCcNlwjoP5cHXDxIxbf2MaPYuCXOHS7gHH8jktxeK5omgd52XbSTX6a4Piwd1pQmzA==",
11 "requires": {
12 "fast-deep-equal": "^2.0.1",
13 "fast-json-stable-stringify": "^2.0.0",
14 "json-schema-traverse": "^0.4.1",
15 "uri-js": "^4.2.2"
16 }
17 },
18 "asn1": {
19 "version": "0.2.4",
20 "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz",
21 "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==",
22 "requires": {
23 "safer-buffer": "~2.1.0"
24 }
25 },
26 "assert-plus": {
27 "version": "1.0.0",
28 "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
29 "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU="
30 },
31 "asynckit": {
32 "version": "0.4.0",
33 "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
34 "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k="
35 },
36 "aws-sign2": {
37 "version": "0.7.0",
38 "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
39 "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg="
40 },
41 "aws4": {
42 "version": "1.8.0",
43 "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz",
44 "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ=="
45 },
46 "bcrypt-pbkdf": {
47 "version": "1.0.2",
48 "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
49 "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=",
50 "requires": {
51 "tweetnacl": "^0.14.3"
52 }
53 },
54 "caseless": {
55 "version": "0.12.0",
56 "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
57 "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw="
58 },
59 "combined-stream": {
60 "version": "1.0.7",
61 "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.7.tgz",
62 "integrity": "sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w==",
63 "requires": {
64 "delayed-stream": "~1.0.0"
65 }
66 },
67 "core-util-is": {
68 "version": "1.0.2",
69 "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
70 "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
71 },
72 "dashdash": {
73 "version": "1.14.1",
74 "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
75 "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
76 "requires": {
77 "assert-plus": "^1.0.0"
78 }
79 },
80 "delayed-stream": {
81 "version": "1.0.0",
82 "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
83 "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk="
84 },
85 "ecc-jsbn": {
86 "version": "0.1.2",
87 "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
88 "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=",
89 "requires": {
90 "jsbn": "~0.1.0",
91 "safer-buffer": "^2.1.0"
92 }
93 },
94 "extend": {
95 "version": "3.0.2",
96 "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
97 "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="
98 },
99 "extsprintf": {
100 "version": "1.3.0",
101 "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
102 "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU="
103 },
104 "fast-deep-equal": {
105 "version": "2.0.1",
106 "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz",
107 "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk="
108 },
109 "fast-json-stable-stringify": {
110 "version": "2.0.0",
111 "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz",
112 "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I="
113 },
114 "forever-agent": {
115 "version": "0.6.1",
116 "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
117 "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE="
118 },
119 "form-data": {
120 "version": "2.3.3",
121 "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz",
122 "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==",
123 "requires": {
124 "asynckit": "^0.4.0",
125 "combined-stream": "^1.0.6",
126 "mime-types": "^2.1.12"
127 }
128 },
129 "getpass": {
130 "version": "0.1.7",
131 "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
132 "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
133 "requires": {
134 "assert-plus": "^1.0.0"
135 }
136 },
137 "har-schema": {
138 "version": "2.0.0",
139 "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz",
140 "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI="
141 },
142 "har-validator": {
143 "version": "5.1.3",
144 "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz",
145 "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==",
146 "requires": {
147 "ajv": "^6.5.5",
148 "har-schema": "^2.0.0"
149 }
150 },
151 "http-signature": {
152 "version": "1.2.0",
153 "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
154 "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=",
155 "requires": {
156 "assert-plus": "^1.0.0",
157 "jsprim": "^1.2.2",
158 "sshpk": "^1.7.0"
159 }
160 },
161 "is-typedarray": {
162 "version": "1.0.0",
163 "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
164 "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo="
165 },
166 "isstream": {
167 "version": "0.1.2",
168 "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
169 "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo="
170 },
171 "jsbn": {
172 "version": "0.1.1",
173 "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
174 "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM="
175 },
176 "json-schema": {
177 "version": "0.2.3",
178 "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",
179 "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM="
180 },
181 "json-schema-traverse": {
182 "version": "0.4.1",
183 "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
184 "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="
185 },
186 "json-stringify-safe": {
187 "version": "5.0.1",
188 "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
189 "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus="
190 },
191 "jsprim": {
192 "version": "1.4.1",
193 "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",
194 "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=",
195 "requires": {
196 "assert-plus": "1.0.0",
197 "extsprintf": "1.3.0",
198 "json-schema": "0.2.3",
199 "verror": "1.10.0"
200 }
201 },
202 "mime-db": {
203 "version": "1.37.0",
204 "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.37.0.tgz",
205 "integrity": "sha512-R3C4db6bgQhlIhPU48fUtdVmKnflq+hRdad7IyKhtFj06VPNVdk2RhiYL3UjQIlso8L+YxAtFkobT0VK+S/ybg=="
206 },
207 "mime-types": {
208 "version": "2.1.21",
209 "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.21.tgz",
210 "integrity": "sha512-3iL6DbwpyLzjR3xHSFNFeb9Nz/M8WDkX33t1GFQnFOllWk8pOrh/LSrB5OXlnlW5P9LH73X6loW/eogc+F5lJg==",
211 "requires": {
212 "mime-db": "~1.37.0"
213 }
214 },
215 "oauth-sign": {
216 "version": "0.9.0",
217 "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz",
218 "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ=="
219 },
220 "performance-now": {
221 "version": "2.1.0",
222 "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
223 "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns="
224 },
225 "psl": {
226 "version": "1.1.31",
227 "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.31.tgz",
228 "integrity": "sha512-/6pt4+C+T+wZUieKR620OpzN/LlnNKuWjy1iFLQ/UG35JqHlR/89MP1d96dUfkf6Dne3TuLQzOYEYshJ+Hx8mw=="
229 },
230 "punycode": {
231 "version": "2.1.1",
232 "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
233 "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A=="
234 },
235 "qs": {
236 "version": "6.5.2",
237 "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
238 "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA=="
239 },
240 "request": {
241 "version": "2.88.0",
242 "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz",
243 "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==",
244 "requires": {
245 "aws-sign2": "~0.7.0",
246 "aws4": "^1.8.0",
247 "caseless": "~0.12.0",
248 "combined-stream": "~1.0.6",
249 "extend": "~3.0.2",
250 "forever-agent": "~0.6.1",
251 "form-data": "~2.3.2",
252 "har-validator": "~5.1.0",
253 "http-signature": "~1.2.0",
254 "is-typedarray": "~1.0.0",
255 "isstream": "~0.1.2",
256 "json-stringify-safe": "~5.0.1",
257 "mime-types": "~2.1.19",
258 "oauth-sign": "~0.9.0",
259 "performance-now": "^2.1.0",
260 "qs": "~6.5.2",
261 "safe-buffer": "^5.1.2",
262 "tough-cookie": "~2.4.3",
263 "tunnel-agent": "^0.6.0",
264 "uuid": "^3.3.2"
265 }
266 },
267 "safe-buffer": {
268 "version": "5.1.2",
269 "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
270 "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
271 },
272 "safer-buffer": {
273 "version": "2.1.2",
274 "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
275 "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
276 },
277 "sshpk": {
278 "version": "1.16.1",
279 "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz",
280 "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==",
281 "requires": {
282 "asn1": "~0.2.3",
283 "assert-plus": "^1.0.0",
284 "bcrypt-pbkdf": "^1.0.0",
285 "dashdash": "^1.12.0",
286 "ecc-jsbn": "~0.1.1",
287 "getpass": "^0.1.1",
288 "jsbn": "~0.1.0",
289 "safer-buffer": "^2.0.2",
290 "tweetnacl": "~0.14.0"
291 }
292 },
293 "tough-cookie": {
294 "version": "2.4.3",
295 "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz",
296 "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==",
297 "requires": {
298 "psl": "^1.1.24",
299 "punycode": "^1.4.1"
300 },
301 "dependencies": {
302 "punycode": {
303 "version": "1.4.1",
304 "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
305 "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4="
306 }
307 }
308 },
309 "tunnel-agent": {
310 "version": "0.6.0",
311 "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
312 "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
313 "requires": {
314 "safe-buffer": "^5.0.1"
315 }
316 },
317 "tweetnacl": {
318 "version": "0.14.5",
319 "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
320 "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q="
321 },
322 "uri-js": {
323 "version": "4.2.2",
324 "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz",
325 "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==",
326 "requires": {
327 "punycode": "^2.1.0"
328 }
329 },
330 "uuid": {
331 "version": "3.3.2",
332 "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz",
333 "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA=="
334 },
335 "verror": {
336 "version": "1.10.0",
337 "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
338 "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
339 "requires": {
340 "assert-plus": "^1.0.0",
341 "core-util-is": "1.0.2",
342 "extsprintf": "^1.2.0"
343 }
344 }
345 }
346 }
347
1 { 1 {
2 "name": "komodo-cli", 2 "name": "komodo-cli",
3 "version": "1.0.0", 3 "version": "1.0.0",
4 "description": "Komodo command-line tools", 4 "description": "Komodo command-line tools",
5 "main": "index.js", 5 "main": "index.js",
6 "scripts": { 6 "scripts": {
7 "test": "mocha" 7 "test": "mocha"
8 }, 8 },
9 "repository": { 9 "repository": {
10 "type": "git", 10 "type": "git",
11 "url": "git@gitlab.kodesumber.com:komodo/komodo-cli.git" 11 "url": "git@gitlab.kodesumber.com:komodo/komodo-cli.git"
12 }, 12 },
13 "keywords": [ 13 "keywords": [
14 "komodo", 14 "komodo",
15 "tektrans", 15 "tektrans",
16 "ppob", 16 "ppob",
17 "cli" 17 "cli"
18 ], 18 ],
19 "author": "Adhidarma Hadiwinoto <me@adhisimon.org>", 19 "author": "Adhidarma Hadiwinoto <me@adhisimon.org>",
20 "license": "ISC" 20 "license": "ISC",
21 "bin": {
22 "komodo-cli-matrix": "./matrix.js",
23 "komodo-cli-pause": "./pause.js",
24 "komodo-cli-resume": "./resume.js"
25 },
26 "dependencies": {
27 "request": "^2.88.0"
28 }
21 } 29 }
22 30
File was created 1 #!/usr/bin/env node
2 "use strict";
3 const baseUrl = require('./lib/apiserver-url');
4 const apiserverCaller = require('./lib/apiserver-caller');
5
6 apiserverCaller({
7 url: baseUrl + '/services/resume'
8 })
9