From d2329e7486ee0507921290289399a979cce03d05 Mon Sep 17 00:00:00 2001 From: Tejas Kumar Date: Thu, 20 May 2021 16:23:13 +0200 Subject: [PATCH 1/5] Use stringifyEntityRef in place of deprecated Signed-off-by: Tejas Kumar --- plugins/techdocs-backend/src/DocsBuilder/builder.ts | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/plugins/techdocs-backend/src/DocsBuilder/builder.ts b/plugins/techdocs-backend/src/DocsBuilder/builder.ts index d1aa1e08be..4c4744879c 100644 --- a/plugins/techdocs-backend/src/DocsBuilder/builder.ts +++ b/plugins/techdocs-backend/src/DocsBuilder/builder.ts @@ -16,7 +16,7 @@ import { Entity, ENTITY_DEFAULT_NAMESPACE, - serializeEntityRef, + stringifyEntityRef, } from '@backstage/catalog-model'; import { NotModifiedError } from '@backstage/errors'; import { @@ -75,7 +75,7 @@ export class DocsBuilder { */ this.logger.info( - `Step 1 of 3: Preparing docs for entity ${serializeEntityRef( + `Step 1 of 3: Preparing docs for entity ${stringifyEntityRef( this.entity, )}`, ); @@ -116,7 +116,7 @@ export class DocsBuilder { // Set last check happened to now new BuildMetadataStorage(this.entity.metadata.uid).setLastUpdated(); this.logger.debug( - `Docs for ${serializeEntityRef( + `Docs for ${stringifyEntityRef( this.entity, )} are unmodified. Using cache, skipping generate and prepare`, ); @@ -126,7 +126,7 @@ export class DocsBuilder { } this.logger.info( - `Prepare step completed for entity ${serializeEntityRef( + `Prepare step completed for entity ${stringifyEntityRef( this.entity, )}, stored at ${preparedDir}`, ); @@ -136,7 +136,7 @@ export class DocsBuilder { */ this.logger.info( - `Step 2 of 3: Generating docs for entity ${serializeEntityRef( + `Step 2 of 3: Generating docs for entity ${stringifyEntityRef( this.entity, )}`, ); @@ -176,7 +176,7 @@ export class DocsBuilder { */ this.logger.info( - `Step 3 of 3: Publishing docs for entity ${serializeEntityRef( + `Step 3 of 3: Publishing docs for entity ${stringifyEntityRef( this.entity, )}`, ); From a345a2e019e0f33210cd72772c4990624644e093 Mon Sep 17 00:00:00 2001 From: Tejas Kumar Date: Thu, 20 May 2021 16:32:31 +0200 Subject: [PATCH 2/5] Use backend.workingDir for techdocs Signed-off-by: Tejas Kumar --- plugins/techdocs-backend/src/DocsBuilder/builder.ts | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/plugins/techdocs-backend/src/DocsBuilder/builder.ts b/plugins/techdocs-backend/src/DocsBuilder/builder.ts index 4c4744879c..8495e88d37 100644 --- a/plugins/techdocs-backend/src/DocsBuilder/builder.ts +++ b/plugins/techdocs-backend/src/DocsBuilder/builder.ts @@ -13,6 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ +import { getRootLogger, loadBackendConfig } from '@backstage/backend-common'; import { Entity, ENTITY_DEFAULT_NAMESPACE, @@ -142,7 +143,12 @@ export class DocsBuilder { ); // Create a temporary directory to store the generated files in. - const tmpdirPath = os.tmpdir(); + const config = await loadBackendConfig({ + argv: process.argv, + logger: getRootLogger(), + }); + const workingDir = config.get('backend.workingDirectory'); + const tmpdirPath = workingDir ? String(workingDir) : os.tmpdir(); // Fixes a problem with macOS returning a path that is a symlink const tmpdirResolvedPath = fs.realpathSync(tmpdirPath); const outputDir = await fs.mkdtemp( From d93a3f98533e496fc5a1f045f4deb49b5e8e7c53 Mon Sep 17 00:00:00 2001 From: Tejas Kumar Date: Thu, 20 May 2021 16:34:04 +0200 Subject: [PATCH 3/5] Refactor to use optional string Signed-off-by: Tejas Kumar --- plugins/techdocs-backend/src/DocsBuilder/builder.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/techdocs-backend/src/DocsBuilder/builder.ts b/plugins/techdocs-backend/src/DocsBuilder/builder.ts index 8495e88d37..e43ed72c31 100644 --- a/plugins/techdocs-backend/src/DocsBuilder/builder.ts +++ b/plugins/techdocs-backend/src/DocsBuilder/builder.ts @@ -147,8 +147,8 @@ export class DocsBuilder { argv: process.argv, logger: getRootLogger(), }); - const workingDir = config.get('backend.workingDirectory'); - const tmpdirPath = workingDir ? String(workingDir) : os.tmpdir(); + const workingDir = config.getOptionalString('backend.workingDirectory'); + const tmpdirPath = workingDir || os.tmpdir(); // Fixes a problem with macOS returning a path that is a symlink const tmpdirResolvedPath = fs.realpathSync(tmpdirPath); const outputDir = await fs.mkdtemp( From 6013a16dc37ac5a0d2b61b650e05f993dca0cc31 Mon Sep 17 00:00:00 2001 From: Tejas Kumar Date: Thu, 20 May 2021 16:35:11 +0200 Subject: [PATCH 4/5] Add Changeset Signed-off-by: Tejas Kumar --- .changeset/nasty-wasps-look.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/nasty-wasps-look.md diff --git a/.changeset/nasty-wasps-look.md b/.changeset/nasty-wasps-look.md new file mode 100644 index 0000000000..6de02cbb04 --- /dev/null +++ b/.changeset/nasty-wasps-look.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-techdocs-backend': patch +--- + +TechDocs: Support configurable working directory as temp dir From 20d9c7d3849377b0339c8e9e0ab12f4bcd07f9f1 Mon Sep 17 00:00:00 2001 From: Tejas Kumar Date: Wed, 16 Jun 2021 10:08:06 +0200 Subject: [PATCH 5/5] Address review comments Signed-off-by: Tejas Kumar --- .../techdocs-backend/src/DocsBuilder/builder.ts | 15 ++++++++------- plugins/techdocs-backend/src/service/router.ts | 1 + 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/plugins/techdocs-backend/src/DocsBuilder/builder.ts b/plugins/techdocs-backend/src/DocsBuilder/builder.ts index e43ed72c31..dce391ff3f 100644 --- a/plugins/techdocs-backend/src/DocsBuilder/builder.ts +++ b/plugins/techdocs-backend/src/DocsBuilder/builder.ts @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import { getRootLogger, loadBackendConfig } from '@backstage/backend-common'; import { Entity, ENTITY_DEFAULT_NAMESPACE, @@ -33,6 +32,7 @@ import fs from 'fs-extra'; import os from 'os'; import path from 'path'; import { Logger } from 'winston'; +import { Config } from '@backstage/config'; import { BuildMetadataStorage } from './BuildMetadataStorage'; type DocsBuilderArguments = { @@ -41,6 +41,7 @@ type DocsBuilderArguments = { publisher: PublisherBase; entity: Entity; logger: Logger; + config: Config; }; export class DocsBuilder { @@ -49,6 +50,7 @@ export class DocsBuilder { private publisher: PublisherBase; private entity: Entity; private logger: Logger; + private config: Config; constructor({ preparers, @@ -56,12 +58,14 @@ export class DocsBuilder { publisher, entity, logger, + config, }: DocsBuilderArguments) { this.preparer = preparers.get(entity); this.generator = generators.get(entity); this.publisher = publisher; this.entity = entity; this.logger = logger; + this.config = config; } public async build(): Promise { @@ -142,12 +146,9 @@ export class DocsBuilder { )}`, ); - // Create a temporary directory to store the generated files in. - const config = await loadBackendConfig({ - argv: process.argv, - logger: getRootLogger(), - }); - const workingDir = config.getOptionalString('backend.workingDirectory'); + const workingDir = this.config.getOptionalString( + 'backend.workingDirectory', + ); const tmpdirPath = workingDir || os.tmpdir(); // Fixes a problem with macOS returning a path that is a symlink const tmpdirResolvedPath = fs.realpathSync(tmpdirPath); diff --git a/plugins/techdocs-backend/src/service/router.ts b/plugins/techdocs-backend/src/service/router.ts index 9f383ea31d..1cd4075da0 100644 --- a/plugins/techdocs-backend/src/service/router.ts +++ b/plugins/techdocs-backend/src/service/router.ts @@ -164,6 +164,7 @@ export async function createRouter({ publisher, logger, entity, + config, }); let foundDocs = false; switch (publisherType) {