Skip to content

Commit caa8b56

Browse files
authored
Merge pull request #185 from aml-org/release/1.7.4
W-17811683 - Release 1.7.4
2 parents 22088e4 + bcfadd2 commit caa8b56

18 files changed

+267
-24
lines changed

Dockerfile

+16
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ WORKDIR ../../
4242
RUN make ci-js
4343

4444
FROM cypress/included:11.2.0 as ci-browser
45+
4546
COPY --from=ci-js /src ./src
4647
WORKDIR ./src
4748
RUN ./scripts/ci-browser.sh
@@ -52,6 +53,21 @@ RUN make go-coverage
5253
FROM sonarsource/sonar-scanner-cli as coverage
5354
COPY --from=go-coverage /go/src/coverage.out .
5455

56+
USER root
57+
58+
# Copy certificates to container
59+
COPY certs/ /etc/pki/ca-trust/source/anchors/
60+
61+
# Import certificates into the Java keystore
62+
RUN keytool -import -trustcacerts -alias salesforce_internal_root_ca_1 -file /etc/pki/ca-trust/source/anchors/Salesforce_Internal_GIA_Root_CA_1.pem -cacerts -storepass changeit -noprompt && \
63+
keytool -import -trustcacerts -alias salesforce_internal_root_ca_4 -file /etc/pki/ca-trust/source/anchors/Salesforce_Internal_Root_CA_4.pem -cacerts -storepass changeit -noprompt && \
64+
keytool -import -trustcacerts -alias salesforce_internal_root_ca_3 -file /etc/pki/ca-trust/source/anchors/Salesforce_Internal_Root_CA_3.pem -cacerts -storepass changeit -noprompt
65+
66+
# Update CA certificates for general system use
67+
RUN update-ca-trust extract
68+
69+
USER scanner-cli
70+
5571
FROM ci-go AS go-nexus-scan
5672
RUN make generate-list-file
5773

Jenkinsfile

+59-1
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ pipeline {
6363
}
6464
}
6565
steps {
66-
withCredentials([[$class: 'UsernamePasswordMultiBinding', credentialsId: 'sonarqube-official', passwordVariable: 'SONAR_SERVER_TOKEN', usernameVariable: 'SONAR_SERVER_URL']]) {
66+
withCredentials([[$class: 'UsernamePasswordMultiBinding', credentialsId: 'sf-sonarqube-official', passwordVariable: 'SONAR_SERVER_TOKEN', usernameVariable: 'SONAR_SERVER_URL']]) {
6767
sh ''' #!/bin/bash
6868
cp /usr/src/coverage.out ./
6969
echo sonar.host.url=${SONAR_SERVER_URL} >> sonar-project.properties
@@ -173,6 +173,64 @@ pipeline {
173173
'''
174174
}
175175
}
176+
stage('Publish binaries') {
177+
when {
178+
branch 'master'
179+
}
180+
agent {
181+
dockerfile {
182+
filename 'Dockerfile'
183+
additionalBuildArgs '--target ci-go'
184+
registryCredentialsId 'dockerhub-pro-credentials'
185+
}
186+
}
187+
steps {
188+
withCredentials([[$class: 'UsernamePasswordMultiBinding', credentialsId: 'nexus', usernameVariable: 'NEXUS_USR', passwordVariable: 'NEXUS_PSW']]) {
189+
script {
190+
def platforms = [ "windows/amd64", "linux/amd64", "darwin/amd64", "darwin/arm64" ]
191+
def packageVersion = sh (
192+
script: 'grep version ./wrappers/js/package.json | sed \'s/.*"version": "\\(.*\\)".*/\\1/\'',
193+
returnStdout: true
194+
).trim()
195+
sh (script: 'mkdir -p /tmp/.cache')
196+
platforms.each {item ->
197+
def nexusRepository = "nexus.build.msap.io/nexus"
198+
def repositoryName = "releases"
199+
def groupId = "aml-org.amf-custom-validator"
200+
def packageName = "acv"
201+
202+
def i = item.indexOf("/")
203+
def goOs = item.substring(0, i)
204+
def goArch = item.substring(i + 1, item.length())
205+
def artifactId = "acv" + '-' + goOs + '-' + goArch
206+
def fileName = packageName + '-' + goOs + '-' + goArch
207+
sh (script: "env GOOS=${goOs} GOARCH=${goArch} GOCACHE=/tmp/.cache go build -o ${fileName} ./cmd/main.go", returnStdout: true)
208+
209+
println 'nexusRepository=' + nexusRepository
210+
println 'repositoryName=' + repositoryName
211+
println 'groupId=' + groupId
212+
println 'packageVersion=' + packageVersion
213+
println 'artifactId=' + artifactId
214+
println 'fileName=' + fileName
215+
nexusArtifactUploader(
216+
nexusUrl: "${nexusRepository}",
217+
protocol: 'https',
218+
credentialsId: 'nexus',
219+
nexusVersion: 'nexus2',
220+
repository: "${repositoryName}",
221+
groupId: "${groupId}",
222+
version: "${packageVersion}",
223+
artifacts: [[
224+
artifactId: "${artifactId}",
225+
file: "${fileName}",
226+
classifier: ''
227+
]]
228+
)
229+
}
230+
}
231+
}
232+
}
233+
}
176234
}
177235
}
178236

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
-----BEGIN CERTIFICATE-----
2+
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
33+
-----END CERTIFICATE-----
34+
+34
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
-----BEGIN CERTIFICATE-----
2+
MIIF0DCCA7igAwIBAgIIW6vDkGPKX68wDQYJKoZIhvcNAQENBQAwgYUxCzAJBgNV
3+
BAYTAlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRYwFAYDVQQHDA1TYW4gRnJhbmNp
4+
c2NvMR0wGwYDVQQKDBRzYWxlc2ZvcmNlLmNvbSwgaW5jLjEqMCgGA1UEAwwhc2Fs
5+
ZXNmb3JjZS5jb20gSW50ZXJuYWwgUm9vdCBDQSAzMB4XDTE4MDkyNjE3MzYxNloX
6+
DTI4MDkyMzE3MzYxNlowgYUxCzAJBgNVBAYTAlVTMRMwEQYDVQQIDApDYWxpZm9y
7+
bmlhMRYwFAYDVQQHDA1TYW4gRnJhbmNpc2NvMR0wGwYDVQQKDBRzYWxlc2ZvcmNl
8+
LmNvbSwgaW5jLjEqMCgGA1UEAwwhc2FsZXNmb3JjZS5jb20gSW50ZXJuYWwgUm9v
9+
dCBDQSAzMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAgtwwTEHIl/Ok
10+
v9hVHlJCGqxIxrzc6IokzThQSqo/ec21Q7C+dCnvX7d/iyQgviP5S256Jwx06WFT
11+
4IZH9CYyiLpE+/3NHc7ni//bQGCpt0+o+PHPyXwtEpnp+NZZnR1iHlVRoNYrJqoq
12+
r8ZPgbdC8m4e4xnrhleyAk3aTgzg88tcVKEmFi38rd3/5vMiZL6O/98HENwfrgIg
13+
pAwdEhdjxuzEMITPUrk0Lo/3SeCK249dv6EWM7RQfdnzy2zlMcROONXn1NMZ35hK
14+
SJ9DXc2M+hF5wNypGF3dyghQTdq/nxJkxFZIUkUcd0NzMpqjMoMrmsqv8qn4ZOWA
15+
EyfPckNHv27R+tSSo+ctTAulL1xrQn/M2CFlBfQmZkSFToEPoLOzABnBwkJpwFm9
16+
awPyaolf5l4Y/N9cZTcaG71SBf/yGcqzycgnujjBjJhRz0i2JE9s1a/NA0ALEe0m
17+
6JIfpu1eL0+qOMajeiHebs9hjCdFzWuX4LFO4k76U3d1WTtlnFtg/7FUFkHzMv46
18+
X6p9syjWfD7snU5hCD0N4037IeXzAV1zVnazbzzEP7dJDlJPivFw0DtCoQAsdK2V
19+
XWA3Q2daUYiS8zyFagzIbk7+TzqcGWGvZq4DfEmAISRrOQKbU27VybV8Qwf2xTLh
20+
CYHexYtC3XpO7lhdbjcBEQYNB47GtmcCAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB
21+
/zAdBgNVHQ4EFgQUHdspGyq4y/PRIWJxYHVOMAoktwEwDgYDVR0PAQH/BAQDAgEG
22+
MA0GCSqGSIb3DQEBDQUAA4ICAQALlaByN29bU8w9ZbPsmQ8ow6ElybyU8sPNs1o7
23+
X2bxZRqHEWIbtirwYDFLaF93+qPdUrZ8F4Eckp6bHEmi7WF81xEHyL6rJ9SmTepm
24+
syEn2pbi/PV66JMlzReaAl2+n1Avy7G6Zvn7Mm7IgCQKqfwaiSYFmBK7vRskaK1N
25+
+nZfs5z83K7FBur1SCkUcPaYz3UA/rtqBiG5g9q16jFp0LyWfbK5Vo1EwX0knb/3
26+
G7w0MDqrWehPIfrm2Jr+Sb4BOg7kItErVzu0D1EIiRJejvbYraeNKVQPXLHOqm5z
27+
9dGAmUk7434AXrJvD8edR8fBA12rzSm8X/Zj51qSYybvdRUXNUONxLW0v1flLoUh
28+
dUFXjcHVbcuDXWD1KYlf7u5AFUlN72jlk5RlJX5U71p+j/+1Wm/tHTG7sH7BmJlK
29+
VNuUSYMRZp5lq6KXG2Ifs9fulWLAIhhW8kgi0QGmMD0dsYZ1JG+bY2tj+Zr3YtvH
30+
GEBKux6nFFzq9IFsvwGrhI76Sx5hOiiRTXNxHxPB/oviZF4+GLS2IETjeQTQOU9D
31+
eDocv81UUn0C9ZEnHXYHr9UcGWDY0Iv4PJDRxm9h1DjK8kH9r7BFx40ZV1m/cy0P
32+
8hyDMT3LeuaTmBPf4uEqsXsk3c9Kjxn8KfrrTyzt+wYr2fVf613P+9SgVqglvN+G
33+
U7OoSA==
34+
-----END CERTIFICATE-----
+34
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
-----BEGIN CERTIFICATE-----
2+
MIIF0DCCA7igAwIBAgIIYBMskD1jKDAwDQYJKoZIhvcNAQENBQAwgYUxCzAJBgNV
3+
BAYTAlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRYwFAYDVQQHDA1TYW4gRnJhbmNp
4+
c2NvMR0wGwYDVQQKDBRzYWxlc2ZvcmNlLmNvbSwgaW5jLjEqMCgGA1UEAwwhc2Fs
5+
ZXNmb3JjZS5jb20gSW50ZXJuYWwgUm9vdCBDQSA0MB4XDTIxMDEyODIxMjg0OFoX
6+
DTMxMDEyNjIxMjg0OFowgYUxCzAJBgNVBAYTAlVTMRMwEQYDVQQIDApDYWxpZm9y
7+
bmlhMRYwFAYDVQQHDA1TYW4gRnJhbmNpc2NvMR0wGwYDVQQKDBRzYWxlc2ZvcmNl
8+
LmNvbSwgaW5jLjEqMCgGA1UEAwwhc2FsZXNmb3JjZS5jb20gSW50ZXJuYWwgUm9v
9+
dCBDQSA0MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAx4fMsdFYDE9e
10+
etb2Zqlc93+Ggs0mH872Qu1b3I/a9b2bSN66T9sv4eaBqe4jjPkBKoxxacZEANkA
11+
1USa2CeTUPWeEBBQmO4pQBJSzzmJ5tjIvbVIMg07WBKMMNW5+QFGTQzGXhh51uid
12+
bNH0O7mkH39v5qC5U7cn9xT4UK5WsY9CqOXs2lxGPiTXrebFFzgJ7s6vPwn5CU48
13+
NZMKXb3oxI/KcCxUJ/oGhtrfAJawde0TCSRIq+V8iDdkHfJwy9DCPamdB/mqYTDZ
14+
SDY1rA9knwSPzEiBU5j4mRBCpp179cFrOfULd13rg5aQjzgeZmSOqKpgspMYbJzo
15+
+CfnqJZLsKAvua5FI7f8MvVCh2co12716TtUR0aTo3dD86oL3HbE/3UIzlQiORdS
16+
ILhR7qdw6rJcnDRgFV/hNicDiAAwYjW4qLm2BitHs5XlYofF3jTpwaV70t8vv5WF
17+
Auk769E8LYQla3tTLKirnthmiBHua2lPYQbBfNBhr6EhdOVrr/3Qi5eJANjfmaeK
18+
9k8KvIcwX40o3yTyU7iqsBnwbM2D4+tKADEOOqMbtk5w0NdcNRyURwo4fyD6vAg/
19+
QYHOk12xqpTq0G4PMiky5XPb5USkwDWoqOYsKR4wCuouJCwJObIBtqD3vNRHQI5N
20+
YPMpMrI4xdwJwFvhd9j0p+xVXM5koL8CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB
21+
/zAdBgNVHQ4EFgQUatXozwmOt3FWTAjY3HYxjXcqbSYwDgYDVR0PAQH/BAQDAgEG
22+
MA0GCSqGSIb3DQEBDQUAA4ICAQChmrpL+MF3H939O9aY3yx0UNhAXXgtgudrhvLy
23+
d78cb1bkuBPD3IeW0rwTkQW/l2Df3OUEDl0jGmCKZQChhPBbSHl4dxkr+A+YhwJ8
24+
/xoqLbXF9zIkSslgphM6p3Ydn6mYwqCYg+9i4M3gfkIBBPXmK9S292dkjWKxTAN5
25+
SnzU2gHZNv1JyqVr9FkGARlfF7POymWog5eNGaMrE0hXiHKlIf223C6JVYLg8tGz
26+
Cq8ShIIgM55upxLxqDt81s803a45ZsT4isssIQB7LIum86+DXrpiL4EcP6NgAL3R
27+
mOQv8Esj/NThAQVEI57Aw68DFo7858ZFy50KoaJl5kOSfP8IInhp273CFWcAdiv6
28+
qJLzPmAyNCQP2DhseNIqvO7a+X9CMMU7WP8JF+FwI4vlJJ60H6nlxpWNYgbAZJzS
29+
osUsa4j8QEMy5ZTKsWIzh/QcIvGae37/k0WH3bNSc9VftWtTaWS27H5Tcv6cuUDA
30+
j+vB8L033j2NxPJCeBTfnTvA3p764k/VJc8SuW5+xrjB6TaKnv2nR+PC2pz+zvjR
31+
2FU+ZX/lxdlkwTqT+OGpGi9ok8VHqYAQce3qg05f+7wA3JyyPJGIXtOnjG7vHPMg
32+
G8PxBwbuKz1N4Bg9iuylY5KUFxqRJaCg2qGBMKFgleR+56+Gxm0j0jfS03vZOPGh
33+
gzTB7Q==
34+
-----END CERTIFICATE-----

cmd/commands/compile.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import (
88
)
99

1010
func Compile() {
11-
helpers.ValidateNArgs(3, "acv compile PROFILE")
11+
helpers.ValidateNArgs(3, "acv compile <PROFILE>")
1212

1313
profile := helpers.ReadOrPanic(os.Args[2])
1414

cmd/commands/generate.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import (
88
)
99

1010
func Generate() {
11-
helpers.ValidateNArgs(3, "acv generate PROFILE")
11+
helpers.ValidateNArgs(3, "acv generate <PROFILE>")
1212

1313
profile := helpers.ReadOrPanic(os.Args[2])
1414

cmd/commands/help.go

+4-4
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,10 @@ import (
88
func Help() {
99
fmt.Printf(`
1010
Available commands:
11-
help Prints help
12-
validate PROFILE DATA Validates data in JSON-LD syntax with a specific validation profile
13-
normalize DATA Normalizes data to be validated with the generated Rego code
14-
generate PROFILE Generates Rego code from a validation profile
11+
help Prints help
12+
validate <PROFILE> <DATA> [OUTPUT_FILE] Validates data in JSON-LD syntax with a specific validation profile
13+
normalize <DATA> Normalizes data to be validated with the generated Rego code
14+
generate <PROFILE> Generates Rego code from a validation profile
1515
`)
1616
os.Exit(0)
1717
}

cmd/commands/helpers/check_error.go

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package helpers
2+
3+
func CheckError(err error) {
4+
if err != nil {
5+
panic(err)
6+
}
7+
}

cmd/commands/helpers/file_helper.go

+38
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
package helpers
2+
3+
import (
4+
"errors"
5+
"os"
6+
)
7+
8+
func ExistsFile(path string) bool {
9+
_, err := os.Stat(path)
10+
return !errors.Is(err, os.ErrNotExist)
11+
}
12+
13+
func OpenFile(path string) *os.File {
14+
file, err := os.OpenFile(path, os.O_RDWR, 0)
15+
CheckError(err)
16+
return file
17+
}
18+
19+
func CreateFile(path string) *os.File {
20+
file, err := os.Create(path)
21+
CheckError(err)
22+
return file
23+
}
24+
25+
func OpenOrCreateFile(path string) *os.File {
26+
if ExistsFile(path) {
27+
return OpenFile(path)
28+
} else {
29+
return CreateFile(path)
30+
}
31+
}
32+
33+
func WriteString(file *os.File, content string) {
34+
_, wErr := file.WriteString(content)
35+
CheckError(wErr)
36+
sErr := file.Sync()
37+
CheckError(sErr)
38+
}

cmd/commands/helpers/handle_args.go

+15-2
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,22 @@ import (
55
"os"
66
)
77

8+
func ValidateNsArgs(nsArgs []int, usage string) {
9+
for _, nArgs := range nsArgs {
10+
if len(os.Args) == nArgs {
11+
return
12+
}
13+
}
14+
errorArgs(usage)
15+
}
16+
817
func ValidateNArgs(nArgs int, usage string) {
918
if len(os.Args) != nArgs {
10-
_, _ = fmt.Fprintf(os.Stderr, "Wrong number of arguments. Usage %s\n", usage)
11-
os.Exit(1)
19+
errorArgs(usage)
1220
}
1321
}
22+
23+
func errorArgs(usage string) {
24+
_, _ = fmt.Fprintf(os.Stderr, "Wrong number of arguments. Usage %s\n", usage)
25+
os.Exit(1)
26+
}

cmd/commands/normalize.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import (
88
)
99

1010
func Normalize() {
11-
helpers.ValidateNArgs(3, "acv normalize DATA")
11+
helpers.ValidateNArgs(3, "acv normalize <DATA>")
1212

1313
data := helpers.ReadOrPanic(os.Args[2])
1414

cmd/commands/validate.go

+16-7
Original file line numberDiff line numberDiff line change
@@ -2,22 +2,31 @@ package commands
22

33
import (
44
"fmt"
5-
"github.com/aml-org/amf-custom-validator/cmd/commands/helpers"
5+
h "github.com/aml-org/amf-custom-validator/cmd/commands/helpers"
66
"github.com/aml-org/amf-custom-validator/internal/validator"
77
"os"
88
)
99

1010
func Validate() {
11-
helpers.ValidateNArgs(4, "acv validate PROFILE DATA")
1211

13-
profile := helpers.ReadOrPanic(os.Args[2])
14-
data := helpers.ReadOrPanic(os.Args[3])
12+
h.ValidateNsArgs([]int{4, 5}, "acv validate <PROFILE> <DATA> [OUTPUT_FILE]")
13+
14+
profile := h.ReadOrPanic(os.Args[2])
15+
data := h.ReadOrPanic(os.Args[3])
1516

1617
res, err := validator.Validate(string(profile), string(data), false, nil)
17-
if err != nil {
18-
panic(err)
18+
h.CheckError(err)
19+
20+
if len(os.Args) == 4 {
21+
// 4 args means output to standard output
22+
fmt.Println(res)
23+
}
24+
if len(os.Args) == 5 {
25+
// 5 args means output to file path
26+
path := os.Args[4]
27+
file := h.OpenOrCreateFile(path)
28+
h.WriteString(file, res)
1929
}
2030

21-
fmt.Println(res)
2231
os.Exit(0)
2332
}

sonar-project.properties

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
sonar.projectKey=mulesoft.amf-custom-validator
1+
sonar.projectKey=mulesoft.amf-custom-validator.gec
22
sonar.projectName=AMF Custom Validator
33
sonar.go.coverage.reportPaths=./coverage.out
44

wrappers/js-web/package-lock.json

+2-2
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

wrappers/js-web/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@aml-org/amf-custom-validator-web",
3-
"version": "1.7.2",
3+
"version": "1.7.4",
44
"description": "AMF validator backed by OPA Rego",
55
"main": "dist/main.js",
66
"scripts": {

0 commit comments

Comments
 (0)