Merge pull request #20371 from drodil/custom_preparer_cleanup

feat: allow prepared directory clean up for custom preparers
This commit is contained in:
John Philip
2023-10-05 19:22:14 -04:00
committed by GitHub
6 changed files with 31 additions and 3 deletions
@@ -14,8 +14,8 @@
* limitations under the License.
*/
import {
Entity,
DEFAULT_NAMESPACE,
Entity,
stringifyEntityRef,
} from '@backstage/catalog-model';
import { Config } from '@backstage/config';
@@ -28,7 +28,6 @@ import {
PreparerBase,
PreparerBuilder,
PublisherBase,
UrlPreparer,
} from '@backstage/plugin-techdocs-node';
import fs from 'fs-extra';
import os from 'os';
@@ -194,7 +193,7 @@ export class DocsBuilder {
// Remove Prepared directory since it is no longer needed.
// Caveat: Can not remove prepared directory in case of git preparer since the
// local git repository is used to get etag on subsequent requests.
if (this.preparer instanceof UrlPreparer) {
if (this.preparer.shouldCleanPreparedDirectory()) {
this.logger.debug(
`Removing prepared directory ${preparedDir} since the site has been generated`,
);
+3
View File
@@ -21,6 +21,7 @@ import { Writable } from 'stream';
export class DirectoryPreparer implements PreparerBase {
static fromConfig(config: Config, options: PreparerConfig): DirectoryPreparer;
prepare(entity: Entity, options?: PreparerOptions): Promise<PreparerResponse>;
shouldCleanPreparedDirectory(): boolean;
}
// @public
@@ -132,6 +133,7 @@ export const parseReferenceAnnotation: (
// @public
export type PreparerBase = {
prepare(entity: Entity, options?: PreparerOptions): Promise<PreparerResponse>;
shouldCleanPreparedDirectory(): boolean;
};
// @public
@@ -274,5 +276,6 @@ export const transformDirLocation: (
export class UrlPreparer implements PreparerBase {
static fromConfig(options: PreparerConfig): UrlPreparer;
prepare(entity: Entity, options?: PreparerOptions): Promise<PreparerResponse>;
shouldCleanPreparedDirectory(): boolean;
}
```
@@ -60,6 +60,11 @@ export class DirectoryPreparer implements PreparerBase {
this.scmIntegrations = ScmIntegrations.fromConfig(config);
}
/** {@inheritDoc PreparerBase.shouldCleanPreparedDirectory} */
shouldCleanPreparedDirectory() {
return false;
}
/** {@inheritDoc PreparerBase.prepare} */
async prepare(
entity: Entity,
@@ -78,6 +78,11 @@ export type PreparerBase = {
* @throws `NotModifiedError` when the prepared directory has not been changed since the last build.
*/
prepare(entity: Entity, options?: PreparerOptions): Promise<PreparerResponse>;
/**
* Indicates whether the prepared directory should be cleaned after generation.
*/
shouldCleanPreparedDirectory(): boolean;
};
/**
@@ -47,6 +47,11 @@ export class UrlPreparer implements PreparerBase {
this.reader = reader;
}
/** {@inheritDoc PreparerBase.shouldCleanPreparedDirectory} */
shouldCleanPreparedDirectory() {
return true;
}
/** {@inheritDoc PreparerBase.prepare} */
async prepare(
entity: Entity,