@docupace/pipeline 1.0.8-6.xray → 1.0.8
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/eslint.config.js +2 -25
- package/next/execute.sh +2 -8
- package/package.json +8 -24
- package/src/changeset/cli.js +195 -151
- package/src/changeset/validate.js +1 -45
- package/src/jenkins/setParams.groovy +2 -1
- package/src/next/cli.js +15 -111
- package/src/next/config.js +7 -72
- package/src/next/copy.js +1 -32
- package/src/next/deploy.js +69 -520
- package/src/next/jenkins.js +2 -3
- package/src/next/pipline.js +1 -0
- package/src/next/publish.js +30 -53
- package/README.md +0 -136
- package/bin/azuread_update_callbacks_for_app.sh +0 -58
- package/bin/xray.sh +0 -273
- package/bitbucket-pipelines.yml +0 -142
- package/jest.config.js +0 -15
- package/src/auth0/alias.js +0 -79
- package/src/auth0/alias.test.js +0 -172
- package/src/auth0/cli.js +0 -82
- package/src/auth0/configure.js +0 -902
- package/src/auth0/configure.test.js +0 -167
- package/src/auth0/export.js +0 -48
- package/src/auth0/export.test.js +0 -103
- package/src/auth0/metadata.js +0 -141
- package/src/auth0/metadata.test.js +0 -186
- package/src/auth0/vault.js +0 -60
- package/src/auth0/vault.test.js +0 -134
- package/src/changeset/changelog-wiki.js +0 -328
- package/src/changeset/changeset-config.js +0 -34
- package/src/changeset/create.js +0 -215
- package/src/changeset/package-util.js +0 -87
- package/src/changeset/util.js +0 -43
- package/src/changeset/version.js +0 -102
- package/src/jfrog/xray-scan.yaml +0 -29
- package/src/lib/merge-driver.js +0 -204
- package/src/merge/cli-merge-all.js +0 -521
- package/src/merge/cli-merge.js +0 -572
- package/src/merge/cli-resolve.js +0 -399
- package/src/merge/cli.js +0 -38
- package/src/merge/common.js +0 -7
- package/src/merge/merge-changelog.js +0 -87
- package/src/merge/merge-package.js +0 -106
- package/src/merge/merge-types.js +0 -82
- package/src/merge/pr.js +0 -231
- package/src/micro/cli.js +0 -51
- package/src/micro/ms-deploy.js +0 -451
- package/src/micro/ms-publish.js +0 -186
- package/src/next/alias.js +0 -53
- package/src/next/apache.js +0 -81
- package/src/next/connect.js +0 -226
- package/src/next/git-to-semver.js +0 -79
- package/src/next/haproxy.js +0 -76
- package/src/next/jira.js +0 -84
- package/src/next/logger.js +0 -17
- package/src/next/test.js +0 -5
- package/src/next/util.js +0 -95
- package/src/next/vault.js +0 -45
- package/terraform/apply.sh +0 -41
- package/terraform/import.sh +0 -111
- package/terraform/init.sh +0 -78
- package/terraform/plan.sh +0 -95
- package/terraform/validate.sh +0 -17
package/bitbucket-pipelines.yml
DELETED
|
@@ -1,142 +0,0 @@
|
|
|
1
|
-
# bitbucket-pipelines.yml
|
|
2
|
-
export: true
|
|
3
|
-
|
|
4
|
-
clone:
|
|
5
|
-
depth: 2
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
definitions:
|
|
9
|
-
caches:
|
|
10
|
-
pnpm: ~/.pnpm-store
|
|
11
|
-
|
|
12
|
-
scripts:
|
|
13
|
-
- &detect-and-prepare |
|
|
14
|
-
echo "Detecting project type..."
|
|
15
|
-
PROJECT_TYPE=""
|
|
16
|
-
|
|
17
|
-
if [ -f "package.json" ]; then
|
|
18
|
-
if [ -f "pnpm-lock.yaml" ]; then
|
|
19
|
-
PROJECT_TYPE="--pnpm"
|
|
20
|
-
elif [ -f "package-lock.json" ]; then
|
|
21
|
-
PROJECT_TYPE="--npm"
|
|
22
|
-
elif [ -f "yarn.lock" ]; then
|
|
23
|
-
PROJECT_TYPE="--yarn"
|
|
24
|
-
else
|
|
25
|
-
PROJECT_TYPE="--npm"
|
|
26
|
-
fi
|
|
27
|
-
elif [ -f "build.gradle" ] || [ -f "build.gradle.kts" ] || [ -f "settings.gradle" ]; then
|
|
28
|
-
PROJECT_TYPE="--gradle"
|
|
29
|
-
echo "Detected: Gradle project"
|
|
30
|
-
if [ -f "./gradlew" ]; then
|
|
31
|
-
chmod +x ./gradlew
|
|
32
|
-
echo "Fixed gradlew permissions"
|
|
33
|
-
fi
|
|
34
|
-
else
|
|
35
|
-
echo "Error: Could not detect project type"
|
|
36
|
-
exit 1
|
|
37
|
-
fi
|
|
38
|
-
export PROJECT_TYPE
|
|
39
|
-
|
|
40
|
-
pipelines:
|
|
41
|
-
xray-scan:
|
|
42
|
-
- step:
|
|
43
|
-
name: JFrog Xray Security Scan
|
|
44
|
-
runs-on:
|
|
45
|
-
- self.hosted
|
|
46
|
-
- linux.shell
|
|
47
|
-
- onprem
|
|
48
|
-
caches:
|
|
49
|
-
- node
|
|
50
|
-
- pnpm
|
|
51
|
-
- gradle
|
|
52
|
-
script:
|
|
53
|
-
# Setup JFrog CLI
|
|
54
|
-
- curl -fL https://install-cli.jfrog.io | sh
|
|
55
|
-
- jf --version
|
|
56
|
-
- jf config remove scan1 || true
|
|
57
|
-
- jf config add scan1 --url=$JFROG_XRAY_URL --user=$JFROG_XRAY_USER --access-token=$JFROG_XRAY_PASSWORD
|
|
58
|
-
- jf c show
|
|
59
|
-
|
|
60
|
-
# Detect and prepare project
|
|
61
|
-
- *detect-and-prepare
|
|
62
|
-
|
|
63
|
-
# Create Slack notification script
|
|
64
|
-
- echo 'IyEvdXNyL2Jpbi9lbnYgYmFzaApHSVRfUEFUSD0kKGdpdCByZXYtcGFyc2UgLS1zaG93LXRvcGxldmVsKQpCQVNFTkFNRT0kKGJhc2VuYW1lICRHSVRfUEFUSCkKQkFTRU5BTUU9IiR7QklUQlVDS0VUX1JFUE9fU0xVR30iClNMQUNLX0FQST0iaHR0cHM6Ly9zbGFjay5jb20vYXBpL2NoYXQucG9zdE1lc3NhZ2UiCklOUFVUX1RBQkxFPSJ4cmF5LnR4dCIKSU5QVVRfSlNPTj0ieHJheS5qc29uIgoKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyAx77iP4oOjIFBhcnNlIHRhYmxlIHRvIEpTT04gKGhhbmRsZSBtdWx0aS1saW5lIHdyYXBwaW5nKQojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKYXdrICcKQkVHSU4gewogIHByaW50ICJbIgogIGZpcnN0ID0gMQogIGluX3Z1bG4gPSAwCn0KCiMgU2tpcCBzZXBhcmF0b3IgYW5kIGhlYWRlciBsaW5lcwovXlvilIzilJzilJRdLyB7IG5leHQgfQovQ1ZFLipTRVZFUklUWS4qRElSRUNULipERVBFTkRFTkNZLyB7IG5leHQgfQoKIyBQcm9jZXNzIGRhdGEgcm93cwovXuKUgi8gewogIGdzdWIoL17ilIIgLywgIiIpCiAgZ3N1YigvICrilIIgKiQvLCAiIikKICAKICBuID0gc3BsaXQoJDAsIGZpZWxkcywgLyAq4pSCICovKQogIAogICMgTmV3IHZ1bG5lcmFiaWxpdHkgKGhhcyBDVkUgaW4gZmlyc3QgY29sdW1uKQogIGlmIChuID49IDggJiYgZmllbGRzWzFdIH4gL15DVkUtLykgewogICAgIyBPdXRwdXQgcHJldmlvdXMgZW50cnkgaWYgZXhpc3RzCiAgICBpZiAoaW5fdnVsbikgewogICAgICAjIFBhcnNlIGZpeGVkIHZlcnNpb25zCiAgICAgIGZpeGVkX3ZlcnNpb25zID0gIltdIgogICAgICBpZiAoc2F2ZWRfZml4ZWRfcmF3ICE9ICIiKSB7CiAgICAgICAgZ3N1YigvXF0gKlxbLywgIl1bIiwgc2F2ZWRfZml4ZWRfcmF3KQogICAgICAgIGdzdWIoL1xbLywgIlwiIiwgc2F2ZWRfZml4ZWRfcmF3KQogICAgICAgIGdzdWIoL1xdLywgIlwiIiwgc2F2ZWRfZml4ZWRfcmF3KQogICAgICAgIGdzdWIoLyIgICoiLywgIlwiLCBcIiIsIHNhdmVkX2ZpeGVkX3JhdykKICAgICAgICBnc3ViKC8iIi8sICJcIiwgXCIiLCBzYXZlZF9maXhlZF9yYXcpCiAgICAgICAgZml4ZWRfdmVyc2lvbnMgPSAiWyIgc2F2ZWRfZml4ZWRfcmF3ICJdIgogICAgICB9CiAgICAgIAogICAgICBjb21wb25lbnRfa2V5ID0gc2F2ZWRfdHlwZSAiOi8vIiBzYXZlZF9hZmZlY3RlZAogICAgICBkaXJlY3RfY29tcG9uZW50ID0gc2F2ZWRfdHlwZSAiOi8vIiBzYXZlZF9kaXJlY3QKICAgICAgCiAgICAgIHByaW50ICIgICAgeyIKICAgICAgcHJpbnQgIiAgICAgIFwidnVsbmVyYWJpbGl0aWVzXCI6IFt7IgogICAgICBwcmludCAiICAgICAgICBcInNldmVyaXR5XCI6IFwiIiBzYXZlZF9zZXZlcml0eSAiXCIsIgogICAgICBwcmludCAiICAgICAgICBcImN2ZXNcIjogW3tcImN2ZVwiOiBcIiIgc2F2ZWRfY3ZlICJcIn1dLCIKICAgICAgcHJpbnQgIiAgICAgICAgXCJjb21wb25lbnRzXCI6IHsiCiAgICAgIHByaW50ICIgICAgICAgICAgXCIiIGNvbXBvbmVudF9rZXkgIlwiOiB7IgogICAgICBwcmludCAiICAgICAgICAgICAgXCJpbXBhY3RfcGF0aHNcIjogW1tudWxsLCB7XCJjb21wb25lbnRfaWRcIjogXCIiIGRpcmVjdF9jb21wb25lbnQgIlwifV1dLCIKICAgICAgcHJpbnQgIiAgICAgICAgICAgIFwiYWZmZWN0ZWRfdmVyc2lvblwiOiBcIiIgc2F2ZWRfYWZmZWN0ZWRfdmVyICJcIiwiCiAgICAgIHByaW50ICIgICAgICAgICAgICBcImZpeGVkX3ZlcnNpb25zXCI6ICIgZml4ZWRfdmVyc2lvbnMKICAgICAgcHJpbnQgIiAgICAgICAgICB9IgogICAgICBwcmludCAiICAgICAgICB9IgogICAgICBwcmludCAiICAgICAgfV0iCiAgICAgIHByaW50ICIgICAgfSwiCiAgICB9CiAgICAKICAgIGZpcnN0ID0gMAogICAgaW5fdnVsbiA9IDEKICAgIAogICAgIyBTdG9yZSBuZXcgdnVsbmVyYWJpbGl0eQogICAgc2F2ZWRfY3ZlID0gZmllbGRzWzFdCiAgICBzYXZlZF9zZXZlcml0eSA9IGZpZWxkc1syXQogICAgc2F2ZWRfZGlyZWN0ID0gZmllbGRzWzNdCiAgICBzYXZlZF9kaXJlY3RfdmVyID0gZmllbGRzWzRdCiAgICBzYXZlZF9hZmZlY3RlZCA9IGZpZWxkc1s1XQogICAgc2F2ZWRfYWZmZWN0ZWRfdmVyID0gZmllbGRzWzZdCiAgICBzYXZlZF9maXhlZF9yYXcgPSBmaWVsZHNbN10KICAgIHNhdmVkX3R5cGUgPSB0b2xvd2VyKGZpZWxkc1s4XSkKICB9CiAgIyBDb250aW51YXRpb24gbGluZSAtIGFwcGVuZCB0byBwcmV2aW91cyBmaWVsZAogIGVsc2UgaWYgKGluX3Z1bG4gJiYgZmllbGRzWzFdID09ICIiICYmIGZpZWxkc1syXSA9PSAiIikgewogICAgaWYgKGZpZWxkc1szXSAhPSAiIikgewogICAgICBzYXZlZF9kaXJlY3QgPSBzYXZlZF9kaXJlY3QgZmllbGRzWzNdCiAgICB9CiAgICBpZiAoZmllbGRzWzVdICE9ICIiKSB7CiAgICAgIHNhdmVkX2FmZmVjdGVkID0gc2F2ZWRfYWZmZWN0ZWQgZmllbGRzWzVdCiAgICB9CiAgICBpZiAoZmllbGRzWzddICE9ICIiKSB7CiAgICAgIHNhdmVkX2ZpeGVkX3JhdyA9IHNhdmVkX2ZpeGVkX3JhdyAiICIgZmllbGRzWzddCiAgICB9CiAgfQp9CgpFTkQgewogIGlmIChpbl92dWxuKSB7CiAgICAjIE91dHB1dCB0aGUgbGFzdCBlbnRyeQogICAgZml4ZWRfdmVyc2lvbnMgPSAiW10iCiAgICBpZiAoc2F2ZWRfZml4ZWRfcmF3ICE9ICIiKSB7CiAgICAgIGdzdWIoL1xdICpcWy8sICJdWyIsIHNhdmVkX2ZpeGVkX3JhdykKICAgICAgZ3N1YigvXFsvLCAiXCIiLCBzYXZlZF9maXhlZF9yYXcpCiAgICAgIGdzdWIoL1xdLywgIlwiIiwgc2F2ZWRfZml4ZWRfcmF3KQogICAgICBnc3ViKC8iICAqIi8sICJcIiwgXCIiLCBzYXZlZF9maXhlZF9yYXcpCiAgICAgIGdzdWIoLyIiLywgIlwiLCBcIiIsIHNhdmVkX2ZpeGVkX3JhdykKICAgICAgZml4ZWRfdmVyc2lvbnMgPSAiWyIgc2F2ZWRfZml4ZWRfcmF3ICJdIgogICAgfQogICAgCiAgICBjb21wb25lbnRfa2V5ID0gc2F2ZWRfdHlwZSAiOi8vIiBzYXZlZF9hZmZlY3RlZAogICAgZGlyZWN0X2NvbXBvbmVudCA9IHNhdmVkX3R5cGUgIjovLyIgc2F2ZWRfZGlyZWN0CiAgICAKICAgIHByaW50ICIgICAgeyIKICAgIHByaW50ICIgICAgICBcInZ1bG5lcmFiaWxpdGllc1wiOiBbeyIKICAgIHByaW50ICIgICAgICAgIFwic2V2ZXJpdHlcIjogXCIiIHNhdmVkX3NldmVyaXR5ICJcIiwiCiAgICBwcmludCAiICAgICAgICBcImN2ZXNcIjogW3tcImN2ZVwiOiBcIiIgc2F2ZWRfY3ZlICJcIn1dLCIKICAgIHByaW50ICIgICAgICAgIFwiY29tcG9uZW50c1wiOiB7IgogICAgcHJpbnQgIiAgICAgICAgICBcIiIgY29tcG9uZW50X2tleSAiXCI6IHsiCiAgICBwcmludCAiICAgICAgICAgICAgXCJpbXBhY3RfcGF0aHNcIjogW1tudWxsLCB7XCJjb21wb25lbnRfaWRcIjogXCIiIGRpcmVjdF9jb21wb25lbnQgIlwifV1dLCIKICAgIHByaW50ICIgICAgICAgICAgICBcImFmZmVjdGVkX3ZlcnNpb25cIjogXCIiIHNhdmVkX2FmZmVjdGVkX3ZlciAiXCIsIgogICAgcHJpbnQgIiAgICAgICAgICAgIFwiZml4ZWRfdmVyc2lvbnNcIjogIiBmaXhlZF92ZXJzaW9ucwogICAgcHJpbnQgIiAgICAgICAgICB9IgogICAgcHJpbnQgIiAgICAgICAgfSIKICAgIHByaW50ICIgICAgICB9XSIKICAgIHByaW50ICIgICAgfSIKICB9CiAgcHJpbnQgIl0iCn0KJyAiJElOUFVUX1RBQkxFIiA+ICIkSU5QVVRfSlNPTiIKCiMgVmFsaWRhdGUgSlNPTgppZiAhIGpxIGVtcHR5ICIkSU5QVVRfSlNPTiIgMj4vZGV2L251bGw7IHRoZW4KICBlY2hvICLinYwgRmFpbGVkIHRvIGNyZWF0ZSB2YWxpZCBKU09OIgogIGNhdCAiJElOUFVUX0pTT04iCiAgZXhpdCAxCmZpCgplY2hvICLinIUgSlNPTiBjcmVhdGVkOiAkSU5QVVRfSlNPTiIKCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgMu+4j+KDoyBTZXZlcml0eSBjb3VudHMKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KcmVhZCBDUklUSUNBTCBISUdIIE1FRElVTSBMT1cgPDw8ICQoCmpxIC1yICcKLltdCnwgc2VsZWN0KC52dWxuZXJhYmlsaXRpZXMgIT0gbnVsbCkKfCAudnVsbmVyYWJpbGl0aWVzW10KfCAuc2V2ZXJpdHkKJyAiJElOUFVUX0pTT04iIHwgYXdrICcKeyBjWyQxXSsrIH0KRU5EIHsKICBwcmludCBjWyJDcml0aWNhbCJdKzAsIGNbIkhpZ2giXSswLCBjWyJNZWRpdW0iXSswLCBjWyJMb3ciXSswCn0nCikKCmVjaG8gIvCfk4ogQ291bnRzOiBDcml0aWNhbD0kQ1JJVElDQUwsIEhpZ2g9JEhJR0gsIE1lZGl1bT0kTUVESVVNLCBMb3c9JExPVyIKCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgM++4j+KDoyBQYXJlbnQgU2xhY2sgbWVzc2FnZQojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpyZWFkIC1yIC1kICcnIFBBUkVOVF9QQVlMT0FEIDw8SlNPTgp7CiAgImNoYW5uZWwiOiAiJFhSQVlfU0xBQ0tfQ0hBTk5FTCIsCiAgImJsb2NrcyI6IFsKICAgIHsKICAgICAgInR5cGUiOiAiaGVhZGVyIiwKICAgICAgInRleHQiOiB7ICJ0eXBlIjogInBsYWluX3RleHQiLCAidGV4dCI6ICLwn5qoIERlcGVuZGVuY3kgVnVsbmVyYWJpbGl0eSBSZXBvcnQiIH0KICAgIH0sCiAgICB7CiAgICAgICJ0eXBlIjogInNlY3Rpb24iLAogICAgICAidGV4dCI6IHsgInR5cGUiOiAibXJrZHduIiwgInRleHQiOiAiKlByb2plY3Q6KiAkQkFTRU5BTUUiIH0KICAgIH0sCiAgICB7CiAgICAgICJ0eXBlIjogInNlY3Rpb24iLAogICAgICAidGV4dCI6IHsKICAgICAgICAidHlwZSI6ICJtcmtkd24iLAogICAgICAgICJ0ZXh0IjogIvCflLQgKkNyaXRpY2FsOiogJENSSVRJQ0FMICAgIPCflKUgKkhpZ2g6KiAkSElHSCAgICDwn46DICpNZWRpdW06KiAkTUVESVVNICAiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJ0eXBlIjogImNvbnRleHQiLAogICAgICAiZWxlbWVudHMiOiBbCiAgICAgICAgeyAidHlwZSI6ICJtcmtkd24iLCAidGV4dCI6ICJEZXRhaWxlZCBmaW5kaW5ncyBhcmUgcG9zdGVkIGluIHRoZSB0aHJlYWQgYmVsb3cg8J+RhyIgfQogICAgICBdCiAgICB9LAogICAgeyAidHlwZSI6ICJkaXZpZGVyIiB9CiAgXQp9CkpTT04KClBBUkVOVF9SRVNQT05TRT0kKGN1cmwgLXMgLVggUE9TVCAiJFNMQUNLX0FQSSIgXAogIC1IICJBdXRob3JpemF0aW9uOiBCZWFyZXIgJFhSQVlfU0xBQ0tfVE9LRU4iIFwKICAtSCAiQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi9qc29uIiBcCiAgLS1kYXRhICIkUEFSRU5UX1BBWUxPQUQiKQoKVEhSRUFEX1RTPSQoZWNobyAiJFBBUkVOVF9SRVNQT05TRSIgfCBqcSAtciAnLnRzJykKCmlmIFtbIC16ICIkVEhSRUFEX1RTIiB8fCAiJFRIUkVBRF9UUyIgPT0gIm51bGwiIF1dOyB0aGVuCiAgZWNobyAi4p2MIEZhaWxlZCB0byBjcmVhdGUgcGFyZW50IG1lc3NhZ2UiCiAgZWNobyAiJFBBUkVOVF9SRVNQT05TRSIKICBleGl0IDEKZmkKCmVjaG8gIuKchSBQYXJlbnQgbWVzc2FnZSBjcmVhdGVkLiB0aHJlYWRfdHM9JFRIUkVBRF9UUyIKCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgNO+4j+KDoyBUaHJlYWQgZW50cmllcyAoc29ydGVkLCBDVkUgbGlua3MpCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmpxIC1yICcKZGVmIHJhbms6CiAgaWYgLiA9PSAiQ3JpdGljYWwiIHRoZW4gMAogIGVsaWYgLiA9PSAiSGlnaCIgICB0aGVuIDEKICBlbGlmIC4gPT0gIk1lZGl1bSIgdGhlbiAyCiAgZWxpZiAuID09ICJMb3ciICAgIHRoZW4gMwogIGVsc2UgOSBlbmQ7CgpbCiAgLltdCiAgfCBzZWxlY3QoLnZ1bG5lcmFiaWxpdGllcyAhPSBudWxsKQogIHwgLnZ1bG5lcmFiaWxpdGllc1tdCiAgfCAuIGFzICR2CiAgfCAoJHYuY29tcG9uZW50cyB8IHRvX2VudHJpZXNbXSkgYXMgJGNvbXAKICB8ICgkdi5jdmVzIC8vIFt7Y3ZlOiJOL0EifV0pW10KICB8IHsKICAgICAgc2V2OiAkdi5zZXZlcml0eSwKICAgICAgcjogKCR2LnNldmVyaXR5IHwgcmFuayksCiAgICAgIHRleHQ6ICIqPGh0dHBzOi8vbnZkLm5pc3QuZ292L3Z1bG4vZGV0YWlsL1woLmN2ZSl8XCguY3ZlKT4qXG4qSW1wYWN0ZWQ6KiBgXCgKICAgICAgICAkY29tcC5rZXkgfCBzdWIoIl5bYS16XSs6Ly8iOyAiIikKICAgICAgKWAgdlwoCiAgICAgICAgJGNvbXAudmFsdWUuYWZmZWN0ZWRfdmVyc2lvbiAvLyAiTi9BIgogICAgICApXG4qRml4ZWQgaW46KiBcKAogICAgICAgICgkY29tcC52YWx1ZS5maXhlZF92ZXJzaW9ucyAvLyBbXSkKICAgICAgICB8IGpvaW4oIiwgIikKICAgICAgICB8IGlmIC4gPT0gIiIgdGhlbiAiTi9BIiBlbHNlIC4gZW5kCiAgICAgIClcbipEaXJlY3QgZGVwZW5kZW5jaWVzOipcbuKAoiBcKAogICAgICAgICRjb21wLnZhbHVlLmltcGFjdF9wYXRoc1swXVsxXS5jb21wb25lbnRfaWQKICAgICAgICB8IHN1YigiXlthLXpdKzovLyI7ICIiKQogICAgICApIgogICAgfQpdCnwgc29ydF9ieSgucikKfCAuW10KfCBbLnNldiwgLnRleHRdCnwgQHRzdgonICIkSU5QVVRfSlNPTiIgfAp3aGlsZSBJRlM9JCdcdCcgcmVhZCAtciBTRVYgVEVYVDsgZG8KCiAgRU1PSkk9IvCfkbsiCiAgW1sgIiRTRVYiID09ICJDcml0aWNhbCIgXV0gJiYgRU1PSkk9IvCflLQiCiAgW1sgIiRTRVYiID09ICJIaWdoIiAgICAgXV0gJiYgRU1PSkk9IvCflKUiCiAgW1sgIiRTRVYiID09ICJNZWRpdW0iICAgXV0gJiYgRU1PSkk9IvCfjoMiCgogIHJlYWQgLXIgLWQgJycgVEhSRUFEX1BBWUxPQUQgPDxKU09OCnsKICAiY2hhbm5lbCI6ICIkWFJBWV9TTEFDS19DSEFOTkVMIiwKICAidGhyZWFkX3RzIjogIiRUSFJFQURfVFMiLAogICJibG9ja3MiOiBbCiAgICB7CiAgICAgICJ0eXBlIjogInNlY3Rpb24iLAogICAgICAidGV4dCI6IHsKICAgICAgICAidHlwZSI6ICJtcmtkd24iLAogICAgICAgICJ0ZXh0IjogIiRFTU9KSSAqJFNFVipcbiRURVhUIgogICAgICB9CiAgICB9CiAgXQp9CkpTT04KCiAgY3VybCAtcyAtWCBQT1NUICIkU0xBQ0tfQVBJIiBcCiAgICAtSCAiQXV0aG9yaXphdGlvbjogQmVhcmVyICRYUkFZX1NMQUNLX1RPS0VOIiBcCiAgICAtSCAiQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi9qc29uIiBcCiAgICAtLWRhdGEgIiRUSFJFQURfUEFZTE9BRCIgPiAvZGV2L251bGwKICAKICAjIFNtYWxsIGRlbGF5IHRvIGF2b2lkIHJhdGUgbGltaXRpbmcKICBzbGVlcCAwLjEKCmRvbmUKCmVjaG8gIuKchSBBbGwgdnVsbmVyYWJpbGl0aWVzIHBvc3RlZCB0byB0aHJlYWQiCg==' | base64 -d > xray.sh
|
|
65
|
-
- chmod +x xray.sh
|
|
66
|
-
|
|
67
|
-
# Run Xray scan
|
|
68
|
-
- |
|
|
69
|
-
echo "🔍 Running JFrog Xray scan..."
|
|
70
|
-
set +e
|
|
71
|
-
jf audit $PROJECT_TYPE --server-id=scan1 --format table --min-severity Medium . > xray.txt
|
|
72
|
-
SCAN_EXIT_CODE=$?
|
|
73
|
-
set -e
|
|
74
|
-
echo "Scan completed with exit code: $SCAN_EXIT_CODE"
|
|
75
|
-
- cat xray.txt
|
|
76
|
-
# Cleanup JFrog config
|
|
77
|
-
- jf config remove scan1 || true
|
|
78
|
-
|
|
79
|
-
# Send to Slack
|
|
80
|
-
- |
|
|
81
|
-
if [ -n "$XRAY_SLACK_TOKEN" ] && [ -n "$XRAY_SLACK_CHANNEL" ]; then
|
|
82
|
-
echo "📤 Sending results to Slack..."
|
|
83
|
-
bash xray.sh
|
|
84
|
-
else
|
|
85
|
-
echo "⚠️ Slack tokens not configured, skipping notification"
|
|
86
|
-
fi
|
|
87
|
-
|
|
88
|
-
pipelines:
|
|
89
|
-
pull-requests:
|
|
90
|
-
'**':
|
|
91
|
-
- step:
|
|
92
|
-
runs-on:
|
|
93
|
-
- self.hosted
|
|
94
|
-
- linux.shell
|
|
95
|
-
name: On Pull Request
|
|
96
|
-
script:
|
|
97
|
-
- npm install -g pnpm
|
|
98
|
-
- pnpm config set //registry.npmjs.org/:_authToken $DOCUPACE_NPM_TOKEN
|
|
99
|
-
- pnpm install --frozen-lockfile
|
|
100
|
-
- 'npx eslint . --rule "no-unused-vars: warn" --rule "no-useless-escape: warn" --color'
|
|
101
|
-
- pnpm test
|
|
102
|
-
artifacts:
|
|
103
|
-
- coverage/**
|
|
104
|
-
after-script:
|
|
105
|
-
- echo "Pipeline completed with status $BITBUCKET_EXIT_CODE"
|
|
106
|
-
|
|
107
|
-
custom:
|
|
108
|
-
scheduled-tests:
|
|
109
|
-
- step:
|
|
110
|
-
runs-on:
|
|
111
|
-
- self.hosted
|
|
112
|
-
- linux.shell
|
|
113
|
-
name: Scheduled Tests
|
|
114
|
-
script:
|
|
115
|
-
- npm install -g pnpm
|
|
116
|
-
- pnpm config set //registry.npmjs.org/:_authToken $DOCUPACE_NPM_TOKEN
|
|
117
|
-
- pnpm install --frozen-lockfile
|
|
118
|
-
- 'npx eslint . --rule "no-unused-vars: warn" --rule "no-useless-escape: warn" --color'
|
|
119
|
-
- pnpm test
|
|
120
|
-
artifacts:
|
|
121
|
-
- coverage/**
|
|
122
|
-
after-script:
|
|
123
|
-
- echo "Pipeline completed with status $BITBUCKET_EXIT_CODE"
|
|
124
|
-
|
|
125
|
-
branches:
|
|
126
|
-
main:
|
|
127
|
-
- step:
|
|
128
|
-
runs-on:
|
|
129
|
-
- self.hosted
|
|
130
|
-
- linux.shell
|
|
131
|
-
name: Main Branch Build
|
|
132
|
-
script:
|
|
133
|
-
- npm install -g pnpm
|
|
134
|
-
- pnpm config set //registry.npmjs.org/:_authToken $DOCUPACE_NPM_TOKEN
|
|
135
|
-
- pnpm install --frozen-lockfile
|
|
136
|
-
- 'npx eslint . --rule "no-unused-vars: warn" --rule "no-useless-escape: warn" --color'
|
|
137
|
-
- pnpm test
|
|
138
|
-
artifacts:
|
|
139
|
-
- coverage/**
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
package/jest.config.js
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
// jest.config.js
|
|
2
|
-
export default {
|
|
3
|
-
testEnvironment: 'node',
|
|
4
|
-
transform: {},
|
|
5
|
-
verbose: true,
|
|
6
|
-
collectCoverage: true,
|
|
7
|
-
coverageDirectory: 'coverage',
|
|
8
|
-
coverageReporters: ['text', 'lcov', 'json', 'html'],
|
|
9
|
-
collectCoverageFrom: [
|
|
10
|
-
'src/**/*.{js,ts}',
|
|
11
|
-
'!src/**/cli.js',
|
|
12
|
-
'!src/**/*.test.{js,ts}',
|
|
13
|
-
'!**/node_modules/**',
|
|
14
|
-
],
|
|
15
|
-
};
|
package/src/auth0/alias.js
DELETED
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
import axios from 'axios';
|
|
2
|
-
import { createAlias } from '../next/alias.js';
|
|
3
|
-
import { getAuth0AuthToken } from './configure.js';
|
|
4
|
-
import { getVaultSecrets } from './vault.js';
|
|
5
|
-
import { getVaultSecretsConfigs } from '../next/config.js';
|
|
6
|
-
import { cloneEnvRepository, readDeployConfig } from '../next/deploy.js';
|
|
7
|
-
|
|
8
|
-
export async function getCCAlias({ application, auth0Domain, auth0AuthToken }) {
|
|
9
|
-
console.log(`Forming alias name for application ${application}...`);
|
|
10
|
-
|
|
11
|
-
try {
|
|
12
|
-
const auth0Response = await axios.get(
|
|
13
|
-
`https://${auth0Domain}/api/v2/clients`,
|
|
14
|
-
{
|
|
15
|
-
headers: { authorization: `Bearer ${auth0AuthToken}` },
|
|
16
|
-
},
|
|
17
|
-
);
|
|
18
|
-
|
|
19
|
-
const appAuth0ClientIdData = auth0Response.data.find(
|
|
20
|
-
(client) => client.name === `${application}`,
|
|
21
|
-
);
|
|
22
|
-
const appAuth0ClientId = appAuth0ClientIdData.client_id;
|
|
23
|
-
|
|
24
|
-
console.log(`Client Credentials Alias: ${appAuth0ClientId}@clients`);
|
|
25
|
-
return `${appAuth0ClientId}@clients`;
|
|
26
|
-
} catch (err) {
|
|
27
|
-
console.error(
|
|
28
|
-
`Failed to form alias name for application: ${application}: ${err.message}`,
|
|
29
|
-
);
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
export async function configureAlias(
|
|
34
|
-
site,
|
|
35
|
-
env,
|
|
36
|
-
username,
|
|
37
|
-
password,
|
|
38
|
-
realm,
|
|
39
|
-
auth0Tenant,
|
|
40
|
-
) {
|
|
41
|
-
console.log(`Creating alias for site: ${site} in env: ${env}`);
|
|
42
|
-
// Site Common Secrets
|
|
43
|
-
const siteCommonSecretsPath =
|
|
44
|
-
getVaultSecretsConfigs(site).siteCommonSecretsPath;
|
|
45
|
-
console.log(`siteCommonSecretsPath => ${siteCommonSecretsPath}`);
|
|
46
|
-
const siteCommonSecrets = await getVaultSecrets(siteCommonSecretsPath);
|
|
47
|
-
|
|
48
|
-
let auth0Domain;
|
|
49
|
-
if (auth0Tenant === '') {
|
|
50
|
-
auth0Domain = `docupace-${env}-${site}.us.auth0.com`;
|
|
51
|
-
} else {
|
|
52
|
-
auth0Domain = `${auth0Tenant}.us.auth0.com`;
|
|
53
|
-
}
|
|
54
|
-
const auth0ClientId = siteCommonSecrets.AUTH0_CLIENT_ID;
|
|
55
|
-
const auth0ClientSecret = siteCommonSecrets.AUTH0_CLIENT_SECRET;
|
|
56
|
-
const auth0Token = await getAuth0AuthToken(
|
|
57
|
-
auth0Domain,
|
|
58
|
-
auth0ClientId,
|
|
59
|
-
auth0ClientSecret,
|
|
60
|
-
);
|
|
61
|
-
|
|
62
|
-
await cloneEnvRepository(env);
|
|
63
|
-
|
|
64
|
-
const { deployConfig: deployGraphQLServerConfig } = await readDeployConfig(
|
|
65
|
-
'graphql-server',
|
|
66
|
-
env,
|
|
67
|
-
site,
|
|
68
|
-
'values',
|
|
69
|
-
);
|
|
70
|
-
const coreUrl = deployGraphQLServerConfig.graphqlServer.coreUrl;
|
|
71
|
-
|
|
72
|
-
const clientCredentialsAlias = await getCCAlias({
|
|
73
|
-
application: 'docupace-graphql-client-credentials',
|
|
74
|
-
auth0Domain: auth0Domain,
|
|
75
|
-
auth0AuthToken: auth0Token,
|
|
76
|
-
});
|
|
77
|
-
|
|
78
|
-
await createAlias(coreUrl, username, password, realm, clientCredentialsAlias);
|
|
79
|
-
}
|
package/src/auth0/alias.test.js
DELETED
|
@@ -1,172 +0,0 @@
|
|
|
1
|
-
// alias.test.js
|
|
2
|
-
import { jest } from '@jest/globals';
|
|
3
|
-
|
|
4
|
-
// --------- ESM-Compatible Mocks ---------
|
|
5
|
-
jest.unstable_mockModule('axios', () => ({
|
|
6
|
-
default: {
|
|
7
|
-
get: jest.fn(),
|
|
8
|
-
},
|
|
9
|
-
}));
|
|
10
|
-
|
|
11
|
-
jest.unstable_mockModule('../next/alias.js', () => ({
|
|
12
|
-
createAlias: jest.fn(),
|
|
13
|
-
}));
|
|
14
|
-
|
|
15
|
-
jest.unstable_mockModule('./configure.js', () => ({
|
|
16
|
-
getAuth0AuthToken: jest.fn(),
|
|
17
|
-
}));
|
|
18
|
-
|
|
19
|
-
jest.unstable_mockModule('./vault.js', () => ({
|
|
20
|
-
getVaultSecrets: jest.fn(),
|
|
21
|
-
}));
|
|
22
|
-
|
|
23
|
-
jest.unstable_mockModule('../next/config.js', () => ({
|
|
24
|
-
getVaultSecretsConfigs: jest.fn(),
|
|
25
|
-
}));
|
|
26
|
-
|
|
27
|
-
jest.unstable_mockModule('../next/deploy.js', () => ({
|
|
28
|
-
cloneEnvRepository: jest.fn(),
|
|
29
|
-
readDeployConfig: jest.fn(),
|
|
30
|
-
}));
|
|
31
|
-
|
|
32
|
-
// --------- Import AFTER mocks ---------
|
|
33
|
-
const { configureAlias, getCCAlias } = await import('./alias.js');
|
|
34
|
-
const axios = (await import('axios')).default;
|
|
35
|
-
const { createAlias } = await import('../next/alias.js');
|
|
36
|
-
const { getAuth0AuthToken } = await import('./configure.js');
|
|
37
|
-
const { getVaultSecrets } = await import('./vault.js');
|
|
38
|
-
const { getVaultSecretsConfigs } = await import('../next/config.js');
|
|
39
|
-
const { cloneEnvRepository, readDeployConfig } = await import(
|
|
40
|
-
'../next/deploy.js'
|
|
41
|
-
);
|
|
42
|
-
|
|
43
|
-
// --------- Shared Test Setup ---------
|
|
44
|
-
beforeAll(() => {
|
|
45
|
-
jest.spyOn(console, 'log').mockImplementation(() => {}); // silence logs
|
|
46
|
-
});
|
|
47
|
-
|
|
48
|
-
afterAll(() => {
|
|
49
|
-
console.log.mockRestore();
|
|
50
|
-
});
|
|
51
|
-
|
|
52
|
-
describe('configureAlias', () => {
|
|
53
|
-
const site = 'example';
|
|
54
|
-
const env = 'dev';
|
|
55
|
-
const username = 'admin';
|
|
56
|
-
const password = 'pass';
|
|
57
|
-
const realm = 'Users';
|
|
58
|
-
const auth0Tenant = '';
|
|
59
|
-
|
|
60
|
-
const mockSecrets = {
|
|
61
|
-
AUTH0_CLIENT_ID: 'client-id',
|
|
62
|
-
AUTH0_CLIENT_SECRET: 'client-secret',
|
|
63
|
-
};
|
|
64
|
-
|
|
65
|
-
const mockToken = 'mocked-auth0-token';
|
|
66
|
-
|
|
67
|
-
const mockClients = [
|
|
68
|
-
{ name: 'docupace-graphql-client-credentials', client_id: 'client-123' },
|
|
69
|
-
];
|
|
70
|
-
|
|
71
|
-
const mockConfig = {
|
|
72
|
-
deployConfig: {
|
|
73
|
-
graphqlServer: {
|
|
74
|
-
coreUrl: 'https://core.example.com',
|
|
75
|
-
},
|
|
76
|
-
},
|
|
77
|
-
};
|
|
78
|
-
|
|
79
|
-
beforeEach(() => {
|
|
80
|
-
jest.clearAllMocks();
|
|
81
|
-
|
|
82
|
-
getVaultSecretsConfigs.mockReturnValue({
|
|
83
|
-
siteCommonSecretsPath: 'vault/path/to/secrets',
|
|
84
|
-
});
|
|
85
|
-
|
|
86
|
-
getVaultSecrets.mockResolvedValue(mockSecrets);
|
|
87
|
-
getAuth0AuthToken.mockResolvedValue(mockToken);
|
|
88
|
-
axios.get.mockResolvedValue({ data: mockClients });
|
|
89
|
-
cloneEnvRepository.mockResolvedValue(undefined);
|
|
90
|
-
readDeployConfig.mockResolvedValue(mockConfig);
|
|
91
|
-
createAlias.mockResolvedValue(undefined);
|
|
92
|
-
});
|
|
93
|
-
|
|
94
|
-
it('should configure alias with default tenant and call all required steps', async () => {
|
|
95
|
-
await configureAlias(site, env, username, password, realm, auth0Tenant);
|
|
96
|
-
|
|
97
|
-
expect(getVaultSecretsConfigs).toHaveBeenCalledWith(site);
|
|
98
|
-
expect(getVaultSecrets).toHaveBeenCalledWith('vault/path/to/secrets');
|
|
99
|
-
|
|
100
|
-
expect(getAuth0AuthToken).toHaveBeenCalledWith(
|
|
101
|
-
'docupace-dev-example.us.auth0.com',
|
|
102
|
-
'client-id',
|
|
103
|
-
'client-secret',
|
|
104
|
-
);
|
|
105
|
-
|
|
106
|
-
expect(cloneEnvRepository).toHaveBeenCalledWith(env);
|
|
107
|
-
|
|
108
|
-
expect(readDeployConfig).toHaveBeenCalledWith(
|
|
109
|
-
'graphql-server',
|
|
110
|
-
env,
|
|
111
|
-
site,
|
|
112
|
-
'values',
|
|
113
|
-
);
|
|
114
|
-
|
|
115
|
-
expect(axios.get).toHaveBeenCalledWith(
|
|
116
|
-
'https://docupace-dev-example.us.auth0.com/api/v2/clients',
|
|
117
|
-
{ headers: { authorization: `Bearer ${mockToken}` } },
|
|
118
|
-
);
|
|
119
|
-
|
|
120
|
-
expect(createAlias).toHaveBeenCalledWith(
|
|
121
|
-
'https://core.example.com',
|
|
122
|
-
username,
|
|
123
|
-
password,
|
|
124
|
-
realm,
|
|
125
|
-
'client-123@clients',
|
|
126
|
-
);
|
|
127
|
-
});
|
|
128
|
-
});
|
|
129
|
-
|
|
130
|
-
describe('getCCAlias', () => {
|
|
131
|
-
const application = 'docupace-graphql-client-credentials';
|
|
132
|
-
const auth0Domain = 'example.auth0.com';
|
|
133
|
-
const auth0AuthToken = 'token';
|
|
134
|
-
|
|
135
|
-
it('should return correct alias string for client', async () => {
|
|
136
|
-
axios.get.mockResolvedValue({
|
|
137
|
-
data: [{ name: application, client_id: 'abc123' }],
|
|
138
|
-
});
|
|
139
|
-
|
|
140
|
-
const alias = await getCCAlias({
|
|
141
|
-
application,
|
|
142
|
-
auth0Domain,
|
|
143
|
-
auth0AuthToken,
|
|
144
|
-
});
|
|
145
|
-
expect(alias).toBe('abc123@clients');
|
|
146
|
-
|
|
147
|
-
expect(axios.get).toHaveBeenCalledWith(
|
|
148
|
-
'https://example.auth0.com/api/v2/clients',
|
|
149
|
-
{ headers: { authorization: 'Bearer token' } },
|
|
150
|
-
);
|
|
151
|
-
});
|
|
152
|
-
|
|
153
|
-
it('should log error and return undefined if axios fails', async () => {
|
|
154
|
-
axios.get.mockRejectedValue(new Error('Network error'));
|
|
155
|
-
const errorSpy = jest.spyOn(console, 'error').mockImplementation(() => {});
|
|
156
|
-
|
|
157
|
-
const result = await getCCAlias({
|
|
158
|
-
application,
|
|
159
|
-
auth0Domain,
|
|
160
|
-
auth0AuthToken,
|
|
161
|
-
});
|
|
162
|
-
expect(result).toBeUndefined();
|
|
163
|
-
|
|
164
|
-
expect(errorSpy).toHaveBeenCalledWith(
|
|
165
|
-
expect.stringContaining(
|
|
166
|
-
'Failed to form alias name for application: docupace-graphql-client-credentials: Network error',
|
|
167
|
-
),
|
|
168
|
-
);
|
|
169
|
-
|
|
170
|
-
errorSpy.mockRestore();
|
|
171
|
-
});
|
|
172
|
-
});
|
package/src/auth0/cli.js
DELETED
|
@@ -1,82 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
|
|
3
|
-
import { Command } from 'commander';
|
|
4
|
-
import { configureFromSite } from './configure.js';
|
|
5
|
-
import { getVaultSecrets } from './vault.js';
|
|
6
|
-
|
|
7
|
-
import dotenv from 'dotenv';
|
|
8
|
-
import { configureAlias } from './alias.js';
|
|
9
|
-
import { exportConf } from './export.js';
|
|
10
|
-
import { getAuth0Metadata } from './metadata.js';
|
|
11
|
-
|
|
12
|
-
dotenv.config({ path: ['.env.pipeline.local', 'config/.env.pipeline.local'] });
|
|
13
|
-
|
|
14
|
-
const program = new Command();
|
|
15
|
-
|
|
16
|
-
program
|
|
17
|
-
.command(
|
|
18
|
-
'configureFromSite <fromSite> <toSite> <fromEnv> <toEnv> <deployUI> <deployGraphQLServer> <useNewDomain> <useS3Ui> <deployCCUI> <useS3Gq> [auth0Tenant]',
|
|
19
|
-
)
|
|
20
|
-
.description('Configure the Auth0 tenants in env for the given site')
|
|
21
|
-
.action(
|
|
22
|
-
async (
|
|
23
|
-
fromSite,
|
|
24
|
-
toSite,
|
|
25
|
-
fromEnv,
|
|
26
|
-
toEnv,
|
|
27
|
-
deployUI,
|
|
28
|
-
deployGraphQLServer,
|
|
29
|
-
useNewDomain,
|
|
30
|
-
useS3Ui,
|
|
31
|
-
deployCCUI,
|
|
32
|
-
useS3Gq,
|
|
33
|
-
auth0Tenant = '',
|
|
34
|
-
) => {
|
|
35
|
-
await configureFromSite(
|
|
36
|
-
fromSite,
|
|
37
|
-
toSite,
|
|
38
|
-
fromEnv,
|
|
39
|
-
toEnv,
|
|
40
|
-
deployUI,
|
|
41
|
-
deployGraphQLServer,
|
|
42
|
-
useNewDomain,
|
|
43
|
-
useS3Ui === 'true' || useS3Ui === true,
|
|
44
|
-
deployCCUI,
|
|
45
|
-
useS3Gq === 'true' || useS3Gq === true,
|
|
46
|
-
auth0Tenant,
|
|
47
|
-
);
|
|
48
|
-
},
|
|
49
|
-
);
|
|
50
|
-
|
|
51
|
-
program
|
|
52
|
-
.command('getVaultSecrets <vaultPath>')
|
|
53
|
-
.description('Get Secrets for Vault PATH')
|
|
54
|
-
.action(async (vaultPath) => {
|
|
55
|
-
const data = await getVaultSecrets(vaultPath);
|
|
56
|
-
console.log(JSON.stringify(data, 'null', 2));
|
|
57
|
-
});
|
|
58
|
-
|
|
59
|
-
program
|
|
60
|
-
.command(
|
|
61
|
-
'configureAlias <site> <env> <username> <password> <realm> [auth0Tenant]',
|
|
62
|
-
)
|
|
63
|
-
.description('Configure Core Alias for the given site')
|
|
64
|
-
.action(async (site, env, username, password, realm, auth0Tenant = '') => {
|
|
65
|
-
await configureAlias(site, env, username, password, realm, auth0Tenant);
|
|
66
|
-
});
|
|
67
|
-
|
|
68
|
-
program
|
|
69
|
-
.command('exportConf <site> <env> [auth0Tenant]')
|
|
70
|
-
.description('Export Auth0 configuration for the given site')
|
|
71
|
-
.action(async (site, env, auth0Tenant = '') => {
|
|
72
|
-
await exportConf(site, env, auth0Tenant);
|
|
73
|
-
});
|
|
74
|
-
|
|
75
|
-
program
|
|
76
|
-
.command('getAuth0Metadata <site> <env> [auth0Tenant] [jiraTicket]')
|
|
77
|
-
.description('Get Auth0 metadata for the given site')
|
|
78
|
-
.action(async (site, env, auth0Tenant = '', jiraTicket = '') => {
|
|
79
|
-
await getAuth0Metadata(site, env, auth0Tenant, jiraTicket);
|
|
80
|
-
});
|
|
81
|
-
|
|
82
|
-
program.parse(process.argv);
|