go.mondoo.com/cnquery@v0.0.0-20231005093811-59568235f6ea/Makefile (about) 1 NAMESPACE=mondoo 2 3 ifndef LATEST_VERSION_TAG 4 # echo "read LATEST_VERSION_TAG from git" 5 LATEST_VERSION_TAG=$(shell git describe --abbrev=0 --tags) 6 endif 7 8 ifndef MANIFEST_VERSION 9 # echo "read MANIFEST_VERSION from git" 10 MANIFEST_VERSION=$(shell git describe --abbrev=0 --tags) 11 endif 12 13 ifndef TAG 14 # echo "read TAG from git" 15 TAG=$(shell git log --pretty=format:'%h' -n 1) 16 endif 17 18 ifndef VERSION 19 # echo "read VERSION from git" 20 VERSION=${LATEST_VERSION_TAG}+$(shell git rev-list --count HEAD) 21 endif 22 23 ifndef TARGETOS 24 TARGETOS = $(shell go env GOOS) 25 endif 26 27 BIN_SUFFIX = "" 28 ifeq ($(TARGETOS),windows) 29 BIN_SUFFIX=".exe" 30 endif 31 32 LDFLAGS=-ldflags "-s -w -X go.mondoo.com/cnquery.Version=${VERSION} -X go.mondoo.com/cnquery.Build=${TAG}" # -linkmode external -extldflags=-static 33 LDFLAGSDIST=-tags production -ldflags "-s -w -X go.mondoo.com/cnquery.Version=${LATEST_VERSION_TAG} -X go.mondoo.com/cnquery.Build=${TAG} -s -w" 34 35 .PHONY: info/ldflags 36 info/ldflags: 37 $(info go run ${LDFLAGS} apps/cnquery/cnquery.go) 38 @: 39 40 # ๐งน CLEAN # 41 42 clean/proto: 43 find . -not -path './.*' \( -name '*.ranger.go' -or -name '*.pb.go' -or -name '*.actions.go' -or -name '*-packr.go' -or -name '*.swagger.json' \) -delete 44 45 .PHONY: version 46 version: 47 @echo $(VERSION) 48 49 # ๐จ TOOLS # 50 51 prep: prep/tools 52 53 prep/tools/windows: 54 go get -u google.golang.org/protobuf 55 go get -u gotest.tools/gotestsum 56 57 prep/tools: 58 # protobuf tooling 59 go install google.golang.org/protobuf/cmd/protoc-gen-go@latest 60 go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest 61 go install go.mondoo.com/ranger-rpc/protoc-gen-rangerrpc@latest 62 go install go.mondoo.com/ranger-rpc/protoc-gen-rangerrpc-swagger@latest 63 # additional helper 64 go install gotest.tools/gotestsum@latest 65 go install github.com/golangci/golangci-lint/cmd/golangci-lint@latest 66 go install github.com/hashicorp/copywrite@latest 67 68 # ๐ MQL/MOTOR # 69 70 cnquery/generate: clean/proto llx/generate shared/generate providers explorer/generate 71 72 define buildProvider 73 $(eval $@_HOME = $(1)) 74 $(eval $@_NAME = $(shell basename ${$@_HOME})) 75 $(eval $@_DIST = "${$@_HOME}"/dist) 76 $(eval $@_DIST_BIN = "./dist/${$@_NAME}") 77 $(eval $@_BIN = "${$@_DIST}"/"${$@_NAME}") 78 echo "--> [${$@_NAME}] process resources" 79 ./lr go ${$@_HOME}/resources/${$@_NAME}.lr --dist ${$@_DIST} 80 ./lr docs yaml ${$@_HOME}/resources/${$@_NAME}.lr --docs-file ${$@_HOME}/resources/${$@_NAME}.lr.manifest.yaml 81 ./lr docs json ${$@_HOME}/resources/${$@_NAME}.lr.manifest.yaml 82 echo "--> [${$@_NAME}] generate CLI json" 83 cd ${$@_HOME} && go run ./gen/main.go . 84 echo "--> [${$@_NAME}] creating ${$@_BIN}" 85 cd ${$@_HOME} && GOOS=${TARGETOS} go build -o ${$@_DIST_BIN}${BIN_SUFFIX} ./main.go 86 endef 87 88 define buildProviderDist 89 $(eval $@_HOME = $(1)) 90 $(eval $@_NAME = $(shell basename ${$@_HOME})) 91 $(eval $@_DIST = "${$@_HOME}"/dist) 92 $(eval $@_DIST_BIN = "./dist/${$@_NAME}") 93 $(eval $@_BIN = "${$@_DIST}"/"${$@_NAME}") 94 echo "--> [${$@_NAME}] process resources" 95 ./lr go ${$@_HOME}/resources/${$@_NAME}.lr --dist ${$@_DIST} 96 ./lr docs yaml ${$@_HOME}/resources/${$@_NAME}.lr --docs-file ${$@_HOME}/resources/${$@_NAME}.lr.manifest.yaml 97 ./lr docs json ${$@_HOME}/resources/${$@_NAME}.lr.manifest.yaml 98 echo "--> [${$@_NAME}] generate CLI json" 99 cd ${$@_HOME} && go run ./gen/main.go . 100 echo "--> [${$@_NAME}] creating ${$@_BIN}" 101 cd ${$@_HOME} && CGO_ENABLED=0 GOOS=${TARGETOS} go build ${LDFLAGSDIST} -o ${$@_DIST_BIN}${BIN_SUFFIX} ./main.go 102 endef 103 104 define installProvider 105 $(eval $@_HOME = $(1)) 106 $(eval $@_NAME = $(shell basename ${$@_HOME})) 107 $(eval $@_DIST = "${$@_HOME}"/dist) 108 $(eval $@_BIN = "${$@_DIST}"/"${$@_NAME}") 109 $(eval $@_DST = "$(HOME)/.config/mondoo/providers/${$@_NAME}") 110 echo "--> install ${$@_NAME}" 111 install -d "${$@_DST}" 112 install -m 755 ./${$@_DIST}/${$@_NAME} ${$@_DST}/ 113 install -m 644 ./${$@_DIST}/${$@_NAME}.json ${$@_DST}/ 114 install -m 644 ./${$@_DIST}/${$@_NAME}.resources.json ${$@_DST}/ 115 endef 116 117 define bundleProvider 118 $(eval $@_HOME = $(1)) 119 $(eval $@_NAME = $(shell basename ${$@_HOME})) 120 $(eval $@_DIST = "${$@_HOME}"/dist) 121 $(eval $@_DST = "${$@_DIST}/${$@_NAME}.tar.xz") 122 echo "--> bundle ${$@_NAME} to ${$@_DST} (this may take a while)" 123 tar -cf ${$@_DST} --no-same-owner \ 124 --use-compress-program='xz -9v' \ 125 -C ${$@_DIST} \ 126 ${$@_NAME} ${$@_NAME}.json ${$@_NAME}.resources.json 127 ls -lha ${$@_DST} 128 endef 129 130 define testProvider 131 $(eval $@_HOME = $(1)) 132 $(eval $@_NAME = $(shell basename ${$@_HOME})) 133 $(eval $@_PKGS = $(shell go list ./${$@_HOME}/...)) 134 echo "--> test ${$@_NAME} in ${$@_HOME}" 135 gotestsum --junitfile ./report_${$@_NAME}.xml --format pkgname -- -cover ${$@_PKGS} 136 endef 137 138 define testGoModProvider 139 $(eval $@_HOME = $(1)) 140 $(eval $@_NAME = $(shell basename ${$@_HOME})) 141 $(eval $@_PKGS = $(shell bash -c "cd ${$@_HOME} && go list ./...")) 142 echo "--> test ${$@_NAME} in ${$@_HOME}" 143 cd ${$@_HOME} && gotestsum --junitfile ../../report_${$@_NAME}.xml --format pkgname -- -cover ${$@_PKGS} 144 endef 145 146 .PHONY: providers 147 providers: providers/proto providers/config providers/build 148 149 .PHONY: providers/proto 150 providers/proto: 151 go generate . 152 go generate ./providers-sdk/v1/vault 153 go generate ./providers-sdk/v1/resources 154 go generate ./providers-sdk/v1/inventory 155 go generate ./providers-sdk/v1/plugin 156 157 .PHONY: providers/config 158 providers/config: 159 go run ./providers-sdk/v1/util/configure/configure.go -f providers.yaml -o providers/builtin_dev.go 160 161 .PHONY: providers/lr 162 providers/lr: 163 go build -o lr ./providers-sdk/v1/lr/cli/main.go 164 165 .PHONY: providers/build 166 # Note we need \ to escape the target line into multiple lines 167 providers/build: providers/build/mock \ 168 providers/build/core \ 169 providers/build/network \ 170 providers/build/os \ 171 providers/build/ipmi \ 172 providers/build/oci \ 173 providers/build/slack \ 174 providers/build/github \ 175 providers/build/gitlab \ 176 providers/build/terraform \ 177 providers/build/vsphere \ 178 providers/build/opcua \ 179 providers/build/okta \ 180 providers/build/google-workspace \ 181 providers/build/arista \ 182 providers/build/equinix \ 183 providers/build/vcd \ 184 providers/build/gcp \ 185 providers/build/k8s \ 186 providers/build/azure \ 187 providers/build/ms365 \ 188 providers/build/aws 189 190 providers/build/mock: providers/lr 191 ./lr go providers-sdk/v1/testutils/mockprovider/resources/mockprovider.lr 192 193 providers/build/core: providers/lr 194 @$(call buildProvider, providers/core) 195 196 providers/build/network: providers/lr 197 @$(call buildProvider, providers/network) 198 199 providers/build/os: providers/lr 200 @$(call buildProvider, providers/os) 201 202 providers/build/ipmi: providers/lr 203 @$(call buildProvider, providers/ipmi) 204 205 providers/build/oci: providers/lr 206 @$(call buildProvider, providers/oci) 207 208 providers/build/slack: providers/lr 209 @$(call buildProvider, providers/slack) 210 211 providers/build/github: providers/lr 212 @$(call buildProvider, providers/github) 213 214 providers/build/gitlab: providers/lr 215 @$(call buildProvider, providers/gitlab) 216 217 providers/build/terraform: providers/lr 218 @$(call buildProvider, providers/terraform) 219 220 providers/build/vsphere: providers/lr 221 @$(call buildProvider, providers/vsphere) 222 223 providers/build/opcua: providers/lr 224 @$(call buildProvider, providers/opcua) 225 226 providers/build/okta: providers/lr 227 @$(call buildProvider, providers/okta) 228 229 providers/build/google-workspace: providers/lr 230 @$(call buildProvider, providers/google-workspace) 231 232 providers/build/arista: providers/lr 233 @$(call buildProvider, providers/arista) 234 235 providers/build/equinix: providers/lr 236 @$(call buildProvider, providers/equinix) 237 238 providers/build/vcd: providers/lr 239 @$(call buildProvider, providers/vcd) 240 241 providers/build/k8s: providers/lr 242 @$(call buildProvider, providers/k8s) 243 244 providers/build/gcp: providers/lr 245 @$(call buildProvider, providers/gcp) 246 247 providers/build/azure: providers/lr 248 @$(call buildProvider, providers/azure) 249 250 providers/build/aws: providers/lr 251 @$(call buildProvider, providers/aws) 252 253 providers/build/ms365: providers/lr 254 @$(call buildProvider, providers/ms365) 255 256 providers/dist: 257 @$(call buildProviderDist, providers/network) 258 @$(call buildProviderDist, providers/os) 259 @$(call buildProviderDist, providers/ipmi) 260 @$(call buildProviderDist, providers/oci) 261 @$(call buildProviderDist, providers/slack) 262 @$(call buildProviderDist, providers/github) 263 @$(call buildProviderDist, providers/gitlab) 264 @$(call buildProviderDist, providers/terraform) 265 @$(call buildProviderDist, providers/vsphere) 266 @$(call buildProviderDist, providers/opcua) 267 @$(call buildProviderDist, providers/okta) 268 @$(call buildProviderDist, providers/google-workspace) 269 @$(call buildProviderDist, providers/arista) 270 @$(call buildProviderDist, providers/equinix) 271 @$(call buildProviderDist, providers/vcd) 272 @$(call buildProviderDist, providers/gcp) 273 @$(call buildProviderDist, providers/k8s) 274 @$(call buildProviderDist, providers/azure) 275 @$(call buildProviderDist, providers/ms365) 276 @$(call buildProviderDist, providers/aws) 277 278 providers/install: 279 # @$(call installProvider, providers/core) 280 @$(call installProvider, providers/network) 281 @$(call installProvider, providers/os) 282 @$(call installProvider, providers/ipmi) 283 @$(call installProvider, providers/oci) 284 @$(call installProvider, providers/slack) 285 @$(call installProvider, providers/github) 286 @$(call installProvider, providers/gitlab) 287 @$(call installProvider, providers/terraform) 288 @$(call installProvider, providers/vsphere) 289 @$(call installProvider, providers/opcua) 290 @$(call installProvider, providers/okta) 291 @$(call installProvider, providers/google-workspace) 292 @$(call installProvider, providers/arista) 293 @$(call installProvider, providers/equinix) 294 @$(call installProvider, providers/vcd) 295 @$(call installProvider, providers/gcp) 296 @$(call installProvider, providers/k8s) 297 @$(call installProvider, providers/azure) 298 @$(call installProvider, providers/ms365) 299 @$(call installProvider, providers/aws) 300 301 providers/bundle: 302 @$(call bundleProvider, providers/network) 303 @$(call bundleProvider, providers/os) 304 @$(call bundleProvider, providers/ipmi) 305 @$(call bundleProvider, providers/oci) 306 @$(call bundleProvider, providers/slack) 307 @$(call bundleProvider, providers/github) 308 @$(call bundleProvider, providers/gitlab) 309 @$(call bundleProvider, providers/terraform) 310 @$(call bundleProvider, providers/vsphere) 311 @$(call bundleProvider, providers/opcua) 312 @$(call bundleProvider, providers/okta) 313 @$(call bundleProvider, providers/google-workspace) 314 @$(call bundleProvider, providers/arista) 315 @$(call bundleProvider, providers/equinix) 316 @$(call bundleProvider, providers/vcd) 317 @$(call bundleProvider, providers/gcp) 318 @$(call bundleProvider, providers/k8s) 319 @$(call bundleProvider, providers/azure) 320 @$(call bundleProvider, providers/ms365) 321 @$(call bundleProvider, providers/aws) 322 323 providers/test: 324 @$(call testProvider, providers/core) 325 @$(call testProvider, providers/network) 326 @$(call testProvider, providers/os) 327 @$(call testGpModProvider, providers/ipmi) 328 @$(call testGpModProvider, providers/oci) 329 @$(call testGpModProvider, providers/slack) 330 @$(call testGpModProvider, providers/github) 331 @$(call testGpModProvider, providers/gitlab) 332 @$(call testGpModProvider, providers/terraform) 333 @$(call testGpModProvider, providers/vsphere) 334 @$(call testGpModProvider, providers/opcua) 335 @$(call testGpModProvider, providers/okta) 336 @$(call testGpModProvider, providers/google-workspace) 337 @$(call testGpModProvider, providers/arista) 338 @$(call testGpModProvider, providers/equinix) 339 @$(call testGpModProvider, providers/vcd) 340 @$(call testGpModProvider, providers/gcp) 341 @$(call testGpModProvider, providers/k8s) 342 @$(call testGpModProvider, providers/azure) 343 @$(call testGpModProvider, providers/ms365) 344 @$(call testGpModProvider, providers/aws) 345 346 lr/test: 347 go test ./resources/lr/... 348 349 # TODO: migrate 350 .PHONY: lr/docs/serve 351 lr/docs/serve: 352 cd resources/docs && yarn 353 cd resources/docs && $(shell cd resources/docs && npm bin)/parcel -p 1235 index.html 354 355 # TODO: migrate 356 .PHONY: lr/docs/markdown 357 lr/docs/markdown: providers/lr 358 ./lr markdown providers/arista/resources/arista.lr \ 359 --pack-name "Arista EOS" \ 360 --description "The Arista EOS resource pack lets you use MQL to query and assess the security of your Arista EOS network devices." \ 361 --docs-file providers/arista/resources/arista.lr.manifest.yaml \ 362 --output ../docs/docs/mql/resources/arista-pack 363 ./lr markdown providers/aws/resources/aws.lr \ 364 --pack-name "Amazon Web Services (AWS)" \ 365 --description "The Amazon Web Services (AWS) resource pack lets you use MQL to query and assess the security of your AWS cloud services." \ 366 --docs-file providers/aws/resources/aws.lr.manifest.yaml \ 367 --output ../docs/docs/mql/resources/aws-pack 368 ./lr markdown providers/azure/resources/azure.lr \ 369 --pack-name "Azure" \ 370 --description "The Azure resource pack lets you use MQL to query and assess the security of your Azure cloud services." \ 371 --docs-file providers/azure/resources/azure.lr.manifest.yaml \ 372 --output ../docs/docs/mql/resources/azure-pack 373 ./lr markdown providers/core/resources/core.lr \ 374 --pack-name "Core" \ 375 --description "The Core pack provides basic MQL resources that let you query and assess the security." \ 376 --docs-file providers/core/resources/core.lr.manifest.yaml \ 377 --output ../docs/docs/mql/resources/core-pack 378 ./lr markdown providers/equinix/resources/equinix.lr \ 379 --pack-name "Equinix" \ 380 --description "The Equinix resource pack lets you use MQL to query and assess the security of your Equinix Metal services." \ 381 --docs-file providers/equinix/resources/equinix.lr.manifest.yaml \ 382 --output ../docs/docs/mql/resources/equinix-pack 383 ./lr markdown providers/gcp/resources/gcp.lr \ 384 --pack-name "Google Cloud Platform (GCP)" \ 385 --description "The Google Cloud Platform (GCP) resource pack lets you use MQL to query and assess the security of your GCP cloud services." \ 386 --docs-file providers/gcp/resources/gcp.lr.manifest.yaml \ 387 --output ../docs/docs/mql/resources/gcp-pack 388 ./lr markdown providers/github/resources/github.lr \ 389 --pack-name "GitHub" \ 390 --description "The GitHub resource pack lets you use MQL to query and assess the security of your GitHub organization and repositories." \ 391 --docs-file providers/github/resources/github.lr.manifest.yaml \ 392 --output ../docs/docs/mql/resources/github-pack 393 ./lr markdown providers/gitlab/resources/gitlab.lr \ 394 --pack-name "GitLab" \ 395 --description "The GitLab resource pack lets you use MQL to query and assess the security of your GitLab organization and repositories." \ 396 --docs-file providers/gitlab/resources/gitlab.lr.manifest.yaml \ 397 --output ../docs/docs/mql/resources/gitlab-pack 398 ./lr markdown providers/googleworkspace/resources/googleworkspace.lr \ 399 --pack-name "Google Workspace" \ 400 --description "The Google Workspace resource pack lets you use MQL to query and assess the security of your Google Workspace identities and configuration." \ 401 --docs-file providers/google-workspace/resources/google-workspace.lr.manifest.yaml \ 402 --output ../docs/docs/mql/resources/google-workspace-pack 403 ./lr markdown providers/ipmi/resources/ipmi.lr \ 404 --pack-name "IPMI" \ 405 --description "The IPMI resource pack lets you use MQL to query and assess the security of your IPMI devices." \ 406 --docs-file providers/ipmi/resources/ipmi.lr.manifest.yaml \ 407 --output ../docs/docs/mql/resources/ipmi-pack 408 ./lr markdown providers/k8s/resources/k8s.lr \ 409 --pack-name "Kubernetes (K8s)" \ 410 --description "The Kubernetes resource pack lets you use MQL to query and assess the security of your Kubernetes cluster and workloads." \ 411 --docs-file providers/k8s/resources/k8s.lr.manifest.yaml \ 412 --output ../docs/docs/mql/resources/k8s-pack 413 ./lr markdown providers/ms365/resources/ms365.lr \ 414 --pack-name "Microsoft 365 (MS365)" \ 415 --description "The Microsoft 365 (MS365) resource pack lets you use MQL to query and assess the security of your Microsoft 365 identities and configuration." \ 416 --docs-file providers/ms365/ms365.lr.manifest.yaml \ 417 --output ../docs/docs/mql/resources/ms365-pack 418 ./lr markdown providers/network/resources/network.lr \ 419 --pack-name "Network" \ 420 --description "The network resource pack lets you use MQL to query and assess the security of domains and network services." \ 421 --docs-file providers/network/resources/network.lr.manifest.yaml \ 422 --output ../docs/docs/mql/resources/network-pack 423 ./lr markdown providers/oci/resources/oci.lr \ 424 --pack-name "Oracle Cloud Infrastructure (OCI)" \ 425 --description "The Oracle Cloud Infrastructure (OCI) resource pack lets you use MQL to query and assess the security of your OCI cloud services." \ 426 --docs-file providers/oci/resources/oci.lr.manifest.yaml \ 427 --output ../docs/docs/mql/resources/oci-pack 428 ./lr markdown providers/okta/resources/okta.lr \ 429 --pack-name "Okta" \ 430 --description "The Okta resource pack lets you use MQL to query and assess the security of your Okta identities and configuration." \ 431 --docs-file providers/okta/resources/okta.lr.manifest.yaml \ 432 --output ../docs/docs/mql/resources/okta-pack 433 ./lr markdown providers/opcua/resources/opcua.lr \ 434 --pack-name "OPC UA" \ 435 --description "The OPC-UA resource pack lets you use MQL to query and assess the security of your OPC-UA servers." \ 436 --docs-file providers/opcua/resources/opcua.lr.manifest.yaml \ 437 --output ../docs/docs/mql/resources/opcua-pack 438 ./lr markdown providers/os/resources/os.lr \ 439 --pack-name "Operating Systems (OS)" \ 440 --description "The Operating Systems (OS) resource pack lets you use MQL to query and assess the security of your operating system packages and configuration." \ 441 --docs-file providers/os/os.lr.manifest.yaml \ 442 --output ../docs/docs/mql/resources/os-pack 443 ./lr markdown providers/slack/resources/slack.lr \ 444 --pack-name "Slack" \ 445 --description "The Slack resource pack lets you use MQL to query and assess the security of your Slack identities and configuration." \ 446 --docs-file providers/slack/resources/slack.lr.manifest.yaml \ 447 --output ../docs/docs/mql/resources/slack-pack 448 ./lr markdown providers/terraform/resources/terraform.lr \ 449 --pack-name "Terraform IaC" \ 450 --description "The Terraform IaC resource pack lets you use MQL to query and assess the security of your Terraform HCL, plan and state resources." \ 451 --docs-file providers/terraform/resources/terraform.lr.manifest.yaml \ 452 --output ../docs/docs/mql/resources/terraform-pack 453 ./lr markdown providers/vcd/resources/vcd.lr \ 454 --pack-name "VMware Cloud Director" \ 455 --description "The VMware Cloud Director resource pack lets you use MQL to query and assess the security of your VMware Cloud Director configuration." \ 456 --docs-file providers/vcd/resources/vcd.lr.manifest.yaml \ 457 --output ../docs/docs/mql/resources/vcd-pack 458 ./lr markdown providers/vsphere/resources/vsphere.lr \ 459 --pack-name "VMware vSphere" \ 460 --description "The VMware vSphere resource pack lets you use MQL to query and assess the security of your VMware vSphere hosts and services." \ 461 --docs-file providers/vsphere/resources/vsphere.lr.manifest.yaml \ 462 --output ../docs/docs/mql/resources/vsphere-pack 463 464 llx/generate: 465 go generate ./llx 466 467 .PHONY: llx 468 llx: | llx/generate llx/test 469 470 llx/test: 471 go test -timeout 5s $(shell go list ./llx/... | grep -v '/vendor/') 472 473 .PHONY: mqlc 474 mqlc: | llx mqlc/test 475 476 mqlc/test: 477 go test -timeout 5s $(shell go list ./mqlc/... | grep -v '/vendor/') 478 479 explorer/generate: 480 go generate ./explorer 481 go generate ./explorer/scan 482 483 # ๐ Binary / Build # 484 485 .PHONY: cnquery/build 486 cnquery/build: 487 go build ${LDFLAGSDIST} apps/cnquery/cnquery.go 488 489 .PHONY: cnquery/build/linux 490 cnquery/build/linux: 491 GOOS=linux GOARCH=amd64 go build ${LDFLAGSDIST} apps/cnquery/cnquery.go 492 493 .PHONY: cnquery/build/windows 494 cnquery/build/windows: 495 GOOS=windows GOARCH=amd64 go build ${LDFLAGSDIST} apps/cnquery/cnquery.go 496 497 cnquery/build/darwin: 498 GOOS=darwin go build ${LDFLAGSDIST} apps/cnquery/cnquery.go 499 500 .PHONY: cnquery/install 501 cnquery/install: 502 GOBIN=${GOPATH}/bin go install ${LDFLAGSDIST} apps/cnquery/cnquery.go 503 504 cnquery/dist/goreleaser/stable: 505 goreleaser release --clean --skip-publish --skip-validate -f .goreleaser.yml --timeout 120m 506 507 cnquery/dist/goreleaser/edge: 508 goreleaser release --clean --skip-publish --skip-validate -f .goreleaser.yml --timeout 120m --snapshot 509 510 shared/generate: 511 go generate ./shared/proto/. 512 go generate ./providers-sdk/v1/upstream/ 513 go generate ./providers-sdk/v1/upstream/health 514 go generate ./providers-sdk/v1/upstream/mvd/cvss 515 go generate ./providers-sdk/v1/upstream/mvd 516 517 # โน๐ฝโ Testing # 518 519 test/lint: test/lint/golangci-lint/run 520 521 test: test/go test/lint 522 523 test/go: cnquery/generate test/go/plain 524 525 test/go/plain: 526 go test -cover $(shell go list ./... | grep -v '/providers/') 527 528 test/go/plain-ci: prep/tools providers/build providers/test 529 gotestsum --junitfile report.xml --format pkgname -- -cover $(shell go list ./... | grep -v '/vendor/' | grep -v '/providers/') 530 531 .PHONY: test/lint/staticcheck 532 test/lint/staticcheck: 533 staticcheck $(shell go list ./... | grep -v /providers/slack) 534 535 .PHONY: test/lint/govet 536 test/lint/govet: 537 go vet $(shell go list ./... | grep -v /providers/slack) 538 539 .PHONY: test/lint/golangci-lint/run 540 test/lint/golangci-lint/run: prep/tools 541 golangci-lint --version 542 golangci-lint run 543 544 license: license/headers/check 545 546 license/headers/check: 547 copywrite headers --plan 548 549 license/headers/apply: 550 copywrite headers