Skip to content

Commit f63c61c

Browse files
authored
JumpCloud plugin (#142)
1 parent 7959dc5 commit f63c61c

File tree

21 files changed

+1116
-0
lines changed

21 files changed

+1116
-0
lines changed

.github/workflows/ci.yaml

+1
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ jobs:
3636
- "./plugins/cognito"
3737
- "./plugins/fusionauth"
3838
- "./plugins/google"
39+
- "./plugins/jumpcloud"
3940
- "./plugins/ldap"
4041
- "./plugins/okta"
4142
- "./plugins/openapi"

.goreleaser.yml

+24
Original file line numberDiff line numberDiff line change
@@ -200,6 +200,29 @@ builds:
200200
- -X github.com/{{ .Env.ORG }}/{{ .Env.REPO }}/sdk//version.date={{.Date}}
201201
mod_timestamp: "{{ .CommitTimestamp }}"
202202

203+
- id: ds-load-jumpcloud
204+
main: ./plugins/jumpcloud/cmd/ds-load-jumpcloud
205+
binary: ds-load-jumpcloud
206+
goos:
207+
- darwin
208+
- linux
209+
- windows
210+
goarch:
211+
- amd64
212+
- arm64
213+
env:
214+
- CGO_ENABLED=0
215+
ignore:
216+
- goos: windows
217+
goarch: arm64
218+
ldflags:
219+
- -s
220+
- -w
221+
- -X github.com/{{ .Env.ORG }}/{{ .Env.REPO }}/sdk/common/version.ver={{.Version}}
222+
- -X github.com/{{ .Env.ORG }}/{{ .Env.REPO }}/sdk/common/version.commit={{.ShortCommit}}
223+
- -X github.com/{{ .Env.ORG }}/{{ .Env.REPO }}/sdk//version.date={{.Date}}
224+
mod_timestamp: "{{ .CommitTimestamp }}"
225+
203226
- id: ds-load-ldap
204227
main: ./plugins/ldap/cmd/ds-load-ldap
205228
binary: ds-load-ldap
@@ -324,6 +347,7 @@ brews:
324347
bin.install "ds-load-cognito"
325348
bin.install "ds-load-fusionauth"
326349
bin.install "ds-load-google"
350+
bin.install "ds-load-jumpcloud"
327351
bin.install "ds-load-ldap"
328352
bin.install "ds-load-okta"
329353
bin.install "ds-load-openapi"

go.work

+1
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ use (
88
./plugins/cognito
99
./plugins/fusionauth
1010
./plugins/google
11+
./plugins/jumpcloud
1112
./plugins/ldap
1213
./plugins/okta
1314
./plugins/openapi
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
package main
2+
3+
import (
4+
"os"
5+
6+
"github.com/alecthomas/kong"
7+
"github.com/aserto-dev/ds-load/plugins/jumpcloud/pkg/app"
8+
"github.com/aserto-dev/ds-load/sdk/common"
9+
"github.com/aserto-dev/ds-load/sdk/common/cc"
10+
"github.com/aserto-dev/ds-load/sdk/common/kongyaml"
11+
)
12+
13+
func main() {
14+
cli := app.CLI{}
15+
16+
defaultConfigPath := "~/.config/ds-load/cfg/jumpcloud.yaml"
17+
18+
yamlLoader := kongyaml.NewYAMLResolver("jumpcloud")
19+
options := []kong.Option{
20+
kong.Name(app.AppName),
21+
kong.Exit(func(exitCode int) {
22+
os.Exit(exitCode)
23+
}),
24+
kong.Description(app.AppDescription),
25+
kong.UsageOnError(),
26+
kong.Configuration(yamlLoader.Loader, defaultConfigPath),
27+
kong.ConfigureHelp(kong.HelpOptions{
28+
NoAppSummary: false,
29+
Summary: false,
30+
Compact: true,
31+
Tree: false,
32+
FlagsLast: true,
33+
Indenter: kong.SpaceIndenter,
34+
NoExpandSubcommands: false,
35+
}),
36+
}
37+
38+
ctx := cc.NewCommonContext(cli.Verbosity, string(cli.Config))
39+
kongCtx := kong.Parse(&cli, options...)
40+
if err := kongCtx.Run(ctx); err != nil {
41+
kongCtx.FatalIfErrorf(err)
42+
}
43+
44+
os.Exit(common.GetExitCode())
45+
}

plugins/jumpcloud/go.mod

+47
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
module github.com/aserto-dev/ds-load/plugins/jumpcloud
2+
3+
go 1.23.7
4+
5+
toolchain go1.24.1
6+
7+
replace github.com/aserto-dev/ds-load/sdk => ../../sdk
8+
9+
require (
10+
github.com/alecthomas/kong v1.8.1
11+
github.com/aserto-dev/ds-load/sdk v0.0.0-20241206112725-5d200d771446
12+
github.com/pkg/errors v0.9.1
13+
github.com/samber/lo v1.49.1
14+
github.com/stretchr/testify v1.10.0
15+
google.golang.org/grpc v1.71.0
16+
)
17+
18+
require (
19+
dario.cat/mergo v1.0.1 // indirect
20+
github.com/Masterminds/goutils v1.1.1 // indirect
21+
github.com/Masterminds/semver/v3 v3.3.1 // indirect
22+
github.com/Masterminds/sprig/v3 v3.3.0 // indirect
23+
github.com/aserto-dev/go-directory v0.33.7 // indirect
24+
github.com/aserto-dev/logger v0.0.7 // indirect
25+
github.com/davecgh/go-spew v1.1.1 // indirect
26+
github.com/dongri/phonenumber v0.1.12 // indirect
27+
github.com/google/uuid v1.6.0 // indirect
28+
github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.3 // indirect
29+
github.com/huandu/xstrings v1.5.0 // indirect
30+
github.com/mattn/go-colorable v0.1.14 // indirect
31+
github.com/mattn/go-isatty v0.0.20 // indirect
32+
github.com/mitchellh/copystructure v1.2.0 // indirect
33+
github.com/mitchellh/reflectwalk v1.0.2 // indirect
34+
github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10 // indirect
35+
github.com/pmezard/go-difflib v1.0.0 // indirect
36+
github.com/rs/zerolog v1.33.0 // indirect
37+
github.com/shopspring/decimal v1.4.0 // indirect
38+
github.com/spf13/cast v1.7.1 // indirect
39+
golang.org/x/crypto v0.36.0 // indirect
40+
golang.org/x/net v0.37.0 // indirect
41+
golang.org/x/sys v0.31.0 // indirect
42+
golang.org/x/text v0.23.0 // indirect
43+
google.golang.org/genproto/googleapis/api v0.0.0-20250303144028-a0af3efb3deb // indirect
44+
google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb // indirect
45+
google.golang.org/protobuf v1.36.5 // indirect
46+
gopkg.in/yaml.v3 v3.0.1 // indirect
47+
)

plugins/jumpcloud/go.sum

+103
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,103 @@
1+
dario.cat/mergo v1.0.1 h1:Ra4+bf83h2ztPIQYNP99R6m+Y7KfnARDfID+a+vLl4s=
2+
dario.cat/mergo v1.0.1/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk=
3+
github.com/Masterminds/goutils v1.1.1 h1:5nUrii3FMTL5diU80unEVvNevw1nH4+ZV4DSLVJLSYI=
4+
github.com/Masterminds/goutils v1.1.1/go.mod h1:8cTjp+g8YejhMuvIA5y2vz3BpJxksy863GQaJW2MFNU=
5+
github.com/Masterminds/semver/v3 v3.3.1 h1:QtNSWtVZ3nBfk8mAOu/B6v7FMJ+NHTIgUPi7rj+4nv4=
6+
github.com/Masterminds/semver/v3 v3.3.1/go.mod h1:4V+yj/TJE1HU9XfppCwVMZq3I84lprf4nC11bSS5beM=
7+
github.com/Masterminds/sprig/v3 v3.3.0 h1:mQh0Yrg1XPo6vjYXgtf5OtijNAKJRNcTdOOGZe3tPhs=
8+
github.com/Masterminds/sprig/v3 v3.3.0/go.mod h1:Zy1iXRYNqNLUolqCpL4uhk6SHUMAOSCzdgBfDb35Lz0=
9+
github.com/alecthomas/assert/v2 v2.11.0 h1:2Q9r3ki8+JYXvGsDyBXwH3LcJ+WK5D0gc5E8vS6K3D0=
10+
github.com/alecthomas/assert/v2 v2.11.0/go.mod h1:Bze95FyfUr7x34QZrjL+XP+0qgp/zg8yS+TtBj1WA3k=
11+
github.com/alecthomas/kong v1.8.1 h1:6aamvWBE/REnR/BCq10EcozmcpUPc5aGI1lPAWdB0EE=
12+
github.com/alecthomas/kong v1.8.1/go.mod h1:p2vqieVMeTAnaC83txKtXe8FLke2X07aruPWXyMPQrU=
13+
github.com/alecthomas/repr v0.4.0 h1:GhI2A8MACjfegCPVq9f1FLvIBS+DrQ2KQBFZP1iFzXc=
14+
github.com/alecthomas/repr v0.4.0/go.mod h1:Fr0507jx4eOXV7AlPV6AVZLYrLIuIeSOWtW57eE/O/4=
15+
github.com/aserto-dev/go-directory v0.33.7 h1:jldr2cGQp5EYM4l3IKSNyuK3Rr30taQ7MejbIHt+rGQ=
16+
github.com/aserto-dev/go-directory v0.33.7/go.mod h1:mY53j91JUnGRk9lsfw3yxgQXO41SCnt2bSP/2PamxCo=
17+
github.com/aserto-dev/logger v0.0.7 h1:ORvXxZDMNIcN/E3SYHj8fxmNZnOD7Gf87pOLB2XQavw=
18+
github.com/aserto-dev/logger v0.0.7/go.mod h1:66ff7ALo68NT1HcCg5zytOnGh6I5R0HeDpN85cwHcD0=
19+
github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc=
20+
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
21+
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
22+
github.com/dongri/phonenumber v0.1.12 h1:rR/4VZzxqpocUdyM4dIdfY0TWd8FcW43oiyPaOUxNIk=
23+
github.com/dongri/phonenumber v0.1.12/go.mod h1:cuHFSstIxh6qh/Qs/SCV3Grb/JMYregBLuXELvSYmT4=
24+
github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8=
25+
github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0=
26+
github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY=
27+
github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
28+
github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=
29+
github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=
30+
github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
31+
github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek=
32+
github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps=
33+
github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8=
34+
github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU=
35+
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
36+
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
37+
github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.3 h1:5ZPtiqj0JL5oKWmcsq4VMaAW5ukBEgSGXEN89zeH1Jo=
38+
github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.3/go.mod h1:ndYquD05frm2vACXE1nsccT4oJzjhw2arTS2cpUD1PI=
39+
github.com/hexops/gotextdiff v1.0.3 h1:gitA9+qJrrTCsiCl7+kh75nPqQt1cx4ZkudSTLoUqJM=
40+
github.com/hexops/gotextdiff v1.0.3/go.mod h1:pSWU5MAI3yDq+fZBTazCSJysOMbxWL1BSow5/V2vxeg=
41+
github.com/huandu/xstrings v1.5.0 h1:2ag3IFq9ZDANvthTwTiqSSZLjDc+BedvHPAp5tJy2TI=
42+
github.com/huandu/xstrings v1.5.0/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE=
43+
github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
44+
github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk=
45+
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
46+
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
47+
github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg=
48+
github.com/mattn/go-colorable v0.1.14 h1:9A9LHSqF/7dyVVX6g0U9cwm9pG3kP9gSzcuIPHPsaIE=
49+
github.com/mattn/go-colorable v0.1.14/go.mod h1:6LmQG8QLFO4G5z1gPvYEzlUgJ2wF+stgPZH1UqBm1s8=
50+
github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
51+
github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
52+
github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=
53+
github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
54+
github.com/mitchellh/copystructure v1.2.0 h1:vpKXTN4ewci03Vljg/q9QvCGUDttBOGBIa15WveJJGw=
55+
github.com/mitchellh/copystructure v1.2.0/go.mod h1:qLl+cE2AmVv+CoeAwDPye/v+N2HKCj9FbZEVFJRxO9s=
56+
github.com/mitchellh/reflectwalk v1.0.2 h1:G2LzWKi524PWgd3mLHV8Y5k7s6XUvT0Gef6zxSIeXaQ=
57+
github.com/mitchellh/reflectwalk v1.0.2/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw=
58+
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
59+
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
60+
github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10 h1:GFCKgmp0tecUJ0sJuv4pzYCqS9+RGSn52M3FUwPs+uo=
61+
github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10/go.mod h1:t/avpk3KcrXxUnYOhZhMXJlSEyie6gQbtLq5NM3loB8=
62+
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
63+
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
64+
github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ=
65+
github.com/rs/xid v1.5.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg=
66+
github.com/rs/zerolog v1.33.0 h1:1cU2KZkvPxNyfgEmhHAz/1A9Bz+llsdYzklWFzgp0r8=
67+
github.com/rs/zerolog v1.33.0/go.mod h1:/7mN4D5sKwJLZQ2b/znpjC3/GQWY/xaDXUM0kKWRHss=
68+
github.com/samber/lo v1.49.1 h1:4BIFyVfuQSEpluc7Fua+j1NolZHiEHEpaSEKdsH0tew=
69+
github.com/shopspring/decimal v1.4.0 h1:bxl37RwXBklmTi0C79JfXCEBD1cqqHt0bbgBAGFp81k=
70+
github.com/shopspring/decimal v1.4.0/go.mod h1:gawqmDU56v4yIKSwfBSFip1HdCCXN8/+DMd9qYNcwME=
71+
github.com/spf13/cast v1.7.1 h1:cuNEagBQEHWN1FnbGEjCXL2szYEXqfJPbP2HNUaca9Y=
72+
github.com/spf13/cast v1.7.1/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo=
73+
github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA=
74+
github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
75+
go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA=
76+
go.opentelemetry.io/otel v1.34.0 h1:zRLXxLCgL1WyKsPVrgbSdMN4c0FMkDAskSTQP+0hdUY=
77+
go.opentelemetry.io/otel/metric v1.34.0 h1:+eTR3U0MyfWjRDhmFMxe2SsW64QrZ84AOhvqS7Y+PoQ=
78+
go.opentelemetry.io/otel/sdk v1.34.0 h1:95zS4k/2GOy069d321O8jWgYsW3MzVV+KuSPKp7Wr1A=
79+
go.opentelemetry.io/otel/sdk/metric v1.34.0 h1:5CeK9ujjbFVL5c1PhLuStg1wxA7vQv7ce1EK0Gyvahk=
80+
go.opentelemetry.io/otel/trace v1.34.0 h1:+ouXS2V8Rd4hp4580a8q23bg0azF2nI8cqLYnC8mh/k=
81+
golang.org/x/crypto v0.36.0 h1:AnAEvhDddvBdpY+uR+MyHmuZzzNqXSe/GvuDeob5L34=
82+
golang.org/x/crypto v0.36.0/go.mod h1:Y4J0ReaxCR1IMaabaSMugxJES1EpwhBHhv2bDHklZvc=
83+
golang.org/x/net v0.37.0 h1:1zLorHbz+LYj7MQlSf1+2tPIIgibq2eL5xkrGk6f+2c=
84+
golang.org/x/net v0.37.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8=
85+
golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
86+
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
87+
golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
88+
golang.org/x/sys v0.31.0 h1:ioabZlmFYtWhL+TRYpcnNlLwhyxaM9kWTDEmfnprqik=
89+
golang.org/x/sys v0.31.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k=
90+
golang.org/x/text v0.23.0 h1:D71I7dUrlY+VX0gQShAThNGHFxZ13dGLBHQLVl1mJlY=
91+
golang.org/x/text v0.23.0/go.mod h1:/BLNzu4aZCJ1+kcD0DNRotWKage4q2rGVAg4o22unh4=
92+
google.golang.org/genproto/googleapis/api v0.0.0-20250303144028-a0af3efb3deb h1:p31xT4yrYrSM/G4Sn2+TNUkVhFCbG9y8itM2S6Th950=
93+
google.golang.org/genproto/googleapis/api v0.0.0-20250303144028-a0af3efb3deb/go.mod h1:jbe3Bkdp+Dh2IrslsFCklNhweNTBgSYanP1UXhJDhKg=
94+
google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb h1:TLPQVbx1GJ8VKZxz52VAxl1EBgKXXbTiU9Fc5fZeLn4=
95+
google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb/go.mod h1:LuRYeWDFV6WOn90g357N17oMCaxpgCnbi/44qJvDn2I=
96+
google.golang.org/grpc v1.71.0 h1:kF77BGdPTQ4/JZWMlb9VpJ5pa25aqvVqogsxNHHdeBg=
97+
google.golang.org/protobuf v1.36.5 h1:tPhr+woSbjfYvY6/GPufUoYizxw1cF/yFoxJ2fmpwlM=
98+
google.golang.org/protobuf v1.36.5/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE=
99+
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
100+
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
101+
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
102+
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
103+
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=

plugins/jumpcloud/pkg/app/assets.go

+12
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package app
2+
3+
import (
4+
"embed"
5+
)
6+
7+
//go:embed assets/*
8+
var staticAssets embed.FS
9+
10+
func Assets() embed.FS {
11+
return staticAssets
12+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
{{$status := "USER_STATUS_ACTIVE"}}
2+
{{ if $.account_locked}}
3+
{{$status = "USER_STATUS_SUSPENDED"}}
4+
{{end}}
5+
6+
{
7+
"objects": [
8+
{{ if eq $.type "user" }}
9+
{
10+
"id": "{{ $.id }}",
11+
"type": "user",
12+
"display_name": "{{ $.firstname }} {{ $.middlename -}} {{ $.lastname }}",
13+
"properties": {
14+
"email": "{{ $.email }}",
15+
"organization_id": "{{ $.organization }}",
16+
"status": "{{ $status }}",
17+
"user_id": "{{ $.id }}",
18+
"username": "{{ $.username }}"
19+
},
20+
"created_at": "{{ $.created }}"
21+
},
22+
{
23+
"id": "{{ $.email }}",
24+
"type": "identity",
25+
"display_name": "{{ $.firstname }} {{ $.middlename -}} {{ $.lastname }} (email)"
26+
},
27+
{
28+
"id": "{{ $.username }}",
29+
"type": "identity",
30+
"display_name": "{{ $.firstname }} {{ $.middlename -}} {{ $.lastname }} (username)"
31+
}
32+
{{ end }}
33+
34+
{{ if eq $.type "user_group" }}
35+
{
36+
"id": "{{ $.name }}",
37+
"type": "group",
38+
"display_name": "{{ $.name }}"
39+
}
40+
{{ end }}
41+
],
42+
"relations": [
43+
{{ if eq $.type "user" }}
44+
{
45+
"object_type": "user",
46+
"object_id": "{{ $.id }}",
47+
"relation": "identifier",
48+
"subject_type": "identity",
49+
"subject_id": "{{ $.email }}"
50+
},
51+
{
52+
"object_type": "user",
53+
"object_id": "{{ $.id }}",
54+
"relation": "identifier",
55+
"subject_type": "identity",
56+
"subject_id": "{{ $.username }}"
57+
}
58+
{{ end }}
59+
60+
{{ if eq $.type "user_group" }}
61+
{{ range $i, $user := $.users }}
62+
{{ if $i }},{{ end }}
63+
{
64+
"object_type": "group",
65+
"object_id": "{{ $.name }}",
66+
"relation": "member",
67+
"subject_type": "user",
68+
"subject_id": "{{ $user.id }}"
69+
}
70+
{{ end }}
71+
{{ end }}
72+
]
73+
}

plugins/jumpcloud/pkg/app/cli.go

+29
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
package app
2+
3+
import (
4+
"fmt"
5+
6+
"github.com/alecthomas/kong"
7+
"github.com/aserto-dev/ds-load/sdk/common/version"
8+
)
9+
10+
type CLI struct {
11+
Version VersionCmd `cmd:"" help:"version information"`
12+
Fetch FetchCmd `cmd:"" help:"fetch jumpcloud directory data"`
13+
Transform TransformCmd `cmd:"" help:"transform jumpcloud directory data"`
14+
ExportTransform ExportTransformCmd `cmd:"" help:"export default transform template"`
15+
Exec ExecCmd `cmd:"" help:"fetch and transform jumpcloud directory" default:"withargs"`
16+
Verify VerifyCmd `cmd:"" help:"verify fetcher configuration and credentials"`
17+
Config kong.ConfigFlag `flag:"" short:"c" help:"Configuration file path" `
18+
Verbosity int `flag:"" short:"v" type:"counter" help:"Use to increase output verbosity."`
19+
}
20+
21+
type VersionCmd struct{}
22+
23+
func (cmd *VersionCmd) Run() error {
24+
fmt.Printf("%s - %s\n",
25+
AppName,
26+
version.GetInfo().String(),
27+
)
28+
return nil
29+
}
+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
package app
2+
3+
const (
4+
AppName = "ds-load-jumpcloud"
5+
AppDescription = "JumpCloud directory loader"
6+
)

0 commit comments

Comments
 (0)