{"_id":"@arobson/hikaru","_rev":"18-57093863a5b6ae8270676866a5d10aaf","name":"@arobson/hikaru","description":"A continuous deployment service and integration helper for kubernetes","dist-tags":{"latest":"1.4.3"},"versions":{"1.2.1":{"name":"@arobson/hikaru","version":"1.2.1","description":"A continuous deployment service and integration helper for kubernetes","main":"src/index.js","bin":{"hikaru":"./bin/hikaru.js"},"dependencies":{"auto-kubernetes-client":"^0.4.3","bluebird":"^3.5.1","bole":"^3.0.2","chalk":"^2.1.0","deftly":"^1.1.0","deftly-express":"^1.1.2","dot-env":"0.0.1","express":"^4.16.2","fount":"1.1.x","inquirer":"^3.3.0","js-yaml":"^3.9.0","json-stream":"^1.0.0","lodash":"^4.16.2","mcgonagall":"1.1.x","multiparty":"^4.1.3","rimraf":"^2.6.2","semver":"^5.4.1","toml-j0.4":"^1.1.1","yargs":"^9.0.1"},"devDependencies":{"chai":"^4.1.0","chai-as-promised":"^7.1.1","coveralls":"^2.13.1","mocha":"^3.4.2","mocha-lcov-reporter":"^1.3.0","nyc":"^11.0.3","sinon":"^2.3.8","sinon-chai":"^2.12.0","standard":"^10.0.2","standard-version":"^4.2.0"},"scripts":{"pretest":"standard","test":"node_modules/mocha/bin/mocha spec/*.spec.js","coverage":"nyc npm test","continuous":"./node_modules/mocha/bin/mocha spec/*.spec.js -w","release":"standard-version","standard":"standard --fix"},"repository":{"type":"git","url":"git://github.com/arobson/hikaru.git"},"keywords":["kubernetes","deployment"],"author":{"name":"Alex Robson"},"license":"MIT","bugs":{"url":"https://github.com/arobson/hikaru/issues"},"homepage":"https://github.com/arobson/hikaru#readme","standard":{"env":["mocha"]},"gitHead":"569f9c23115255edf2dec31928658b7d2d486fff","_id":"@arobson/hikaru@1.2.1","_npmVersion":"5.4.2","_nodeVersion":"6.10.2","_npmUser":{"name":"arobson","email":"asrobson@gmail.com"},"dist":{"integrity":"sha512-gOcidSIpSXYl6uitrfWAzQLa00l8jDFez9l2FiFDOIqB//qsiA/yThP2B16TFiRNUTIFogxz4wcbxvS9xt3mxQ==","shasum":"c27ce25f860d59b89787be21e388670554df8a84","tarball":"https://registry.npmjs.org/@arobson/hikaru/-/hikaru-1.2.1.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEB1LI2Q0Ern07g0R3sv4V/HXfEI8e8tkYfuKT+lR/YkAiEA8i9HsHLl2v7kipJRRBnSWCmZWlftAH+yjNADDjY7s5k="}]},"maintainers":[{"name":"arobson","email":"asrobson@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/hikaru-1.2.1.tgz_1508791629321_0.05073424126021564"}},"1.2.2":{"name":"@arobson/hikaru","version":"1.2.2","description":"A continuous deployment service and integration helper for kubernetes","main":"src/index.js","bin":{"hikaru":"./bin/hikaru.js"},"dependencies":{"auto-kubernetes-client":"^0.4.3","bluebird":"^3.5.1","bole":"^3.0.2","chalk":"^2.1.0","deftly":"^1.1.0","deftly-express":"^1.1.2","dot-env":"0.0.1","express":"^4.16.2","fount":"1.1.x","inquirer":"^3.3.0","js-yaml":"^3.9.0","json-stream":"^1.0.0","lodash":"^4.16.2","mcgonagall":"1.2.x","multiparty":"^4.1.3","rimraf":"^2.6.2","semver":"^5.4.1","toml-j0.4":"^1.1.1","yargs":"^9.0.1"},"devDependencies":{"chai":"^4.1.0","chai-as-promised":"^7.1.1","coveralls":"^2.13.1","mocha":"^3.4.2","mocha-lcov-reporter":"^1.3.0","nyc":"^11.0.3","sinon":"^2.3.8","sinon-chai":"^2.12.0","standard":"^10.0.2","standard-version":"^4.2.0"},"scripts":{"pretest":"standard","test":"node_modules/mocha/bin/mocha spec/*.spec.js","coverage":"nyc npm test","continuous":"./node_modules/mocha/bin/mocha spec/*.spec.js -w","release":"standard-version","standard":"standard --fix"},"repository":{"type":"git","url":"git://github.com/arobson/hikaru.git"},"keywords":["kubernetes","deployment"],"author":{"name":"Alex Robson"},"license":"MIT","bugs":{"url":"https://github.com/arobson/hikaru/issues"},"homepage":"https://github.com/arobson/hikaru#readme","standard":{"env":["mocha"]},"gitHead":"d9f693d0f750d2744c6dafb2ebfb83b5edf683a1","_id":"@arobson/hikaru@1.2.2","_npmVersion":"5.3.0","_nodeVersion":"8.6.0","_npmUser":{"name":"arobson","email":"asrobson@gmail.com"},"dist":{"integrity":"sha512-6RJM6zspMsIFe/RnErh5V+LY/7qyMjMh6Ayz7T7CKTkMS6+d+JY9Y+hy3xMVnYYqdiKrOrvG0Ub8njqjFCFVhQ==","shasum":"30e8e07eb9658539b19c2648da076d09408c601d","tarball":"https://registry.npmjs.org/@arobson/hikaru/-/hikaru-1.2.2.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAw5ZdZcJ5rrByRtdlmJCG58eZwsK/g9BHhj7NNSqZAeAiEAof51ZcOG1dziRu5PWMd7s8jM4c3Bi2ocV2mQn/93A+c="}]},"maintainers":[{"name":"arobson","email":"asrobson@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/hikaru-1.2.2.tgz_1508867459964_0.4254860815126449"}},"1.2.3":{"name":"@arobson/hikaru","version":"1.2.3","description":"A continuous deployment service and integration helper for kubernetes","main":"src/index.js","bin":{"hikaru":"./bin/hikaru.js"},"dependencies":{"auto-kubernetes-client":"^0.4.3","bluebird":"^3.5.1","bole":"^3.0.2","chalk":"^2.1.0","deftly":"^1.1.0","deftly-express":"^1.1.2","dot-env":"0.0.1","express":"^4.16.2","fount":"1.1.x","inquirer":"^3.3.0","js-yaml":"^3.9.0","json-stream":"^1.0.0","lodash":"^4.16.2","mcgonagall":"1.2.x","multiparty":"^4.1.3","rimraf":"^2.6.2","semver":"^5.4.1","toml-j0.4":"^1.1.1","yargs":"^9.0.1"},"devDependencies":{"chai":"^4.1.0","chai-as-promised":"^7.1.1","coveralls":"^2.13.1","mocha":"^3.4.2","mocha-lcov-reporter":"^1.3.0","nyc":"^11.0.3","sinon":"^2.3.8","sinon-chai":"^2.12.0","standard":"^10.0.2","standard-version":"^4.2.0"},"scripts":{"pretest":"standard","test":"node_modules/mocha/bin/mocha spec/*.spec.js","coverage":"nyc npm test","continuous":"./node_modules/mocha/bin/mocha spec/*.spec.js -w","release":"standard-version","standard":"standard --fix"},"repository":{"type":"git","url":"git://github.com/arobson/hikaru.git"},"keywords":["kubernetes","deployment"],"author":{"name":"Alex Robson"},"license":"MIT","bugs":{"url":"https://github.com/arobson/hikaru/issues"},"homepage":"https://github.com/arobson/hikaru#readme","standard":{"env":["mocha"]},"gitHead":"21f2dca2df0743db856fff61dfd97d4b28055ea1","_id":"@arobson/hikaru@1.2.3","_npmVersion":"5.3.0","_nodeVersion":"8.6.0","_npmUser":{"name":"arobson","email":"asrobson@gmail.com"},"dist":{"integrity":"sha512-yRp9qei5r8hYwUTpKy7Yi3fbg+5z/sQbnkuUuRFup8dL0UCsLFJryS/J7r+QuMc8eDAGRz/rRMKwBHh6wYlXbA==","shasum":"82e6fdd1e6c7b5ccd07272333d30c1615c703349","tarball":"https://registry.npmjs.org/@arobson/hikaru/-/hikaru-1.2.3.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDmQ5ZtHmeHdgVKKuI93rQYI0KJwzx4ISRwKx2KhNB+/AIgIpCSLU/b7v1T5jPOVV+uJq7HRIvSW92VQsVSz3TD7ho="}]},"maintainers":[{"name":"arobson","email":"asrobson@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/hikaru-1.2.3.tgz_1508906102955_0.16489293542690575"}},"1.3.0":{"name":"@arobson/hikaru","version":"1.3.0","description":"A continuous deployment service and integration helper for kubernetes","main":"src/index.js","bin":{"hikaru":"./bin/hikaru.js"},"dependencies":{"auto-kubernetes-client":"^0.4.3","bluebird":"^3.5.1","bole":"^3.0.2","chalk":"^2.1.0","deftly":"^1.1.0","deftly-express":"^1.1.2","dot-env":"0.0.1","express":"^4.16.2","fount":"1.1.x","inquirer":"^3.3.0","js-yaml":"^3.9.0","json-stream":"^1.0.0","lodash":"^4.16.2","mcgonagall":"1.2.x","multiparty":"^4.1.3","rimraf":"^2.6.2","semver":"^5.4.1","toml-j0.4":"^1.1.1","yargs":"^9.0.1"},"devDependencies":{"chai":"^4.1.0","chai-as-promised":"^7.1.1","coveralls":"^2.13.1","mocha":"^3.4.2","mocha-lcov-reporter":"^1.3.0","nyc":"^11.0.3","sinon":"^2.3.8","sinon-chai":"^2.12.0","standard":"^10.0.2","standard-version":"^4.2.0"},"scripts":{"pretest":"standard","test":"node_modules/mocha/bin/mocha spec/*.spec.js","coverage":"nyc npm test","continuous":"./node_modules/mocha/bin/mocha spec/*.spec.js -w","release":"standard-version","standard":"standard --fix"},"repository":{"type":"git","url":"git://github.com/arobson/hikaru.git"},"keywords":["kubernetes","deployment"],"author":{"name":"Alex Robson"},"license":"MIT","bugs":{"url":"https://github.com/arobson/hikaru/issues"},"homepage":"https://github.com/arobson/hikaru#readme","standard":{"env":["mocha"]},"gitHead":"388b14f31864fd62eb28279db121a55720d4dbe1","_id":"@arobson/hikaru@1.3.0","_npmVersion":"5.3.0","_nodeVersion":"8.6.0","_npmUser":{"name":"arobson","email":"asrobson@gmail.com"},"dist":{"integrity":"sha512-RaVtCmRCq3xV0GD19AiSuJismHS7Dgv+kxMbTDK4h8TfwLq1c0kpl4nz2jKxs2mS7EjvBSJQPofa+QTK+aoHLA==","shasum":"588c650dc673ba5a8cfe2bf38573796c14631b27","tarball":"https://registry.npmjs.org/@arobson/hikaru/-/hikaru-1.3.0.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCTs+03/Hif3XCWgmLcGj9/UaBCkoRNMN0+e9Y1aiWLDwIgGQsecNAW4o8CkvQch3M9Z8qJHKF4aMpoKsSoG709kjY="}]},"maintainers":[{"name":"arobson","email":"asrobson@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/hikaru-1.3.0.tgz_1508951679151_0.9270927670877427"}},"1.3.1":{"name":"@arobson/hikaru","version":"1.3.1","description":"A continuous deployment service and integration helper for kubernetes","main":"src/index.js","bin":{"hikaru":"./bin/hikaru.js"},"dependencies":{"auto-kubernetes-client":"^0.4.3","bluebird":"^3.5.1","bole":"^3.0.2","chalk":"^2.1.0","deftly":"^1.1.0","deftly-express":"^1.1.2","dot-env":"0.0.1","express":"^4.16.2","fount":"1.1.x","inquirer":"^3.3.0","js-yaml":"^3.9.0","json-stream":"^1.0.0","lodash":"^4.16.2","mcgonagall":"1.2.x","multiparty":"^4.1.3","rimraf":"^2.6.2","semver":"^5.4.1","toml-j0.4":"^1.1.1","yargs":"^9.0.1"},"devDependencies":{"chai":"^4.1.0","chai-as-promised":"^7.1.1","coveralls":"^2.13.1","mocha":"^3.4.2","mocha-lcov-reporter":"^1.3.0","nyc":"^11.0.3","sinon":"^2.3.8","sinon-chai":"^2.12.0","standard":"^10.0.2","standard-version":"^4.2.0"},"scripts":{"pretest":"standard","test":"node_modules/mocha/bin/mocha spec/*.spec.js","coverage":"nyc npm test","continuous":"./node_modules/mocha/bin/mocha spec/*.spec.js -w","release":"standard-version","standard":"standard --fix"},"repository":{"type":"git","url":"git://github.com/arobson/hikaru.git"},"keywords":["kubernetes","deployment"],"author":{"name":"Alex Robson"},"license":"MIT","bugs":{"url":"https://github.com/arobson/hikaru/issues"},"homepage":"https://github.com/arobson/hikaru#readme","standard":{"env":["mocha"]},"gitHead":"a977887546f3d25fef9088a153299cf0edc92995","_id":"@arobson/hikaru@1.3.1","_npmVersion":"5.3.0","_nodeVersion":"8.6.0","_npmUser":{"name":"arobson","email":"asrobson@gmail.com"},"dist":{"integrity":"sha512-NSzRNkiBqxISz+5HTIp5hHcqDeLtgdOGf1vHbvP8J+IW14/cYu1kgRIwYxPM15ELlkEUiokeAJQ+EFDIF7PC8Q==","shasum":"e5849479c8f055ebdcb4a93d21a58af552ee9c2f","tarball":"https://registry.npmjs.org/@arobson/hikaru/-/hikaru-1.3.1.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGxsSxj01Pc3IjdLc5CluBrl6W84rNYifzNbgzy8Ft10AiEA6KS/2f8CG9auUJ72r0Ue1ndYSHm1H1+uaVk45aSaDBE="}]},"maintainers":[{"name":"arobson","email":"asrobson@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/hikaru-1.3.1.tgz_1508984735475_0.9436798146925867"}},"1.3.2":{"name":"@arobson/hikaru","version":"1.3.2","description":"A continuous deployment service and integration helper for kubernetes","main":"src/index.js","bin":{"hikaru":"./bin/hikaru.js"},"dependencies":{"auto-kubernetes-client":"^0.4.3","bluebird":"^3.5.1","bole":"^3.0.2","chalk":"^2.1.0","deftly":"^1.1.0","deftly-express":"^1.1.2","dot-env":"0.0.1","express":"^4.16.2","fount":"1.1.x","inquirer":"^3.3.0","js-yaml":"^3.9.0","json-stream":"^1.0.0","lodash":"^4.16.2","mcgonagall":"1.2.x","multiparty":"^4.1.3","rimraf":"^2.6.2","semver":"^5.4.1","toml-j0.4":"^1.1.1","yargs":"^9.0.1"},"devDependencies":{"chai":"^4.1.0","chai-as-promised":"^7.1.1","coveralls":"^2.13.1","mocha":"^3.4.2","mocha-lcov-reporter":"^1.3.0","nyc":"^11.0.3","sinon":"^2.3.8","sinon-chai":"^2.12.0","standard":"^10.0.2","standard-version":"^4.2.0"},"scripts":{"pretest":"standard","test":"node_modules/mocha/bin/mocha spec/*.spec.js","coverage":"nyc npm test","continuous":"./node_modules/mocha/bin/mocha spec/*.spec.js -w","release":"standard-version","standard":"standard --fix"},"repository":{"type":"git","url":"git://github.com/arobson/hikaru.git"},"keywords":["kubernetes","deployment"],"author":{"name":"Alex Robson"},"license":"MIT","bugs":{"url":"https://github.com/arobson/hikaru/issues"},"homepage":"https://github.com/arobson/hikaru#readme","standard":{"env":["mocha"]},"gitHead":"f304e45a6a1658ada3ef406f75becc1ba9207262","_id":"@arobson/hikaru@1.3.2","_npmVersion":"5.3.0","_nodeVersion":"8.6.0","_npmUser":{"name":"arobson","email":"asrobson@gmail.com"},"dist":{"integrity":"sha512-AJRVwTmF9tn/1r5ExyCN9Fvm/BxEzvVyo/AfK91vKwTiQVx9MAJ8xmwAcAfQ1fm/8Mao0JvVcKJyDoB11Uka0Q==","shasum":"22e20e078872ea55bba1fb45b742af51da5913ef","tarball":"https://registry.npmjs.org/@arobson/hikaru/-/hikaru-1.3.2.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFf0Q4Q82vSIgDuEsaEeTA5zuqQRDye4WJURW5m/byLAAiEApJzuLmaVQ9tSgD6xRCtJyJ2k4GDFLBJi2H1l1f/w79I="}]},"maintainers":[{"name":"arobson","email":"asrobson@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/hikaru-1.3.2.tgz_1509036411429_0.7116533466614783"}},"1.3.3":{"name":"@arobson/hikaru","version":"1.3.3","description":"A continuous deployment service and integration helper for kubernetes","main":"src/index.js","bin":{"hikaru":"./bin/hikaru.js"},"dependencies":{"auto-kubernetes-client":"^0.4.3","bluebird":"^3.5.1","bole":"^3.0.2","chalk":"^2.1.0","deftly":"^1.1.0","deftly-express":"^1.1.2","dot-env":"0.0.1","express":"^4.16.2","fount":"1.1.x","inquirer":"^3.3.0","js-yaml":"^3.9.0","json-stream":"^1.0.0","lodash":"^4.16.2","mcgonagall":"1.3.x","multiparty":"^4.1.3","rimraf":"^2.6.2","semver":"^5.4.1","toml-j0.4":"^1.1.1","yargs":"^9.0.1"},"devDependencies":{"chai":"^4.1.0","chai-as-promised":"^7.1.1","coveralls":"^2.13.1","mocha":"^3.4.2","mocha-lcov-reporter":"^1.3.0","nyc":"^11.0.3","sinon":"^2.3.8","sinon-chai":"^2.12.0","standard":"^10.0.2","standard-version":"^4.2.0"},"scripts":{"pretest":"standard","test":"node_modules/mocha/bin/mocha spec/*.spec.js","coverage":"nyc npm test","continuous":"./node_modules/mocha/bin/mocha spec/*.spec.js -w","release":"standard-version","standard":"standard --fix"},"repository":{"type":"git","url":"git://github.com/arobson/hikaru.git"},"keywords":["kubernetes","deployment"],"author":{"name":"Alex Robson"},"license":"MIT","bugs":{"url":"https://github.com/arobson/hikaru/issues"},"homepage":"https://github.com/arobson/hikaru#readme","standard":{"env":["mocha"]},"gitHead":"df8647007a89e06d7218be20054de919a7e17dc9","_id":"@arobson/hikaru@1.3.3","_npmVersion":"5.3.0","_nodeVersion":"8.6.0","_npmUser":{"name":"arobson","email":"asrobson@gmail.com"},"dist":{"integrity":"sha512-cry0FyYZ1NKuCydxz+aIDcedhmIXiYc1XwbxIga7yxUlxancucN/y/QN13/A8LD3r8qdHgW5XbDrSfigeIxGaQ==","shasum":"bbdf807de52bcbb2694975a06990138b622ffaf2","tarball":"https://registry.npmjs.org/@arobson/hikaru/-/hikaru-1.3.3.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCID521ZFa/NPjSfX1c4ZYDMBCqv5AJ+Q+RQ2UkW4HLd8OAiEA7HonoM45hvz1hXDcbnpaHPsZFaSQFZ5Qu5+7trg5Il4="}]},"maintainers":[{"name":"arobson","email":"asrobson@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/hikaru-1.3.3.tgz_1509118169477_0.4328638177830726"}},"1.3.4":{"name":"@arobson/hikaru","version":"1.3.4","description":"A continuous deployment service and integration helper for kubernetes","main":"src/index.js","bin":{"hikaru":"./bin/hikaru.js"},"dependencies":{"auto-kubernetes-client":"^0.4.3","bluebird":"^3.5.1","bole":"^3.0.2","chalk":"^2.1.0","deftly":"^1.1.0","deftly-express":"^1.1.2","dot-env":"0.0.1","express":"^4.16.2","fount":"1.1.x","inquirer":"^3.3.0","js-yaml":"^3.9.0","json-stream":"^1.0.0","lodash":"^4.16.2","mcgonagall":"1.3.x","multiparty":"^4.1.3","rimraf":"^2.6.2","semver":"^5.4.1","toml-j0.4":"^1.1.1","yargs":"^9.0.1"},"devDependencies":{"chai":"^4.1.0","chai-as-promised":"^7.1.1","coveralls":"^2.13.1","mocha":"^3.4.2","mocha-lcov-reporter":"^1.3.0","nyc":"^11.0.3","sinon":"^2.3.8","sinon-chai":"^2.12.0","standard":"^10.0.2","standard-version":"^4.2.0"},"scripts":{"pretest":"standard","test":"node_modules/mocha/bin/mocha spec/*.spec.js","coverage":"nyc npm test","continuous":"./node_modules/mocha/bin/mocha spec/*.spec.js -w","release":"standard-version","standard":"standard --fix"},"repository":{"type":"git","url":"git://github.com/arobson/hikaru.git"},"keywords":["kubernetes","deployment"],"author":{"name":"Alex Robson"},"license":"MIT","bugs":{"url":"https://github.com/arobson/hikaru/issues"},"homepage":"https://github.com/arobson/hikaru#readme","standard":{"env":["mocha"]},"gitHead":"e408dc8f5b05ef0a8762cc078a66f9dfd64e6aeb","_id":"@arobson/hikaru@1.3.4","_npmVersion":"5.4.2","_nodeVersion":"6.10.2","_npmUser":{"name":"arobson","email":"asrobson@gmail.com"},"dist":{"integrity":"sha512-6yb2fCS7lm7z72j/XGGqPeNzW4z1NcELh3r967aN42jbZnVR7yMMec2eD69LIiFTt/fFNjPbmHn9cSlZIfeyIw==","shasum":"654120f252a34988b0db2dc60ee018fbf266df1e","tarball":"https://registry.npmjs.org/@arobson/hikaru/-/hikaru-1.3.4.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEdzEd7X02BB6TLQDMtKXMN2tHv8kdlxVgmoUjCNTss0AiEAyGCsiMa1eSelK631D6Rop87VB2J5vcMNmfwL32xq5FU="}]},"maintainers":[{"name":"arobson","email":"asrobson@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/hikaru-1.3.4.tgz_1509497703104_0.4188252459280193"}},"1.4.0":{"name":"@arobson/hikaru","version":"1.4.0","description":"A continuous deployment service and integration helper for kubernetes","main":"src/index.js","bin":{"hikaru":"./bin/hikaru.js"},"dependencies":{"auto-kubernetes-client":"^0.4.3","bluebird":"^3.5.1","bole":"^3.0.2","chalk":"^2.1.0","deftly":"^1.1.0","deftly-express":"^1.1.2","dot-env":"0.0.1","express":"^4.16.2","fount":"1.1.x","inquirer":"^3.3.0","js-yaml":"^3.9.0","json-stream":"^1.0.0","lodash":"^4.16.2","mcgonagall":"1.4.x","multiparty":"^4.1.3","pluralize":"^7.0.0","rimraf":"^2.6.2","semver":"^5.4.1","toml-j0.4":"^1.1.1","yargs":"^9.0.1"},"devDependencies":{"chai":"^4.1.0","chai-as-promised":"^7.1.1","coveralls":"^2.13.1","mocha":"^3.4.2","mocha-lcov-reporter":"^1.3.0","nyc":"^11.0.3","sinon":"^2.3.8","sinon-chai":"^2.12.0","standard":"^10.0.2","standard-version":"^4.2.0"},"scripts":{"pretest":"standard","test":"node_modules/mocha/bin/mocha spec/*.spec.js","coverage":"nyc npm test","continuous":"./node_modules/mocha/bin/mocha spec/*.spec.js -w","release":"standard-version","standard":"standard --fix"},"repository":{"type":"git","url":"git://github.com/arobson/hikaru.git"},"keywords":["kubernetes","deployment"],"author":{"name":"Alex Robson"},"license":"MIT","bugs":{"url":"https://github.com/arobson/hikaru/issues"},"homepage":"https://github.com/arobson/hikaru#readme","standard":{"env":["mocha"]},"gitHead":"3a14206dc1852f3dc01986ddbb0185c075ea1973","_id":"@arobson/hikaru@1.4.0","_npmVersion":"5.4.2","_nodeVersion":"8.8.0","_npmUser":{"name":"arobson","email":"asrobson@gmail.com"},"dist":{"integrity":"sha512-PUzCcfA9PKJ6GU1fO2B1cRlBukSQLUoTK2gCyrDl/nmhQoTbxA/4YZg390tJcRAtwHr2sqKkQbYYte1rs+41YQ==","shasum":"a25bbf072339bbac811c0e3621b8e37171a83741","tarball":"https://registry.npmjs.org/@arobson/hikaru/-/hikaru-1.4.0.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHBfbR1a6uFoDhE2hXSe6AKWERYmaRAAVucDvYphNPDgAiAy4t2fUtJUCd3A+sERCfwGzdfAaA8DHiIag/aJqQOtbA=="}]},"maintainers":[{"name":"arobson","email":"asrobson@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/hikaru-1.4.0.tgz_1509994053788_0.00046519283205270767"}},"1.4.1":{"name":"@arobson/hikaru","version":"1.4.1","description":"A continuous deployment service and integration helper for kubernetes","main":"src/index.js","bin":{"hikaru":"./bin/hikaru.js"},"dependencies":{"auto-kubernetes-client":"^0.4.3","bluebird":"^3.5.1","bole":"^3.0.2","chalk":"^2.1.0","deftly":"^1.1.0","deftly-express":"^1.1.2","dot-env":"0.0.1","express":"^4.16.2","fount":"1.1.x","inquirer":"^3.3.0","js-yaml":"^3.9.0","json-stream":"^1.0.0","lodash":"^4.16.2","mcgonagall":"1.4.x","multiparty":"^4.1.3","pluralize":"^7.0.0","rimraf":"^2.6.2","semver":"^5.4.1","toml-j0.4":"^1.1.1","yargs":"^9.0.1"},"devDependencies":{"chai":"^4.1.0","chai-as-promised":"^7.1.1","coveralls":"^2.13.1","mocha":"^3.4.2","mocha-lcov-reporter":"^1.3.0","nyc":"^11.0.3","sinon":"^2.3.8","sinon-chai":"^2.12.0","standard":"^10.0.2","standard-version":"^4.2.0"},"scripts":{"pretest":"standard","test":"node_modules/mocha/bin/mocha spec/*.spec.js","coverage":"nyc npm test","continuous":"./node_modules/mocha/bin/mocha spec/*.spec.js -w","release":"standard-version","standard":"standard --fix"},"repository":{"type":"git","url":"git://github.com/arobson/hikaru.git"},"keywords":["kubernetes","deployment"],"author":{"name":"Alex Robson"},"license":"MIT","bugs":{"url":"https://github.com/arobson/hikaru/issues"},"homepage":"https://github.com/arobson/hikaru#readme","standard":{"env":["mocha"]},"gitHead":"5e3bb3a0fccbe657e9e38fdf569541a376eb5e52","_id":"@arobson/hikaru@1.4.1","_npmVersion":"5.4.2","_nodeVersion":"8.8.0","_npmUser":{"name":"arobson","email":"asrobson@gmail.com"},"dist":{"integrity":"sha512-YYlmqLNl15N0tbQ+c45y6HKpCEDoAOA2r7LYN5EAA4MYLsDhdN6S+2U/3VaAbpO7WRVhrK1YCJ6AwHIHnmpinA==","shasum":"9367a7b2bd1dcb192e9269a0aeb747f4cc3942d0","tarball":"https://registry.npmjs.org/@arobson/hikaru/-/hikaru-1.4.1.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBcsUqfAs0XxWiH2HWTxsQN0Xv6a4sPAVpGtg6lsDD2pAiEAqLany7CBVRPt5q9p+RWZXLx7y83NBpzxyOgdOIB7OrM="}]},"maintainers":[{"name":"arobson","email":"asrobson@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/hikaru-1.4.1.tgz_1510009862119_0.9349783342331648"}},"1.4.2":{"name":"@arobson/hikaru","version":"1.4.2","description":"A continuous deployment service and integration helper for kubernetes","main":"src/index.js","bin":{"hikaru":"./bin/hikaru.js"},"dependencies":{"auto-kubernetes-client":"^0.4.3","bluebird":"^3.5.1","bole":"^3.0.2","chalk":"^2.1.0","deftly":"^1.1.0","deftly-express":"^1.1.2","dot-env":"0.0.1","express":"^4.16.2","fount":"1.1.x","inquirer":"^3.3.0","js-yaml":"^3.9.0","json-stream":"^1.0.0","lodash":"^4.16.2","mcgonagall":"1.4.x","multiparty":"^4.1.3","pluralize":"^7.0.0","rimraf":"^2.6.2","semver":"^5.4.1","toml-j0.4":"^1.1.1","yargs":"^9.0.1"},"devDependencies":{"chai":"^4.1.0","chai-as-promised":"^7.1.1","coveralls":"^2.13.1","mocha":"^3.4.2","mocha-lcov-reporter":"^1.3.0","nyc":"^11.0.3","sinon":"^2.3.8","sinon-chai":"^2.12.0","standard":"^10.0.2","standard-version":"^4.2.0"},"scripts":{"pretest":"standard","test":"node_modules/mocha/bin/mocha spec/*.spec.js","coverage":"nyc npm test","continuous":"./node_modules/mocha/bin/mocha spec/*.spec.js -w","release":"standard-version","standard":"standard --fix"},"repository":{"type":"git","url":"git://github.com/npm-wharf/hikaru.git"},"keywords":["kubernetes","deployment"],"author":{"name":"Alex Robson"},"license":"ISC","bugs":{"url":"https://github.com/npm-wharf/hikaru/issues"},"homepage":"https://github.com/npm-wharf/hikaru#readme","standard":{"env":["mocha"]},"gitHead":"0b98acc578dfecd9b92ed8b5b4a564f7c2c4dcc3","_id":"@arobson/hikaru@1.4.2","_npmVersion":"5.4.2","_nodeVersion":"8.8.0","_npmUser":{"name":"arobson","email":"asrobson@gmail.com"},"dist":{"integrity":"sha512-u+rczZWYSptrMk9j4N6q8MpswFD5VECM3GDK/65/5ahYXqV1M9tSmtB1fztJdVK+FfN+m5DM+M890CP2nmfmBQ==","shasum":"a8bc5a0ab4f41f092dbb5bb3a510f815dd4a4d80","tarball":"https://registry.npmjs.org/@arobson/hikaru/-/hikaru-1.4.2.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFrqmJDcsU2QBx9l5O/5nnhKjnKfxqXC89OAM/4Vzk10AiEAuqT0LpEyq8T209qeVH3kfdQpIrQCvlLx5zWK95xLO6Q="}]},"maintainers":[{"name":"arobson","email":"asrobson@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/hikaru-1.4.2.tgz_1510525721499_0.1429304990451783"}},"1.4.3":{"name":"@arobson/hikaru","version":"1.4.3","description":"A continuous deployment service and integration helper for kubernetes","main":"src/index.js","bin":{"hikaru":"./bin/hikaru.js"},"dependencies":{"auto-kubernetes-client":"^0.4.3","bluebird":"^3.5.1","bole":"^3.0.2","chalk":"^2.1.0","deftly":"^1.1.0","deftly-express":"^1.1.2","dot-env":"0.0.1","express":"^4.16.2","fount":"1.1.x","inquirer":"^3.3.0","js-yaml":"^3.9.0","json-stream":"^1.0.0","lodash":"^4.16.2","mcgonagall":"1.4.x","multiparty":"^4.1.3","pluralize":"^7.0.0","rimraf":"^2.6.2","semver":"^5.4.1","toml-j0.4":"^1.1.1","yargs":"^9.0.1"},"devDependencies":{"chai":"^4.1.0","chai-as-promised":"^7.1.1","coveralls":"^2.13.1","mocha":"^3.4.2","mocha-lcov-reporter":"^1.3.0","nyc":"^11.0.3","sinon":"^2.3.8","sinon-chai":"^2.12.0","standard":"^10.0.2","standard-version":"^4.2.0"},"scripts":{"pretest":"standard","test":"node_modules/mocha/bin/mocha spec/*.spec.js","coverage":"nyc npm test","continuous":"./node_modules/mocha/bin/mocha spec/*.spec.js -w","release":"standard-version","standard":"standard --fix"},"repository":{"type":"git","url":"git://github.com/npm-wharf/hikaru.git"},"keywords":["kubernetes","deployment"],"author":{"name":"Alex Robson"},"license":"ISC","bugs":{"url":"https://github.com/npm-wharf/hikaru/issues"},"homepage":"https://github.com/npm-wharf/hikaru#readme","standard":{"env":["mocha"]},"gitHead":"374f0f715dca09b150cbcb52c5225e816934262a","_id":"@arobson/hikaru@1.4.3","_npmVersion":"5.4.2","_nodeVersion":"8.8.0","_npmUser":{"name":"arobson","email":"asrobson@gmail.com"},"dist":{"integrity":"sha512-ihBEPoEp0GbQay3fzIBGeU7znLsEPd5UNRdAcf1zbg7R+UbKD2ScNg0sgELaO0dOvHqxRUPNsbCqNnFI6JoFZA==","shasum":"b8818626c760e94a29b3f5bb3cd4c330f48ff46c","tarball":"https://registry.npmjs.org/@arobson/hikaru/-/hikaru-1.4.3.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDuZODaRkbXoC1hIyLqNy7/0JlSx+Cgf3aCYY+QTVJHvQIhAKiUdx/1gAp7Z+DB715BWGPo6vZaqD/MDbk3W/TKVS2B"}]},"maintainers":[{"name":"arobson","email":"asrobson@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/hikaru-1.4.3.tgz_1511222475965_0.5911621334962547"}}},"readme":"# hikaru\n\nA deployment and continuous delivery tool for kubernetes. 100 internets if you get the reference. 1000 internets if you get why.\n\n[![Build Status][travis-image]][travis-url]\n[![Coverage Status][coveralls-image]][coveralls-url]\n\n# What It Does - Automating Continuous Delivery\n\nhikaru was built specifically to make it easy to deploy and maintain kubernetes clusters.\n\n * Initial deployment\n * Re-deployment/Updates\n * Removal/clean-up\n\n## Features\n\n * Deploy from git repository\n * Deploy from tarball\n * Deploy from target directory\n * Supports tokenized specifications\n * Diff based re-deploy\n * Continuous delivery support\n\n## Credential Limitations\n\nhikaru assumes that git and Docker interaction that require credentials will have them based on the context the commands are run in.\n\n### Git Credentials\n\nhikaru does not accept git credentials nor will it store and fetch them. If the cluster spec provided by a call isn't public, then the expectation is that the git client already has the credentials necessary to access the private repository.\n\n### Docker Credentials\n\nhikaru also does not accept docker credentials nor will it store and fetch them. When an image is specified by a manifest or by an upgrade call that is not publicly available, the expectation is that the Kubernetes cluster has been configured with credentials necessary to acquire the Docker image.\n\n# Complimentary Tooling\n\nhikaru requires [mcgonagall](https://github.com/npm-wharf/mcgonagall) style cluster specifications. You'll get the most mileage out of it by adopting [Dockyard](https://github.com/npm-wharf/dockyard) to build your Docker images or at least using a compatible tagging approach (see: [buildgoggles](https://www.npmjs.com/package/buildgoggles)). These complimentary aspects come largely from how hikaru infers metadata about Kubernetes resources based on the Docker image name and tag.\n\n# Modes\n\nhikaru provides 3 possible models for interaction:\n\n * a CLI for interacting with Kubernetes clusters directly\n * an HTTP API for hosting it directly in-cluster\n * custom use-cases via module\n\n# Continuous Delivery\n\nhikaru's upgradeImage call (designed to call via Web Hook) determines which Deployments would qualify for an upgrade based on the image's tag and performs rolling upgrades. Limitations to this behavior can be introduced via metadata on the Kubernetes manifests themselves.\n\nIn practice, hikaru is able to perform automated rolling upgrades out of the box with no additional metadata on the manifests. Metadata added to the manifests provides ways to control the criteria hikaru uses to perform upgrades.\n\n## How hikaru Filters By Manifest Metadata Labels \n\nBy default, hikaru will upgrade images if the version or build is newer and the following criteria match:\n\n* `imageName`\n* `imageOwner`\n* `owner`\n* `repo`\n* `branch`\n\nThe following labels act like additional filters that hikaru will use against the image metadata it determines from the tag. If these labels are present under the manifest's `spec.template.metadata.labels` then they will be used to determine whether a new image is compatible with the manifest.\n\nThis allows you to filter out builds from owners, branches, etc. that you don't want hikaru to deploy over a certain environment/manifest:\n \n * `owner` - limit deployments to a specific repo owner\n * `repo` - limit deployments to a specific repo\n * `branch` - limit deployments to a specific branch\n * `version` - limit to new builds of a specific version\n * `commit` - **!caution!** locks the deployment to a specific commit\n * `filter` - provide a comma delimited list of fields to filter on based on the current image\n\n### More About The Filter Label\n\nThe `filter` label was introduced so that you can dynamically assign filter values based on the current image without having to specify them in the manifest explicitly.\n\nThis allows you to change what's in effect by forcing an upgrade to the image but not having to change the labels themselves.\n\nExamples: \n\nLock a resource down to the same owner, repository, and branch:\n\n> Note: code snippets demonstrate mcgonagall spec\n\n```toml\nlabels = 'filter=owner,repo,branch'\n```\n\nLock a resource down to the same owner, repository, branch, and version:\n\n```toml\nlabels = 'owner,repo,branch,version'\n```\n\nPossible values:\n\n  * `imageName`\n  * `imageOwner`\n  * `owner`\n  * `repo`\n  * `branch`\n  * `fullVersion`\n  * `version`\n  * `build`\n  * `commit`\n\n## How hikaru Reads The Tag\n\n### Tag Parsing\n\nhikaru understands how to process the following tag styles:\n\n * if the build is from the master branch\n \t* `latest` - the latest build from our master branch\n \t* `major` - the major part of the semantic version\n \t* `major.minor` - the major and minor parts of the semantic version\n  * `major.minor.patch` - full semantic version\n  * `version-prebuild` - any previous semantic version example followed by a prebuild specifier\n * `{version}_{build}_{commit-slug}`\n * `{branch}_{version}_{build}_{commit-slug}`\n * A tag generated by builgGoggles could include: `{owner}_{repo}_{branch}_{version}_{build}_{commit-slug}` to allow for builds of forks and builds where multiple images are generated from a single repo.\n\nhikaru will attempt to filter out additional tag noise and also treat any `-{label}` following a version number as a pre-release.\n\n### Metadata Inference\n\nhikaru will determine or infer 6 pieces of information about a Docker image:\n\n * Docker image (two parts)\n     * repo: if it's empty, it's an official repo, it's set to the image name\n     * name: the actual image name\n     * examples: \n         * `redis` - image = `redis/redis`\n         * `mhart/alpine-node` - image = `mhart/alpine-node`\n * Owner\n \t* hikaru only parses this out of the first position of a tag with 5+ elements\n \t* if not specified, this is inferred from the image's owner name\n  * when missing entirely, this is assumed to be an `official` image\n \t* examples:\n \t\t* `npm/app:arobson_master_1.0.1_10_abcd1234` - owner = `arobson`\n \t\t* `npm/app:latest` - owner = `npm`\n    * `nginx:13-alpine` - owner = `official`\n * Branch\n \t* parsed from the front of tags with 4 elements or\n \t* conditionally from larger tags depending on element count\n \t* if not specified, hikaru infers `master`\n \t* examples:\n \t\t* `npm/app:arobson_test_1.0.1_10_abcd1234` - branch = `test`\n \t\t* `npm/app:now-with-more-stuff_1.0.1_10_abcd1234` - branch = `now-with-more-stuff`\n \t\t* `npm/app:1.0` - branch = `master`\n \t\t* `npm/app:1` - branch = `master`\n \t\t* `npm/app:latest` - branch = `master`\n * Version\n \t* hikaru has a nuanced reading of versioning\n \t* its goal is to determine if an image would be considered a \"newer\" version of an existing version\n \t* easiest to understand by example:\n \t\t* `npm/app:latest` - `latest`\n \t\t* `npm/app:1` - `latest 1.x.x`\n \t\t* `npm/app:1.1` - `latest 1.1.x`\n \t\t* `npm/app:arobson_test_1.0.1_10_abcd1234` - `1.0.1`\n * Build Number\n \t* unlike other values, hikaru does not infer a build when its not in the tag\n \t* it shows when one image is newer than another\n \t* always comes immediately after the version in a tag\n * Commit SHA/Slug\n \t* like the build number, never inferred\n \t* only valuable as a `lock` when testing development builds\n \t* always 8 characters at the end of the tag\n\n### Examples\n\nHere are a few examples to demonstrate how hikaru would read a few tags.\n\n`nginx`\n```js\n{\n  imageOwner: 'official', // inferred\n  imageName: 'nginx',\n  owner: 'official', // inferred\n  repo: 'nginx', // inferred\n  branch: 'master', // inferred\n  version: 'latest', // inferred\n  build: undefined,\n  commit: undefined\n}\n```\n\n`arobson/hikaru:1`\n```js\n{\n  imageOwner: 'arobson',\n  imageName: 'hikaru',\n  owner: 'arobson', // inferred\n  repo: 'hikaru', // inferred\n  branch: 'master', // inferred\n  version: '1.x.x',\n  build: undefined,\n  commit: undefined\n}\n```\n\n\n`arobson/kickerd:1.1-alpha_demo_10`\n```js\n{\n  imageOwner: 'arobson',\n  imageName: 'kickerd',\n  owner: 'arobson', // inferred\n  repo: 'kickerd', // inferred\n  branch: 'master', // inferred\n  version: '1.1.x-alpha',\n  build: '10',\n  commit: undefined\n}\n```\n\n\n`arobson/hikaru:dev_1.1.0_1_a1b2c3d4`\n```js\n{\n  imageOwner: 'arobson',\n  imageName: 'hikaru',\n  owner: 'arobson', // inferred\n  repo: 'hikaru', // inferred\n  branch: 'dev',\n  version: '1.1.0',\n  build: '1',\n  commit: 'a1b2c3d4'\n}\n```\n\n`npm/awesome:arobson_secret_master_0.0.1_10_a00b00c2`\n```js\n{\n  imageOwner: 'npm',\n  imageName: 'awesome',\n  owner: 'arobson',\n  repo: 'secret',\n  branch: 'master',\n  version: '0.0.1',\n  build: '10',\n  commit: 'a00b00c2'\n}\n```\n\n# HTTP Service\n\n## API\n\n### Deploy Cluster\n\n**Deploy From Git**\n`POST /api/cluster/{gitHost}/{repoOwner}/{repoName}`\n`POST /api/cluster/{gitHost}/{repoOwner}/{repoName}/{branch}`\n`application/json`\n\nThe POST body allows you to supply any tokens that exist in the spec. If tokens are present in the spec and not provided, a 400 will result with a list of the missing tokens.\n\n**Deploy From Tarball**\n\n`POST /api/cluster`\n`application/x-tar`\n\nThe POST body will have to be multi-part to include both the tarball and a set of tokens if the specification requires them.\n\n### Remove Cluster\n\nThe delete actions requires the same specification used to create it (including any tokens). That's because hikaru reverses the deploy steps rather than just aggressively deleting everything from the cluster.\n\nThis also prevents you from deleting resources that weren't deployed as part of your spec.\n\n**Remove From Git**\n`DELETE /api/cluster/{gitHost}/{repoOwner}/{repoName}`\n`DELETE /api/cluster/{gitHost}/{repoOwner}/{repoName}/{branch}`\n`application/json`\n\nThe DELETE body allows you to supply any tokens that exist in the spec. If tokens are present in the spec and not provided, a 400 will result with a list of the missing tokens.\n\n**Remove From Tarball**\n\n`DELETE /api/cluster`\n`application/x-tar`\n\nThe DELETE body will have to be multi-part to include both the tarball and a set of tokens if the specification requires them.\n\n### Get Upgrade Candidates\n\nReturns a hash containing lists of resources. \n * `upgrade` has the list of resources eligible for upgrade. \n * `obsolete` is the list of compatible resources that have a newer version than the posted image\n * `equal` is the list of compatible resources that already have the image\n * `error` is the list of resources that were ignored which includes a `diff` property with a brief explanation of why they were ignored \n\n`GET /api/image/{image}?filter=`\n`GET /api/image/{repo}/{image}?filter=`\n`GET /api/image/{registry}/{repo}/{image}?filter=`\n\nThe filter query parameters accepts a comma delimited list of fields that you want used to determine upgrade eligibility. Valid fields are:\n\n  * `imageName`\n  * `imageOwner`\n  * `owner`\n  * `repo`\n  * `branch`\n  * `fullVersion`\n  * `version`\n  * `build`\n  * `commit`\n\nThe reason for the multiple forms may not be obvious until you see examples:\n\n`GET /api/image/nginx:1.13-alpine`\n`GET /api/image/arobson/hikaru:latest`\n`GET /api/image/quay.io/coreos/etcd:v3.3.3`\n\nYou could make the last form more permissive by telling it to only consider the `imageOwner`:\n\n`GET /api/image/quay.io/coreos/etcd:v3.3.3?filter=imageOwner`\n\nSo that it would upgrade any resource using any `etcd` image regardless of whether or not it was the coreos Docker image or not.\n\n### Upgrade Resources With Image\n\nReturns a hash containing lists of resources. \n * `upgrade` has the list of resources upgraded. \n * `obsolete` is the list of compatible resources that have a newer version than the posted image\n * `equal` is the list of compatible resources that already have the image\n * `error` is the list of resources that were ignored which includes a `diff` property with a brief explanation of why they were ignored \n\n`POST /api/image/{image}?filter=`\n`POST /api/image/{repo}/{image}?filter=`\n`POST /api/image/{registry}/{repo}/{image}?filter=`\n\nThe filter query parameters accepts a comma delimited list of fields that you want used to determine upgrade eligibility. Valid fields are:\n\n  * `imageName`\n  * `imageOwner`\n  * `owner`\n  * `repo`\n  * `branch`\n  * `fullVersion`\n  * `version`\n  * `build`\n  * `commit`\n\nThe reason for the multiple forms may not be obvious until you see examples:\n\n`POST /api/image/nginx:1.13-alpine`\n`POST /api/image/arobson/hikaru:latest`\n`POST /api/image/quay.io/coreos/etcd:v3.3.3`\n\nYou could make the last form more permissive by telling it to only consider the `imageOwner`:\n\n`POST /api/image/quay.io/coreos/etcd:v3.3.3?filter=imageOwner`\n\nSo that it would upgrade any resource using any `etcd` image regardless of whether or not it was the coreos Docker image or not.\n\n### Find Resources By Image\n\nReturns metadata for any resource that has an image matching the text supplied.\n\n`GET /api/resource/{image}`\n`GET /api/resource/{repo}/{image}`\n`GET /api/resource/{registry}/{repo}/{image}`\n\nThe primary difference between this and the call for upgrade candidates is that this considers anything that matches whatever image segment is provided and returns a single list with no consideration given to upgrade eligibility.\n\nIt's just there to make it easy to:\n\n * get a list of manifests using any nginx image\n * find a list of manifests from a specific image owner\n * find out if any manifests are using a particular version\n\n## Environment Variables\nWhen running as a service, all configuration is driven by environment variables:\n\n * `K8S-URL`\n * `K8S-HOST`\n * `K8S-TOKEN`\n * `K8S-CA`\n * `K8S-CERT`\n * `K8S-KEY`\n * `K8S-USERNAME`\n * `K8S-PASSWORD`\n\n# CLI\n\nFull argument names are shown in the command examples. Shorthand arguments are available, see the interactive CLI help to get a list.\n\n## Installation\n\n```shell\nnpm i @arobson/hikaru -g\n```\n\n## Authentication\n\nOnly one of three forms is required. The `user` and `password` arguments (and optionally `ca`) will auth via basic. Using `token` (`ca` is also optional here) will auth via bearer token. Otherwise, the `ca`, `cert` and `key` are required to auth via certificates.\n\n## Tokens\n\nIf tokens are present in a specification and not provided via a `tokenFile`, hikaru will prompt you for each of the tokens in turn. Skipping a token or proving a blank answer is not an option.\n\n## Deploying Clusters\n\nWhen deploying a spec that has already been deployed, hikaru will attempt to diff all manifests included and ignore identical resources while performing a rolling update (where available) on changed manifests.\n\n### `saveDiffs`\n\nA `saveDiffs` flag will cause any detected changes to be saved in a `diff` folder which includes the original, new and diff versions of each manifest that was updated in this way.\n\n```shell\nhikaru deploy {spec} \\\n  --url {kubernetes url} \\\n  --tokenFile {path to json, yaml or toml token file} \\\n  --user {username} \\\n  --password {password} \\\n  --token {token} \\\n  --ca {path to cluster CA} \\\n  --cert {path to client cert} \\\n  --key {path to client key} \\\n  --saveDiffs \\\n  --debug\n```\n\n## Removing Clusters\n\n```shell\nhikaru deploy {spec} \\\n  --url {kubernetes url} \\\n  --tokenFile {path to json, yaml or toml token file} \\\n  --user {username} \\\n  --password {password} \\\n  --token {token} \\\n  --ca {path to cluster CA} \\\n  --cert {path to client cert} \\\n  --key {path to client key} \\\n  --debug\n```\n\n## Upgrading Images\n\nThe filter argument accepts a comma delimited list of fields used to determine upgrade eligibility. Valid fields are:\n\n  * `imageName`\n  * `imageOwner`\n  * `owner`\n  * `repo`\n  * `branch`\n  * `fullVersion`\n  * `version`\n  * `build`\n  * `commit`\n\n```shell\nhikaru upgrade {image} \\\n  --url {kubernetes url} \\\n  --filter {comma delimited filter option} \\\n  --user {username} \\\n  --password {password} \\\n  --token {token} \\\n  --ca {path to cluster CA} \\\n  --cert {path to client cert} \\\n  --key {path to client key} \\\n  --debug\n```\n\n## Getting Upgrade Candidates\n\nThe filter argument accepts a comma delimited list of fields used to determine upgrade eligibility. Valid fields are:\n\n  * `imageName`\n  * `imageOwner`\n  * `owner`\n  * `repo`\n  * `branch`\n  * `fullVersion`\n  * `version`\n  * `build`\n  * `commit`\n\n```shell\nhikaru candidates {image} \\\n  --url {kubernetes url} \\\n  --filter {comma delimited filter option} \\\n  --user {username} \\\n  --password {password} \\\n  --token {token} \\\n  --ca {path to cluster CA} \\\n  --cert {path to client cert} \\\n  --key {path to client key} \\\n  --debug\n```\n\n## Finding Resources By Image\n\n```shell\nhikaru findByImage {image} \\\n  --url {kubernetes url} \\\n  --user {username} \\\n  --password {password} \\\n  --token {token} \\\n  --ca {path to cluster CA} \\\n  --cert {path to client cert} \\\n  --key {path to client key} \\\n  --debug\n```\n\n# Library\n\nhikaru uses [`fount`](https://github.com/arobson/fount) to supply dependencies on demand. This will affect how you use it to control configuration if you want to set it via a method other than the environment variables:\n\n```js\nconst hikaru = require('hikaru')\n\n// make config changes *before* making any\n// hikaru calls\nconst fount = require('fount')\nconst config = fount.get('config')\nconfig.url = '' // the kubernetes url\nconfig.username = '' // basic auth username\nconfig.password = '' // basic auth password\nconfig.token = '' // bearer token\nconfig.ca = '' // kubernetes CA\nconfig.cert = '' // kubernetes client cert\nconfig.key = '' // kubernetes client key\n\n// note: the ca, cert, and key would all\n// need to be loaded from the file\n// DO NOT provide a filename, it won't work\n```\n\n## Deploying Cluster\n\n```js\nconst hikaru = require('hikaru')\n\nhikaru.deployCluster(\n  'git://github.com/me/my-spec', \n  {\n    branch: 'special', // 'master' is default\n    // kubernetes API/cluster version\n    version: '1.8', // '1.7' is default\n    data: {\n      token1: 'value'\n      token2: 100\n    }\n  })\n  .then(\n    () => {},\n    err => {}\n  )\n```\n\n## Removing Cluster\n\n```js\nconst hikaru = require('hikaru')\n\nhikaru.removeCluster(\n  'git://github.com/me/my-spec', \n  {\n    branch: 'special', // 'master' is default\n    // kubernetes API/cluster version\n    version: '1.8', // '1.7' is default\n    data: {\n      token1: 'value'\n      token2: 100\n    }\n  })\n  .then(\n    () => {},\n    err => {}\n  )\n```\n\n## Upgrading Image\n\nNote: the filter option defaults to:\n\n```js\n['imageName', 'imageOwner', 'owner', 'repo', 'branch']\n```\n\nWhich limits upgrades so that they'll only happen when the resource matches the image on these 5 fields.\n\nThis can be changed to be *more* or *less* permissive but should be done with great care. An empty filter should NEVER BE SUBMITTED as it would effectively be telling hikaru to replace all running pods with the same image.\n\n```js\nconst hikaru = require('hikaru')\n\nhikaru.upgradeImage(\n  'myRepo/myImage:1.1.0',\n  {\n    filter: ['imageOwner', 'imageName']\n  })\n  .then(\n    list => {\n      // list of upgraded resources\n    },\n    err => {}\n  )\n```\n\n## Getting Upgrade Candidates\n\nWorks like the upgrade command but instead of performing the upgrade, only returns the list of resources that would be upgraded.\n\nVery useful for checking to see which resources would be affected before running a command.\n\nIt is recommended to use this to check with users before running the actual upgrade - especially if they've been allowed to change any filter settings.\n\n```js\nconst hikaru = require('hikaru')\n\nhikaru.getCandidatesImage(\n  'myRepo/myImage:1.1.0',\n  {\n    filter: ['imageOwner', 'imageName']\n  })\n  .then(\n    list => {\n      // list of upgraded resources\n    },\n    err => {}\n  )\n```\n\n## Finding Resources By Image\n\nPerforms a search in the cluster for resources with an image containing the provided string.\n\nUseful for trying to see which things might be in use across various owners. Example: searching for `nginx` to see how many different NGiNX containers might be deployed.\n\n```js\nconst hikaru = require('hikaru')\n\nhikaru.findResources('nginx')\n  .then(\n    list => {\n      // list of matching resources\n    },\n    err => {}\n  )\n```\n\n## Custom Cases\n\n> Caveat Emptor: I do not have time (presently) to document the extensive cluster and k8s module APIs or provide adequate test coverage for them. You are using them at your own risk.\n\n```js\nconst hikaru = require('hikaru')\nhikaru.connect()\n  .then(() => {\n    // both `.k8s` and `.cluster` will be available\n    // on hikaru after the connect promise resolves\n  })\n```\n\n# Docker Image\n\nA Docker image containing the hikaru HTTP service is already built for ease of use:\n\n`npmwharf/hikaru:latest`\n\nAnd also released with various version tagging schemes.\n\nTo use it, you can set the various environment variables to control behavior. To use it inside a Kubernetes cluster, I recommend pulling in the token and CA token that Kubernetes places in the pods. See the Kubernetes spec (below) for reference.\n\n# Kubernetes Spec\n\nA mcgonagall kubernetes spec to deploy hikaru to a kubernetes cluster can be found at [`https://github.com/npm-wharf/hikaru-spec`](https://github.com/npm-wharf/hikaru-spec).\n\nIt's likely you'll want to copy `hikaru.toml` into your own full cluster specification to get the benefit of mgconagall's NGiNX generation. If that's not something you want though, you can simply deploy directly from the github repo using the CLI:\n\n```shell\nhikaru deploy git://github.com/npm-wharf/hikaru-spec \\\n -k {your cluster endpoint} \\\n -u {username} \\\n -p {password}\n```\n\n> Note: there are other auth methods available, the cert approach is probably best :)\n\n[travis-url]: https://travis-ci.org/npm-wharf/hikaru\n[travis-image]: https://travis-ci.org/npm-wharf/hikaru.svg?branch=master\n[coveralls-url]: https://coveralls.io/github/npm-wharf/hikaru?branch=master\n[coveralls-image]: https://coveralls.io/repos/github/npm-wharf/hikaru/badge.svg?branch=master\n","maintainers":[{"name":"arobson","email":"asrobson@gmail.com"}],"time":{"modified":"2022-04-04T15:33:56.458Z","created":"2017-10-23T20:47:10.534Z","1.2.1":"2017-10-23T20:47:10.534Z","1.2.2":"2017-10-24T17:51:01.221Z","1.2.3":"2017-10-25T04:35:04.133Z","1.3.0":"2017-10-25T17:14:40.345Z","1.3.1":"2017-10-26T02:25:36.731Z","1.3.2":"2017-10-26T16:46:52.582Z","1.3.3":"2017-10-27T15:29:30.519Z","1.3.4":"2017-11-01T00:55:04.394Z","1.4.0":"2017-11-06T18:47:33.922Z","1.4.1":"2017-11-06T23:11:02.266Z","1.4.2":"2017-11-12T22:28:42.707Z","1.4.3":"2017-11-21T00:01:17.504Z"},"homepage":"https://github.com/npm-wharf/hikaru#readme","keywords":["kubernetes","deployment"],"repository":{"type":"git","url":"git://github.com/npm-wharf/hikaru.git"},"author":{"name":"Alex Robson"},"bugs":{"url":"https://github.com/npm-wharf/hikaru/issues"},"license":"ISC","readmeFilename":"README.md"}