From b41e8f158cf79dc9c1ff02b754109892dfe5fc39 Mon Sep 17 00:00:00 2001 From: Colton Padden Date: Wed, 17 Nov 2021 08:48:28 -0500 Subject: [PATCH 1/2] Support bucketRootPath configuration for AWS and GCS in publish commands Introduces command options `--awsBucketRootPath` and `--gcsBucketRootPath` which map to respective publisher configurations, allowing users to upload files to S3 and GCS in a non-root directory. Signed-off-by: Colton Padden --- .changeset/famous-donuts-warn.md | 5 +++++ packages/techdocs-cli/src/commands/index.ts | 8 ++++++++ packages/techdocs-cli/src/lib/PublisherConfig.test.ts | 8 ++++++++ packages/techdocs-cli/src/lib/PublisherConfig.ts | 2 ++ 4 files changed, 23 insertions(+) create mode 100644 .changeset/famous-donuts-warn.md diff --git a/.changeset/famous-donuts-warn.md b/.changeset/famous-donuts-warn.md new file mode 100644 index 0000000000..2fd9346ee2 --- /dev/null +++ b/.changeset/famous-donuts-warn.md @@ -0,0 +1,5 @@ +--- +'@techdocs/cli': patch +--- + +Add support for specifying bucketRootPath for AWS and GCS publishers diff --git a/packages/techdocs-cli/src/commands/index.ts b/packages/techdocs-cli/src/commands/index.ts index 776b6dad00..280072cfd9 100644 --- a/packages/techdocs-cli/src/commands/index.ts +++ b/packages/techdocs-cli/src/commands/index.ts @@ -90,6 +90,10 @@ export function registerCommands(program: CommanderStatic) { '--awsS3ForcePathStyle', 'Optional AWS S3 option to force path style.', ) + .option( + '--awsBucketRootPath', + 'Optional sub-directory to store files in Amazon S3', + ) .option( '--osCredentialId ', '(Required for OpenStack) specify when --publisher-type openStackSwift', @@ -177,6 +181,10 @@ export function registerCommands(program: CommanderStatic) { '--osSwiftUrl ', '(Required for OpenStack) specify when --publisher-type openStackSwift', ) + .option( + '--gcsBucketRootPath', + 'Optional sub-directory to store files in Google cloud storage', + ) .option( '--directory ', 'Path of the directory containing generated files to publish', diff --git a/packages/techdocs-cli/src/lib/PublisherConfig.test.ts b/packages/techdocs-cli/src/lib/PublisherConfig.test.ts index 0a4899f70d..519972c03d 100644 --- a/packages/techdocs-cli/src/lib/PublisherConfig.test.ts +++ b/packages/techdocs-cli/src/lib/PublisherConfig.test.ts @@ -68,6 +68,7 @@ describe('getValidPublisherConfig', () => { const config = { publisherType: 'awsS3', storageName: 'someStorageName', + awsBucketRootPath: 'backstage-data/techdocs', } as unknown as Command; const actualConfig = PublisherConfig.getValidConfig(config); @@ -75,6 +76,9 @@ describe('getValidPublisherConfig', () => { expect( actualConfig.getString('techdocs.publisher.awsS3.bucketName'), ).toBe('someStorageName'); + expect( + actualConfig.getString('techdocs.publisher.awsS3.bucketRootPath'), + ).toBe('backstage-data/techdocs'); }); }); @@ -127,6 +131,7 @@ describe('getValidPublisherConfig', () => { const config = { publisherType: 'googleGcs', storageName: 'someStorageName', + gcsBucketRootPath: 'backstage-data/techdocs', } as unknown as Command; const actualConfig = PublisherConfig.getValidConfig(config); @@ -136,6 +141,9 @@ describe('getValidPublisherConfig', () => { expect( actualConfig.getString('techdocs.publisher.googleGcs.bucketName'), ).toBe('someStorageName'); + expect( + actualConfig.getString('techdocs.publisher.googleGcs.bucketRootPath'), + ).toBe('backstage-data/techdocs'); }); }); }); diff --git a/packages/techdocs-cli/src/lib/PublisherConfig.ts b/packages/techdocs-cli/src/lib/PublisherConfig.ts index 6243348156..e855d573ce 100644 --- a/packages/techdocs-cli/src/lib/PublisherConfig.ts +++ b/packages/techdocs-cli/src/lib/PublisherConfig.ts @@ -85,6 +85,7 @@ export class PublisherConfig { type: 'awsS3', awsS3: { bucketName: cmd.storageName, + ...(cmd.awsBucketRootPath && { bucketRootPath: cmd.awsBucketRootPath }), ...(cmd.awsRoleArn && { credentials: { roleArn: cmd.awsRoleArn } }), ...(cmd.awsEndpoint && { endpoint: cmd.awsEndpoint }), ...(cmd.awsS3ForcePathStyle && { s3ForcePathStyle: true }), @@ -122,6 +123,7 @@ export class PublisherConfig { type: 'googleGcs', googleGcs: { bucketName: cmd.storageName, + ...(cmd.gcsBucketRootPath && { bucketRootPath: cmd.gcsBucketRootPath }), }, }; } From 1578ad341b2105faed1acdf860ee7902ee56dcb2 Mon Sep 17 00:00:00 2001 From: Colton Padden Date: Wed, 17 Nov 2021 10:29:39 -0500 Subject: [PATCH 2/2] rename famous-donuts-warn.md to techdocs-famous-donuts-warn.md Signed-off-by: Colton Padden --- .../{famous-donuts-warn.md => techdocs-famous-donuts-warn.md} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename .changeset/{famous-donuts-warn.md => techdocs-famous-donuts-warn.md} (100%) diff --git a/.changeset/famous-donuts-warn.md b/.changeset/techdocs-famous-donuts-warn.md similarity index 100% rename from .changeset/famous-donuts-warn.md rename to .changeset/techdocs-famous-donuts-warn.md