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 Side-by-side Diff

lib/apiserver-caller.js
... ... @@ -0,0 +1,24 @@
  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 +}
lib/apiserver-url.js
... ... @@ -0,0 +1,11 @@
  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;
lib/config-reader.js
... ... @@ -0,0 +1,12 @@
  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;
... ... @@ -0,0 +1,9 @@
  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 +}
... ... @@ -0,0 +1,8 @@
  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 +})
... ... @@ -0,0 +1,346 @@
  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 +}
... ... @@ -17,5 +17,13 @@
17 17 "cli"
18 18 ],
19 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 }
... ... @@ -0,0 +1,8 @@
  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 +})