From 46a0049b20db9d9bf8f7f11dcc51bf6ebc16f32c Mon Sep 17 00:00:00 2001 From: cxMiguelSilva Date: Thu, 28 Jul 2022 15:35:44 +0100 Subject: [PATCH 1/6] feat(pulumi): add suppoert to pulumi yaml parsing --- .github/scripts/metrics/get_metrics.py | 3 +- .../queries-validator/metadata-schema.json | 3 +- .github/scripts/server-mock/package-lock.json | 583 ++---------------- assets/libraries/pulumi.rego | 1 + docs/commands.md | 2 +- docs/dockerhub.md | 2 +- docs/platforms.md | 5 + e2e/fixtures/E2E_CLI_010 | 1 + e2e/fixtures/E2E_CLI_013 | 1 + e2e/fixtures/assets/scan_help | 2 +- e2e/fixtures/schemas/result.json | 1 + e2e/fixtures/schemas/resultBoM.json | 1 + internal/constants/constants.go | 1 + pkg/analyzer/analyzer.go | 12 + pkg/analyzer/analyzer_test.go | 2 +- pkg/engine/source/filesystem.go | 2 + pkg/engine/source/filesystem_test.go | 1 + pkg/parser/yaml/parser.go | 1 + pkg/parser/yaml/parser_test.go | 1 + res/demoPulumi.yaml | 28 + test/fixtures/analyzer_test/pulumi.yaml | 28 + 21 files changed, 153 insertions(+), 528 deletions(-) create mode 100644 assets/libraries/pulumi.rego create mode 100644 res/demoPulumi.yaml create mode 100644 test/fixtures/analyzer_test/pulumi.yaml diff --git a/.github/scripts/metrics/get_metrics.py b/.github/scripts/metrics/get_metrics.py index b194935f922..5a53fd03562 100644 --- a/.github/scripts/metrics/get_metrics.py +++ b/.github/scripts/metrics/get_metrics.py @@ -20,6 +20,7 @@ 'grpc': os.path.join(queries_basepath, 'grpc', '*'), 'gdm': os.path.join(queries_basepath, 'googleDeploymentManager', '*'), 'dockerCompose': os.path.join(queries_basepath, 'dockerCompose', '*'), + 'pulumi': os.path.join(queries_basepath, 'pulumi', '*'), } samples_ext = { 'azureresourcemanager': ['json'], @@ -35,7 +36,7 @@ 'grpc': ['proto'], 'gdm': ['yaml'], 'dockerCompose': ['dockerCompose'], - + 'pulumi': ['yaml'], } summary = { 'total': 0, diff --git a/.github/scripts/queries-validator/metadata-schema.json b/.github/scripts/queries-validator/metadata-schema.json index 34d18648c68..d1ebfcaed91 100644 --- a/.github/scripts/queries-validator/metadata-schema.json +++ b/.github/scripts/queries-validator/metadata-schema.json @@ -95,7 +95,8 @@ "Knative", "Kubernetes", "OpenAPI", - "Terraform" + "Terraform", + "Pulumi" ] }, "descriptionID": { diff --git a/.github/scripts/server-mock/package-lock.json b/.github/scripts/server-mock/package-lock.json index 8afa0048494..0bce48d8f65 100644 --- a/.github/scripts/server-mock/package-lock.json +++ b/.github/scripts/server-mock/package-lock.json @@ -1,518 +1,8 @@ { "name": "server-mock", "version": "1.0.0", - "lockfileVersion": 2, + "lockfileVersion": 1, "requires": true, - "packages": { - "": { - "name": "server-mock", - "version": "1.0.0", - "license": "ISC", - "dependencies": { - "express": "^4.17.2" - } - }, - "node_modules/accepts": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", - "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", - "dependencies": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" - }, - "node_modules/body-parser": { - "version": "1.19.1", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.1.tgz", - "integrity": "sha512-8ljfQi5eBk8EJfECMrgqNGWPEY5jWP+1IzkzkGdFFEwFQZZyaZ21UqdaHktgiMlH0xLHqIFtE/u2OYE5dOtViA==", - "dependencies": { - "bytes": "3.1.1", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "~1.1.2", - "http-errors": "1.8.1", - "iconv-lite": "0.4.24", - "on-finished": "~2.3.0", - "qs": "6.9.6", - "raw-body": "2.4.2", - "type-is": "~1.6.18" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/bytes": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.1.tgz", - "integrity": "sha512-dWe4nWO/ruEOY7HkUJ5gFt1DCFV9zPRoJr8pV0/ASQermOZjtq8jMjOprC0Kd10GLN+l7xaUPvxzJFWtxGu8Fg==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/content-disposition": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", - "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", - "dependencies": { - "safe-buffer": "5.2.1" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/content-type": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/cookie": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz", - "integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" - }, - "node_modules/debug": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", - "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/destroy": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" - }, - "node_modules/ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" - }, - "node_modules/encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" - }, - "node_modules/etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/express": { - "version": "4.17.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.17.2.tgz", - "integrity": "sha512-oxlxJxcQlYwqPWKVJJtvQiwHgosH/LrLSPA+H4UxpyvSS6jC5aH+5MoHFM+KABgTOt0APue4w66Ha8jCUo9QGg==", - "dependencies": { - "accepts": "~1.3.7", - "array-flatten": "1.1.1", - "body-parser": "1.19.1", - "content-disposition": "0.5.4", - "content-type": "~1.0.4", - "cookie": "0.4.1", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "~1.1.2", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "~1.1.2", - "fresh": "0.5.2", - "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.7", - "qs": "6.9.6", - "range-parser": "~1.2.1", - "safe-buffer": "5.2.1", - "send": "0.17.2", - "serve-static": "1.14.2", - "setprototypeof": "1.2.0", - "statuses": "~1.5.0", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" - }, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/finalhandler": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", - "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", - "dependencies": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "statuses": "~1.5.0", - "unpipe": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/forwarded": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", - "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/http-errors": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", - "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", - "dependencies": { - "depd": "~1.1.2", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.1" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "node_modules/ipaddr.js": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" - }, - "node_modules/methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/mime-db": { - "version": "1.51.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz", - "integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.34", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.34.tgz", - "integrity": "sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==", - "dependencies": { - "mime-db": "1.51.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" - }, - "node_modules/negotiator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", - "dependencies": { - "ee-first": "1.1.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" - }, - "node_modules/proxy-addr": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", - "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", - "dependencies": { - "forwarded": "0.2.0", - "ipaddr.js": "1.9.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/qs": { - "version": "6.9.6", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.6.tgz", - "integrity": "sha512-TIRk4aqYLNoJUbd+g2lEdz5kLWIuTMRagAXxl78Q0RiVjAOugHmeKNGdd3cwo/ktpf9aL9epCfFqWDEKysUlLQ==", - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/raw-body": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.2.tgz", - "integrity": "sha512-RPMAFUJP19WIet/99ngh6Iv8fzAbqum4Li7AD6DtGaW2RpMB/11xDoalPiJMTbu6I3hkbMVkATvZrqb9EEqeeQ==", - "dependencies": { - "bytes": "3.1.1", - "http-errors": "1.8.1", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - }, - "node_modules/send": { - "version": "0.17.2", - "resolved": "https://registry.npmjs.org/send/-/send-0.17.2.tgz", - "integrity": "sha512-UJYB6wFSJE3G00nEivR5rgWp8c2xXvJ3OPWPhmuteU0IKj8nKbG3DrjiOmLwpnHGYWAVwA69zmTm++YG0Hmwww==", - "dependencies": { - "debug": "2.6.9", - "depd": "~1.1.2", - "destroy": "~1.0.4", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "1.8.1", - "mime": "1.6.0", - "ms": "2.1.3", - "on-finished": "~2.3.0", - "range-parser": "~1.2.1", - "statuses": "~1.5.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/send/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" - }, - "node_modules/serve-static": { - "version": "1.14.2", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.2.tgz", - "integrity": "sha512-+TMNA9AFxUEGuC0z2mevogSnn9MXKb4fa7ngeRMJaaGv8vTwnIEkKi+QGvPt33HSnf8pRS+WGM0EbMtCJLKMBQ==", - "dependencies": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.17.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" - }, - "node_modules/statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/toidentifier": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", - "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", - "engines": { - "node": ">=0.6" - } - }, - "node_modules/type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "dependencies": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", - "engines": { - "node": ">= 0.8" - } - } - }, "dependencies": { "accepts": { "version": "1.3.8", @@ -543,6 +33,21 @@ "qs": "6.9.6", "raw-body": "2.4.2", "type-is": "~1.6.18" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + } } }, "bytes": { @@ -573,13 +78,6 @@ "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" }, - "debug": { - "version": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", - "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", - "requires": { - "ms": "2.1.2" - } - }, "depd": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", @@ -645,6 +143,21 @@ "type-is": "~1.6.18", "utils-merge": "1.0.1", "vary": "~1.1.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + } } }, "finalhandler": { @@ -659,6 +172,21 @@ "parseurl": "~1.3.3", "statuses": "~1.5.0", "unpipe": "~1.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + } } }, "forwarded": { @@ -734,10 +262,6 @@ "mime-db": "1.51.0" } }, - "ms": { - "version": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" - }, "negotiator": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", @@ -821,6 +345,21 @@ "statuses": "~1.5.0" }, "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + }, + "dependencies": { + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + } + } + }, "ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", diff --git a/assets/libraries/pulumi.rego b/assets/libraries/pulumi.rego new file mode 100644 index 00000000000..1348211bdd6 --- /dev/null +++ b/assets/libraries/pulumi.rego @@ -0,0 +1 @@ +package generic.pulumi diff --git a/docs/commands.md b/docs/commands.md index c60857d5d90..b9cf25f9e78 100644 --- a/docs/commands.md +++ b/docs/commands.md @@ -92,7 +92,7 @@ Flags: -r, --secrets-regexes-path string path to secrets regex rules configuration file --timeout int number of seconds the query has to execute before being canceled (default 60) -t, --type strings case insensitive list of platform types to scan - (Ansible, AzureResourceManager, Buildah, CloudFormation, Crossplane, DockerCompose, Dockerfile, GRPC, GoogleDeploymentManager, Knative, Kubernetes, OpenAPI, Terraform) + (Ansible, AzureResourceManager, Buildah, CloudFormation, Crossplane, DockerCompose, Dockerfile, GRPC, GoogleDeploymentManager, Knative, Kubernetes, OpenAPI, Pulumi, Terraform) Global Flags: --ci display only log messages to CLI output (mutually exclusive with silent) diff --git a/docs/dockerhub.md b/docs/dockerhub.md index efa8f067f8d..71a1b559f01 100644 --- a/docs/dockerhub.md +++ b/docs/dockerhub.md @@ -102,7 +102,7 @@ Flags: -r, --secrets-regexes-path string path to secrets regex rules configuration file --timeout int number of seconds the query has to execute before being canceled (default 60) -t, --type strings case insensitive list of platform types to scan - (Ansible, AzureResourceManager, Buildah, CloudFormation, Crossplane, DockerCompose, Dockerfile, GRPC, GoogleDeploymentManager, Knative, Kubernetes, OpenAPI, Terraform) + (Ansible, AzureResourceManager, Buildah, CloudFormation, Crossplane, DockerCompose, Dockerfile, GRPC, GoogleDeploymentManager, Knative, Kubernetes, OpenAPI, Pulumi, Terraform) Global Flags: --ci display only log messages to CLI output (mutually exclusive with silent) diff --git a/docs/platforms.md b/docs/platforms.md index 208f2723003..a8a52bfedd7 100644 --- a/docs/platforms.md +++ b/docs/platforms.md @@ -109,6 +109,11 @@ KICS supports scanning Kubernetes manifests with `.yaml` extension. KICS supports scanning Swagger 2.0 and OpenAPI 3.0 specs with `.json` and `.yaml` extension. +## Pulumi + +KICS supports scanning Pulumi manifests with `.yaml` extension. + + ## Google Deployment Manager KICS supports scanning Google Deployment Manager files with `.yaml` extension. diff --git a/e2e/fixtures/E2E_CLI_010 b/e2e/fixtures/E2E_CLI_010 index 9a81c961927..2b86b7ebf8a 100644 --- a/e2e/fixtures/E2E_CLI_010 +++ b/e2e/fixtures/E2E_CLI_010 @@ -12,5 +12,6 @@ valid arguments: Knative Kubernetes OpenAPI + Pulumi Terraform {{.ScanHelp}} diff --git a/e2e/fixtures/E2E_CLI_013 b/e2e/fixtures/E2E_CLI_013 index 64257458626..a468cd86dde 100644 --- a/e2e/fixtures/E2E_CLI_013 +++ b/e2e/fixtures/E2E_CLI_013 @@ -10,4 +10,5 @@ GoogleDeploymentManager Knative Kubernetes OpenAPI +Pulumi Terraform diff --git a/e2e/fixtures/assets/scan_help b/e2e/fixtures/assets/scan_help index b14ce35f359..31b264af26b 100644 --- a/e2e/fixtures/assets/scan_help +++ b/e2e/fixtures/assets/scan_help @@ -51,7 +51,7 @@ Flags: -r, --secrets-regexes-path string path to secrets regex rules configuration file --timeout int number of seconds the query has to execute before being canceled (default 60) -t, --type strings case insensitive list of platform types to scan - (Ansible, AzureResourceManager, Buildah, CloudFormation, Crossplane, DockerCompose, Dockerfile, GRPC, GoogleDeploymentManager, Knative, Kubernetes, OpenAPI, Terraform) + (Ansible, AzureResourceManager, Buildah, CloudFormation, Crossplane, DockerCompose, Dockerfile, GRPC, GoogleDeploymentManager, Knative, Kubernetes, OpenAPI, Pulumi, Terraform) Global Flags: --ci display only log messages to CLI output (mutually exclusive with silent) diff --git a/e2e/fixtures/schemas/result.json b/e2e/fixtures/schemas/result.json index 447685ea486..401d200e76d 100644 --- a/e2e/fixtures/schemas/result.json +++ b/e2e/fixtures/schemas/result.json @@ -102,6 +102,7 @@ "Knative", "Kubernetes", "OpenAPI", + "Pulumi", "Terraform" ] }, diff --git a/e2e/fixtures/schemas/resultBoM.json b/e2e/fixtures/schemas/resultBoM.json index 520cf8c6927..a967f9c91b0 100644 --- a/e2e/fixtures/schemas/resultBoM.json +++ b/e2e/fixtures/schemas/resultBoM.json @@ -55,6 +55,7 @@ "Knative", "Kubernetes", "OpenAPI", + "Pulumi", "Terraform" ] }, diff --git a/internal/constants/constants.go b/internal/constants/constants.go index 7ee44bf95a5..2a8a3ef3e76 100644 --- a/internal/constants/constants.go +++ b/internal/constants/constants.go @@ -53,6 +53,7 @@ var ( "GoogleDeploymentManager": "googleDeploymentManager", "GRPC": "grpc", "Buildah": "buildah", + "Pulumi": "pulumi", } // AvailableSeverities - All severities available diff --git a/pkg/analyzer/analyzer.go b/pkg/analyzer/analyzer.go index deaa3e84e2a..d98699ee9f9 100644 --- a/pkg/analyzer/analyzer.go +++ b/pkg/analyzer/analyzer.go @@ -57,6 +57,9 @@ var ( dockerComposeServicesRegex = regexp.MustCompile(`\s*services\s*:`) crossPlaneRegex = regexp.MustCompile(`\s*\"?apiVersion\"?\s*:\s*(\w+\.)+crossplane\.io/v\w+\s*`) knativeRegex = regexp.MustCompile(`\s*\"?apiVersion\"?\s*:\s*(\w+\.)+knative\.dev/v\w+\s*`) + pulumiNameRegex = regexp.MustCompile(`\s*name\s*:`) + pulumiRuntimeRegex = regexp.MustCompile(`\s*runtime\s*:`) + pulumiResourcesRegex = regexp.MustCompile(`\s*resources\s*:`) ) var ( @@ -86,6 +89,7 @@ var ( "kubernetes": {"kubernetes"}, "openapi": {"openapi"}, "terraform": {"terraform", "cdkTf"}, + "pulumi": {"pulumi"}, } ) @@ -103,6 +107,7 @@ const ( dockerfile = "dockerfile" crossplane = "crossplane" knative = "knative" + pulumi = "pulumi" ) // regexSlice is a struct to contain a slice of regex @@ -209,6 +214,13 @@ var types = map[string]regexSlice{ dockerComposeServicesRegex, }, }, + "pulumi": { + []*regexp.Regexp{ + pulumiNameRegex, + pulumiRuntimeRegex, + pulumiResourcesRegex, + }, + }, } // Analyze will go through the slice paths given and determine what type of queries should be loaded diff --git a/pkg/analyzer/analyzer_test.go b/pkg/analyzer/analyzer_test.go index 25b271a4fd2..fe12df5f3ee 100644 --- a/pkg/analyzer/analyzer_test.go +++ b/pkg/analyzer/analyzer_test.go @@ -19,7 +19,7 @@ func TestAnalyzer_Analyze(t *testing.T) { { name: "analyze_test_dir_single_path", paths: []string{filepath.FromSlash("../../test/fixtures/analyzer_test")}, - wantTypes: []string{"dockerfile", "googledeploymentmanager", "cloudformation", "crossplane", "knative", "kubernetes", "openapi", "terraform", "ansible", "azureresourcemanager", "dockercompose"}, + wantTypes: []string{"dockerfile", "googledeploymentmanager", "cloudformation", "crossplane", "knative", "kubernetes", "openapi", "terraform", "ansible", "azureresourcemanager", "dockercompose", "pulumi"}, wantExclude: []string{}, wantErr: false, }, diff --git a/pkg/engine/source/filesystem.go b/pkg/engine/source/filesystem.go index 8a165719894..ca662325c0d 100644 --- a/pkg/engine/source/filesystem.go +++ b/pkg/engine/source/filesystem.go @@ -436,6 +436,8 @@ func getPlatform(metadataPlatform string) string { return "googleDeploymentManager" case "Buildah": return "buildah" + case "Pulumi": + return "pulumi" default: return "unknown" } diff --git a/pkg/engine/source/filesystem_test.go b/pkg/engine/source/filesystem_test.go index 61f23fa9dcb..202338df705 100644 --- a/pkg/engine/source/filesystem_test.go +++ b/pkg/engine/source/filesystem_test.go @@ -645,6 +645,7 @@ func TestListSupportedPlatforms(t *testing.T) { "Knative", "Kubernetes", "OpenAPI", + "Pulumi", "Terraform", } listActual := ListSupportedPlatforms() diff --git a/pkg/parser/yaml/parser.go b/pkg/parser/yaml/parser.go index 0597fc1a8f4..527289c0b0b 100644 --- a/pkg/parser/yaml/parser.go +++ b/pkg/parser/yaml/parser.go @@ -107,6 +107,7 @@ func (p *Parser) SupportedTypes() map[string]bool { "openapi": true, "googledeploymentmanager": true, "dockercompose": true, + "pulumi": true, } } diff --git a/pkg/parser/yaml/parser_test.go b/pkg/parser/yaml/parser_test.go index b8af20318b7..7c340d32103 100644 --- a/pkg/parser/yaml/parser_test.go +++ b/pkg/parser/yaml/parser_test.go @@ -35,6 +35,7 @@ func TestParser_SupportedTypes(t *testing.T) { "openapi": true, "googledeploymentmanager": true, "dockercompose": true, + "pulumi": true, }, p.SupportedTypes()) } diff --git a/res/demoPulumi.yaml b/res/demoPulumi.yaml new file mode 100644 index 00000000000..aa87f9b15ec --- /dev/null +++ b/res/demoPulumi.yaml @@ -0,0 +1,28 @@ +name: aws-eks +runtime: yaml +description: An EKS cluster +variables: + vpcId: + Fn::Invoke: + Function: aws:ec2:getVpc + Arguments: + default: true + Return: id + subnetIds: + Fn::Invoke: + Function: aws:ec2:getSubnetIds + Arguments: + vpcId: ${vpcId} + Return: ids +resources: + cluster: + type: eks:Cluster + properties: + vpcId: ${vpcId} + subnetIds: ${subnetIds} + instanceType: "t2.medium" + desiredCapacity: 2 + minSize: 1 + maxSize: 2 +outputs: + kubeconfig: ${cluster.kubeconfig} diff --git a/test/fixtures/analyzer_test/pulumi.yaml b/test/fixtures/analyzer_test/pulumi.yaml new file mode 100644 index 00000000000..aa87f9b15ec --- /dev/null +++ b/test/fixtures/analyzer_test/pulumi.yaml @@ -0,0 +1,28 @@ +name: aws-eks +runtime: yaml +description: An EKS cluster +variables: + vpcId: + Fn::Invoke: + Function: aws:ec2:getVpc + Arguments: + default: true + Return: id + subnetIds: + Fn::Invoke: + Function: aws:ec2:getSubnetIds + Arguments: + vpcId: ${vpcId} + Return: ids +resources: + cluster: + type: eks:Cluster + properties: + vpcId: ${vpcId} + subnetIds: ${subnetIds} + instanceType: "t2.medium" + desiredCapacity: 2 + minSize: 1 + maxSize: 2 +outputs: + kubeconfig: ${cluster.kubeconfig} From 4a8bd24efe87a27cb2ca8986a36fa7aa5764c9e2 Mon Sep 17 00:00:00 2001 From: cxMiguelSilva Date: Thu, 28 Jul 2022 15:41:12 +0100 Subject: [PATCH 2/6] undo package-lock.json --- .github/scripts/server-mock/package-lock.json | 583 ++++++++++++++++-- 1 file changed, 522 insertions(+), 61 deletions(-) diff --git a/.github/scripts/server-mock/package-lock.json b/.github/scripts/server-mock/package-lock.json index 0bce48d8f65..8afa0048494 100644 --- a/.github/scripts/server-mock/package-lock.json +++ b/.github/scripts/server-mock/package-lock.json @@ -1,8 +1,518 @@ { "name": "server-mock", "version": "1.0.0", - "lockfileVersion": 1, + "lockfileVersion": 2, "requires": true, + "packages": { + "": { + "name": "server-mock", + "version": "1.0.0", + "license": "ISC", + "dependencies": { + "express": "^4.17.2" + } + }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" + }, + "node_modules/body-parser": { + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.1.tgz", + "integrity": "sha512-8ljfQi5eBk8EJfECMrgqNGWPEY5jWP+1IzkzkGdFFEwFQZZyaZ21UqdaHktgiMlH0xLHqIFtE/u2OYE5dOtViA==", + "dependencies": { + "bytes": "3.1.1", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.2", + "http-errors": "1.8.1", + "iconv-lite": "0.4.24", + "on-finished": "~2.3.0", + "qs": "6.9.6", + "raw-body": "2.4.2", + "type-is": "~1.6.18" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/bytes": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.1.tgz", + "integrity": "sha512-dWe4nWO/ruEOY7HkUJ5gFt1DCFV9zPRoJr8pV0/ASQermOZjtq8jMjOprC0Kd10GLN+l7xaUPvxzJFWtxGu8Fg==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz", + "integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" + }, + "node_modules/debug": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", + "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/express": { + "version": "4.17.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.17.2.tgz", + "integrity": "sha512-oxlxJxcQlYwqPWKVJJtvQiwHgosH/LrLSPA+H4UxpyvSS6jC5aH+5MoHFM+KABgTOt0APue4w66Ha8jCUo9QGg==", + "dependencies": { + "accepts": "~1.3.7", + "array-flatten": "1.1.1", + "body-parser": "1.19.1", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.4.1", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "~1.1.2", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "~1.1.2", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.9.6", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.17.2", + "serve-static": "1.14.2", + "setprototypeof": "1.2.0", + "statuses": "~1.5.0", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/http-errors": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", + "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/mime-db": { + "version": "1.51.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz", + "integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.34", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.34.tgz", + "integrity": "sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==", + "dependencies": { + "mime-db": "1.51.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/qs": { + "version": "6.9.6", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.6.tgz", + "integrity": "sha512-TIRk4aqYLNoJUbd+g2lEdz5kLWIuTMRagAXxl78Q0RiVjAOugHmeKNGdd3cwo/ktpf9aL9epCfFqWDEKysUlLQ==", + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.2.tgz", + "integrity": "sha512-RPMAFUJP19WIet/99ngh6Iv8fzAbqum4Li7AD6DtGaW2RpMB/11xDoalPiJMTbu6I3hkbMVkATvZrqb9EEqeeQ==", + "dependencies": { + "bytes": "3.1.1", + "http-errors": "1.8.1", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "node_modules/send": { + "version": "0.17.2", + "resolved": "https://registry.npmjs.org/send/-/send-0.17.2.tgz", + "integrity": "sha512-UJYB6wFSJE3G00nEivR5rgWp8c2xXvJ3OPWPhmuteU0IKj8nKbG3DrjiOmLwpnHGYWAVwA69zmTm++YG0Hmwww==", + "dependencies": { + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "1.8.1", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "~2.3.0", + "range-parser": "~1.2.1", + "statuses": "~1.5.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "node_modules/serve-static": { + "version": "1.14.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.2.tgz", + "integrity": "sha512-+TMNA9AFxUEGuC0z2mevogSnn9MXKb4fa7ngeRMJaaGv8vTwnIEkKi+QGvPt33HSnf8pRS+WGM0EbMtCJLKMBQ==", + "dependencies": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.17.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" + }, + "node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", + "engines": { + "node": ">= 0.8" + } + } + }, "dependencies": { "accepts": { "version": "1.3.8", @@ -33,21 +543,6 @@ "qs": "6.9.6", "raw-body": "2.4.2", "type-is": "~1.6.18" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - } } }, "bytes": { @@ -78,6 +573,13 @@ "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" }, + "debug": { + "version": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", + "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", + "requires": { + "ms": "2.1.2" + } + }, "depd": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", @@ -143,21 +645,6 @@ "type-is": "~1.6.18", "utils-merge": "1.0.1", "vary": "~1.1.2" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - } } }, "finalhandler": { @@ -172,21 +659,6 @@ "parseurl": "~1.3.3", "statuses": "~1.5.0", "unpipe": "~1.0.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - } } }, "forwarded": { @@ -262,6 +734,10 @@ "mime-db": "1.51.0" } }, + "ms": { + "version": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, "negotiator": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", @@ -345,21 +821,6 @@ "statuses": "~1.5.0" }, "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - }, - "dependencies": { - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - } - } - }, "ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", From d624fe4215d373c6e85c6bec9dac579369adbae9 Mon Sep 17 00:00:00 2001 From: cxMiguelSilva Date: Thu, 28 Jul 2022 17:21:48 +0100 Subject: [PATCH 3/6] fix go lint --- pkg/engine/source/filesystem.go | 59 ++++++++++++++------------------- 1 file changed, 25 insertions(+), 34 deletions(-) diff --git a/pkg/engine/source/filesystem.go b/pkg/engine/source/filesystem.go index ca662325c0d..a30009c3788 100644 --- a/pkg/engine/source/filesystem.go +++ b/pkg/engine/source/filesystem.go @@ -406,41 +406,32 @@ func ReadMetadata(queryDir string) (map[string]interface{}, error) { return metadata, nil } +type supportedPlatforms map[string]string + func getPlatform(metadataPlatform string) string { - switch metadataPlatform { - case "Ansible": - return "ansible" - case "CloudFormation": - return "cloudFormation" - case "Common": - return "common" - case "Crossplane": - return "crossplane" - case "Dockerfile": - return "dockerfile" - case "DockerCompose": - return "dockerCompose" - case "Knative": - return "knative" - case "Kubernetes": - return "k8s" - case "OpenAPI": - return "openAPI" - case "Terraform": - return "terraform" - case "AzureResourceManager": - return "azureResourceManager" - case "GRPC": - return "grpc" - case "GoogleDeploymentManager": - return "googleDeploymentManager" - case "Buildah": - return "buildah" - case "Pulumi": - return "pulumi" - default: - return "unknown" - } + + supportedPlatforms := &supportedPlatforms{ + "Ansible": "ansible", + "CloudFormation": "cloudFormation", + "Common": "common", + "Crossplane": "crossplane", + "Dockerfile": "dockerfile", + "DockerCompose": "dockerCompose", + "Knative": "knative", + "Kubernetes": "k8s", + "OpenAPI": "openAPI", + "Terraform": "terraform", + "AzureResourceManager": "azureResourceManager", + "GRPC": "grpc", + "GoogleDeploymentManager": "googleDeploymentManager", + "Buildah": "buildah", + "Pulumi": "pulumi", + } + + if p, ok := (*supportedPlatforms)[metadataPlatform]; ok { + return p + } + return "unknown" } func readInputData(inputDataPath string) (string, error) { From 0258de58fd083bb41f3756782b60f3c50f299e77 Mon Sep 17 00:00:00 2001 From: cxMiguelSilva Date: Thu, 28 Jul 2022 17:46:47 +0100 Subject: [PATCH 4/6] changes --- pkg/analyzer/analyzer.go | 1 - pkg/engine/source/filesystem.go | 39 ++++++++++++++++----------------- 2 files changed, 19 insertions(+), 21 deletions(-) diff --git a/pkg/analyzer/analyzer.go b/pkg/analyzer/analyzer.go index d98699ee9f9..e11f3c482d6 100644 --- a/pkg/analyzer/analyzer.go +++ b/pkg/analyzer/analyzer.go @@ -107,7 +107,6 @@ const ( dockerfile = "dockerfile" crossplane = "crossplane" knative = "knative" - pulumi = "pulumi" ) // regexSlice is a struct to contain a slice of regex diff --git a/pkg/engine/source/filesystem.go b/pkg/engine/source/filesystem.go index a30009c3788..f50086689d8 100644 --- a/pkg/engine/source/filesystem.go +++ b/pkg/engine/source/filesystem.go @@ -408,27 +408,26 @@ func ReadMetadata(queryDir string) (map[string]interface{}, error) { type supportedPlatforms map[string]string -func getPlatform(metadataPlatform string) string { +var supPlatforms = &supportedPlatforms{ + "Ansible": "ansible", + "CloudFormation": "cloudFormation", + "Common": "common", + "Crossplane": "crossplane", + "Dockerfile": "dockerfile", + "DockerCompose": "dockerCompose", + "Knative": "knative", + "Kubernetes": "k8s", + "OpenAPI": "openAPI", + "Terraform": "terraform", + "AzureResourceManager": "azureResourceManager", + "GRPC": "grpc", + "GoogleDeploymentManager": "googleDeploymentManager", + "Buildah": "buildah", + "Pulumi": "pulumi", +} - supportedPlatforms := &supportedPlatforms{ - "Ansible": "ansible", - "CloudFormation": "cloudFormation", - "Common": "common", - "Crossplane": "crossplane", - "Dockerfile": "dockerfile", - "DockerCompose": "dockerCompose", - "Knative": "knative", - "Kubernetes": "k8s", - "OpenAPI": "openAPI", - "Terraform": "terraform", - "AzureResourceManager": "azureResourceManager", - "GRPC": "grpc", - "GoogleDeploymentManager": "googleDeploymentManager", - "Buildah": "buildah", - "Pulumi": "pulumi", - } - - if p, ok := (*supportedPlatforms)[metadataPlatform]; ok { +func getPlatform(metadataPlatform string) string { + if p, ok := (*supPlatforms)[metadataPlatform]; ok { return p } return "unknown" From 3b07a3b1a0d0f7b312909807548e7778930a0dc2 Mon Sep 17 00:00:00 2001 From: cxMiguelSilva Date: Fri, 29 Jul 2022 09:11:58 +0100 Subject: [PATCH 5/6] add logos to readme --- README.md | 7 +++++++ docs/img/logo-crossplane.png | Bin 0 -> 2819 bytes docs/img/logo-knative.png | Bin 0 -> 14941 bytes docs/img/logo-pulumi.png | Bin 0 -> 7192 bytes 4 files changed, 7 insertions(+) create mode 100644 docs/img/logo-crossplane.png create mode 100644 docs/img/logo-knative.png create mode 100644 docs/img/logo-pulumi.png diff --git a/README.md b/README.md index a8042cf5f64..7739fe98a03 100644 --- a/README.md +++ b/README.md @@ -43,6 +43,13 @@ Find security vulnerabilities, compliance issues, and infrastructure misconfigur Cloud Deployment Kit    SAM    Docker Compose    +Knative    +
+
+Crossplane    +Pulumi    + + Support of other solutions and additional cloud providers are on the [roadmap](docs/roadmap.md). diff --git a/docs/img/logo-crossplane.png b/docs/img/logo-crossplane.png new file mode 100644 index 0000000000000000000000000000000000000000..2c88a5ca17cd586da46d04ac0d1f0765222294a4 GIT binary patch literal 2819 zcmV+e3;gtnP)gfMN;+8(BkyU{&^t3s5VIkmQA!56#O<(yyXtQa zB@5!-@+{}c4I?G~_&w%;U-^|T9sHVSJx{KGz*D0a1p|1=qFC5{Kdg_8^{nX0_3NfA z>DRm{Y07u*0e=$m?uUFI81M>Ej?$^F8CDg$+sGSPXVt1^MMTD zU7$$Q?<1hOhpPv3+e&jFun z-V|qnmx1;M>xvO?AXPpEdfVvr2aaj6+nWbGct(y zWxFnZF@anp1wIU7&H>UGFS*bw0{S^5De?`*`413o3%P5+FBODLA&*fOG`WU+%$*Jw zzDMfYRb*=1NP=e04!}hN-LHU9Nv}EZjbS#am82I-aFVaS%AFt=F5<^Q&iAM^&dV-! z&jX!w`Fvo%i*e2YKh{DX$cT3jc)pKUH%~oj2;-a5LM{Tg)*|HR#C+2#VG%d)xYF+o zkO~YCF2Ho)u+pa#xL28TmeOaX@P{MBYh2!yTS|Jv6uoTWQ{JoC2cW9~qtG zG)?@H;u7-TYv4-~*VaYoe-I?(|B}|*UvuwPY3}c0%^P+J@UZatXKP%>oU0%Yq>qB# zKG%RR&6&qz+gFcZHktXE}JafIQv89^t?Rsow>lg$d+9TjAbS$~Qn4%^dYD+z~s- z^MEFrUHXXBr%YLE8|9%rQ^g&*((iWQkTPG?Wyk{=agZ0~8t`RXo*{f+wj0Rhym)3U zLf*q*{C# zxl1uXs=>Ge6`iq4F{|7nGqYNN)Ic+4Ybi^j243p~%uNg+pX{*qTg9$eDK8pA{-zQa zIHh3c8A4tT++;CEcV&z*QrlmYwk%+k&9AhIw@{K1b1@jemrH=Vg#0~e0VkdExj{m{ z%c9RO6l3)_%<0RLrnDzH1VDQ)2S8Qz;)RQ2B}X+eK&;yWj*_BWV+gsNmdrPp;}Jv1 z3vI^etc)>LYRe{gIUd3`Us-hlcM17($|8Ez0^~akZ^i?Ld0APOX!;BXKCvvlI6x%SW?AP-mOe%fHJZi>zCw8!Fl2#2m^iqJSad^E0pCxw;&+z zsBsB4iegNC36N!)z;J{z)*_{RKN@Huc4M`8@f%5RqS7``TyGdKQ)ydmPz+iria@ss zSZ0VoEueKUBJWlWfPP8r;{N;hyc#bIg(?# ztOBq@K9poI?{vejkq~*~rWVIN*BR(9)aWiVnb#qOXd<8J4!{Awa>~?*H(D?swaA5> z6>`AiR09xk&IuQsTyn9_(I*;irmoF@tm&AI*3^ zvEHr*eZMb`9?TWBnpIotaT89^MriXb}@*uAh z5-9MO6@Hk^(X6o?cqg7?>&Kt+tl~jl=O7Oh_^AZlgWQ9>&O%-Z`WM-g4trL)rjQS} z`ZUgy8h|`d;HP-+f;FC1t|{cLMR^@A{TH!@o>giZ@`44Ko>i_n=*>k=x{+s%nt{Af zhCEQej1qXJYe`f|Rtt{*-lr{r*v&MLf9?<$pR# V`^>HGXA=Mb002ovPDHLkV1i#TNbCRr literal 0 HcmV?d00001 diff --git a/docs/img/logo-knative.png b/docs/img/logo-knative.png new file mode 100644 index 0000000000000000000000000000000000000000..a33a4bcdff9eea50c9909b1e795c85b5cab76b9d GIT binary patch literal 14941 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 literal 0 HcmV?d00001 diff --git a/docs/img/logo-pulumi.png b/docs/img/logo-pulumi.png new file mode 100644 index 0000000000000000000000000000000000000000..36433ed9b80a021c418ee5919b8b28f8852190d3 GIT binary patch literal 7192 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 literal 0 HcmV?d00001 From fd42e3d807cae1e5468e55663b8e4e9fb334ea63 Mon Sep 17 00:00:00 2001 From: cxMiguelSilva Date: Fri, 29 Jul 2022 09:16:50 +0100 Subject: [PATCH 6/6] change crossplane logo --- docs/img/logo-crossplane.png | Bin 2819 -> 104527 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/docs/img/logo-crossplane.png b/docs/img/logo-crossplane.png index 2c88a5ca17cd586da46d04ac0d1f0765222294a4..96bd88c2cadfcf73239d9682e58a06f8c1160339 100644 GIT binary patch literal 104527 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 AmH+?% literal 2819 zcmV+e3;gtnP)gfMN;+8(BkyU{&^t3s5VIkmQA!56#O<(yyXtQa zB@5!-@+{}c4I?G~_&w%;U-^|T9sHVSJx{KGz*D0a1p|1=qFC5{Kdg_8^{nX0_3NfA z>DRm{Y07u*0e=$m?uUFI81M>Ej?$^F8CDg$+sGSPXVt1^MMTD zU7$$Q?<1hOhpPv3+e&jFun z-V|qnmx1;M>xvO?AXPpEdfVvr2aaj6+nWbGct(y zWxFnZF@anp1wIU7&H>UGFS*bw0{S^5De?`*`413o3%P5+FBODLA&*fOG`WU+%$*Jw zzDMfYRb*=1NP=e04!}hN-LHU9Nv}EZjbS#am82I-aFVaS%AFt=F5<^Q&iAM^&dV-! z&jX!w`Fvo%i*e2YKh{DX$cT3jc)pKUH%~oj2;-a5LM{Tg)*|HR#C+2#VG%d)xYF+o zkO~YCF2Ho)u+pa#xL28TmeOaX@P{MBYh2!yTS|Jv6uoTWQ{JoC2cW9~qtG zG)?@H;u7-TYv4-~*VaYoe-I?(|B}|*UvuwPY3}c0%^P+J@UZatXKP%>oU0%Yq>qB# zKG%RR&6&qz+gFcZHktXE}JafIQv89^t?Rsow>lg$d+9TjAbS$~Qn4%^dYD+z~s- z^MEFrUHXXBr%YLE8|9%rQ^g&*((iWQkTPG?Wyk{=agZ0~8t`RXo*{f+wj0Rhym)3U zLf*q*{C# zxl1uXs=>Ge6`iq4F{|7nGqYNN)Ic+4Ybi^j243p~%uNg+pX{*qTg9$eDK8pA{-zQa zIHh3c8A4tT++;CEcV&z*QrlmYwk%+k&9AhIw@{K1b1@jemrH=Vg#0~e0VkdExj{m{ z%c9RO6l3)_%<0RLrnDzH1VDQ)2S8Qz;)RQ2B}X+eK&;yWj*_BWV+gsNmdrPp;}Jv1 z3vI^etc)>LYRe{gIUd3`Us-hlcM17($|8Ez0^~akZ^i?Ld0APOX!;BXKCvvlI6x%SW?AP-mOe%fHJZi>zCw8!Fl2#2m^iqJSad^E0pCxw;&+z zsBsB4iegNC36N!)z;J{z)*_{RKN@Huc4M`8@f%5RqS7``TyGdKQ)ydmPz+iria@ss zSZ0VoEueKUBJWlWfPP8r;{N;hyc#bIg(?# ztOBq@K9poI?{vejkq~*~rWVIN*BR(9)aWiVnb#qOXd<8J4!{Awa>~?*H(D?swaA5> z6>`AiR09xk&IuQsTyn9_(I*;irmoF@tm&AI*3^ zvEHr*eZMb`9?TWBnpIotaT89^MriXb}@*uAh z5-9MO6@Hk^(X6o?cqg7?>&Kt+tl~jl=O7Oh_^AZlgWQ9>&O%-Z`WM-g4trL)rjQS} z`ZUgy8h|`d;HP-+f;FC1t|{cLMR^@A{TH!@o>giZ@`44Ko>i_n=*>k=x{+s%nt{Af zhCEQej1qXJYe`f|Rtt{*-lr{r*v&MLf9?<$pR# V`^>HGXA=Mb002ovPDHLkV1i#TNbCRr