Accept object in shouldBuild for future extensibility
Signed-off-by: Nikolas Skoufis <nskoufis@seek.com.au>
This commit is contained in:
@@ -26,6 +26,7 @@ export type {
|
||||
RecommendedDeploymentOptions,
|
||||
OutOfTheBoxDeploymentOptions,
|
||||
DocsBuildStrategy,
|
||||
ShouldBuildParameters,
|
||||
} from './service';
|
||||
|
||||
export { DefaultTechDocsCollator } from './search';
|
||||
|
||||
@@ -46,7 +46,7 @@ describe('DefaultDocsBuildStrategy', () => {
|
||||
|
||||
MockedConfigReader.prototype.getString.mockReturnValue('local');
|
||||
|
||||
const result = await defaultDocsBuildStrategy.shouldBuild(entity);
|
||||
const result = await defaultDocsBuildStrategy.shouldBuild({ entity });
|
||||
|
||||
expect(result).toBe(true);
|
||||
});
|
||||
@@ -57,7 +57,7 @@ describe('DefaultDocsBuildStrategy', () => {
|
||||
|
||||
MockedConfigReader.prototype.getString.mockReturnValue('external');
|
||||
|
||||
const result = await defaultDocsBuildStrategy.shouldBuild(entity);
|
||||
const result = await defaultDocsBuildStrategy.shouldBuild({ entity });
|
||||
|
||||
expect(result).toBe(false);
|
||||
});
|
||||
|
||||
@@ -16,13 +16,22 @@
|
||||
import { Entity } from '@backstage/catalog-model';
|
||||
import { Config } from '@backstage/config';
|
||||
|
||||
/**
|
||||
* Parameters passed to the shouldBuild method on the DocsBuildStrategy interface
|
||||
*
|
||||
* @public
|
||||
*/
|
||||
export type ShouldBuildParameters = {
|
||||
entity: Entity;
|
||||
};
|
||||
|
||||
/**
|
||||
* A strategy for when to build TechDocs locally, and when to skip building TechDocs (allowing for an external build)
|
||||
*
|
||||
* @public
|
||||
*/
|
||||
export interface DocsBuildStrategy {
|
||||
shouldBuild(entity: Entity): Promise<boolean>;
|
||||
shouldBuild(params: ShouldBuildParameters): Promise<boolean>;
|
||||
}
|
||||
|
||||
export class DefaultDocsBuildStrategy {
|
||||
@@ -36,7 +45,7 @@ export class DefaultDocsBuildStrategy {
|
||||
return new DefaultDocsBuildStrategy(config);
|
||||
}
|
||||
|
||||
async shouldBuild(_: Entity): Promise<boolean> {
|
||||
async shouldBuild(_: ShouldBuildParameters): Promise<boolean> {
|
||||
return this.config.getString('techdocs.builder') === 'local';
|
||||
}
|
||||
}
|
||||
|
||||
@@ -20,4 +20,7 @@ export type {
|
||||
RecommendedDeploymentOptions,
|
||||
OutOfTheBoxDeploymentOptions,
|
||||
} from './router';
|
||||
export type { DocsBuildStrategy } from './DocsBuildStrategy';
|
||||
export type {
|
||||
DocsBuildStrategy,
|
||||
ShouldBuildParameters,
|
||||
} from './DocsBuildStrategy';
|
||||
|
||||
@@ -221,7 +221,7 @@ export async function createRouter(
|
||||
// techdocs-backend will only try to build documentation for an entity if techdocs.builder is set to 'local'
|
||||
// If set to 'external', it will assume that an external process (e.g. CI/CD pipeline
|
||||
// of the repository) is responsible for building and publishing documentation to the storage provider
|
||||
const shouldBuild = await docsBuildStrategy.shouldBuild(entity);
|
||||
const shouldBuild = await docsBuildStrategy.shouldBuild({ entity });
|
||||
if (!shouldBuild) {
|
||||
// However, if caching is enabled, take the opportunity to check and
|
||||
// invalidate stale cache entries.
|
||||
|
||||
Reference in New Issue
Block a user