77 lines
2.0 KiB
JavaScript
77 lines
2.0 KiB
JavaScript
import fs from 'fs';
|
|
import yaml from 'yaml';
|
|
|
|
const configs = {
|
|
'article': {
|
|
routing: '/articles/{slug}/',
|
|
chronological: true,
|
|
caps: ['detail-page', 'index-page', 'rss', 'search']
|
|
},
|
|
'devlog': {
|
|
routing: '/devlogs/{slug}/',
|
|
chronological: true,
|
|
caps: ['detail-page', 'index-page', 'rss', 'search']
|
|
},
|
|
'discussion': {
|
|
routing: '/discussions/{slug}/',
|
|
chronological: true,
|
|
caps: ['detail-page', 'index-page', 'rss', 'search']
|
|
},
|
|
'documentation': {
|
|
routing: '/docs/{slug}/',
|
|
chronological: false,
|
|
caps: ['detail-page', 'index-page', 'search']
|
|
},
|
|
'page': {
|
|
routing: '/{slug}/',
|
|
chronological: false,
|
|
caps: ['detail-page', 'search']
|
|
},
|
|
'project': {
|
|
routing: '/projects/{slug}/',
|
|
chronological: false,
|
|
caps: ['detail-page', 'index-page', 'search']
|
|
},
|
|
'release': {
|
|
routing: '/releases/{slug}/',
|
|
chronological: true,
|
|
caps: ['detail-page', 'index-page', 'rss', 'search']
|
|
},
|
|
'wiki': {
|
|
routing: '/wiki/{slug}/',
|
|
chronological: false,
|
|
caps: ['detail-page', 'index-page', 'search']
|
|
}
|
|
};
|
|
|
|
for (const modelId of Object.keys(configs)) {
|
|
const p = `packages/content-models/${modelId}/model.yml`;
|
|
if (!fs.existsSync(p)) continue;
|
|
|
|
const file = fs.readFileSync(p, 'utf8');
|
|
const data = yaml.parse(file);
|
|
|
|
const conf = configs[modelId];
|
|
const newData = {
|
|
id: data.id,
|
|
kind: 'content-model',
|
|
name: data.name,
|
|
description: data.description,
|
|
semantics: {
|
|
document: true,
|
|
chronological: conf.chronological,
|
|
searchable: true,
|
|
indexable: true
|
|
},
|
|
routing: {
|
|
detail: conf.routing
|
|
},
|
|
presentation: {
|
|
default_style_config: data.defaultStyleConfig || 'article'
|
|
},
|
|
capabilities: conf.caps
|
|
};
|
|
|
|
fs.writeFileSync(p, yaml.stringify(newData));
|
|
}
|