|
|
@@ -2,19 +2,22 @@ import fs from 'fs';
|
|
|
import path from 'path';
|
|
|
|
|
|
import type { GrowiTemplatePluginValidationData } from '../../../../model';
|
|
|
-import { isTemplateStatusValid, type TemplateStatus, type TemplateSummary } from '../../../interfaces';
|
|
|
+import {
|
|
|
+ type TemplateStatus,
|
|
|
+ type TemplateSummary,
|
|
|
+ isTemplateStatusValid,
|
|
|
+} from '../../../interfaces';
|
|
|
|
|
|
import { getStatus } from './get-status';
|
|
|
import { validateTemplatePluginGrowiDirective } from './validate-growi-plugin-directive';
|
|
|
|
|
|
-
|
|
|
-export const scanTemplate = async(
|
|
|
- projectDirRoot: string,
|
|
|
- templateId: string,
|
|
|
- data: GrowiTemplatePluginValidationData,
|
|
|
- opts?: {
|
|
|
- pluginId?: string,
|
|
|
- },
|
|
|
+export const scanTemplate = async (
|
|
|
+ projectDirRoot: string,
|
|
|
+ templateId: string,
|
|
|
+ data: GrowiTemplatePluginValidationData,
|
|
|
+ opts?: {
|
|
|
+ pluginId?: string;
|
|
|
+ },
|
|
|
): Promise<TemplateStatus[]> => {
|
|
|
const status: TemplateStatus[] = [];
|
|
|
|
|
|
@@ -26,13 +29,12 @@ export const scanTemplate = async(
|
|
|
|
|
|
try {
|
|
|
const stats = await getStatus(tplDir);
|
|
|
- const {
|
|
|
- isTemplateExists, meta,
|
|
|
- } = stats;
|
|
|
+ const { isTemplateExists, meta } = stats;
|
|
|
|
|
|
if (!isTemplateExists) throw new Error("'template.md does not exist.");
|
|
|
if (meta == null) throw new Error("'meta.md does not exist.");
|
|
|
- if (meta?.title == null) throw new Error("'meta.md does not contain the title.");
|
|
|
+ if (meta?.title == null)
|
|
|
+ throw new Error("'meta.md does not contain the title.");
|
|
|
|
|
|
const isDefault = !isDefaultPushed;
|
|
|
status.push({
|
|
|
@@ -45,8 +47,7 @@ export const scanTemplate = async(
|
|
|
desc: meta.desc,
|
|
|
});
|
|
|
isDefaultPushed = true;
|
|
|
- }
|
|
|
- catch (err) {
|
|
|
+ } catch (err) {
|
|
|
status.push({
|
|
|
pluginId: opts?.pluginId,
|
|
|
id: templateId,
|
|
|
@@ -58,21 +59,23 @@ export const scanTemplate = async(
|
|
|
}
|
|
|
|
|
|
// eslint-disable-next-line no-console
|
|
|
- console.debug(`Template directory (${projectDirRoot}) has scanned`, { status });
|
|
|
+ console.debug(`Template directory (${projectDirRoot}) has scanned`, {
|
|
|
+ status,
|
|
|
+ });
|
|
|
|
|
|
return status;
|
|
|
};
|
|
|
|
|
|
-export const scanAllTemplates = async(
|
|
|
- projectDirRoot: string,
|
|
|
- opts?: {
|
|
|
- data?: GrowiTemplatePluginValidationData,
|
|
|
- pluginId?: string,
|
|
|
- returnsInvalidTemplates?: boolean,
|
|
|
- },
|
|
|
+export const scanAllTemplates = async (
|
|
|
+ projectDirRoot: string,
|
|
|
+ opts?: {
|
|
|
+ data?: GrowiTemplatePluginValidationData;
|
|
|
+ pluginId?: string;
|
|
|
+ returnsInvalidTemplates?: boolean;
|
|
|
+ },
|
|
|
): Promise<TemplateSummary[]> => {
|
|
|
-
|
|
|
- const data = opts?.data ?? validateTemplatePluginGrowiDirective(projectDirRoot);
|
|
|
+ const data =
|
|
|
+ opts?.data ?? validateTemplatePluginGrowiDirective(projectDirRoot);
|
|
|
|
|
|
const summaries: TemplateSummary[] = [];
|
|
|
|
|
|
@@ -80,14 +83,23 @@ export const scanAllTemplates = async(
|
|
|
const distDirFiles = fs.readdirSync(distDirPath);
|
|
|
|
|
|
for await (const templateId of distDirFiles) {
|
|
|
- const status = (await scanTemplate(projectDirRoot, templateId, data, { pluginId: opts?.pluginId }))
|
|
|
+ const status = (
|
|
|
+ await scanTemplate(projectDirRoot, templateId, data, {
|
|
|
+ pluginId: opts?.pluginId,
|
|
|
+ })
|
|
|
+ )
|
|
|
// omit invalid templates if `returnsInvalidTemplates` is true
|
|
|
- .filter(s => (opts?.returnsInvalidTemplates ? true : s.isValid));
|
|
|
+ .filter((s) => (opts?.returnsInvalidTemplates ? true : s.isValid));
|
|
|
|
|
|
// determine default locale
|
|
|
- const defaultTemplateStatus = status.find(s => 'isDefault' in s && s.isDefault);
|
|
|
-
|
|
|
- if (defaultTemplateStatus == null || !isTemplateStatusValid(defaultTemplateStatus)) {
|
|
|
+ const defaultTemplateStatus = status.find(
|
|
|
+ (s) => 'isDefault' in s && s.isDefault,
|
|
|
+ );
|
|
|
+
|
|
|
+ if (
|
|
|
+ defaultTemplateStatus == null ||
|
|
|
+ !isTemplateStatusValid(defaultTemplateStatus)
|
|
|
+ ) {
|
|
|
continue;
|
|
|
}
|
|
|
|
|
|
@@ -95,7 +107,9 @@ export const scanAllTemplates = async(
|
|
|
// for the 'default' key
|
|
|
default: defaultTemplateStatus,
|
|
|
// for each locale keys
|
|
|
- ...Object.fromEntries(status.map(templateStatus => [templateStatus.locale, templateStatus])),
|
|
|
+ ...Object.fromEntries(
|
|
|
+ status.map((templateStatus) => [templateStatus.locale, templateStatus]),
|
|
|
+ ),
|
|
|
});
|
|
|
}
|
|
|
|