Skip to content

Commit

Permalink
fix: add failsafe for loading invalid deps, broaden some terraform deps
Browse files Browse the repository at this point in the history
  • Loading branch information
bodinsamuel committed Sep 18, 2023
1 parent aeecebe commit a9dff95
Show file tree
Hide file tree
Showing 23 changed files with 73 additions and 45 deletions.
5 changes: 5 additions & 0 deletions src/loader.ts
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,11 @@ export function loadAllRules() {
export function loadOne(rule: Rule) {
if (rule.dependencies) {
rule.dependencies.map((dep) => {
if (dep.name === '') {
throw new Error(
`empty dependency name for ${rule.name} (${rule.type} > ${rule.tech})`
);
}
dependencies[dep.type].push({
match:
typeof dep.name === 'string' ? new RegExp(`^${dep.name}$`) : dep.name,
Expand Down
6 changes: 5 additions & 1 deletion src/rules/api/gcp.aiplatform.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,11 @@ register({
type: 'api',
dependencies: [
{ type: 'npm', name: '@google-cloud/aiplatform' },
{ type: 'terraform.resource', name: 'google_vertex_ai_index' },
{
type: 'terraform.resource',
name: /^google_vertex_/,
example: 'google_vertex_ai_dataset',
},
{
type: 'ruby',
name: /^google-cloud-ai_platform/,
Expand Down
6 changes: 5 additions & 1 deletion src/rules/api/gcp.cloudbuild.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,11 @@ register({
type: 'api',
dependencies: [
{ type: 'npm', name: '@google-cloud/cloudbuild' },
{ type: 'terraform.resource', name: 'google_cloudbuild_trigger' },
{
type: 'terraform.resource',
name: /^google_cloudbuild_/,
example: 'google_cloudbuild_trigger',
},
{
type: 'ruby',
name: /^google-cloud-build/,
Expand Down
6 changes: 5 additions & 1 deletion src/rules/api/gcp.dialogflow.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,11 @@ register({
type: 'api',
dependencies: [
{ type: 'npm', name: '@google-cloud/dialogflow' },
{ type: 'terraform.resource', name: 'google_dialogflow_agent' },
{
type: 'terraform.resource',
name: /^google_dialogflow_/,
example: 'google_dialogflow_agent',
},
{
type: 'ruby',
name: /^google-cloud-dialogflow/,
Expand Down
1 change: 0 additions & 1 deletion src/rules/api/gcp.maps.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@ register({
type: 'api',
dependencies: [
{ type: 'npm', name: '@google-cloud/maps' },
{ type: 'terraform.resource', name: '' },
{ type: 'ruby', name: 'google_maps_service' },
{ type: 'golang', name: 'cloud.google.com/go/maps' },
],
Expand Down
1 change: 0 additions & 1 deletion src/rules/api/gcp.translate.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@ register({
{ type: 'npm', name: 'google-translate-api-browser' },
{ type: 'npm', name: '@vitalets/google-translate-api' },
{ type: 'npm', name: '@iamtraction/google-translate' },
{ type: 'terraform.resource', name: '' },
{
type: 'ruby',
name: /^google-cloud-translate/,
Expand Down
6 changes: 5 additions & 1 deletion src/rules/db/firebase.firestore.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,11 @@ register({
name: 'Firebase Firestore',
type: 'db',
dependencies: [
{ type: 'terraform.resource', name: 'google_firestore_database' },
{
type: 'terraform.resource',
name: /^google_firestore_/,
example: 'google_firestore_database',
},
{ type: 'php', name: 'google/cloud-firestore' },
],
});
7 changes: 2 additions & 5 deletions src/rules/db/gcp.bigquery.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,8 @@ register({
{ type: 'npm', name: '@google-cloud/bigquery' },
{
type: 'terraform.resource',
name: 'google_bigquery_dataset',
},
{
type: 'terraform.resource',
name: 'google_bigquery_table',
name: /google_bigquery_/,
example: 'google_bigquery_dataset',
},
{ type: 'rust', name: 'gcp-bigquery-client' },
{ type: 'ruby', name: 'google-cloud-bigquery' },
Expand Down
7 changes: 2 additions & 5 deletions src/rules/db/gcp.bigtable.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,8 @@ register({
{ type: 'npm', name: '@google-cloud/bigtable' },
{
type: 'terraform.resource',
name: 'google_bigtable_instance',
},
{
type: 'terraform.resource',
name: 'google_bigtable_table',
name: /^google_bigtable_/,
example: 'google_bigtable_instance',
},
{ type: 'ruby', name: 'google-cloud-bigtable' },
{ type: 'golang', name: 'cloud.google.com/go/bigtable' },
Expand Down
3 changes: 2 additions & 1 deletion src/rules/db/gcp.datastore.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,8 @@ register({
{ type: 'npm', name: '@google-cloud/datastore' },
{
type: 'terraform.resource',
name: 'google_datastore_index',
name: /^google_datastore_/,
example: 'google_datastore_index',
},
{ type: 'ruby', name: 'google-cloud-datastore' },
{ type: 'golang', name: 'cloud.google.com/go/datastore' },
Expand Down
3 changes: 2 additions & 1 deletion src/rules/db/gcp.secretmanager.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,8 @@ register({
{ type: 'npm', name: '@google-cloud/secret-manager' },
{
type: 'terraform.resource',
name: 'google_secret_manager_secret',
name: /^google_secret_manager/,
example: 'google_secret_manager_secret',
},
{
type: 'ruby',
Expand Down
7 changes: 2 additions & 5 deletions src/rules/db/gcp.sql.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,8 @@ register({
{ type: 'npm', name: '@google-cloud/cloud-sql-connector' },
{
type: 'terraform.resource',
name: 'google_sql_database_instance',
},
{
type: 'terraform.resource',
name: 'google_sql_database',
name: /google_sql_/,
example: 'google_sql_database_instance',
},
{
type: 'ruby',
Expand Down
7 changes: 5 additions & 2 deletions src/rules/hosting/aws.amplifyhosting.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,10 @@ register({
dependencies: [
{ type: 'npm', name: 'aws-amplify' },
{ type: 'npm', name: /^@aws-amplify\//, example: '@aws-amplify/ui-react' },
{ type: 'terraform.resource', name: 'aws_amplify_app' },
{ type: 'terraform.resource', name: 'aws_amplify_backend_environment' },
{
type: 'terraform.resource',
name: /^aws_amplify_/,
example: 'aws_amplify_app',
},
],
});
7 changes: 2 additions & 5 deletions src/rules/hosting/gcp.cloudrun.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,8 @@ register({
{ type: 'npm', name: '@google-cloud/run' },
{
type: 'terraform.resource',
name: 'google_cloud_run_v2_service',
},
{
type: 'terraform.resource',
name: 'google_cloud_run_v2_job',
name: /^google_cloud_run_/,
example: 'google_cloud_run_v2_service',
},
{
type: 'ruby',
Expand Down
7 changes: 2 additions & 5 deletions src/rules/hosting/gcp.functions.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,8 @@ register({
{ type: 'npm', name: '@google-cloud/functions-framework' },
{
type: 'terraform.resource',
name: 'google_cloudfunctions_function',
},
{
type: 'terraform.resource',
name: 'google_cloudfunctions2_function',
name: /^google_cloudfunctions/,
example: 'google_cloudfunctions_function',
},
{
type: 'ruby',
Expand Down
6 changes: 5 additions & 1 deletion src/rules/hosting/gcp.gce.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,11 @@ register({
type: 'hosting',
dependencies: [
{ type: 'npm', name: '@google-cloud/compute' },
{ type: 'terraform.resource', name: 'google_compute_instance' },
{
type: 'terraform.resource',
name: /^google_compute_/,
example: 'google_compute_instance',
},
{ type: 'ruby', name: 'google-cloud-compute' },
{ type: 'golang', name: 'cloud.google.com/go/compute' },
{ type: 'php', name: 'google/cloud-compute' },
Expand Down
6 changes: 5 additions & 1 deletion src/rules/hosting/gcp.gke.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,11 @@ register({
name: 'Google Kubernetes',
type: 'hosting',
dependencies: [
{ type: 'terraform.resource', name: 'google_container_cluster' },
{
type: 'terraform.resource',
name: /^google_container_/,
example: 'google_container_cluster',
},
{ type: 'githubAction', name: 'google-github-actions/get-gke-credentials' },
],
});
3 changes: 2 additions & 1 deletion src/rules/hosting/gcp.tasks.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,8 @@ register({
{ type: 'npm', name: '@google-cloud/tasks' },
{
type: 'terraform.resource',
name: 'google_cloud_tasks_queue',
name: /^google_cloud_tasks_/,
example: 'google_cloud_tasks_queue',
},
{
type: 'ruby',
Expand Down
3 changes: 2 additions & 1 deletion src/rules/messaging/gcp.pubsub.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,8 @@ register({
{ type: 'npm', name: '@google-cloud/pubsub' },
{
type: 'terraform.resource',
name: 'google_pubsub_topic',
name: /^google_pubsub_/,
example: 'google_pubsub_topic',
},
{ type: 'golang', name: 'cloud.google.com/go/pubsub' },
{ type: 'rust', name: 'google-cloud-pubsub' },
Expand Down
8 changes: 5 additions & 3 deletions src/rules/monitoring/datadog.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,11 @@ register({
{ type: 'npm', name: 'dd-trace' },
{ type: 'npm', name: 'datadog-metrics' },
{ type: 'terraform', name: 'registry.terraform.io/datadog/datadog' },
{ type: 'terraform.resource', name: 'datadog_metric_metadata' },
{ type: 'terraform.resource', name: 'datadog_application_key' },
{ type: 'terraform.resource', name: 'datadog_monitor' },
{
type: 'terraform.resource',
name: /^datadog_/,
example: 'datadog_metric_metadata',
},
{ type: 'rust', name: 'ddtrace' },
{ type: 'rust', name: 'datadog-apm' },
{ type: 'ruby', name: 'ddtrace' },
Expand Down
6 changes: 5 additions & 1 deletion src/rules/network/gcp.dns.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,11 @@ register({
type: 'network',
dependencies: [
{ type: 'npm', name: '@google-cloud/dns' },
{ type: 'terraform.resource', name: 'google_dns_record_set' },
{
type: 'terraform.resource',
name: /^google_dns_/,
example: 'google_dns_record_set',
},
{ type: 'ruby', name: 'google-cloud-dns' },
],
});
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,6 @@ exports[`terraform (resource) > should match everything 1`] = `
"gcp.gke",
"gcp.kms",
"gcp.logging",
"gcp.maps",
"gcp.memorystore",
"gcp.pubsub",
"gcp.secretmanager",
Expand Down
6 changes: 5 additions & 1 deletion src/rules/storage/gcp.gcs.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,11 @@ register({
type: 'storage',
dependencies: [
{ type: 'npm', name: '@google-cloud/storage' },
{ type: 'terraform.resource', name: 'google_storage_bucket' },
{
type: 'terraform.resource',
name: /^google_storage_/,
example: 'google_storage_bucket',
},
{ type: 'golang', name: 'cloud.google.com/go/storage' },
{ type: 'ruby', name: 'google-cloud-storage' },
{ type: 'rust', name: 'google-cloud-storage' },
Expand Down

0 comments on commit a9dff95

Please sign in to comment.