@leverege/build-tools 2.1.2 → 2.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,32 +1,41 @@
1
1
  # Leverege Build Tools
2
2
 
3
- A collection of build tools for all Leverege code.
3
+ A collection of build / support tools for all Leverege code.
4
4
 
5
5
  ## Installing
6
6
 
7
7
  Install build-tools
8
8
 
9
9
  ```
10
- npm install --save-dev @leverege/build-tools
11
- ```
12
-
13
- And add the script you want in package.json like
14
-
15
- ```
16
- "scripts": {
17
- "circleate": "circleate"
18
- }
10
+ npm install -g @leverege/build-tools
19
11
  ```
20
12
 
21
13
  ## Tool Descriptions
22
- Most of these tools should be bootstrapped with a template, but if you need descriptions of the tools:
23
14
 
15
+ ### General Tools:
24
16
  * **circleate**: bootstrap .circleci config repo
25
17
  * **decrypt-secrets**: decrypts secrets (env, service accounts)
26
18
  * **dockreate**: bootstrap docker repo
27
19
  * **encrypt-secrets**: encrypts secrets (env, service accounts)
20
+ * **packleate**: DESCRIPTION
21
+
22
+ ### Helm Helpers:
23
+ * **overwhelm**: A k8s context helper and yaml replacer *OVH:<REPLACE_ME>*
24
+ * **helmify**: DESCRIPTION
25
+ * **helmup**: A context safe helm deployment tool.
26
+ * **helmdn**: A destroyer of helm deplotments (danger zone).
27
+
28
+ ### Kubernetes Helpers:
29
+ * **k8x**: A script to help run commands on active pods in a k8s cluster.
30
+
31
+ ### Git Helpers:
32
+ * **git-tar**: A git safety net which is described [here on github](https://github.com/jphelps413/git-tar)
33
+ * **dirty-git**: Feed it a list of directories and it will show which are locally modified or stashed.
34
+ * **prune-git**: Performs maintenance on a list of git repositories.
35
+ * **pull-git**: Walks a list of git repos, pulling each if they are clean.
28
36
 
29
37
  ## Authors
30
38
 
31
- * **John Phelps** - Dockreate, getfbcfg, getjson, pkgck
32
- * **Yitaek Hwang** - circleate, encrypt/decrypt secrets
39
+ * **John Phelps**
40
+ * **Yitaek Hwang**
41
+ * **Michael Quinn**
@@ -5,8 +5,6 @@ require("core-js/modules/es.symbol");
5
5
 
6
6
  require("core-js/modules/es.array.filter");
7
7
 
8
- require("core-js/modules/es.array.for-each");
9
-
10
8
  require("core-js/modules/es.object.get-own-property-descriptor");
11
9
 
12
10
  require("core-js/modules/es.object.get-own-property-descriptors");
@@ -23,7 +21,7 @@ require("regenerator-runtime/runtime");
23
21
 
24
22
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
25
23
 
26
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
24
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
27
25
 
28
26
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
29
27
 
@@ -6,8 +6,6 @@ require("core-js/modules/es.array.concat");
6
6
 
7
7
  require("core-js/modules/es.array.filter");
8
8
 
9
- require("core-js/modules/es.array.for-each");
10
-
11
9
  require("core-js/modules/es.array.index-of");
12
10
 
13
11
  require("core-js/modules/es.array.iterator");
@@ -48,7 +46,7 @@ function _asyncToGenerator(fn) { return function () { var self = this, args = ar
48
46
 
49
47
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
50
48
 
51
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
49
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
52
50
 
53
51
  function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
54
52
 
@@ -5,8 +5,6 @@ require("core-js/modules/es.symbol");
5
5
 
6
6
  require("core-js/modules/es.array.filter");
7
7
 
8
- require("core-js/modules/es.array.for-each");
9
-
10
8
  require("core-js/modules/es.object.get-own-property-descriptor");
11
9
 
12
10
  require("core-js/modules/es.object.get-own-property-descriptors");
@@ -23,7 +21,7 @@ require("regenerator-runtime/runtime");
23
21
 
24
22
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
25
23
 
26
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
24
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
27
25
 
28
26
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
29
27
 
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@leverege/build-tools",
3
- "version": "2.1.2",
4
- "description": "A package for development build tools.",
3
+ "version": "2.1.4",
4
+ "description": "A collection of build / support tools for Leverege developers",
5
5
  "main": "index.js",
6
6
  "scripts": {
7
7
  "build": "npm run compile",
@@ -16,25 +16,29 @@
16
16
  "bin": {
17
17
  "circleate": "src/circleate",
18
18
  "decrypt-secrets": "src/decrypt-secrets",
19
- "dockreate": "src/dockreate",
19
+ "dirty-git": "src/dirty-git",
20
20
  "dnsify": "lib/server/dnsify/index.js",
21
+ "dockreate": "src/dockreate",
21
22
  "encrypt-secrets": "src/encrypt-secrets",
22
23
  "getfbcfg": "src/getfbcfg",
23
24
  "getjson": "src/getjson",
24
25
  "git-tar": "src/git-tar",
25
- "helmify": "src/helmify",
26
26
  "helmdn": "src/helmdn",
27
+ "helmify": "src/helmify",
27
28
  "helmup": "src/helmup",
29
+ "k8x": "src/k8x",
28
30
  "overwhelm": "src/overwhelm",
29
31
  "packleate": "lib/web/packleate/index.js",
30
32
  "pkgck": "src/pkgck",
31
- "pkglint": "src/pkglint"
33
+ "pkglint": "src/pkglint",
34
+ "prune-git": "src/prune-git",
35
+ "pull-git": "src/pull-git"
32
36
  },
33
37
  "author": "Leverege Devs",
34
38
  "license": "SEE LICENSE IN LICENSE.md",
35
39
  "dependencies": {
36
40
  "@google-cloud/kms": "^1.6.3",
37
- "async": "^3.1.1",
41
+ "async": "^3.2.0",
38
42
  "chalk": "^3.0.0",
39
43
  "cloudflare": "^2.7.0",
40
44
  "command-line-args": "^5.1.1",
@@ -54,12 +58,12 @@
54
58
  },
55
59
  "devDependencies": {
56
60
  "@babel/cli": "^7.8.4",
57
- "@babel/core": "^7.8.4",
61
+ "@babel/core": "^7.8.7",
58
62
  "@babel/plugin-proposal-class-properties": "^7.8.3",
59
63
  "@babel/plugin-proposal-optional-chaining": "^7.8.3",
60
- "@babel/preset-env": "^7.8.4",
61
- "@babel/register": "^7.8.3",
62
- "@leverege/eslint-config-leverege": "^2.0.8",
64
+ "@babel/preset-env": "^7.8.7",
65
+ "@babel/register": "^7.8.6",
66
+ "@leverege/eslint-config-leverege": "^2.0.10",
63
67
  "core-js": "^3.6.4"
64
68
  }
65
69
  }
package/src/dirty-git ADDED
@@ -0,0 +1,19 @@
1
+ #!/bin/bash
2
+
3
+ CLEAN="\e[32m✔\e[0m"
4
+ DIRTY="\e[31m✘\e[0m"
5
+ STASH="\e[33;44m$\e[0m"
6
+
7
+ clear
8
+ printf "${CLEAN} clean ${DIRTY} dirty ${STASH} stashed\n\n"
9
+ for dir in $@;
10
+ do
11
+ [ ! -d $dir ] || [ ! -d $dir/.git ] && continue
12
+ cd $dir &>/dev/null
13
+ branch=`git symbolic-ref --short HEAD`
14
+ [[ `git status --porcelain` ]] && status="$DIRTY" || status="$CLEAN"
15
+ scount=`git stash list | wc -l`
16
+ [ $scount -gt 0 ] && stash="\e[33;44m$\e[0m" || stash=" "
17
+ cd - &>/dev/null
18
+ printf "${status} %-28s ${stash} %s\n" $dir $branch
19
+ done
package/src/helmup CHANGED
@@ -52,6 +52,28 @@ function setOrUnset() {
52
52
  echo "$setting"
53
53
  }
54
54
 
55
+ function checkTimescalePassword(){
56
+ kubectl get secret postgresql-password
57
+ if [[ $? -eq 1 ]]; then
58
+ printf "\n*** Autogenerating Timescale password ***\n\n"
59
+ local psql_pw="$(generatePassword)"
60
+ local psql_rep_pw="$(generatePassword)"
61
+
62
+ kubectl create secret generic postgresql-password \
63
+ --from-literal=postgresql-password=${psql_pw} \
64
+ --from-literal=postgresql-replication-password=${psql_rep_pw}
65
+
66
+ printf "`color r 'Save Timescale creds to Keeweb =>'`\n\n"
67
+ printf "`color g "postgresql-password / ${psql_pw}"`\n"
68
+ printf "`color g "postgresql-replication-password / ${psql_rep_pw}"`\n\n"
69
+ fi
70
+ }
71
+
72
+ function generatePassword(){
73
+ RANDOMPW=`openssl rand -base64 12`
74
+ echo $RANDOMPW
75
+ }
76
+
55
77
  function checkMonitoringNS(){
56
78
  kubectl get namespace monitoring
57
79
  if [[ $? -eq 1 ]]; then
@@ -162,7 +184,7 @@ function monitoringHelp(){
162
184
  `color g "Proxy to Grafana (the charts you're looking for):"`
163
185
  export GRAFANA_POD=\$(kubectl --namespace monitoring get pods -l 'app.kubernetes.io/instance=grafana' -o jsonpath='{.items[0].metadata.name}')
164
186
  kubectl --namespace monitoring port-forward \$GRAFANA_POD 3000 &
165
- sleep 2; open http://localhost:3000/d/stackdriver/stackdriver?orgId=1
187
+ sleep 2; open http://localhost:3000
166
188
 
167
189
  `color toast "Save monitoring login to Keeweb"` => `color r "admin / $MONPASS"`
168
190
 
@@ -382,7 +404,8 @@ function doInstall() {
382
404
  ;;
383
405
 
384
406
  "timescale-db")
385
- helm dep up ./timescale-db && helm upgrade --install timescale-db ./timescale-db
407
+ checkTimescalePassword
408
+ helm upgrade --install timescale-db leverege/timescale-db
386
409
  ;;
387
410
 
388
411
  "ingress")
package/src/k8x ADDED
@@ -0,0 +1,11 @@
1
+ #!/bin/bash
2
+
3
+ [ -f overwhelm.yaml ] && [ -f package.json ] && npm run ahoy
4
+
5
+ pod=$(kubectl get pods --all-namespaces -owide | fzf | awk '{print $1, $2}')
6
+ cmd=${@:-"bash"}
7
+
8
+ kubecmd="kubectl exec -it --namespace $pod -- $cmd"
9
+ echo " run=[${kubecmd}]"
10
+
11
+ eval ${kubecmd}
package/src/prune-git ADDED
@@ -0,0 +1,18 @@
1
+ #!/bin/bash
2
+
3
+ printf "\n"
4
+ for dir in $@;
5
+ do
6
+ [ ! -d $dir ] && continue
7
+ [ ! -d $dir/.git ] && continue
8
+ cd $dir &>/dev/null
9
+ if [[ `git status --porcelain` ]];
10
+ then
11
+ printf "\e[31m✘\e[0m ${dir} - no prune\n"
12
+ else
13
+ printf "\e[32m✔\e[0m ${dir} - clean, pruning...\n"
14
+ git gc; git remote prune origin
15
+ fi
16
+ cd - &>/dev/null
17
+ done
18
+ printf "\n"
package/src/pull-git ADDED
@@ -0,0 +1,18 @@
1
+ #!/bin/bash
2
+
3
+ printf "\n"
4
+ for dir in $@;
5
+ do
6
+ [ ! -d $dir ] || [ ! -d $dir/.git ] && continue
7
+ cd $dir &>/dev/null
8
+ if [[ `git status --porcelain` ]];
9
+ then
10
+ printf "\e[31m✘\e[0m ${dir} - dirty, not pulling\n"
11
+ else
12
+ printf "\e[32m✔\e[0m ${dir} - clean, pulling...\n"
13
+ # find . -not \( -path \*ark -prune -o -path \*helm-elasticsearch -prune \) -name values.yaml -exec rm {} \;
14
+ git pull
15
+ fi
16
+ cd - &>/dev/null
17
+ done
18
+ printf "\n"