@leverege/build-tools 2.8.10 → 2.8.12

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.
Files changed (79) hide show
  1. package/lib/server/repo-init/RepoInit.js +3 -4
  2. package/lib/server/repo-init/config.tgz +0 -0
  3. package/lib/server/service-man/Config.js +45 -0
  4. package/lib/server/service-man/ServiceMan.js +42 -0
  5. package/lib/server/service-man/index.js +6 -0
  6. package/lib/server/service-man/utils/Shell.js +102 -0
  7. package/lib/server/service-man/utils/VersionCheck.js +82 -0
  8. package/lib/server/service-man/utils/index.js +67 -0
  9. package/lib/server/unleash.js +8 -1
  10. package/lib/web/service-man/Config.js +45 -0
  11. package/lib/web/service-man/ServiceMan.js +42 -0
  12. package/lib/web/service-man/index.js +6 -0
  13. package/lib/web/service-man/utils/Shell.js +102 -0
  14. package/lib/web/service-man/utils/VersionCheck.js +82 -0
  15. package/lib/web/service-man/utils/index.js +67 -0
  16. package/lib/web/unleash.js +8 -1
  17. package/package.json +5 -8
  18. package/src/circleate +2 -2
  19. package/src/helm-starters/baseline/Chart.yaml +4 -0
  20. package/src/helm-starters/baseline/templates/NOTES.txt +52 -0
  21. package/src/helm-starters/baseline/templates/configmap.yaml +6 -0
  22. package/src/helm-starters/baseline/templates/deployment.yaml +97 -0
  23. package/src/helm-starters/baseline/templates/ingress.yaml +17 -0
  24. package/src/helm-starters/baseline/templates/pdb.yaml +9 -0
  25. package/src/helm-starters/baseline/templates/service.yaml +16 -0
  26. package/src/helm-starters/baseline/templates/serviceaccount.yaml +10 -0
  27. package/src/helm-starters/baseline/values.yaml +57 -0
  28. package/src/helm-starters/deprecated/templates/hpa.yaml +12 -0
  29. package/src/pkgck +16 -3
  30. package/src/sa-tools/roles/baseline/leveregeBigQueryReader.json +10 -0
  31. package/src/sa-tools/roles/baseline/leveregeBigQueryWriter.json +10 -0
  32. package/src/sa-tools/roles/baseline/leveregeCloudFunctionsAdmin.json +12 -0
  33. package/src/sa-tools/roles/baseline/leveregeFirebaseUpdates.json +8 -0
  34. package/src/sa-tools/roles/baseline/leveregeLogsViewer.json +8 -0
  35. package/src/sa-tools/roles/{LeveregePubSubAccess.json → baseline/leveregePubSub.json} +3 -3
  36. package/src/sa-tools/roles/baseline/leveregeSecretsViewer.json +8 -0
  37. package/src/sa-tools/roles/baseline/leveregeStorageObjectAccess.json +10 -0
  38. package/src/sa-tools/roles/baseline/leveregeSvcAcctActor.json +8 -0
  39. package/src/sa-tools/roles/baseline/leveregeSvcAcctTokenCreator.json +8 -0
  40. package/src/sa-tools/roles/leverege-dev-john/20220113-121423/leveregeBigQueryReader.json +10 -0
  41. package/src/sa-tools/roles/leverege-dev-john/20220113-121423/leveregeBigQueryWriter.json +10 -0
  42. package/src/sa-tools/roles/leverege-dev-john/20220113-121423/leveregeCloudFunctionsAdmin.json +12 -0
  43. package/src/sa-tools/roles/leverege-dev-john/20220113-121423/leveregeFirebaseUpdates.json +8 -0
  44. package/src/sa-tools/roles/leverege-dev-john/20220113-121423/leveregeLogsViewer.json +8 -0
  45. package/src/sa-tools/roles/leverege-dev-john/20220113-121423/leveregePubSub.json +13 -0
  46. package/src/sa-tools/roles/leverege-dev-john/20220113-121423/leveregeSecretsViewer.json +8 -0
  47. package/src/sa-tools/roles/leverege-dev-john/20220113-121423/leveregeStorageObjectAccess.json +10 -0
  48. package/src/sa-tools/roles/leverege-dev-john/20220113-121423/leveregeSvcAcctActor.json +8 -0
  49. package/src/sa-tools/roles/leverege-dev-john/20220113-121423/leveregeSvcAcctTokenCreator.json +8 -0
  50. package/src/sa-tools/roles/prd-indoor-zoning/20220113-121935/leveregeBigQueryReader.json +10 -0
  51. package/src/sa-tools/roles/prd-indoor-zoning/20220113-121935/leveregeBigQueryWriter.json +10 -0
  52. package/src/sa-tools/roles/prd-indoor-zoning/20220113-121935/leveregeCloudFunctionsAdmin.json +12 -0
  53. package/src/sa-tools/roles/prd-indoor-zoning/20220113-121935/leveregeFirebaseUpdates.json +8 -0
  54. package/src/sa-tools/roles/prd-indoor-zoning/20220113-121935/leveregeLogsViewer.json +8 -0
  55. package/src/sa-tools/roles/prd-indoor-zoning/20220113-121935/leveregePubSub.json +13 -0
  56. package/src/sa-tools/roles/prd-indoor-zoning/20220113-121935/leveregeSecretsViewer.json +8 -0
  57. package/src/sa-tools/roles/prd-indoor-zoning/20220113-121935/leveregeStorageObjectAccess.json +10 -0
  58. package/src/sa-tools/roles/prd-indoor-zoning/20220113-121935/leveregeSvcAcctActor.json +8 -0
  59. package/src/sa-tools/roles/prd-indoor-zoning/20220113-121935/leveregeSvcAcctTokenCreator.json +8 -0
  60. package/src/sa-tools/roles-grab +30 -0
  61. package/src/sa-tools/roles-push +19 -0
  62. package/src/service-man/Config.js +40 -0
  63. package/src/service-man/ServiceMan.js +32 -0
  64. package/src/service-man/index.js +5 -0
  65. package/src/service-man/utils/Shell.js +95 -0
  66. package/src/service-man/utils/VersionCheck.js +77 -0
  67. package/src/service-man/utils/index.js +54 -0
  68. package/src/unleash.js +8 -2
  69. package/src/sa-tools/roles/LeveregeSecretManagerAccess.json +0 -8
  70. /package/src/helm-starters/{chart → baseline}/templates/hpa.yaml +0 -0
  71. /package/src/helm-starters/{chart → deprecated}/Chart.yaml +0 -0
  72. /package/src/helm-starters/{chart → deprecated}/templates/NOTES.txt +0 -0
  73. /package/src/helm-starters/{chart → deprecated}/templates/configmap.yaml +0 -0
  74. /package/src/helm-starters/{chart → deprecated}/templates/deployment.yaml +0 -0
  75. /package/src/helm-starters/{chart → deprecated}/templates/ingress.yaml +0 -0
  76. /package/src/helm-starters/{chart → deprecated}/templates/pdb.yaml +0 -0
  77. /package/src/helm-starters/{chart → deprecated}/templates/service.yaml +0 -0
  78. /package/src/helm-starters/{chart → deprecated}/templates/serviceaccount.yaml +0 -0
  79. /package/src/helm-starters/{chart → deprecated}/values.yaml +0 -0
@@ -0,0 +1,67 @@
1
+ "use strict";
2
+
3
+ const inquirer = require('inquirer');
4
+
5
+ const Shell = require('./Shell');
6
+
7
+ const VersionCheck = require('./VersionCheck');
8
+ /**
9
+ * Clears the screen and optionally homes the cursor.
10
+ */
11
+
12
+
13
+ const clear = (home = true) => {
14
+ // console.log( ( home ? '\x1B[0f' : '' ) + '\x1B[2J' )
15
+ console.log(`${home ? '\x1B[0f' : ''}\x1B[2J`);
16
+ };
17
+ /**
18
+ * A simple object dumping convenience.
19
+ */
20
+
21
+
22
+ const condir = (log, thing) => {
23
+ console.dir({
24
+ log,
25
+ thing
26
+ }, {
27
+ depth: 8,
28
+ colors: true
29
+ }); // eslint-disable-line
30
+ };
31
+ /**
32
+ * General "yes" to proceed function.
33
+ */
34
+
35
+
36
+ const proceed = async (query = 'Do you wish to proceed?') => {
37
+ await inquirer.prompt([{
38
+ type: 'confirm',
39
+ name: 'proceed',
40
+ message: query,
41
+ default: true
42
+ }]).then(answer => {
43
+ if (!answer.proceed) {
44
+ process.exit(0);
45
+ }
46
+ });
47
+ };
48
+ /**
49
+ * A simple mS sleeper.
50
+ */
51
+
52
+
53
+ const sleep = (ms = 0) => {
54
+ return new Promise(resolve => {
55
+ setTimeout(resolve, ms);
56
+ });
57
+ };
58
+
59
+ module.exports = {
60
+ clear,
61
+ condir,
62
+ proceed,
63
+ sleep,
64
+ pause: sleep,
65
+ Shell,
66
+ VersionCheck
67
+ };
@@ -8,7 +8,12 @@ const SimpleGit = require('simple-git');
8
8
  const git = new SimpleGit();
9
9
 
10
10
  const getCurrentBranchName = async () => {
11
- const branchInfo = await git.branch();
11
+ const branchInfo = await git.branch(); // first check to see if there are no branches - new repo?
12
+
13
+ if (Object.keys(branchInfo.branches).length === 0) {
14
+ return '';
15
+ }
16
+
12
17
  return Object.entries(branchInfo.branches).find(([name, info]) => info.current)[0];
13
18
  };
14
19
 
@@ -27,6 +32,8 @@ const npmRunner = async script => {
27
32
  } catch (err) {
28
33
  process.exit(1);
29
34
  }
35
+
36
+ return undefined;
30
37
  };
31
38
 
32
39
  (async () => {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@leverege/build-tools",
3
- "version": "2.8.10",
3
+ "version": "2.8.12",
4
4
  "description": "A collection of build / support tools for Leverege developers",
5
5
  "main": "index.js",
6
6
  "scripts": {
@@ -9,8 +9,6 @@
9
9
  "compile": "npm run clean && npm run compile_server && npm run compile_web",
10
10
  "compile_server": "NODE_ENV=server babel -d lib/server src/ && npm run repo_init_publisher",
11
11
  "compile_web": "NODE_ENV=web babel -d lib/web src/",
12
- "licenseCheck": "license-checker --summary --failOn GPL",
13
- "npm-check-updates": "npm-check-updates -i",
14
12
  "postinstall": "src/npm-scripts/postinstall.js",
15
13
  "prepublintOnly": "npm run lint && npm run build",
16
14
  "prepublishOnly": "npm run compile",
@@ -64,7 +62,6 @@
64
62
  "inquirer": "^8.2.0",
65
63
  "js-yaml": "^4.1.0",
66
64
  "ncp": "^2.0.0",
67
- "npm-check-updates": "^12.0.5",
68
65
  "npm-registry-fetch": "^11.0.0",
69
66
  "open": "^8.4.0",
70
67
  "ora": "^5.4.1",
@@ -74,11 +71,11 @@
74
71
  "simple-git": "^2.48.0"
75
72
  },
76
73
  "devDependencies": {
77
- "@babel/cli": "^7.16.0",
78
- "@babel/core": "^7.16.5",
79
- "@babel/node": "^7.16.5",
74
+ "@babel/cli": "^7.16.8",
75
+ "@babel/core": "^7.16.7",
76
+ "@babel/node": "^7.16.8",
80
77
  "@leverege/babel-preset-leverege-node": "^2.0.0",
81
78
  "@leverege/eslint-config-leverege": "^3.0.1",
82
- "npm": "^8.3.0"
79
+ "npm": "^8.3.1"
83
80
  }
84
81
  }
package/src/circleate CHANGED
@@ -273,7 +273,7 @@ jobs:
273
273
 
274
274
  - run:
275
275
  name: Setup @leverege Token
276
- command: echo ${NPMRC} > ~/.npmrc
276
+ command: echo \${NPMRC} > ~/.npmrc
277
277
 
278
278
  - run: npm install
279
279
 
@@ -348,7 +348,7 @@ jobs:
348
348
  docker:
349
349
  - image: circleci/node:gallium
350
350
  # IF YOU NEED ANY OF THESE, UNCOMMENT TO USE
351
- - image: redis
351
+ # - image: redis
352
352
  # - image: circleci/mysql:5.7
353
353
  # environment:
354
354
  # MYSQL_USER: root
@@ -0,0 +1,4 @@
1
+ name: <service-name>
2
+ version: 0.1.0
3
+ apiVersion: v2
4
+ icon: https://raw.githubusercontent.com/kubernetes/kubernetes/master/logo/logo.svg
@@ -0,0 +1,52 @@
1
+ -------------------------------------------------------------------------------
2
+
3
+ Service: {{ .Chart.Name }}
4
+
5
+ This service relies on the presence of a Service Account (SA) to define its
6
+ permissions on the clusters that it is deployed to. Verify or create an SA
7
+ with the following name and IAM roles:
8
+
9
+ SA name => {{ .Chart.Name }}
10
+ IAM roles => pubsub.editor
11
+ secretmanager.secretAccessor
12
+
13
+ {{- if .Values.workloadIdentity.disabled }}
14
+
15
+ Workload Identity is disabled for this service, most likely because this is
16
+ running on a legacy cluster which does not support it. In order for this
17
+ service to function properly a set of JSON keys will need to be generated and
18
+ then stored as a secret using this syntax:
19
+
20
+ cat <keyfileName> | kubectl create secret generic {{ .Chart.Name }}-sa-key \
21
+ --from-file=key.json=/dev/stdin
22
+
23
+ {{- else }}
24
+
25
+ Workload identity is enabled for this service, therefore the SA must have the
26
+ proper IAM policy bound to it. This can be verified by running:
27
+
28
+ $ gcloud iam service-accounts get-iam-policy \
29
+ --project {{ .Values.service.project_id }} \
30
+ {{ .Chart.Name }}@{{ .Values.service.project_id }}.iam.gserviceaccount.com
31
+
32
+ which should return something resembling:
33
+
34
+ bindings:
35
+ - members:
36
+ - serviceAccount:{{ .Values.service.project_id }}.svc.id.goog[default/<service name>]
37
+ role: roles/iam.workloadIdentityUser
38
+ etag: <uuencoded tag>
39
+ version: 1
40
+
41
+ If the role of roles/iam.workloadIdentityUser does not appear on the SA then
42
+ run the following command to add it:
43
+
44
+ $ gcloud iam service-accounts add-iam-policy-binding \
45
+ --project {{ .Values.service.project_id }} \
46
+ --role roles/iam.workloadIdentityUser \
47
+ --member "serviceAccount:{{ .Values.service.project_id }}.svc.id.goog[default/{{ .Chart.Name }}]" \
48
+ {{ .Chart.Name }}@{{ .Values.service.project_id }}.iam.gserviceaccount.com
49
+
50
+ {{- end }}
51
+
52
+ -------------------------------------------------------------------------------
@@ -0,0 +1,6 @@
1
+ apiVersion: v1
2
+ kind: ConfigMap
3
+ metadata:
4
+ name: {{ .Chart.Name }}-configs
5
+ data:
6
+ {{- toYaml .Values.config | nindent 2 }}
@@ -0,0 +1,97 @@
1
+ apiVersion: apps/v1
2
+ kind: Deployment
3
+ metadata:
4
+ name: {{ .Chart.Name }}
5
+ labels:
6
+ app: {{ .Chart.Name }}
7
+ chart/version: {{ .Values.image.tag }}
8
+ redis-client: {{ .Values.redis.enabled | quote }}
9
+ spec:
10
+ selector:
11
+ matchLabels:
12
+ app: {{ .Chart.Name }}
13
+ template:
14
+ metadata:
15
+ labels:
16
+ app: {{ .Chart.Name }}
17
+ chart/version: {{ .Chart.Version }}
18
+ chart/appVersion: {{ .Values.image.tag }}
19
+ redis-client: {{ .Values.redis.enabled | quote }}
20
+ annotations:
21
+ checksum/config: {{ include (print $.Template.BasePath "/configmap.yaml") . | sha256sum }}
22
+ prometheus.io/port: "5111"
23
+ prometheus.io/scrape: "true"
24
+ configmap.reloader.stakater.com/reload: "default-configs"
25
+ spec:
26
+ serviceAccountName: {{ .Chart.Name }}
27
+ volumes:
28
+ - name: tmpfs
29
+ emptyDir: {}
30
+ {{- if .Values.workloadIdentity.disabled }}
31
+ - name: google-cloud-key
32
+ secret:
33
+ secretName: {{ .Chart.Name }}-sa-key
34
+ {{- end }}
35
+ {{- if .Values.service.preemptible }}
36
+ tolerations:
37
+ - key: "preemptible"
38
+ operator: "Equal"
39
+ value: "true"
40
+ effect: "NoSchedule"
41
+ affinity:
42
+ nodeAffinity:
43
+ preferredDuringSchedulingIgnoredDuringExecution:
44
+ - preference:
45
+ matchExpressions:
46
+ - key: cloud.google.com/gke-preemptible
47
+ operator: Exists
48
+ weight: 100
49
+ {{- end }}
50
+ containers:
51
+ - name: {{ .Chart.Name }}
52
+ imagePullPolicy: IfNotPresent
53
+ image: {{ .Values.image.registry }}/{{ .Chart.Name }}:{{ .Values.image.tag }}
54
+ securityContext:
55
+ readOnlyRootFilesystem: {{ .Values.securityContext.readOnlyRootFs }}
56
+ runAsNonRoot: true
57
+ runAsUser: 1000
58
+ allowPrivilegeEscalation: false
59
+ {{ if .Values.probes.enabled }}
60
+ readinessProbe:
61
+ httpGet:
62
+ path: /healthz
63
+ port: api
64
+ initialDelaySeconds: 30
65
+ livenessProbe:
66
+ httpGet:
67
+ path: /livenessProbe
68
+ port: api
69
+ initialDelaySeconds: 30
70
+ periodSeconds: 60
71
+ {{ end }}
72
+ resources:
73
+ limits:
74
+ cpu: "100m"
75
+ memory: "256Mi"
76
+ # requests:
77
+ # cpu: "100m"
78
+ # memory: "128Mi"
79
+ ports:
80
+ - name: api
81
+ containerPort: {{ .Values.service.port }}
82
+ protocol: TCP
83
+ - name: node-metrics
84
+ containerPort: 5111
85
+ volumeMounts:
86
+ - name: tmpfs
87
+ mountPath: "/tmp"
88
+ envFrom:
89
+ - configMapRef:
90
+ name: default-configs
91
+ - configMapRef:
92
+ name: {{ .Chart.Name }}-configs
93
+ env:
94
+ {{- if .Values.workloadIdentity.disabled }}
95
+ - name: GOOGLE_APPLICATION_CREDENTIALS
96
+ value: /var/secrets/google/key.json
97
+ {{- end }}
@@ -0,0 +1,17 @@
1
+ apiVersion: networking.k8s.io/v1
2
+ kind: Ingress
3
+ metadata:
4
+ name: {{ .Chart.Name }}
5
+ labels:
6
+ app: {{ .Chart.Name }}
7
+ annotations:
8
+ # kubernetes.io/ingress.allow-http: "false"
9
+ kubernetes.io/ingress.global-static-ip-name: {{ .Chart.Name }}
10
+ spec:
11
+ tls:
12
+ - secretName: {{ .Values.ingress.secretName }}
13
+ defaultBackend:
14
+ service:
15
+ name: {{ .Chart.Name }}
16
+ port:
17
+ number: {{ .Values.service.port }}
@@ -0,0 +1,9 @@
1
+ apiVersion: policy/v1beta1
2
+ kind: PodDisruptionBudget
3
+ metadata:
4
+ name: {{ .Chart.Name }}
5
+ spec:
6
+ minAvailable: 50%
7
+ selector:
8
+ matchLabels:
9
+ app: app
@@ -0,0 +1,16 @@
1
+ apiVersion: v1
2
+ kind: Service
3
+ metadata:
4
+ name: {{ .Chart.Name }}
5
+ spec:
6
+ type: NodePort
7
+ {{- if .Values.loadbalancer.ip }}
8
+ loadBalancerIP: {{ .Values.loadbalancer.ip }}
9
+ {{- end }}
10
+ selector:
11
+ app: {{ .Chart.Name }}
12
+ ports:
13
+ - name: {{ .Chart.Name }}
14
+ protocol: TCP
15
+ port: {{ .Values.service.port }}
16
+ targetPort: {{ .Values.service.port }}
@@ -0,0 +1,10 @@
1
+ apiVersion: v1
2
+ kind: ServiceAccount
3
+ metadata:
4
+ annotations:
5
+ iam.gke.io/gcp-service-account: {{ .Chart.Name }}@{{ .Values.service.project_id }}.iam.gserviceaccount.com
6
+ name: {{ .Chart.Name }}
7
+ labels:
8
+ app: {{ .Chart.Name }}
9
+ chart/version: {{ .Chart.Version }}
10
+ chart/appVersion: {{ .Values.image.tag }}
@@ -0,0 +1,57 @@
1
+ image:
2
+ tag: v0.1.0
3
+ registry: gcr.io/leverege-docker-images
4
+
5
+ # define all config values as quoted strings
6
+ config:
7
+ # server configs
8
+ LOG_CONFIG: '{"type":"pino","level":"warn"}'
9
+
10
+ # imagine configs
11
+ logExpressRequests: "false"
12
+ ALIAS_KEY: "needs-to-be-set"
13
+ BLUEPRINT_ID: "needs-to-be-set"
14
+ IMAGINE_URL: "http://api-server:8181"
15
+ INGESTION_TOPIC: "needs-to-be-set"
16
+ NETWORK_ID: "needs-to-be-set"
17
+ SYSTEM_ID: "needs-to-be-set"
18
+
19
+ # overwhelm will auto inject project_id, host and ingress into service
20
+ service:
21
+ port: 8383
22
+ preemptible: true
23
+
24
+ # can be used to set load balancer to registered static IP
25
+ loadbalancer:
26
+ ip: nil
27
+
28
+ # liveness and readiness probe to prove k8s health
29
+ probes:
30
+ enabled: true
31
+
32
+ # this tells calico that redis access is needed
33
+ redis:
34
+ enabled: false
35
+
36
+ # setting to false will allow pod disk to mount read/write
37
+ # setting this to false should only be done for debugging
38
+ securityContext:
39
+ readOnlyRootFs: true
40
+
41
+ horizontalScaler:
42
+ minReplicas: 2
43
+ maxReplicas: 3
44
+ maxCPU: 75
45
+
46
+ affinity: {}
47
+
48
+ # typically handled by traefik, but not always
49
+ ingress: {}
50
+
51
+ nodeSelector: {}
52
+
53
+ podAnnotations: {}
54
+
55
+ tolerations: []
56
+
57
+ workloadIdentity: {}
@@ -0,0 +1,12 @@
1
+ apiVersion: autoscaling/v1
2
+ kind: HorizontalPodAutoscaler
3
+ metadata:
4
+ name: {{ .Chart.Name }}
5
+ spec:
6
+ scaleTargetRef:
7
+ apiVersion: apps/v1
8
+ kind: Deployment
9
+ name: {{ .Chart.Name }}
10
+ minReplicas: {{ .Values.horizontalScaler.minReplicas }}
11
+ maxReplicas: {{ .Values.horizontalScaler.maxReplicas }}
12
+ targetCPUUtilizationPercentage: {{ .Values.horizontalScaler.maxCPU }}
package/src/pkgck CHANGED
@@ -9,6 +9,10 @@ good() {
9
9
  printf "\e[32m✔${C_off}"
10
10
  }
11
11
 
12
+ meh() {
13
+ printf "\e[36m✩${C_off}"
14
+ }
15
+
12
16
  bad() {
13
17
  printf "\e[31m✘${C_off}"
14
18
  }
@@ -31,6 +35,7 @@ check_babel () {
31
35
  local C_stat=$(bad)
32
36
  [ -f .babelrc ] && grep --silent @leverege/babel-preset-leverege-node .babelrc
33
37
  [ $? -eq 0 ] && C_stat=$(good)
38
+ [ ! -f .babelrc ] && C_stat=$(meh)
34
39
  printf $C_stat
35
40
  }
36
41
 
@@ -48,7 +53,7 @@ check_eslint () {
48
53
  }
49
54
 
50
55
  check_license () {
51
- local C_stat=$(bad)
56
+ local C_stat=$(meh)
52
57
  local lic="`node -p \"require('./package.json').scripts.licenseCheck !== undefined\"`"
53
58
  [ $lic == true ] && C_stat=$(good)
54
59
  printf $C_stat
@@ -93,6 +98,13 @@ check_scope() {
93
98
  printf "${result}${C_off}"
94
99
  }
95
100
 
101
+ check_ESM() {
102
+ local C_stat=$(bad)
103
+ jstype="`getjson --file package.json --key type`"
104
+ [[ "$jstype" == "module" ]] && C_stat=$(good)
105
+ printf $C_stat
106
+ }
107
+
96
108
  repos=0
97
109
  check_repo() {
98
110
  local dir=$1
@@ -118,10 +130,11 @@ check_repo() {
118
130
  local babel7=$(check_babel)
119
131
  local circle=$(check_circle)
120
132
  local eslint=$(check_eslint)
133
+ local esmlib=$(check_ESM)
121
134
  local license=$(check_license)
122
135
  local scoped=$(check_scope)
123
- [ $(( $repos % 15)) -eq 0 ] && printf "\n%35s pkg git cln scop cir lic esl bl7\n"
124
- printf "%32s: %-8s %-16s %s %8s %s %s %s %s %s\n" $dir $pkgver $(check_git_version $gitver $pkgver) $localmods $scoped $circle $license $eslint $babel7 "$needspush"
136
+ [ $(( $repos % 15)) -eq 0 ] && printf "\n%35s pkg git cln scop cir lic ESM bl7\n"
137
+ printf "%32s: %-8s %-16s %s %8s %s %s %s %s %s\n" $dir $pkgver $(check_git_version $gitver $pkgver) $localmods $scoped $circle $license $esmlib $babel7 "$needspush"
125
138
  let "repos++"
126
139
  cd - &> /dev/null
127
140
  }
@@ -0,0 +1,10 @@
1
+ {
2
+ "description": "Leverege BQ data accessor",
3
+ "includedPermissions": [
4
+ "bigquery.jobs.create",
5
+ "bigquery.tables.create",
6
+ "bigquery.tables.getData"
7
+ ],
8
+ "stage": "BETA",
9
+ "title": "Leverege Big Query Reader"
10
+ }
@@ -0,0 +1,10 @@
1
+ {
2
+ "description": "Leverege Big Query Writer",
3
+ "includedPermissions": [
4
+ "bigquery.datasets.get",
5
+ "bigquery.tables.get",
6
+ "bigquery.tables.updateData"
7
+ ],
8
+ "stage": "BETA",
9
+ "title": "Leverege Big Query Writer"
10
+ }
@@ -0,0 +1,12 @@
1
+ {
2
+ "description": "Leverege limited Cloud Functions Admin",
3
+ "includedPermissions": [
4
+ "cloudfunctions.functions.create",
5
+ "cloudfunctions.functions.delete",
6
+ "cloudfunctions.functions.get",
7
+ "cloudfunctions.functions.sourceCodeSet",
8
+ "cloudfunctions.functions.update"
9
+ ],
10
+ "stage": "BETA",
11
+ "title": "Leverege Cloud Functions Admin"
12
+ }
@@ -0,0 +1,8 @@
1
+ {
2
+ "description": "Leverege Firebase Updates Access",
3
+ "includedPermissions": [
4
+ "firebasedatabase.instances.update"
5
+ ],
6
+ "stage": "BETA",
7
+ "title": "Leverege Firebase Updates"
8
+ }
@@ -0,0 +1,8 @@
1
+ {
2
+ "description": "Leverege view access to logs",
3
+ "includedPermissions": [
4
+ "logging.logEntries.list"
5
+ ],
6
+ "stage": "BETA",
7
+ "title": "Leverege Logs Viewer"
8
+ }
@@ -1,6 +1,5 @@
1
1
  {
2
- "title": "Leverege Pub/Sub Access (rw)",
3
- "description": "Read/Write access to the Pub/Sub messaging service",
2
+ "description": "Leverege Pub/Sub",
4
3
  "includedPermissions": [
5
4
  "pubsub.subscriptions.consume",
6
5
  "pubsub.subscriptions.create",
@@ -9,5 +8,6 @@
9
8
  "pubsub.topics.list",
10
9
  "pubsub.topics.publish"
11
10
  ],
12
- "stage": "BETA"
11
+ "stage": "BETA",
12
+ "title": "Leverege Pub/Sub"
13
13
  }
@@ -0,0 +1,8 @@
1
+ {
2
+ "description": "Custom Secrets Manager Access",
3
+ "includedPermissions": [
4
+ "secretmanager.versions.access"
5
+ ],
6
+ "stage": "BETA",
7
+ "title": "Leverege Secret Viewer"
8
+ }
@@ -0,0 +1,10 @@
1
+ {
2
+ "description": "Leverege read / write access to Storage Objects",
3
+ "includedPermissions": [
4
+ "storage.objects.create",
5
+ "storage.objects.delete",
6
+ "storage.objects.get"
7
+ ],
8
+ "stage": "BETA",
9
+ "title": "Leverege Storage Object Admin"
10
+ }
@@ -0,0 +1,8 @@
1
+ {
2
+ "description": "Leverege service account act as other user",
3
+ "includedPermissions": [
4
+ "iam.serviceAccounts.actAs"
5
+ ],
6
+ "stage": "BETA",
7
+ "title": "Leverege Svc Acct Impersonation"
8
+ }
@@ -0,0 +1,8 @@
1
+ {
2
+ "description": "Leverege IAM blob signing access",
3
+ "includedPermissions": [
4
+ "iam.serviceAccounts.signBlob"
5
+ ],
6
+ "stage": "BETA",
7
+ "title": "Leverege Svc Acct Token Creator"
8
+ }
@@ -0,0 +1,10 @@
1
+ {
2
+ "description": "Leverege BQ data accessor",
3
+ "includedPermissions": [
4
+ "bigquery.jobs.create",
5
+ "bigquery.tables.create",
6
+ "bigquery.tables.getData"
7
+ ],
8
+ "stage": "BETA",
9
+ "title": "Leverege Big Query Reader"
10
+ }
@@ -0,0 +1,10 @@
1
+ {
2
+ "description": "Leverege Big Query Writer",
3
+ "includedPermissions": [
4
+ "bigquery.datasets.get",
5
+ "bigquery.tables.get",
6
+ "bigquery.tables.updateData"
7
+ ],
8
+ "stage": "BETA",
9
+ "title": "Leverege Big Query Writer"
10
+ }
@@ -0,0 +1,12 @@
1
+ {
2
+ "description": "Leverege limited Cloud Functions Admin",
3
+ "includedPermissions": [
4
+ "cloudfunctions.functions.create",
5
+ "cloudfunctions.functions.delete",
6
+ "cloudfunctions.functions.get",
7
+ "cloudfunctions.functions.sourceCodeSet",
8
+ "cloudfunctions.functions.update"
9
+ ],
10
+ "stage": "BETA",
11
+ "title": "Leverege Cloud Functions Admin"
12
+ }
@@ -0,0 +1,8 @@
1
+ {
2
+ "description": "Leverege Firebase Updates Access",
3
+ "includedPermissions": [
4
+ "firebasedatabase.instances.update"
5
+ ],
6
+ "stage": "BETA",
7
+ "title": "Leverege Firebase Updates"
8
+ }
@@ -0,0 +1,8 @@
1
+ {
2
+ "description": "Leverege view access to logs",
3
+ "includedPermissions": [
4
+ "logging.logEntries.list"
5
+ ],
6
+ "stage": "BETA",
7
+ "title": "Leverege Logs Viewer"
8
+ }