mirror of
https://github.com/GenderDysphoria/GenderDysphoria.fyi.git
synced 2025-02-25 08:56:17 +00:00
Write out a post index into /tweets/index.json. Write out assets for debugging.
This commit is contained in:
parent
92a982eeb8
commit
bbf0b2feed
1
.gitignore
vendored
1
.gitignore
vendored
@ -15,3 +15,4 @@ node_modules
|
||||
/terraform/.terraform
|
||||
/terraform/files/*.zip
|
||||
|
||||
/assets.json
|
||||
|
@ -18,6 +18,10 @@ const scss = require('./scss');
|
||||
const svg = require('./svg');
|
||||
const scripts = require('./scripts');
|
||||
|
||||
function writeIndex (destination, files, compressed) {
|
||||
files = files.map((p) => !p.draft && (p.toJson ? p.toJson() : p));
|
||||
return fs.writeFile(resolve(destination), compressed ? JSON.stringify(files) : JSON.stringify(files, null, 2));
|
||||
}
|
||||
|
||||
exports.everything = function (prod = false) {
|
||||
async function fn () {
|
||||
@ -43,6 +47,8 @@ exports.everything = function (prod = false) {
|
||||
posts = sortBy(posts, 'date');
|
||||
posts.reverse();
|
||||
|
||||
const assets = [ ...PostFiles.assets, ...PublicFiles.assets ];
|
||||
|
||||
// compile all tasks to be completed
|
||||
const tasks = await Promise.all([
|
||||
PublicFiles.tasks,
|
||||
@ -53,16 +59,20 @@ exports.everything = function (prod = false) {
|
||||
favicon(prod),
|
||||
]);
|
||||
|
||||
await fs.writeFile(resolve('pages.json'), JSON.stringify(pages.map((p) => p.toJson()), null, 2));
|
||||
await fs.writeFile(resolve('posts.json'), JSON.stringify(posts.map((p) => p.toJson()), null, 2));
|
||||
await Promise.all([
|
||||
fs.ensureDir(resolve('dist')),
|
||||
writeIndex('pages.json', pages),
|
||||
writeIndex('posts.json', posts),
|
||||
writeIndex('assets.json', assets),
|
||||
]);
|
||||
|
||||
await fs.ensureDir(resolve('dist'));
|
||||
const cache = new Cache({ prod });
|
||||
await cache.load();
|
||||
await evaluate(tasks.flat(), cache);
|
||||
await cache.save();
|
||||
|
||||
await pageWriter(pages, posts, prod);
|
||||
posts = await pageWriter(pages, posts, prod);
|
||||
await writeIndex('dist/tweets/index.json', posts.filter(Boolean), true);
|
||||
}
|
||||
|
||||
fn.displayName = prod ? 'buildForProd' : 'build';
|
||||
|
@ -7,8 +7,9 @@ const { siteInfo } = require(resolve('package.json'));
|
||||
|
||||
module.exports = exports = async function writePageContent (pages, posts, prod) {
|
||||
const engines = await getEngines(prod);
|
||||
await processPages(engines, posts, null, prod);
|
||||
const postIndex = await processPages(engines, posts, null, prod);
|
||||
await processPages(engines, pages, posts, prod);
|
||||
return postIndex;
|
||||
};
|
||||
|
||||
function processPages (engines, pages, posts, prod) {
|
||||
@ -35,21 +36,22 @@ function processPages (engines, pages, posts, prod) {
|
||||
};
|
||||
|
||||
const json = {
|
||||
url: page.fullurl,
|
||||
url: page.url,
|
||||
fullurl: page.fullurl,
|
||||
title: page.meta.title,
|
||||
subtitle: page.meta.subtitle,
|
||||
description: page.meta.description,
|
||||
tweets: page.tweets,
|
||||
images: page.images,
|
||||
dateCreated: page.dateCreated,
|
||||
dateModified: page.dateModified,
|
||||
date: page.dateCreated,
|
||||
titlecard: page.titlecard,
|
||||
tags: page.meta.tags,
|
||||
author: page.meta.author,
|
||||
};
|
||||
|
||||
const html = String(engines[page.engine](data.source, data));
|
||||
if (page.engine === ENGINE.MARKDOWN) {
|
||||
json.preview = String(engines.MARKDOWN_PREVIEW(data.source, data));
|
||||
page.content = String(engines.MARKDOWN_CONTENT(data.source, data));
|
||||
json.content = page.content;
|
||||
}
|
||||
|
||||
const output = resolve('dist', page.out);
|
||||
@ -60,5 +62,16 @@ function processPages (engines, pages, posts, prod) {
|
||||
prod ? JSON.stringify(json) : JSON.stringify(json, null, 2),
|
||||
)),
|
||||
]);
|
||||
|
||||
return !page.draft && {
|
||||
url: page.url,
|
||||
json: page.json,
|
||||
title: page.meta.title,
|
||||
subtitle: page.meta.subtitle,
|
||||
description: page.meta.description,
|
||||
date: page.dateCreated,
|
||||
tags: page.meta.tags,
|
||||
author: page.meta.author,
|
||||
};
|
||||
});
|
||||
}
|
||||
|
@ -92,8 +92,8 @@ module.exports = exports = class Page extends File {
|
||||
|
||||
_parse (PublicFiles) {
|
||||
const { titlecard, webready } = PublicFiles.for(this.dir);
|
||||
|
||||
this.ignore = this.meta.ignore;
|
||||
this.draft = this.meta.draft;
|
||||
this.images = webready;
|
||||
this.titlecard = titlecard;
|
||||
if (this.meta.tweets && isString(this.meta.tweets)) this.meta.tweets = this.meta.tweets.split(/\s/);
|
||||
|
@ -9,6 +9,12 @@ const pkg = require(resolve('package.json'));
|
||||
|
||||
const postmatch = /(\d{4}-\d\d-\d\d)\.\d{4}\.(\w+)/;
|
||||
|
||||
function arrayify (input) {
|
||||
if (!input) return [];
|
||||
if (!Array.isArray(input)) return [ input ];
|
||||
return input;
|
||||
}
|
||||
|
||||
module.exports = exports = class Post extends Page {
|
||||
|
||||
_dir (dir) {
|
||||
@ -60,6 +66,8 @@ module.exports = exports = class Post extends Page {
|
||||
return result;
|
||||
}, {});
|
||||
|
||||
this.meta.author = this.meta.author && arrayify(this.meta.author) || [];
|
||||
|
||||
this.classes.push('post');
|
||||
}
|
||||
|
||||
|
@ -3,11 +3,11 @@ const { src } = require('gulp');
|
||||
const clean = require('gulp-clean');
|
||||
|
||||
module.exports = exports = function cleanDistribution () {
|
||||
return src([ 'dist', 'rev-manifest.json', 'pages.json' ], { read: false, allowEmpty: true })
|
||||
return src([ 'dist', 'rev-manifest.json', 'pages.json', 'assets.json' ], { read: false, allowEmpty: true })
|
||||
.pipe(clean());
|
||||
};
|
||||
|
||||
exports.dev = function cleanDistributionForDev () {
|
||||
return src([ 'dist/**.{js|json|jsx}', 'rev-manifest.json', 'pages.json' ], { read: false, allowEmpty: true })
|
||||
return src([ 'dist/**.{js|json|jsx}', 'rev-manifest.json', 'pages.json', 'assets.json' ], { read: false, allowEmpty: true })
|
||||
.pipe(clean());
|
||||
};
|
||||
|
Loading…
x
Reference in New Issue
Block a user