From 28f8c8eb1be08970a1f389812a7975fdfe6b0f8a Mon Sep 17 00:00:00 2001 From: Ringo De Smet Date: Tue, 14 Nov 2023 09:30:55 +0100 Subject: [PATCH] Use Pulumi `protect` to prevent accidental repo deletion Signed-off-by: Ringo De Smet --- src/configTypes.ts | 1 + src/github/repositories.ts | 5 +++++ 2 files changed, 6 insertions(+) diff --git a/src/configTypes.ts b/src/configTypes.ts index 483e5ab..63fcf4f 100644 --- a/src/configTypes.ts +++ b/src/configTypes.ts @@ -33,6 +33,7 @@ export const Repository = RT.Record({ labels: RT.Array(Labels).optional(), import: RT.Boolean.optional(), template: RT.String.optional(), + removable: RT.Boolean.optional(), }) export type Team = Static diff --git a/src/github/repositories.ts b/src/github/repositories.ts index 63b206e..5a0130d 100644 --- a/src/github/repositories.ts +++ b/src/github/repositories.ts @@ -17,6 +17,7 @@ interface RepositoryArgs { allTeams: Map; import: boolean; template: pulumi.Input | undefined; + removable: boolean; } abstract class BaseRepository extends pulumi.ComponentResource { @@ -50,6 +51,7 @@ abstract class BaseRepository extends pulumi.ComponentResource { } ], transformations: this.repositoryTransformations(), + protect: !args.removable } ); const mainBranchProtection = new github.BranchProtection(`${name}_protect_main`, @@ -190,6 +192,7 @@ export function configureRepositories(repositoryArgs: Repository[], allTeams: Ma allTeams: allTeams, import: repositoryInfo.import || false, template: repositoryInfo.template, + removable: repositoryInfo.removable || false, }).repository); break; } @@ -202,6 +205,7 @@ export function configureRepositories(repositoryArgs: Repository[], allTeams: Ma allTeams: allTeams, import: repositoryInfo.import || false, template: repositoryInfo.template, + removable: repositoryInfo.removable || false, }).repository); break; } @@ -215,6 +219,7 @@ export function configureRepositories(repositoryArgs: Repository[], allTeams: Ma allTeams, import: repositoryInfo.import || false, template: repositoryInfo.template, + removable: repositoryInfo.removable || false, }).repository ); break;