app-backend: added utility to find assets to store

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
This commit is contained in:
Patrik Oldsberg
2021-12-29 15:34:45 +01:00
parent a9dcace703
commit 54ecf37c15
5 changed files with 65 additions and 12 deletions
@@ -19,23 +19,13 @@ import { Knex } from 'knex';
import { Logger } from 'winston';
import { DateTime } from 'luxon';
import partition from 'lodash/partition';
import { StaticAsset, StaticAssetInput } from './types';
const migrationsDir = resolvePackagePath(
'@backstage/plugin-app-backend',
'migrations',
);
export interface StaticAssetInput {
path: string;
content(): Promise<Buffer>;
}
export interface StaticAsset {
path: string;
content: Buffer;
lastModifiedAt: Date;
}
interface StaticAssetRow {
path: string;
content: Buffer;
@@ -0,0 +1,35 @@
/*
* Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import fs from 'fs-extra';
import globby from 'globby';
import { StaticAssetInput } from './types';
import { resolveSafeChildPath } from '@backstage/backend-common';
export async function findStaticAssets(
staticDir: string,
): Promise<StaticAssetInput[]> {
const assetPaths = await globby('**/*', {
ignore: ['**/*.map'], // Ignore source maps since they're quite large
cwd: staticDir,
dot: true,
});
return assetPaths.map(path => ({
path,
content: async () => fs.readFile(resolveSafeChildPath(staticDir, path)),
}));
}
+2 -1
View File
@@ -15,4 +15,5 @@
*/
export { StaticAssetsStore } from './StaticAssetsStore';
export type { StaticAsset, StaticAssetInput } from './StaticAssetsStore';
export type { StaticAsset, StaticAssetInput } from './types';
export { findStaticAssets } from './findStaticAssets';
@@ -0,0 +1,26 @@
/*
* Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
export interface StaticAssetInput {
path: string;
content(): Promise<Buffer>;
}
export interface StaticAsset {
path: string;
content: Buffer;
lastModifiedAt: Date;
}