@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 +22 -13
- package/lib/web/dnsify/index.js +1 -3
- package/lib/web/packleate/Packleator.js +1 -3
- package/lib/web/packleate/index.js +1 -3
- package/package.json +14 -10
- package/src/dirty-git +19 -0
- package/src/helmup +25 -2
- package/src/k8x +11 -0
- package/src/prune-git +18 -0
- package/src/pull-git +18 -0
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
|
|
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**
|
|
32
|
-
* **Yitaek Hwang**
|
|
39
|
+
* **John Phelps**
|
|
40
|
+
* **Yitaek Hwang**
|
|
41
|
+
* **Michael Quinn**
|
package/lib/web/dnsify/index.js
CHANGED
|
@@ -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(
|
|
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(
|
|
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(
|
|
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.
|
|
4
|
-
"description": "A
|
|
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
|
-
"
|
|
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.
|
|
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.
|
|
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.
|
|
61
|
-
"@babel/register": "^7.8.
|
|
62
|
-
"@leverege/eslint-config-leverege": "^2.0.
|
|
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
|
|
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
|
-
|
|
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"
|