├── .gitignore ├── LICENSE ├── README.md ├── Vagrantfile ├── devpack.sh ├── images └── shot.png ├── package-lock.json ├── package.json ├── scripts └── install.sh └── setup.sh /.gitignore: -------------------------------------------------------------------------------- 1 | .vagrant 2 | *.log 3 | node_modules 4 | .DS_Store 5 | *.bak -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2019 Obinna Odirionye 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # DevOps-pack 2 | 3 | ## This is an interactive CLI with an All-in-one setup pack that helps you provision your local machine, on-prem, and bare metal servers with your favourite development and testing tools 4 | 5 | ### Problem 6 | 7 | Backend, Cloud, DevOps, related projects can be difficult to setup, following a lot of Blogs post can be very frustrating when setting up your machine for development and testing 8 | 9 | ## Tools inside Devops-pack 10 | 11 | - Git [Installed by Default] 12 | - Docker 13 | - Kubernetes(Kops) and Kubectl 14 | - Ansible 15 | - Packer 16 | - Terraform 17 | - DotNetCore 18 | - Nodejs 19 | - Go 20 | - Python v3 [Installed by Default] 21 | - AWS CLI 22 | - Microsoft Azure CLI 23 | - Google Cloud SDK(CLI) 24 | 25 | ## Installation and Usage 26 | 27 | ```bash 28 | git clone https://github.com/nerdeveloper/devops-pack.git 29 | cd devops-pack 30 | bash devpack.sh 31 | ``` 32 | 33 | ## Instruction for Mac users 34 | 35 | In order to install the stacks on here that are Mac compatible, you'll need to already have a working `homebrew` installation. 36 | You can find [instructions on how to install `homebrew` here](https://www.howtogeek.com/211541/homebrew-for-os-x-easily-installs-desktop-apps-and-terminal-utilities/) 37 | 38 | ### Requirements 39 | 40 | - System support for Virtualbox 41 | - Vagrant 42 | - Ram size: Above 512MB 43 | 44 | ### How do I install the Requirements 45 | 46 | ```bash 47 | bash setup.sh 48 | ``` 49 | 50 | ## CLI(Screenshot) 51 | 52 | Screenshot of the menu 53 | 54 | ### Make me feel :heart: and appreciated 55 | 56 | You can :star: the repo | Tell your friends about it | Fork it and submit Pull Request. 57 | 58 | You can also follow me on **[Twitter](https://twitter.com/_nerdeveloper)** 59 | 60 | ## License 61 | 62 | The MIT License (MIT). Please see [License File](LICENSE) for more information 63 | -------------------------------------------------------------------------------- /Vagrantfile: -------------------------------------------------------------------------------- 1 | # -*- mode: ruby -*- 2 | # vi: set ft=ruby : 3 | 4 | # All Vagrant configuration is done below. The "2" in Vagrant.configure 5 | # configures the configuration version (we support older styles for 6 | # backwards compatibility). Please don't change it unless you know what 7 | # you're doing. 8 | Vagrant.configure("2") do |config| 9 | config.vm.define "devops-pack" do |devpack| 10 | # The most common configuration options are documented and commented below. 11 | # For a complete reference, please see the online documentation at 12 | # https://docs.vagrantup.com. 13 | 14 | # Every Vagrant development environment requires a box. You can search for 15 | # boxes at https://vagrantcloud.com/search. 16 | devpack.vm.box = "ubuntu/xenial64" 17 | 18 | # Provider Settings 19 | devpack.vm.provider "virtualbox" do |vb| 20 | vb.memory = "512" 21 | end 22 | 23 | # Provision Settings 24 | devpack.vm.provision "shell", path: "scripts/install.sh" 25 | end 26 | end 27 | -------------------------------------------------------------------------------- /devpack.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | 4 | RED='\033[0;31m' 5 | BLUE='\033[40;38;5;82m' 6 | PURPLE='\033[0;35m' 7 | 8 | echo " 9 | +-+-+-+-+-+-+-+-+-+-+-+ 10 | |D|e|v|O|p|s|-|p|a|c|k| 11 | +-+-+-+-+-+-+-+-+-+-+-+ 12 | " 13 | if [ ! -x "$(command -v vagrant)" ] && [ ! -x "$(command -v virtualbox)" ]; then 14 | echo -e " ${RED} Error: Your machine does not have the requirements to run DevOps-pack. Run *bash setup.sh* " 15 | exit 0 16 | fi 17 | 18 | 19 | 20 | function createfile() { 21 | FILE=./scripts/install.sh.bak 22 | if [ ! -f "$FILE" ]; then 23 | cp -r scripts/install.sh scripts/install.sh.bak 24 | 25 | 26 | fi 27 | } 28 | createfile 29 | 30 | #Menu options 31 | options[0]="Docker" 32 | options[1]="Kubernetes(Kops) and Kubectl" 33 | options[2]="Ansible" 34 | options[3]="Packer" 35 | options[4]="Terraform" 36 | options[5]="DotnetCore" 37 | options[6]="Nodejs" 38 | options[7]="Go" 39 | options[8]="AWS CLI" 40 | options[9]="Microsoft Azure CLI" 41 | options[10]="Google Cloud CLI(gcloud)" 42 | 43 | #Actions to take based on selection 44 | function ACTIONS { 45 | if [[ ${choices[0]} ]]; then 46 | #Option 1 selected 47 | echo "Option 1 selected which is Docker" 48 | echo -e '\nrunDocker' >> scripts/install.sh 49 | 50 | fi 51 | if [[ ${choices[1]} ]]; then 52 | #Option 2 selected 53 | echo "Option 2 selected which is Kubernetes(Kops) and Kubectl" 54 | echo -e '\nrunKops' >> scripts/install.sh 55 | fi 56 | if [[ ${choices[2]} ]]; then 57 | #Option 3 selected 58 | echo "Option 3 selected which is Ansible" 59 | echo -e '\nrunAnsible' >> scripts/install.sh 60 | 61 | fi 62 | if [[ ${choices[3]} ]]; then 63 | #Option 4 selected 64 | echo "Option 4 selected which is Packer" 65 | echo -e '\nrunPacker' >> scripts/install.sh 66 | 67 | fi 68 | if [[ ${choices[4]} ]]; then 69 | #Option 5 selected 70 | echo "Option 5 selected which is Terraform" 71 | echo -e '\nrunTerraform' >> scripts/install.sh 72 | fi 73 | if [[ ${choices[5]} ]]; then 74 | #Option 6 selected 75 | echo "Option 6 selected which is DotNetCore" 76 | echo -e '\nrunDotNetCore' >> scripts/install.sh 77 | fi 78 | if [[ ${choices[6]} ]]; then 79 | #Option 7 selected 80 | echo "Option 7 selected which is Nodejs" 81 | echo -e '\nrunNode' >> scripts/install.sh 82 | fi 83 | if [[ ${choices[7]} ]]; then 84 | #Option 8 selected 85 | echo "Option 8 selected which is Go" 86 | echo -e '\nrunGo' >> scripts/install.sh 87 | fi 88 | if [[ ${choices[8]} ]]; then 89 | #Option 9 selected 90 | echo "Option 9 selected which is AWS CLI" 91 | echo -e '\nrunAWS' >> scripts/install.sh 92 | fi 93 | if [[ ${choices[9]} ]]; then 94 | #Option 10 selected 95 | echo "Option 10 selected which Microsoft Azure CLI" 96 | echo -e '\nrunAzure' >> scripts/install.sh 97 | fi 98 | if [[ ${choices[10]} ]]; then 99 | #Option 11 selected 100 | echo "Option 11 selected which Google Cloud CLI(gloud)" 101 | echo -e '\nrunGoogleCloud' >> scripts/install.sh 102 | fi 103 | 104 | } 105 | 106 | #Variables 107 | ERROR=" " 108 | 109 | #Menu function 110 | function MENU { 111 | echo "Menu Options" 112 | for NUM in ${!options[@]}; do 113 | echo "[""${choices[NUM]:- }""]" $(( NUM+1 ))") ${options[NUM]}" 114 | done 115 | echo "$ERROR" 116 | } 117 | 118 | #Menu loop 119 | while MENU && read -e -p "Select the desired options using their number (again to uncheck, ENTER when done): " -n2 SELECTION && [[ -n "$SELECTION" ]]; do 120 | clear 121 | if [[ "$SELECTION" == *[[:digit:]]* && $SELECTION -ge 1 && $SELECTION -le ${#options[@]} ]]; then 122 | (( SELECTION-- )) 123 | if [[ "${choices[SELECTION]}" == "+" ]]; then 124 | choices[SELECTION]="" 125 | else 126 | choices[SELECTION]="+" 127 | fi 128 | ERROR=" " 129 | else 130 | ERROR="Invalid option: $SELECTION" 131 | fi 132 | done 133 | 134 | 135 | 136 | ACTIONS 137 | 138 | sleep 1 139 | echo -e " ${BLUE} Please wait while we install your DevOps-Pack" 140 | sleep 2 141 | if vagrant up; then 142 | rm scripts/install.sh 143 | mv scripts/install.sh.bak scripts/install.sh 144 | echo Done. 145 | sleep 1 146 | echo -e " ${PURPLE} Enter 'vagrant ssh' to login into your devops-pack" 147 | echo -e " ${PURPLE} Enter 'vagrant destroy -f ' to delete into your devops-pack" 148 | echo -e " ${PURPLE} Tweet me @_nerdeveloper." 149 | else 150 | rm scripts/install.sh 151 | mv scripts/install.sh.bak scripts/install.sh 152 | vagrant destroy -f 153 | fi 154 | 155 | -------------------------------------------------------------------------------- /images/shot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nerdeveloper/devops-pack/0de1da16e521a7debf110021e2803fa8f3165254/images/shot.png -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "devops-pack", 3 | "version": "1.2.2", 4 | "lockfileVersion": 1, 5 | "requires": true, 6 | "dependencies": { 7 | "@commitlint/execute-rule": { 8 | "version": "8.1.0", 9 | "resolved": "https://registry.npmjs.org/@commitlint/execute-rule/-/execute-rule-8.1.0.tgz", 10 | "integrity": "sha512-+vpH3RFuO6ypuCqhP2rSqTjFTQ7ClzXtUvXphpROv9v9+7zH4L+Ex+wZLVkL8Xj2cxefSLn/5Kcqa9XyJTn3kg==", 11 | "dev": true, 12 | "optional": true 13 | }, 14 | "@commitlint/load": { 15 | "version": "8.1.0", 16 | "resolved": "https://registry.npmjs.org/@commitlint/load/-/load-8.1.0.tgz", 17 | "integrity": "sha512-ra02Dvmd7Gp1+uFLzTY3yGOpHjPzl5T9wYg/xrtPJNiOWXvQ0Mw7THw+ucd1M5iLUWjvdavv2N87YDRc428wHg==", 18 | "dev": true, 19 | "optional": true, 20 | "requires": { 21 | "@commitlint/execute-rule": "^8.1.0", 22 | "@commitlint/resolve-extends": "^8.1.0", 23 | "babel-runtime": "^6.23.0", 24 | "chalk": "2.4.2", 25 | "cosmiconfig": "^5.2.0", 26 | "lodash": "4.17.14", 27 | "resolve-from": "^5.0.0" 28 | } 29 | }, 30 | "@commitlint/resolve-extends": { 31 | "version": "8.1.0", 32 | "resolved": "https://registry.npmjs.org/@commitlint/resolve-extends/-/resolve-extends-8.1.0.tgz", 33 | "integrity": "sha512-r/y+CeKW72Oa9BUctS1+I/MFCDiI3lfhwfQ65Tpfn6eZ4CuBYKzrCRi++GTHeAFKE3y8q1epJq5Rl/1GBejtBw==", 34 | "dev": true, 35 | "optional": true, 36 | "requires": { 37 | "@types/node": "^12.0.2", 38 | "import-fresh": "^3.0.0", 39 | "lodash": "4.17.14", 40 | "resolve-from": "^5.0.0", 41 | "resolve-global": "^1.0.0" 42 | } 43 | }, 44 | "@types/node": { 45 | "version": "12.7.2", 46 | "resolved": "https://registry.npmjs.org/@types/node/-/node-12.7.2.tgz", 47 | "integrity": "sha512-dyYO+f6ihZEtNPDcWNR1fkoTDf3zAK3lAABDze3mz6POyIercH0lEUawUFXlG8xaQZmm1yEBON/4TsYv/laDYg==", 48 | "dev": true, 49 | "optional": true 50 | }, 51 | "ansi-escapes": { 52 | "version": "3.2.0", 53 | "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", 54 | "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", 55 | "dev": true 56 | }, 57 | "ansi-regex": { 58 | "version": "3.0.0", 59 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", 60 | "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", 61 | "dev": true 62 | }, 63 | "ansi-styles": { 64 | "version": "3.2.1", 65 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 66 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 67 | "dev": true, 68 | "requires": { 69 | "color-convert": "^1.9.0" 70 | } 71 | }, 72 | "argparse": { 73 | "version": "1.0.10", 74 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", 75 | "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", 76 | "dev": true, 77 | "optional": true, 78 | "requires": { 79 | "sprintf-js": "~1.0.2" 80 | } 81 | }, 82 | "arr-diff": { 83 | "version": "4.0.0", 84 | "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", 85 | "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", 86 | "dev": true 87 | }, 88 | "arr-flatten": { 89 | "version": "1.1.0", 90 | "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", 91 | "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", 92 | "dev": true 93 | }, 94 | "arr-union": { 95 | "version": "3.1.0", 96 | "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", 97 | "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", 98 | "dev": true 99 | }, 100 | "array-unique": { 101 | "version": "0.3.2", 102 | "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", 103 | "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", 104 | "dev": true 105 | }, 106 | "assign-symbols": { 107 | "version": "1.0.0", 108 | "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", 109 | "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", 110 | "dev": true 111 | }, 112 | "atob": { 113 | "version": "2.1.2", 114 | "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", 115 | "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", 116 | "dev": true 117 | }, 118 | "babel-runtime": { 119 | "version": "6.26.0", 120 | "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", 121 | "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", 122 | "dev": true, 123 | "optional": true, 124 | "requires": { 125 | "core-js": "^2.4.0", 126 | "regenerator-runtime": "^0.11.0" 127 | } 128 | }, 129 | "balanced-match": { 130 | "version": "1.0.0", 131 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", 132 | "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", 133 | "dev": true 134 | }, 135 | "base": { 136 | "version": "0.11.2", 137 | "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", 138 | "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", 139 | "dev": true, 140 | "requires": { 141 | "cache-base": "^1.0.1", 142 | "class-utils": "^0.3.5", 143 | "component-emitter": "^1.2.1", 144 | "define-property": "^1.0.0", 145 | "isobject": "^3.0.1", 146 | "mixin-deep": "^1.2.0", 147 | "pascalcase": "^0.1.1" 148 | }, 149 | "dependencies": { 150 | "define-property": { 151 | "version": "1.0.0", 152 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", 153 | "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", 154 | "dev": true, 155 | "requires": { 156 | "is-descriptor": "^1.0.0" 157 | } 158 | }, 159 | "is-accessor-descriptor": { 160 | "version": "1.0.0", 161 | "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", 162 | "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", 163 | "dev": true, 164 | "requires": { 165 | "kind-of": "^6.0.0" 166 | } 167 | }, 168 | "is-data-descriptor": { 169 | "version": "1.0.0", 170 | "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", 171 | "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", 172 | "dev": true, 173 | "requires": { 174 | "kind-of": "^6.0.0" 175 | } 176 | }, 177 | "is-descriptor": { 178 | "version": "1.0.2", 179 | "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", 180 | "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", 181 | "dev": true, 182 | "requires": { 183 | "is-accessor-descriptor": "^1.0.0", 184 | "is-data-descriptor": "^1.0.0", 185 | "kind-of": "^6.0.2" 186 | } 187 | } 188 | } 189 | }, 190 | "brace-expansion": { 191 | "version": "1.1.11", 192 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 193 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 194 | "dev": true, 195 | "requires": { 196 | "balanced-match": "^1.0.0", 197 | "concat-map": "0.0.1" 198 | } 199 | }, 200 | "braces": { 201 | "version": "2.3.2", 202 | "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", 203 | "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", 204 | "dev": true, 205 | "requires": { 206 | "arr-flatten": "^1.1.0", 207 | "array-unique": "^0.3.2", 208 | "extend-shallow": "^2.0.1", 209 | "fill-range": "^4.0.0", 210 | "isobject": "^3.0.1", 211 | "repeat-element": "^1.1.2", 212 | "snapdragon": "^0.8.1", 213 | "snapdragon-node": "^2.0.1", 214 | "split-string": "^3.0.2", 215 | "to-regex": "^3.0.1" 216 | }, 217 | "dependencies": { 218 | "extend-shallow": { 219 | "version": "2.0.1", 220 | "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", 221 | "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", 222 | "dev": true, 223 | "requires": { 224 | "is-extendable": "^0.1.0" 225 | } 226 | } 227 | } 228 | }, 229 | "cache-base": { 230 | "version": "1.0.1", 231 | "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", 232 | "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", 233 | "dev": true, 234 | "requires": { 235 | "collection-visit": "^1.0.0", 236 | "component-emitter": "^1.2.1", 237 | "get-value": "^2.0.6", 238 | "has-value": "^1.0.0", 239 | "isobject": "^3.0.1", 240 | "set-value": "^2.0.0", 241 | "to-object-path": "^0.3.0", 242 | "union-value": "^1.0.0", 243 | "unset-value": "^1.0.0" 244 | } 245 | }, 246 | "cachedir": { 247 | "version": "2.2.0", 248 | "resolved": "https://registry.npmjs.org/cachedir/-/cachedir-2.2.0.tgz", 249 | "integrity": "sha512-VvxA0xhNqIIfg0V9AmJkDg91DaJwryutH5rVEZAhcNi4iJFj9f+QxmAjgK1LT9I8OgToX27fypX6/MeCXVbBjQ==", 250 | "dev": true 251 | }, 252 | "caller-callsite": { 253 | "version": "2.0.0", 254 | "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", 255 | "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=", 256 | "dev": true, 257 | "optional": true, 258 | "requires": { 259 | "callsites": "^2.0.0" 260 | }, 261 | "dependencies": { 262 | "callsites": { 263 | "version": "2.0.0", 264 | "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", 265 | "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", 266 | "dev": true, 267 | "optional": true 268 | } 269 | } 270 | }, 271 | "caller-path": { 272 | "version": "2.0.0", 273 | "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", 274 | "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=", 275 | "dev": true, 276 | "optional": true, 277 | "requires": { 278 | "caller-callsite": "^2.0.0" 279 | } 280 | }, 281 | "callsites": { 282 | "version": "3.1.0", 283 | "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", 284 | "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", 285 | "dev": true, 286 | "optional": true 287 | }, 288 | "chalk": { 289 | "version": "2.4.2", 290 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", 291 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", 292 | "dev": true, 293 | "requires": { 294 | "ansi-styles": "^3.2.1", 295 | "escape-string-regexp": "^1.0.5", 296 | "supports-color": "^5.3.0" 297 | } 298 | }, 299 | "chardet": { 300 | "version": "0.7.0", 301 | "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", 302 | "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", 303 | "dev": true 304 | }, 305 | "class-utils": { 306 | "version": "0.3.6", 307 | "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", 308 | "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", 309 | "dev": true, 310 | "requires": { 311 | "arr-union": "^3.1.0", 312 | "define-property": "^0.2.5", 313 | "isobject": "^3.0.0", 314 | "static-extend": "^0.1.1" 315 | }, 316 | "dependencies": { 317 | "define-property": { 318 | "version": "0.2.5", 319 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", 320 | "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", 321 | "dev": true, 322 | "requires": { 323 | "is-descriptor": "^0.1.0" 324 | } 325 | } 326 | } 327 | }, 328 | "cli-cursor": { 329 | "version": "2.1.0", 330 | "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", 331 | "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", 332 | "dev": true, 333 | "requires": { 334 | "restore-cursor": "^2.0.0" 335 | } 336 | }, 337 | "cli-width": { 338 | "version": "2.2.0", 339 | "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", 340 | "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", 341 | "dev": true 342 | }, 343 | "collection-visit": { 344 | "version": "1.0.0", 345 | "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", 346 | "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", 347 | "dev": true, 348 | "requires": { 349 | "map-visit": "^1.0.0", 350 | "object-visit": "^1.0.0" 351 | } 352 | }, 353 | "color-convert": { 354 | "version": "1.9.3", 355 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 356 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 357 | "dev": true, 358 | "requires": { 359 | "color-name": "1.1.3" 360 | } 361 | }, 362 | "color-name": { 363 | "version": "1.1.3", 364 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 365 | "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", 366 | "dev": true 367 | }, 368 | "commitizen": { 369 | "version": "4.0.3", 370 | "resolved": "https://registry.npmjs.org/commitizen/-/commitizen-4.0.3.tgz", 371 | "integrity": "sha512-lxu0F/Iq4dudoFeIl5pY3h3CQJzkmQuh3ygnaOvqhAD8Wu2pYBI17ofqSuPHNsBTEOh1r1AVa9kR4Hp0FAHKcQ==", 372 | "dev": true, 373 | "requires": { 374 | "cachedir": "2.2.0", 375 | "cz-conventional-changelog": "3.0.1", 376 | "dedent": "0.7.0", 377 | "detect-indent": "6.0.0", 378 | "find-node-modules": "2.0.0", 379 | "find-root": "1.1.0", 380 | "fs-extra": "8.1.0", 381 | "glob": "7.1.4", 382 | "inquirer": "6.5.0", 383 | "is-utf8": "^0.2.1", 384 | "lodash": "4.17.15", 385 | "minimist": "1.2.0", 386 | "shelljs": "0.7.6", 387 | "strip-bom": "4.0.0", 388 | "strip-json-comments": "3.0.1" 389 | }, 390 | "dependencies": { 391 | "cz-conventional-changelog": { 392 | "version": "3.0.1", 393 | "resolved": "https://registry.npmjs.org/cz-conventional-changelog/-/cz-conventional-changelog-3.0.1.tgz", 394 | "integrity": "sha512-7KASIwB8/ClEyCRvQrCPbN7WkQnUSjSSVNyPM+gDJ0jskLi8h8N2hrdpyeCk7fIqKMRzziqVSOBTB8yyLTMHGQ==", 395 | "dev": true, 396 | "requires": { 397 | "@commitlint/load": ">6.1.1", 398 | "chalk": "^2.4.1", 399 | "conventional-commit-types": "^2.0.0", 400 | "lodash.map": "^4.5.1", 401 | "longest": "^2.0.1", 402 | "right-pad": "^1.0.1", 403 | "word-wrap": "^1.0.3" 404 | } 405 | }, 406 | "lodash": { 407 | "version": "4.17.15", 408 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", 409 | "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", 410 | "dev": true 411 | } 412 | } 413 | }, 414 | "component-emitter": { 415 | "version": "1.3.0", 416 | "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", 417 | "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", 418 | "dev": true 419 | }, 420 | "concat-map": { 421 | "version": "0.0.1", 422 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 423 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", 424 | "dev": true 425 | }, 426 | "conventional-commit-types": { 427 | "version": "2.1.1", 428 | "resolved": "https://registry.npmjs.org/conventional-commit-types/-/conventional-commit-types-2.1.1.tgz", 429 | "integrity": "sha512-0Ts+fEdmjqYDOQ1yZ+LNgdSPO335XZw9qC10M7CxtLP3nIMGmeMhmkM8Taffa4+MXN13bRPlp0CtH+QfOzKTzw==", 430 | "dev": true 431 | }, 432 | "copy-descriptor": { 433 | "version": "0.1.1", 434 | "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", 435 | "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", 436 | "dev": true 437 | }, 438 | "core-js": { 439 | "version": "2.6.9", 440 | "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.9.tgz", 441 | "integrity": "sha512-HOpZf6eXmnl7la+cUdMnLvUxKNqLUzJvgIziQ0DiF3JwSImNphIqdGqzj6hIKyX04MmV0poclQ7+wjWvxQyR2A==", 442 | "dev": true, 443 | "optional": true 444 | }, 445 | "cosmiconfig": { 446 | "version": "5.2.1", 447 | "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", 448 | "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", 449 | "dev": true, 450 | "optional": true, 451 | "requires": { 452 | "import-fresh": "^2.0.0", 453 | "is-directory": "^0.3.1", 454 | "js-yaml": "^3.13.1", 455 | "parse-json": "^4.0.0" 456 | }, 457 | "dependencies": { 458 | "import-fresh": { 459 | "version": "2.0.0", 460 | "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", 461 | "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", 462 | "dev": true, 463 | "optional": true, 464 | "requires": { 465 | "caller-path": "^2.0.0", 466 | "resolve-from": "^3.0.0" 467 | } 468 | }, 469 | "resolve-from": { 470 | "version": "3.0.0", 471 | "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", 472 | "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", 473 | "dev": true, 474 | "optional": true 475 | } 476 | } 477 | }, 478 | "cz-conventional-changelog": { 479 | "version": "3.0.2", 480 | "resolved": "https://registry.npmjs.org/cz-conventional-changelog/-/cz-conventional-changelog-3.0.2.tgz", 481 | "integrity": "sha512-MPxERbtQyVp0nnpCBiwzKGKmMBSswmCV3Jpef3Axqd5f3c/SOc6VFiSUlclOyZXBn3Xtf4snzt4O15hBTRb2gA==", 482 | "dev": true, 483 | "requires": { 484 | "@commitlint/load": ">6.1.1", 485 | "chalk": "^2.4.1", 486 | "commitizen": "^4.0.3", 487 | "conventional-commit-types": "^2.0.0", 488 | "lodash.map": "^4.5.1", 489 | "longest": "^2.0.1", 490 | "right-pad": "^1.0.1", 491 | "word-wrap": "^1.0.3" 492 | } 493 | }, 494 | "debug": { 495 | "version": "2.6.9", 496 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 497 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 498 | "dev": true, 499 | "requires": { 500 | "ms": "2.0.0" 501 | } 502 | }, 503 | "decode-uri-component": { 504 | "version": "0.2.0", 505 | "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", 506 | "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", 507 | "dev": true 508 | }, 509 | "dedent": { 510 | "version": "0.7.0", 511 | "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", 512 | "integrity": "sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=", 513 | "dev": true 514 | }, 515 | "define-property": { 516 | "version": "2.0.2", 517 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", 518 | "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", 519 | "dev": true, 520 | "requires": { 521 | "is-descriptor": "^1.0.2", 522 | "isobject": "^3.0.1" 523 | }, 524 | "dependencies": { 525 | "is-accessor-descriptor": { 526 | "version": "1.0.0", 527 | "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", 528 | "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", 529 | "dev": true, 530 | "requires": { 531 | "kind-of": "^6.0.0" 532 | } 533 | }, 534 | "is-data-descriptor": { 535 | "version": "1.0.0", 536 | "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", 537 | "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", 538 | "dev": true, 539 | "requires": { 540 | "kind-of": "^6.0.0" 541 | } 542 | }, 543 | "is-descriptor": { 544 | "version": "1.0.2", 545 | "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", 546 | "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", 547 | "dev": true, 548 | "requires": { 549 | "is-accessor-descriptor": "^1.0.0", 550 | "is-data-descriptor": "^1.0.0", 551 | "kind-of": "^6.0.2" 552 | } 553 | } 554 | } 555 | }, 556 | "detect-file": { 557 | "version": "1.0.0", 558 | "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", 559 | "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=", 560 | "dev": true 561 | }, 562 | "detect-indent": { 563 | "version": "6.0.0", 564 | "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.0.0.tgz", 565 | "integrity": "sha512-oSyFlqaTHCItVRGK5RmrmjB+CmaMOW7IaNA/kdxqhoa6d17j/5ce9O9eWXmV/KEdRwqpQA+Vqe8a8Bsybu4YnA==", 566 | "dev": true 567 | }, 568 | "error-ex": { 569 | "version": "1.3.2", 570 | "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", 571 | "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", 572 | "dev": true, 573 | "optional": true, 574 | "requires": { 575 | "is-arrayish": "^0.2.1" 576 | } 577 | }, 578 | "escape-string-regexp": { 579 | "version": "1.0.5", 580 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 581 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", 582 | "dev": true 583 | }, 584 | "esprima": { 585 | "version": "4.0.1", 586 | "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", 587 | "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", 588 | "dev": true, 589 | "optional": true 590 | }, 591 | "expand-brackets": { 592 | "version": "2.1.4", 593 | "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", 594 | "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", 595 | "dev": true, 596 | "requires": { 597 | "debug": "^2.3.3", 598 | "define-property": "^0.2.5", 599 | "extend-shallow": "^2.0.1", 600 | "posix-character-classes": "^0.1.0", 601 | "regex-not": "^1.0.0", 602 | "snapdragon": "^0.8.1", 603 | "to-regex": "^3.0.1" 604 | }, 605 | "dependencies": { 606 | "define-property": { 607 | "version": "0.2.5", 608 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", 609 | "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", 610 | "dev": true, 611 | "requires": { 612 | "is-descriptor": "^0.1.0" 613 | } 614 | }, 615 | "extend-shallow": { 616 | "version": "2.0.1", 617 | "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", 618 | "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", 619 | "dev": true, 620 | "requires": { 621 | "is-extendable": "^0.1.0" 622 | } 623 | } 624 | } 625 | }, 626 | "expand-tilde": { 627 | "version": "2.0.2", 628 | "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", 629 | "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", 630 | "dev": true, 631 | "requires": { 632 | "homedir-polyfill": "^1.0.1" 633 | } 634 | }, 635 | "extend-shallow": { 636 | "version": "3.0.2", 637 | "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", 638 | "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", 639 | "dev": true, 640 | "requires": { 641 | "assign-symbols": "^1.0.0", 642 | "is-extendable": "^1.0.1" 643 | }, 644 | "dependencies": { 645 | "is-extendable": { 646 | "version": "1.0.1", 647 | "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", 648 | "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", 649 | "dev": true, 650 | "requires": { 651 | "is-plain-object": "^2.0.4" 652 | } 653 | } 654 | } 655 | }, 656 | "external-editor": { 657 | "version": "3.1.0", 658 | "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", 659 | "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", 660 | "dev": true, 661 | "requires": { 662 | "chardet": "^0.7.0", 663 | "iconv-lite": "^0.4.24", 664 | "tmp": "^0.0.33" 665 | } 666 | }, 667 | "extglob": { 668 | "version": "2.0.4", 669 | "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", 670 | "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", 671 | "dev": true, 672 | "requires": { 673 | "array-unique": "^0.3.2", 674 | "define-property": "^1.0.0", 675 | "expand-brackets": "^2.1.4", 676 | "extend-shallow": "^2.0.1", 677 | "fragment-cache": "^0.2.1", 678 | "regex-not": "^1.0.0", 679 | "snapdragon": "^0.8.1", 680 | "to-regex": "^3.0.1" 681 | }, 682 | "dependencies": { 683 | "define-property": { 684 | "version": "1.0.0", 685 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", 686 | "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", 687 | "dev": true, 688 | "requires": { 689 | "is-descriptor": "^1.0.0" 690 | } 691 | }, 692 | "extend-shallow": { 693 | "version": "2.0.1", 694 | "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", 695 | "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", 696 | "dev": true, 697 | "requires": { 698 | "is-extendable": "^0.1.0" 699 | } 700 | }, 701 | "is-accessor-descriptor": { 702 | "version": "1.0.0", 703 | "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", 704 | "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", 705 | "dev": true, 706 | "requires": { 707 | "kind-of": "^6.0.0" 708 | } 709 | }, 710 | "is-data-descriptor": { 711 | "version": "1.0.0", 712 | "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", 713 | "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", 714 | "dev": true, 715 | "requires": { 716 | "kind-of": "^6.0.0" 717 | } 718 | }, 719 | "is-descriptor": { 720 | "version": "1.0.2", 721 | "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", 722 | "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", 723 | "dev": true, 724 | "requires": { 725 | "is-accessor-descriptor": "^1.0.0", 726 | "is-data-descriptor": "^1.0.0", 727 | "kind-of": "^6.0.2" 728 | } 729 | } 730 | } 731 | }, 732 | "figures": { 733 | "version": "2.0.0", 734 | "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", 735 | "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", 736 | "dev": true, 737 | "requires": { 738 | "escape-string-regexp": "^1.0.5" 739 | } 740 | }, 741 | "fill-range": { 742 | "version": "4.0.0", 743 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", 744 | "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", 745 | "dev": true, 746 | "requires": { 747 | "extend-shallow": "^2.0.1", 748 | "is-number": "^3.0.0", 749 | "repeat-string": "^1.6.1", 750 | "to-regex-range": "^2.1.0" 751 | }, 752 | "dependencies": { 753 | "extend-shallow": { 754 | "version": "2.0.1", 755 | "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", 756 | "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", 757 | "dev": true, 758 | "requires": { 759 | "is-extendable": "^0.1.0" 760 | } 761 | } 762 | } 763 | }, 764 | "find-node-modules": { 765 | "version": "2.0.0", 766 | "resolved": "https://registry.npmjs.org/find-node-modules/-/find-node-modules-2.0.0.tgz", 767 | "integrity": "sha512-8MWIBRgJi/WpjjfVXumjPKCtmQ10B+fjx6zmSA+770GMJirLhWIzg8l763rhjl9xaeaHbnxPNRQKq2mgMhr+aw==", 768 | "dev": true, 769 | "requires": { 770 | "findup-sync": "^3.0.0", 771 | "merge": "^1.2.1" 772 | } 773 | }, 774 | "find-root": { 775 | "version": "1.1.0", 776 | "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", 777 | "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==", 778 | "dev": true 779 | }, 780 | "findup-sync": { 781 | "version": "3.0.0", 782 | "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-3.0.0.tgz", 783 | "integrity": "sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg==", 784 | "dev": true, 785 | "requires": { 786 | "detect-file": "^1.0.0", 787 | "is-glob": "^4.0.0", 788 | "micromatch": "^3.0.4", 789 | "resolve-dir": "^1.0.1" 790 | } 791 | }, 792 | "for-in": { 793 | "version": "1.0.2", 794 | "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", 795 | "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", 796 | "dev": true 797 | }, 798 | "fragment-cache": { 799 | "version": "0.2.1", 800 | "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", 801 | "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", 802 | "dev": true, 803 | "requires": { 804 | "map-cache": "^0.2.2" 805 | } 806 | }, 807 | "fs-extra": { 808 | "version": "8.1.0", 809 | "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", 810 | "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", 811 | "dev": true, 812 | "requires": { 813 | "graceful-fs": "^4.2.0", 814 | "jsonfile": "^4.0.0", 815 | "universalify": "^0.1.0" 816 | } 817 | }, 818 | "fs.realpath": { 819 | "version": "1.0.0", 820 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 821 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", 822 | "dev": true 823 | }, 824 | "get-value": { 825 | "version": "2.0.6", 826 | "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", 827 | "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", 828 | "dev": true 829 | }, 830 | "glob": { 831 | "version": "7.1.4", 832 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", 833 | "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==", 834 | "dev": true, 835 | "requires": { 836 | "fs.realpath": "^1.0.0", 837 | "inflight": "^1.0.4", 838 | "inherits": "2", 839 | "minimatch": "^3.0.4", 840 | "once": "^1.3.0", 841 | "path-is-absolute": "^1.0.0" 842 | } 843 | }, 844 | "global-dirs": { 845 | "version": "0.1.1", 846 | "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz", 847 | "integrity": "sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU=", 848 | "dev": true, 849 | "optional": true, 850 | "requires": { 851 | "ini": "^1.3.4" 852 | } 853 | }, 854 | "global-modules": { 855 | "version": "1.0.0", 856 | "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", 857 | "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", 858 | "dev": true, 859 | "requires": { 860 | "global-prefix": "^1.0.1", 861 | "is-windows": "^1.0.1", 862 | "resolve-dir": "^1.0.0" 863 | } 864 | }, 865 | "global-prefix": { 866 | "version": "1.0.2", 867 | "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", 868 | "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", 869 | "dev": true, 870 | "requires": { 871 | "expand-tilde": "^2.0.2", 872 | "homedir-polyfill": "^1.0.1", 873 | "ini": "^1.3.4", 874 | "is-windows": "^1.0.1", 875 | "which": "^1.2.14" 876 | } 877 | }, 878 | "graceful-fs": { 879 | "version": "4.2.2", 880 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.2.tgz", 881 | "integrity": "sha512-IItsdsea19BoLC7ELy13q1iJFNmd7ofZH5+X/pJr90/nRoPEX0DJo1dHDbgtYWOhJhcCgMDTOw84RZ72q6lB+Q==", 882 | "dev": true 883 | }, 884 | "has-flag": { 885 | "version": "3.0.0", 886 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 887 | "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", 888 | "dev": true 889 | }, 890 | "has-value": { 891 | "version": "1.0.0", 892 | "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", 893 | "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", 894 | "dev": true, 895 | "requires": { 896 | "get-value": "^2.0.6", 897 | "has-values": "^1.0.0", 898 | "isobject": "^3.0.0" 899 | } 900 | }, 901 | "has-values": { 902 | "version": "1.0.0", 903 | "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", 904 | "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", 905 | "dev": true, 906 | "requires": { 907 | "is-number": "^3.0.0", 908 | "kind-of": "^4.0.0" 909 | }, 910 | "dependencies": { 911 | "kind-of": { 912 | "version": "4.0.0", 913 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", 914 | "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", 915 | "dev": true, 916 | "requires": { 917 | "is-buffer": "^1.1.5" 918 | } 919 | } 920 | } 921 | }, 922 | "homedir-polyfill": { 923 | "version": "1.0.3", 924 | "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", 925 | "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", 926 | "dev": true, 927 | "requires": { 928 | "parse-passwd": "^1.0.0" 929 | } 930 | }, 931 | "iconv-lite": { 932 | "version": "0.4.24", 933 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", 934 | "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", 935 | "dev": true, 936 | "requires": { 937 | "safer-buffer": ">= 2.1.2 < 3" 938 | } 939 | }, 940 | "import-fresh": { 941 | "version": "3.1.0", 942 | "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.1.0.tgz", 943 | "integrity": "sha512-PpuksHKGt8rXfWEr9m9EHIpgyyaltBy8+eF6GJM0QCAxMgxCfucMF3mjecK2QsJr0amJW7gTqh5/wht0z2UhEQ==", 944 | "dev": true, 945 | "optional": true, 946 | "requires": { 947 | "parent-module": "^1.0.0", 948 | "resolve-from": "^4.0.0" 949 | }, 950 | "dependencies": { 951 | "resolve-from": { 952 | "version": "4.0.0", 953 | "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", 954 | "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", 955 | "dev": true, 956 | "optional": true 957 | } 958 | } 959 | }, 960 | "inflight": { 961 | "version": "1.0.6", 962 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 963 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", 964 | "dev": true, 965 | "requires": { 966 | "once": "^1.3.0", 967 | "wrappy": "1" 968 | } 969 | }, 970 | "inherits": { 971 | "version": "2.0.4", 972 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 973 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", 974 | "dev": true 975 | }, 976 | "ini": { 977 | "version": "1.3.7", 978 | "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.7.tgz", 979 | "integrity": "sha512-iKpRpXP+CrP2jyrxvg1kMUpXDyRUFDWurxbnVT1vQPx+Wz9uCYsMIqYuSBLV+PAaZG/d7kRLKRFc9oDMsH+mFQ==", 980 | "dev": true 981 | }, 982 | "inquirer": { 983 | "version": "6.5.0", 984 | "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.5.0.tgz", 985 | "integrity": "sha512-scfHejeG/lVZSpvCXpsB4j/wQNPM5JC8kiElOI0OUTwmc1RTpXr4H32/HOlQHcZiYl2z2VElwuCVDRG8vFmbnA==", 986 | "dev": true, 987 | "requires": { 988 | "ansi-escapes": "^3.2.0", 989 | "chalk": "^2.4.2", 990 | "cli-cursor": "^2.1.0", 991 | "cli-width": "^2.0.0", 992 | "external-editor": "^3.0.3", 993 | "figures": "^2.0.0", 994 | "lodash": "^4.17.12", 995 | "mute-stream": "0.0.7", 996 | "run-async": "^2.2.0", 997 | "rxjs": "^6.4.0", 998 | "string-width": "^2.1.0", 999 | "strip-ansi": "^5.1.0", 1000 | "through": "^2.3.6" 1001 | } 1002 | }, 1003 | "interpret": { 1004 | "version": "1.2.0", 1005 | "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.2.0.tgz", 1006 | "integrity": "sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw==", 1007 | "dev": true 1008 | }, 1009 | "is-accessor-descriptor": { 1010 | "version": "0.1.6", 1011 | "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", 1012 | "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", 1013 | "dev": true, 1014 | "requires": { 1015 | "kind-of": "^3.0.2" 1016 | }, 1017 | "dependencies": { 1018 | "kind-of": { 1019 | "version": "3.2.2", 1020 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", 1021 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", 1022 | "dev": true, 1023 | "requires": { 1024 | "is-buffer": "^1.1.5" 1025 | } 1026 | } 1027 | } 1028 | }, 1029 | "is-arrayish": { 1030 | "version": "0.2.1", 1031 | "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", 1032 | "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", 1033 | "dev": true, 1034 | "optional": true 1035 | }, 1036 | "is-buffer": { 1037 | "version": "1.1.6", 1038 | "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", 1039 | "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", 1040 | "dev": true 1041 | }, 1042 | "is-data-descriptor": { 1043 | "version": "0.1.4", 1044 | "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", 1045 | "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", 1046 | "dev": true, 1047 | "requires": { 1048 | "kind-of": "^3.0.2" 1049 | }, 1050 | "dependencies": { 1051 | "kind-of": { 1052 | "version": "3.2.2", 1053 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", 1054 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", 1055 | "dev": true, 1056 | "requires": { 1057 | "is-buffer": "^1.1.5" 1058 | } 1059 | } 1060 | } 1061 | }, 1062 | "is-descriptor": { 1063 | "version": "0.1.6", 1064 | "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", 1065 | "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", 1066 | "dev": true, 1067 | "requires": { 1068 | "is-accessor-descriptor": "^0.1.6", 1069 | "is-data-descriptor": "^0.1.4", 1070 | "kind-of": "^5.0.0" 1071 | }, 1072 | "dependencies": { 1073 | "kind-of": { 1074 | "version": "5.1.0", 1075 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", 1076 | "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", 1077 | "dev": true 1078 | } 1079 | } 1080 | }, 1081 | "is-directory": { 1082 | "version": "0.3.1", 1083 | "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", 1084 | "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=", 1085 | "dev": true, 1086 | "optional": true 1087 | }, 1088 | "is-extendable": { 1089 | "version": "0.1.1", 1090 | "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", 1091 | "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", 1092 | "dev": true 1093 | }, 1094 | "is-extglob": { 1095 | "version": "2.1.1", 1096 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 1097 | "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", 1098 | "dev": true 1099 | }, 1100 | "is-fullwidth-code-point": { 1101 | "version": "2.0.0", 1102 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", 1103 | "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", 1104 | "dev": true 1105 | }, 1106 | "is-glob": { 1107 | "version": "4.0.1", 1108 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", 1109 | "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", 1110 | "dev": true, 1111 | "requires": { 1112 | "is-extglob": "^2.1.1" 1113 | } 1114 | }, 1115 | "is-number": { 1116 | "version": "3.0.0", 1117 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", 1118 | "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", 1119 | "dev": true, 1120 | "requires": { 1121 | "kind-of": "^3.0.2" 1122 | }, 1123 | "dependencies": { 1124 | "kind-of": { 1125 | "version": "3.2.2", 1126 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", 1127 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", 1128 | "dev": true, 1129 | "requires": { 1130 | "is-buffer": "^1.1.5" 1131 | } 1132 | } 1133 | } 1134 | }, 1135 | "is-plain-object": { 1136 | "version": "2.0.4", 1137 | "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", 1138 | "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", 1139 | "dev": true, 1140 | "requires": { 1141 | "isobject": "^3.0.1" 1142 | } 1143 | }, 1144 | "is-promise": { 1145 | "version": "2.1.0", 1146 | "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", 1147 | "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", 1148 | "dev": true 1149 | }, 1150 | "is-utf8": { 1151 | "version": "0.2.1", 1152 | "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", 1153 | "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", 1154 | "dev": true 1155 | }, 1156 | "is-windows": { 1157 | "version": "1.0.2", 1158 | "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", 1159 | "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", 1160 | "dev": true 1161 | }, 1162 | "isarray": { 1163 | "version": "1.0.0", 1164 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 1165 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", 1166 | "dev": true 1167 | }, 1168 | "isexe": { 1169 | "version": "2.0.0", 1170 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 1171 | "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", 1172 | "dev": true 1173 | }, 1174 | "isobject": { 1175 | "version": "3.0.1", 1176 | "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", 1177 | "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", 1178 | "dev": true 1179 | }, 1180 | "js-yaml": { 1181 | "version": "3.13.1", 1182 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", 1183 | "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", 1184 | "dev": true, 1185 | "optional": true, 1186 | "requires": { 1187 | "argparse": "^1.0.7", 1188 | "esprima": "^4.0.0" 1189 | } 1190 | }, 1191 | "json-parse-better-errors": { 1192 | "version": "1.0.2", 1193 | "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", 1194 | "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", 1195 | "dev": true, 1196 | "optional": true 1197 | }, 1198 | "jsonfile": { 1199 | "version": "4.0.0", 1200 | "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", 1201 | "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", 1202 | "dev": true, 1203 | "requires": { 1204 | "graceful-fs": "^4.1.6" 1205 | } 1206 | }, 1207 | "kind-of": { 1208 | "version": "6.0.2", 1209 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", 1210 | "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", 1211 | "dev": true 1212 | }, 1213 | "lodash": { 1214 | "version": "4.17.14", 1215 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.14.tgz", 1216 | "integrity": "sha512-mmKYbW3GLuJeX+iGP+Y7Gp1AiGHGbXHCOh/jZmrawMmsE7MS4znI3RL2FsjbqOyMayHInjOeykW7PEajUk1/xw==", 1217 | "dev": true 1218 | }, 1219 | "lodash.map": { 1220 | "version": "4.6.0", 1221 | "resolved": "https://registry.npmjs.org/lodash.map/-/lodash.map-4.6.0.tgz", 1222 | "integrity": "sha1-dx7Hg540c9nEzeKLGTlMNWL09tM=", 1223 | "dev": true 1224 | }, 1225 | "longest": { 1226 | "version": "2.0.1", 1227 | "resolved": "https://registry.npmjs.org/longest/-/longest-2.0.1.tgz", 1228 | "integrity": "sha1-eB4YMpaqlPbU2RbcM10NF676I/g=", 1229 | "dev": true 1230 | }, 1231 | "map-cache": { 1232 | "version": "0.2.2", 1233 | "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", 1234 | "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", 1235 | "dev": true 1236 | }, 1237 | "map-visit": { 1238 | "version": "1.0.0", 1239 | "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", 1240 | "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", 1241 | "dev": true, 1242 | "requires": { 1243 | "object-visit": "^1.0.0" 1244 | } 1245 | }, 1246 | "merge": { 1247 | "version": "1.2.1", 1248 | "resolved": "https://registry.npmjs.org/merge/-/merge-1.2.1.tgz", 1249 | "integrity": "sha512-VjFo4P5Whtj4vsLzsYBu5ayHhoHJ0UqNm7ibvShmbmoz7tGi0vXaoJbGdB+GmDMLUdg8DpQXEIeVDAe8MaABvQ==", 1250 | "dev": true 1251 | }, 1252 | "micromatch": { 1253 | "version": "3.1.10", 1254 | "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", 1255 | "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", 1256 | "dev": true, 1257 | "requires": { 1258 | "arr-diff": "^4.0.0", 1259 | "array-unique": "^0.3.2", 1260 | "braces": "^2.3.1", 1261 | "define-property": "^2.0.2", 1262 | "extend-shallow": "^3.0.2", 1263 | "extglob": "^2.0.4", 1264 | "fragment-cache": "^0.2.1", 1265 | "kind-of": "^6.0.2", 1266 | "nanomatch": "^1.2.9", 1267 | "object.pick": "^1.3.0", 1268 | "regex-not": "^1.0.0", 1269 | "snapdragon": "^0.8.1", 1270 | "to-regex": "^3.0.2" 1271 | } 1272 | }, 1273 | "mimic-fn": { 1274 | "version": "1.2.0", 1275 | "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", 1276 | "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", 1277 | "dev": true 1278 | }, 1279 | "minimatch": { 1280 | "version": "3.0.4", 1281 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", 1282 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", 1283 | "dev": true, 1284 | "requires": { 1285 | "brace-expansion": "^1.1.7" 1286 | } 1287 | }, 1288 | "minimist": { 1289 | "version": "1.2.0", 1290 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", 1291 | "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", 1292 | "dev": true 1293 | }, 1294 | "mixin-deep": { 1295 | "version": "1.3.2", 1296 | "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", 1297 | "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", 1298 | "dev": true, 1299 | "requires": { 1300 | "for-in": "^1.0.2", 1301 | "is-extendable": "^1.0.1" 1302 | }, 1303 | "dependencies": { 1304 | "is-extendable": { 1305 | "version": "1.0.1", 1306 | "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", 1307 | "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", 1308 | "dev": true, 1309 | "requires": { 1310 | "is-plain-object": "^2.0.4" 1311 | } 1312 | } 1313 | } 1314 | }, 1315 | "ms": { 1316 | "version": "2.0.0", 1317 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 1318 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", 1319 | "dev": true 1320 | }, 1321 | "mute-stream": { 1322 | "version": "0.0.7", 1323 | "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", 1324 | "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", 1325 | "dev": true 1326 | }, 1327 | "nanomatch": { 1328 | "version": "1.2.13", 1329 | "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", 1330 | "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", 1331 | "dev": true, 1332 | "requires": { 1333 | "arr-diff": "^4.0.0", 1334 | "array-unique": "^0.3.2", 1335 | "define-property": "^2.0.2", 1336 | "extend-shallow": "^3.0.2", 1337 | "fragment-cache": "^0.2.1", 1338 | "is-windows": "^1.0.2", 1339 | "kind-of": "^6.0.2", 1340 | "object.pick": "^1.3.0", 1341 | "regex-not": "^1.0.0", 1342 | "snapdragon": "^0.8.1", 1343 | "to-regex": "^3.0.1" 1344 | } 1345 | }, 1346 | "object-copy": { 1347 | "version": "0.1.0", 1348 | "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", 1349 | "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", 1350 | "dev": true, 1351 | "requires": { 1352 | "copy-descriptor": "^0.1.0", 1353 | "define-property": "^0.2.5", 1354 | "kind-of": "^3.0.3" 1355 | }, 1356 | "dependencies": { 1357 | "define-property": { 1358 | "version": "0.2.5", 1359 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", 1360 | "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", 1361 | "dev": true, 1362 | "requires": { 1363 | "is-descriptor": "^0.1.0" 1364 | } 1365 | }, 1366 | "kind-of": { 1367 | "version": "3.2.2", 1368 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", 1369 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", 1370 | "dev": true, 1371 | "requires": { 1372 | "is-buffer": "^1.1.5" 1373 | } 1374 | } 1375 | } 1376 | }, 1377 | "object-visit": { 1378 | "version": "1.0.1", 1379 | "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", 1380 | "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", 1381 | "dev": true, 1382 | "requires": { 1383 | "isobject": "^3.0.0" 1384 | } 1385 | }, 1386 | "object.pick": { 1387 | "version": "1.3.0", 1388 | "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", 1389 | "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", 1390 | "dev": true, 1391 | "requires": { 1392 | "isobject": "^3.0.1" 1393 | } 1394 | }, 1395 | "once": { 1396 | "version": "1.4.0", 1397 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 1398 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", 1399 | "dev": true, 1400 | "requires": { 1401 | "wrappy": "1" 1402 | } 1403 | }, 1404 | "onetime": { 1405 | "version": "2.0.1", 1406 | "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", 1407 | "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", 1408 | "dev": true, 1409 | "requires": { 1410 | "mimic-fn": "^1.0.0" 1411 | } 1412 | }, 1413 | "os-tmpdir": { 1414 | "version": "1.0.2", 1415 | "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", 1416 | "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", 1417 | "dev": true 1418 | }, 1419 | "parent-module": { 1420 | "version": "1.0.1", 1421 | "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", 1422 | "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", 1423 | "dev": true, 1424 | "optional": true, 1425 | "requires": { 1426 | "callsites": "^3.0.0" 1427 | } 1428 | }, 1429 | "parse-json": { 1430 | "version": "4.0.0", 1431 | "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", 1432 | "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", 1433 | "dev": true, 1434 | "optional": true, 1435 | "requires": { 1436 | "error-ex": "^1.3.1", 1437 | "json-parse-better-errors": "^1.0.1" 1438 | } 1439 | }, 1440 | "parse-passwd": { 1441 | "version": "1.0.0", 1442 | "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", 1443 | "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", 1444 | "dev": true 1445 | }, 1446 | "pascalcase": { 1447 | "version": "0.1.1", 1448 | "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", 1449 | "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", 1450 | "dev": true 1451 | }, 1452 | "path-is-absolute": { 1453 | "version": "1.0.1", 1454 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 1455 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", 1456 | "dev": true 1457 | }, 1458 | "path-parse": { 1459 | "version": "1.0.6", 1460 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", 1461 | "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", 1462 | "dev": true 1463 | }, 1464 | "posix-character-classes": { 1465 | "version": "0.1.1", 1466 | "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", 1467 | "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", 1468 | "dev": true 1469 | }, 1470 | "rechoir": { 1471 | "version": "0.6.2", 1472 | "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", 1473 | "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", 1474 | "dev": true, 1475 | "requires": { 1476 | "resolve": "^1.1.6" 1477 | } 1478 | }, 1479 | "regenerator-runtime": { 1480 | "version": "0.11.1", 1481 | "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", 1482 | "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", 1483 | "dev": true, 1484 | "optional": true 1485 | }, 1486 | "regex-not": { 1487 | "version": "1.0.2", 1488 | "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", 1489 | "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", 1490 | "dev": true, 1491 | "requires": { 1492 | "extend-shallow": "^3.0.2", 1493 | "safe-regex": "^1.1.0" 1494 | } 1495 | }, 1496 | "repeat-element": { 1497 | "version": "1.1.3", 1498 | "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", 1499 | "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", 1500 | "dev": true 1501 | }, 1502 | "repeat-string": { 1503 | "version": "1.6.1", 1504 | "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", 1505 | "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", 1506 | "dev": true 1507 | }, 1508 | "resolve": { 1509 | "version": "1.12.0", 1510 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.12.0.tgz", 1511 | "integrity": "sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w==", 1512 | "dev": true, 1513 | "requires": { 1514 | "path-parse": "^1.0.6" 1515 | } 1516 | }, 1517 | "resolve-dir": { 1518 | "version": "1.0.1", 1519 | "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", 1520 | "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", 1521 | "dev": true, 1522 | "requires": { 1523 | "expand-tilde": "^2.0.0", 1524 | "global-modules": "^1.0.0" 1525 | } 1526 | }, 1527 | "resolve-from": { 1528 | "version": "5.0.0", 1529 | "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", 1530 | "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", 1531 | "dev": true, 1532 | "optional": true 1533 | }, 1534 | "resolve-global": { 1535 | "version": "1.0.0", 1536 | "resolved": "https://registry.npmjs.org/resolve-global/-/resolve-global-1.0.0.tgz", 1537 | "integrity": "sha512-zFa12V4OLtT5XUX/Q4VLvTfBf+Ok0SPc1FNGM/z9ctUdiU618qwKpWnd0CHs3+RqROfyEg/DhuHbMWYqcgljEw==", 1538 | "dev": true, 1539 | "optional": true, 1540 | "requires": { 1541 | "global-dirs": "^0.1.1" 1542 | } 1543 | }, 1544 | "resolve-url": { 1545 | "version": "0.2.1", 1546 | "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", 1547 | "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", 1548 | "dev": true 1549 | }, 1550 | "restore-cursor": { 1551 | "version": "2.0.0", 1552 | "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", 1553 | "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", 1554 | "dev": true, 1555 | "requires": { 1556 | "onetime": "^2.0.0", 1557 | "signal-exit": "^3.0.2" 1558 | } 1559 | }, 1560 | "ret": { 1561 | "version": "0.1.15", 1562 | "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", 1563 | "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", 1564 | "dev": true 1565 | }, 1566 | "right-pad": { 1567 | "version": "1.0.1", 1568 | "resolved": "https://registry.npmjs.org/right-pad/-/right-pad-1.0.1.tgz", 1569 | "integrity": "sha1-jKCMLLtbVedNr6lr9/0aJ9VoyNA=", 1570 | "dev": true 1571 | }, 1572 | "run-async": { 1573 | "version": "2.3.0", 1574 | "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", 1575 | "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", 1576 | "dev": true, 1577 | "requires": { 1578 | "is-promise": "^2.1.0" 1579 | } 1580 | }, 1581 | "rxjs": { 1582 | "version": "6.5.2", 1583 | "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.2.tgz", 1584 | "integrity": "sha512-HUb7j3kvb7p7eCUHE3FqjoDsC1xfZQ4AHFWfTKSpZ+sAhhz5X1WX0ZuUqWbzB2QhSLp3DoLUG+hMdEDKqWo2Zg==", 1585 | "dev": true, 1586 | "requires": { 1587 | "tslib": "^1.9.0" 1588 | } 1589 | }, 1590 | "safe-regex": { 1591 | "version": "1.1.0", 1592 | "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", 1593 | "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", 1594 | "dev": true, 1595 | "requires": { 1596 | "ret": "~0.1.10" 1597 | } 1598 | }, 1599 | "safer-buffer": { 1600 | "version": "2.1.2", 1601 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", 1602 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", 1603 | "dev": true 1604 | }, 1605 | "set-value": { 1606 | "version": "2.0.1", 1607 | "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", 1608 | "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", 1609 | "dev": true, 1610 | "requires": { 1611 | "extend-shallow": "^2.0.1", 1612 | "is-extendable": "^0.1.1", 1613 | "is-plain-object": "^2.0.3", 1614 | "split-string": "^3.0.1" 1615 | }, 1616 | "dependencies": { 1617 | "extend-shallow": { 1618 | "version": "2.0.1", 1619 | "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", 1620 | "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", 1621 | "dev": true, 1622 | "requires": { 1623 | "is-extendable": "^0.1.0" 1624 | } 1625 | } 1626 | } 1627 | }, 1628 | "shelljs": { 1629 | "version": "0.7.6", 1630 | "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.7.6.tgz", 1631 | "integrity": "sha1-N5zM+1a5HIYB5HkzVutTgpJN6a0=", 1632 | "dev": true, 1633 | "requires": { 1634 | "glob": "^7.0.0", 1635 | "interpret": "^1.0.0", 1636 | "rechoir": "^0.6.2" 1637 | } 1638 | }, 1639 | "signal-exit": { 1640 | "version": "3.0.2", 1641 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", 1642 | "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", 1643 | "dev": true 1644 | }, 1645 | "snapdragon": { 1646 | "version": "0.8.2", 1647 | "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", 1648 | "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", 1649 | "dev": true, 1650 | "requires": { 1651 | "base": "^0.11.1", 1652 | "debug": "^2.2.0", 1653 | "define-property": "^0.2.5", 1654 | "extend-shallow": "^2.0.1", 1655 | "map-cache": "^0.2.2", 1656 | "source-map": "^0.5.6", 1657 | "source-map-resolve": "^0.5.0", 1658 | "use": "^3.1.0" 1659 | }, 1660 | "dependencies": { 1661 | "define-property": { 1662 | "version": "0.2.5", 1663 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", 1664 | "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", 1665 | "dev": true, 1666 | "requires": { 1667 | "is-descriptor": "^0.1.0" 1668 | } 1669 | }, 1670 | "extend-shallow": { 1671 | "version": "2.0.1", 1672 | "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", 1673 | "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", 1674 | "dev": true, 1675 | "requires": { 1676 | "is-extendable": "^0.1.0" 1677 | } 1678 | } 1679 | } 1680 | }, 1681 | "snapdragon-node": { 1682 | "version": "2.1.1", 1683 | "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", 1684 | "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", 1685 | "dev": true, 1686 | "requires": { 1687 | "define-property": "^1.0.0", 1688 | "isobject": "^3.0.0", 1689 | "snapdragon-util": "^3.0.1" 1690 | }, 1691 | "dependencies": { 1692 | "define-property": { 1693 | "version": "1.0.0", 1694 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", 1695 | "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", 1696 | "dev": true, 1697 | "requires": { 1698 | "is-descriptor": "^1.0.0" 1699 | } 1700 | }, 1701 | "is-accessor-descriptor": { 1702 | "version": "1.0.0", 1703 | "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", 1704 | "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", 1705 | "dev": true, 1706 | "requires": { 1707 | "kind-of": "^6.0.0" 1708 | } 1709 | }, 1710 | "is-data-descriptor": { 1711 | "version": "1.0.0", 1712 | "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", 1713 | "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", 1714 | "dev": true, 1715 | "requires": { 1716 | "kind-of": "^6.0.0" 1717 | } 1718 | }, 1719 | "is-descriptor": { 1720 | "version": "1.0.2", 1721 | "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", 1722 | "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", 1723 | "dev": true, 1724 | "requires": { 1725 | "is-accessor-descriptor": "^1.0.0", 1726 | "is-data-descriptor": "^1.0.0", 1727 | "kind-of": "^6.0.2" 1728 | } 1729 | } 1730 | } 1731 | }, 1732 | "snapdragon-util": { 1733 | "version": "3.0.1", 1734 | "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", 1735 | "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", 1736 | "dev": true, 1737 | "requires": { 1738 | "kind-of": "^3.2.0" 1739 | }, 1740 | "dependencies": { 1741 | "kind-of": { 1742 | "version": "3.2.2", 1743 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", 1744 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", 1745 | "dev": true, 1746 | "requires": { 1747 | "is-buffer": "^1.1.5" 1748 | } 1749 | } 1750 | } 1751 | }, 1752 | "source-map": { 1753 | "version": "0.5.7", 1754 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", 1755 | "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", 1756 | "dev": true 1757 | }, 1758 | "source-map-resolve": { 1759 | "version": "0.5.2", 1760 | "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", 1761 | "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==", 1762 | "dev": true, 1763 | "requires": { 1764 | "atob": "^2.1.1", 1765 | "decode-uri-component": "^0.2.0", 1766 | "resolve-url": "^0.2.1", 1767 | "source-map-url": "^0.4.0", 1768 | "urix": "^0.1.0" 1769 | } 1770 | }, 1771 | "source-map-url": { 1772 | "version": "0.4.0", 1773 | "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", 1774 | "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", 1775 | "dev": true 1776 | }, 1777 | "split-string": { 1778 | "version": "3.1.0", 1779 | "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", 1780 | "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", 1781 | "dev": true, 1782 | "requires": { 1783 | "extend-shallow": "^3.0.0" 1784 | } 1785 | }, 1786 | "sprintf-js": { 1787 | "version": "1.0.3", 1788 | "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", 1789 | "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", 1790 | "dev": true, 1791 | "optional": true 1792 | }, 1793 | "static-extend": { 1794 | "version": "0.1.2", 1795 | "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", 1796 | "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", 1797 | "dev": true, 1798 | "requires": { 1799 | "define-property": "^0.2.5", 1800 | "object-copy": "^0.1.0" 1801 | }, 1802 | "dependencies": { 1803 | "define-property": { 1804 | "version": "0.2.5", 1805 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", 1806 | "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", 1807 | "dev": true, 1808 | "requires": { 1809 | "is-descriptor": "^0.1.0" 1810 | } 1811 | } 1812 | } 1813 | }, 1814 | "string-width": { 1815 | "version": "2.1.1", 1816 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", 1817 | "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", 1818 | "dev": true, 1819 | "requires": { 1820 | "is-fullwidth-code-point": "^2.0.0", 1821 | "strip-ansi": "^4.0.0" 1822 | }, 1823 | "dependencies": { 1824 | "strip-ansi": { 1825 | "version": "4.0.0", 1826 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", 1827 | "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", 1828 | "dev": true, 1829 | "requires": { 1830 | "ansi-regex": "^3.0.0" 1831 | } 1832 | } 1833 | } 1834 | }, 1835 | "strip-ansi": { 1836 | "version": "5.2.0", 1837 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", 1838 | "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", 1839 | "dev": true, 1840 | "requires": { 1841 | "ansi-regex": "^4.1.0" 1842 | }, 1843 | "dependencies": { 1844 | "ansi-regex": { 1845 | "version": "4.1.0", 1846 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", 1847 | "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", 1848 | "dev": true 1849 | } 1850 | } 1851 | }, 1852 | "strip-bom": { 1853 | "version": "4.0.0", 1854 | "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", 1855 | "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", 1856 | "dev": true 1857 | }, 1858 | "strip-json-comments": { 1859 | "version": "3.0.1", 1860 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.0.1.tgz", 1861 | "integrity": "sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw==", 1862 | "dev": true 1863 | }, 1864 | "supports-color": { 1865 | "version": "5.5.0", 1866 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 1867 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 1868 | "dev": true, 1869 | "requires": { 1870 | "has-flag": "^3.0.0" 1871 | } 1872 | }, 1873 | "through": { 1874 | "version": "2.3.8", 1875 | "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", 1876 | "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", 1877 | "dev": true 1878 | }, 1879 | "tmp": { 1880 | "version": "0.0.33", 1881 | "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", 1882 | "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", 1883 | "dev": true, 1884 | "requires": { 1885 | "os-tmpdir": "~1.0.2" 1886 | } 1887 | }, 1888 | "to-object-path": { 1889 | "version": "0.3.0", 1890 | "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", 1891 | "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", 1892 | "dev": true, 1893 | "requires": { 1894 | "kind-of": "^3.0.2" 1895 | }, 1896 | "dependencies": { 1897 | "kind-of": { 1898 | "version": "3.2.2", 1899 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", 1900 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", 1901 | "dev": true, 1902 | "requires": { 1903 | "is-buffer": "^1.1.5" 1904 | } 1905 | } 1906 | } 1907 | }, 1908 | "to-regex": { 1909 | "version": "3.0.2", 1910 | "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", 1911 | "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", 1912 | "dev": true, 1913 | "requires": { 1914 | "define-property": "^2.0.2", 1915 | "extend-shallow": "^3.0.2", 1916 | "regex-not": "^1.0.2", 1917 | "safe-regex": "^1.1.0" 1918 | } 1919 | }, 1920 | "to-regex-range": { 1921 | "version": "2.1.1", 1922 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", 1923 | "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", 1924 | "dev": true, 1925 | "requires": { 1926 | "is-number": "^3.0.0", 1927 | "repeat-string": "^1.6.1" 1928 | } 1929 | }, 1930 | "tslib": { 1931 | "version": "1.10.0", 1932 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz", 1933 | "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==", 1934 | "dev": true 1935 | }, 1936 | "union-value": { 1937 | "version": "1.0.1", 1938 | "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", 1939 | "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", 1940 | "dev": true, 1941 | "requires": { 1942 | "arr-union": "^3.1.0", 1943 | "get-value": "^2.0.6", 1944 | "is-extendable": "^0.1.1", 1945 | "set-value": "^2.0.1" 1946 | } 1947 | }, 1948 | "universalify": { 1949 | "version": "0.1.2", 1950 | "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", 1951 | "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", 1952 | "dev": true 1953 | }, 1954 | "unset-value": { 1955 | "version": "1.0.0", 1956 | "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", 1957 | "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", 1958 | "dev": true, 1959 | "requires": { 1960 | "has-value": "^0.3.1", 1961 | "isobject": "^3.0.0" 1962 | }, 1963 | "dependencies": { 1964 | "has-value": { 1965 | "version": "0.3.1", 1966 | "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", 1967 | "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", 1968 | "dev": true, 1969 | "requires": { 1970 | "get-value": "^2.0.3", 1971 | "has-values": "^0.1.4", 1972 | "isobject": "^2.0.0" 1973 | }, 1974 | "dependencies": { 1975 | "isobject": { 1976 | "version": "2.1.0", 1977 | "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", 1978 | "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", 1979 | "dev": true, 1980 | "requires": { 1981 | "isarray": "1.0.0" 1982 | } 1983 | } 1984 | } 1985 | }, 1986 | "has-values": { 1987 | "version": "0.1.4", 1988 | "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", 1989 | "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", 1990 | "dev": true 1991 | } 1992 | } 1993 | }, 1994 | "urix": { 1995 | "version": "0.1.0", 1996 | "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", 1997 | "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", 1998 | "dev": true 1999 | }, 2000 | "use": { 2001 | "version": "3.1.1", 2002 | "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", 2003 | "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", 2004 | "dev": true 2005 | }, 2006 | "which": { 2007 | "version": "1.3.1", 2008 | "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", 2009 | "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", 2010 | "dev": true, 2011 | "requires": { 2012 | "isexe": "^2.0.0" 2013 | } 2014 | }, 2015 | "word-wrap": { 2016 | "version": "1.2.3", 2017 | "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", 2018 | "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", 2019 | "dev": true 2020 | }, 2021 | "wrappy": { 2022 | "version": "1.0.2", 2023 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 2024 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", 2025 | "dev": true 2026 | } 2027 | } 2028 | } 2029 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "devops-pack", 3 | "version": "1.2.2", 4 | "description": "An All-in-one starter pack for Backend, Cloud, etc related projects for development and testing. ", 5 | "main": "devpack.sh", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "keywords": [], 10 | "author": "Obinna Odirionye", 11 | "license": "MIT", 12 | "devDependencies": { 13 | "cz-conventional-changelog": "^3.0.2" 14 | }, 15 | "config": { 16 | "commitizen": { 17 | "path": "./node_modules/cz-conventional-changelog" 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /scripts/install.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | RED='\033[0;31m' 4 | BLUE='\033[40;38;5;82m' 5 | PURPLE='\033[0;35m' 6 | 7 | #version 8 | TERRAFROM_VERSION=0.12.7 9 | KOPS_VERSION=1.13.0 10 | KUBECTL_VERSION=1.16.0 11 | GO_VERSION=1.12.9 12 | NODEJS_VERSION='10.x' 13 | PACKER_VERSION=1.4.3 14 | 15 | 16 | 17 | echo -e " ${BLUE} Updating Ubuntu Packages \e[0m " 18 | sleep 1 19 | sudo apt-get update -y 20 | sudo apt-get install zip -y && sudo apt-get install unzip -y 21 | 22 | function runAWS() { 23 | # Installation for AWS CLI 24 | echo -e " ${BLUE} Installing AWS CLI \e[0m " 25 | sleep 2 26 | sudo apt-get install awscli -y 27 | echo -e " ${BLUE} AWS CLI has been installed! \e[0m " 28 | } 29 | 30 | function runGoogleCloud(){ 31 | #Installations for Google Clouc SDK 32 | echo -e " ${BLUE} Installing Google Cloud SDK" 33 | sleep 2 34 | 35 | # Create an environment variable for the correct distribution 36 | export CLOUD_SDK_REPO="cloud-sdk-$(lsb_release -c -s)" 37 | 38 | # Add the Cloud SDK distribution URI as a package source 39 | echo "deb http://packages.cloud.google.com/apt $CLOUD_SDK_REPO main" | sudo tee -a /etc/apt/sources.list.d/google-cloud-sdk.list 40 | 41 | # Import the Google Cloud Platform public key 42 | curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add - 43 | 44 | # Update the package list and install the Cloud SDK 45 | sudo apt-get update -y && sudo apt-get install google-cloud-sdk -y 46 | 47 | echo -e " ${BLUE} Google Cloud CLI has been installed! \e[0m " 48 | } 49 | 50 | function runAzure() { 51 | #Installations for Microsft Azure CLI 52 | echo -e " ${BLUE} Installing Microsoft Azure CLI" 53 | sleep 2 54 | 55 | # Get packages needed for the install process: 56 | sudo apt-get update -y 57 | sudo apt-get install ca-certificates curl apt-transport-https lsb-release gnupg -y 58 | 59 | # Download and install the Microsoft signing key: 60 | curl -sL https://packages.microsoft.com/keys/microsoft.asc | \ 61 | gpg --dearmor | \ 62 | sudo tee /etc/apt/trusted.gpg.d/microsoft.asc.gpg > /dev/null 63 | 64 | 65 | # Add the Azure CLI software repository 66 | AZ_REPO=$(lsb_release -cs) 67 | echo "deb [arch=amd64] https://packages.microsoft.com/repos/azure-cli/ $AZ_REPO main" | \ 68 | sudo tee /etc/apt/sources.list.d/azure-cli.list 69 | 70 | # Update repository information and install the azure-cli package: 71 | sudo apt-get update 72 | sudo apt-get install azure-cli -y 73 | 74 | echo -e " ${BLUE} Microsoft Azure CLI has been installed! \e[0m " 75 | 76 | } 77 | 78 | function runGo() { 79 | # #Installations for Go 80 | echo -e " ${BLUE} Installing Go " 81 | sleep 2 82 | cd /tmp && \ 83 | wget https://dl.google.com/go/go${GO_VERSION}.linux-amd64.tar.gz && \ 84 | sudo tar -xvf go${GO_VERSION}.linux-amd64.tar.gz 85 | sudo mv go/ /usr/local/go 86 | 87 | echo GOROOT=/usr/local/go >> /home/vagrant/.bashrc && \ 88 | echo GOPATH=/home/vagrant/goprojects >> /home/vagrant/.bashrc && \ 89 | echo PATH=/home/vagrant/goprojects/bin:/usr/local/go/bin:/bin:/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin >> /home/vagrant/.bashrc 90 | source /home/vagrant/.bashrc 91 | 92 | echo -e " ${BLUE} Go has been installed! \e[0m" 93 | 94 | } 95 | 96 | function runTerraform(){ 97 | #Installations for Terraform 98 | echo -e " ${BLUE} Installing Terraform" 99 | sleep 2 100 | cd /tmp && \ 101 | wget https://releases.hashicorp.com/terraform/${TERRAFROM_VERSION}/terraform_${TERRAFROM_VERSION}_linux_amd64.zip && \ 102 | unzip terraform_${TERRAFROM_VERSION}_linux_amd64.zip && \ 103 | mv terraform /usr/local/bin 104 | echo -e " ${BLUE} Terraform has been installed! \e[0m" 105 | 106 | } 107 | function runAnsible() { 108 | #Installations for Ansible 109 | echo -e " ${BLUE} Installing Ansible" 110 | sleep 2 111 | sudo apt-get update -y 112 | sudo apt-get install software-properties-common -y 113 | sudo apt-add-repository ppa:ansible/ansible -y && \ 114 | sudo apt-get update -y && \ 115 | sudo apt-get install ansible -y 116 | 117 | echo -e " ${BLUE} Ansible has been installed! \e[0m" 118 | } 119 | 120 | function runDotNetCore() { 121 | #Installations for Dotnetcore 122 | echo -e " ${BLUE} Installing Dotnetcore" 123 | sleep 2 124 | wget -q https://packages.microsoft.com/config/ubuntu/16.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb 125 | sudo dpkg -i packages-microsoft-prod.deb 126 | 127 | sudo apt-get install apt-transport-https 128 | sudo apt-get update -y 129 | sudo apt-get install dotnet-sdk-2.2 -y 130 | echo -e " ${BLUE} Dotnetcore has been installed! \e[0m" 131 | } 132 | 133 | function runDocker() { 134 | #Installations for Docker 135 | echo -e " ${BLUE} Installing DOCKER" 136 | sleep 2 137 | usermod -G docker ubuntu 138 | sudo apt-get install \ 139 | apt-transport-https \ 140 | ca-certificates \ 141 | curl \ 142 | gnupg-agent \ 143 | software-properties-common -y 144 | 145 | curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - 146 | 147 | sudo apt-key fingerprint 0EBFCD88 148 | 149 | sudo add-apt-repository \ 150 | "deb [arch=amd64] https://download.docker.com/linux/ubuntu 151 | $(lsb_release -cs) \ 152 | stable" 153 | sudo apt-get update 154 | sudo apt-get install docker-ce docker-ce-cli containerd.io -y 155 | 156 | echo -e " ${BLUE} Docker has been installed! \e[0m" 157 | 158 | } 159 | 160 | function runKops() { 161 | #Installations for Kubernetes(Kops) 162 | echo -e " ${BLUE} Installing Kubernetes(Kops) and Kubectl" 163 | sleep 2 164 | curl -LO https://github.com/kubernetes/kops/releases/download/${KOPS_VERSION}/kops-linux-amd64 165 | chmod +x kops-linux-amd64 166 | sudo mv ./kops-linux-amd64 /usr/local/bin/kops 167 | echo -e " ${BLUE} Kubernetes(Kops)has been installed! \e[0m" 168 | 169 | echo -e " ${BLUE} Installing Kubectl" 170 | sleep 2 171 | curl -LO https://storage.googleapis.com/kubernetes-release/release/v${KUBECTL_VERSION}/bin/linux/amd64/kubectl 172 | chmod +x ./kubectl 173 | sudo mv ./kubectl /usr/local/bin/kubectl 174 | echo -e " ${BLUE} Kubectl has been installed! \e[0m" 175 | 176 | } 177 | 178 | function runNode() { 179 | #Installations for Nodejs 180 | echo -e " ${BLUE} Installing Nodejs" 181 | sleep 2 182 | curl -sL https://deb.nodesource.com/setup_${NODEJS_VERSION} -o nodesource_setup.sh && \ 183 | sudo bash nodesource_setup.sh && \ 184 | sudo apt-get install nodejs -y 185 | echo -e " ${BLUE} Nodejs has been installed! \e[0m" 186 | } 187 | 188 | function runPacker() { 189 | #Installations for Packer 190 | echo -e " ${BLUE} Installing Packer" 191 | sleep 2 192 | cd /tmp && \ 193 | wget https://releases.hashicorp.com/packer/${PACKER_VERSION}/packer_${PACKER_VERSION}_linux_amd64.zip 194 | unzip packer_${PACKER_VERSION}_linux_amd64.zip 195 | sudo mv packer /usr/local/bin 196 | 197 | 198 | echo -e " ${BLUE} Packer has been installed! \e[0m" 199 | 200 | } 201 | -------------------------------------------------------------------------------- /setup.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | RED='\033[0;31m' 4 | BLUE='\033[40;38;5;82m' 5 | PURPLE='\033[0;35m' 6 | 7 | echo " 8 | +-+-+-+-+-+-+-+-+-+-+-+ 9 | |D|e|v|O|p|s|-|p|a|c|k| 10 | +-+-+-+-+-+-+-+-+-+-+-+ 11 | " 12 | checkOS () { 13 | unameOut="$(uname -s)" 14 | case "${unameOut}" in 15 | Linux*) machine=Linux;; 16 | Darwin*) machine=Mac;; 17 | *) machine="UNKNOWN:${unameOut}" 18 | esac 19 | } 20 | checkOS 21 | if [ ! -x "$(command -v vagrant)" ]; then 22 | 23 | if [ "$machine" == "Mac" ]; then 24 | echo -e "${PURPLE} Installing Vagrant..." 25 | sleep 1 26 | brew cask install vagrant 27 | echo -e " ${PURPLE} Vagrant has been installed!" 28 | elif [ "$machine" == "Linux" ]; then 29 | echo -e "${PURPLE} Installing Vagrant... \e[0m " 30 | sleep 1 31 | sudo apt-get update -y 32 | sudo apt-get install vagrant -y 33 | echo -e " ${PURPLE} Vagrant has been installed! \e[0m " 34 | 35 | else 36 | echo -e " ${PURPLE} Vagrant has been installed already!" 37 | fi 38 | fi 39 | 40 | if [ ! -x "$(command -v virtualbox)" ]; 41 | then 42 | 43 | if [ "$machine" == "Mac" ]; then 44 | echo -e "${PURPLE} Installing VirtualBox..." 45 | sleep 1 46 | brew cask install virtualbox 47 | echo -e " ${PURPLE} Virtualbox has been installed!" 48 | elif [ "$machine" == "Linux" ]; then 49 | echo -e "${PURPLE} Installing VirtualBox... \e[0m" 50 | sleep 1 51 | sudo apt-get update -y 52 | sudo apt-get install virtualbox -y 53 | echo -e " ${PURPLE} Virtualbox has been installed! \e[0m " 54 | else 55 | echo -e " ${PURPLE} Vagrant has been installed already!" 56 | fi 57 | fi 58 | 59 | if [ -x "$(command -v vagrant)" ] && [ -x "$(command -v virtualbox)" ]; then 60 | if [ "$machine" == "Mac" ]; then 61 | echo -e " ${BLUE} Your machine has meet the requirements to install DevOps-pack. Run *bash devpack.sh* " 62 | elif [ "$machine" == "Linux" ]; 63 | then 64 | echo -e " ${BLUE} Your machine has meet the requirements to install DevOps-pack. Run *bash devpack.sh* \e[0m " 65 | fi 66 | 67 | fi 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | --------------------------------------------------------------------------------