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/.terraform
|
||||||
/terraform/files/*.zip
|
/terraform/files/*.zip
|
||||||
|
|
||||||
|
/assets.json
|
||||||
|
@ -18,6 +18,10 @@ const scss = require('./scss');
|
|||||||
const svg = require('./svg');
|
const svg = require('./svg');
|
||||||
const scripts = require('./scripts');
|
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) {
|
exports.everything = function (prod = false) {
|
||||||
async function fn () {
|
async function fn () {
|
||||||
@ -43,6 +47,8 @@ exports.everything = function (prod = false) {
|
|||||||
posts = sortBy(posts, 'date');
|
posts = sortBy(posts, 'date');
|
||||||
posts.reverse();
|
posts.reverse();
|
||||||
|
|
||||||
|
const assets = [ ...PostFiles.assets, ...PublicFiles.assets ];
|
||||||
|
|
||||||
// compile all tasks to be completed
|
// compile all tasks to be completed
|
||||||
const tasks = await Promise.all([
|
const tasks = await Promise.all([
|
||||||
PublicFiles.tasks,
|
PublicFiles.tasks,
|
||||||
@ -53,16 +59,20 @@ exports.everything = function (prod = false) {
|
|||||||
favicon(prod),
|
favicon(prod),
|
||||||
]);
|
]);
|
||||||
|
|
||||||
await fs.writeFile(resolve('pages.json'), JSON.stringify(pages.map((p) => p.toJson()), null, 2));
|
await Promise.all([
|
||||||
await fs.writeFile(resolve('posts.json'), JSON.stringify(posts.map((p) => p.toJson()), null, 2));
|
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 });
|
const cache = new Cache({ prod });
|
||||||
await cache.load();
|
await cache.load();
|
||||||
await evaluate(tasks.flat(), cache);
|
await evaluate(tasks.flat(), cache);
|
||||||
await cache.save();
|
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';
|
fn.displayName = prod ? 'buildForProd' : 'build';
|
||||||
|
@ -7,8 +7,9 @@ const { siteInfo } = require(resolve('package.json'));
|
|||||||
|
|
||||||
module.exports = exports = async function writePageContent (pages, posts, prod) {
|
module.exports = exports = async function writePageContent (pages, posts, prod) {
|
||||||
const engines = await getEngines(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);
|
await processPages(engines, pages, posts, prod);
|
||||||
|
return postIndex;
|
||||||
};
|
};
|
||||||
|
|
||||||
function processPages (engines, pages, posts, prod) {
|
function processPages (engines, pages, posts, prod) {
|
||||||
@ -35,21 +36,22 @@ function processPages (engines, pages, posts, prod) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const json = {
|
const json = {
|
||||||
url: page.fullurl,
|
url: page.url,
|
||||||
|
fullurl: page.fullurl,
|
||||||
title: page.meta.title,
|
title: page.meta.title,
|
||||||
subtitle: page.meta.subtitle,
|
subtitle: page.meta.subtitle,
|
||||||
description: page.meta.description,
|
description: page.meta.description,
|
||||||
tweets: page.tweets,
|
date: page.dateCreated,
|
||||||
images: page.images,
|
|
||||||
dateCreated: page.dateCreated,
|
|
||||||
dateModified: page.dateModified,
|
|
||||||
titlecard: page.titlecard,
|
titlecard: page.titlecard,
|
||||||
|
tags: page.meta.tags,
|
||||||
|
author: page.meta.author,
|
||||||
};
|
};
|
||||||
|
|
||||||
const html = String(engines[page.engine](data.source, data));
|
const html = String(engines[page.engine](data.source, data));
|
||||||
if (page.engine === ENGINE.MARKDOWN) {
|
if (page.engine === ENGINE.MARKDOWN) {
|
||||||
json.preview = String(engines.MARKDOWN_PREVIEW(data.source, data));
|
json.preview = String(engines.MARKDOWN_PREVIEW(data.source, data));
|
||||||
page.content = String(engines.MARKDOWN_CONTENT(data.source, data));
|
page.content = String(engines.MARKDOWN_CONTENT(data.source, data));
|
||||||
|
json.content = page.content;
|
||||||
}
|
}
|
||||||
|
|
||||||
const output = resolve('dist', page.out);
|
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),
|
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) {
|
_parse (PublicFiles) {
|
||||||
const { titlecard, webready } = PublicFiles.for(this.dir);
|
const { titlecard, webready } = PublicFiles.for(this.dir);
|
||||||
|
|
||||||
this.ignore = this.meta.ignore;
|
this.ignore = this.meta.ignore;
|
||||||
|
this.draft = this.meta.draft;
|
||||||
this.images = webready;
|
this.images = webready;
|
||||||
this.titlecard = titlecard;
|
this.titlecard = titlecard;
|
||||||
if (this.meta.tweets && isString(this.meta.tweets)) this.meta.tweets = this.meta.tweets.split(/\s/);
|
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+)/;
|
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 {
|
module.exports = exports = class Post extends Page {
|
||||||
|
|
||||||
_dir (dir) {
|
_dir (dir) {
|
||||||
@ -60,6 +66,8 @@ module.exports = exports = class Post extends Page {
|
|||||||
return result;
|
return result;
|
||||||
}, {});
|
}, {});
|
||||||
|
|
||||||
|
this.meta.author = this.meta.author && arrayify(this.meta.author) || [];
|
||||||
|
|
||||||
this.classes.push('post');
|
this.classes.push('post');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3,11 +3,11 @@ const { src } = require('gulp');
|
|||||||
const clean = require('gulp-clean');
|
const clean = require('gulp-clean');
|
||||||
|
|
||||||
module.exports = exports = function cleanDistribution () {
|
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());
|
.pipe(clean());
|
||||||
};
|
};
|
||||||
|
|
||||||
exports.dev = function cleanDistributionForDev () {
|
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());
|
.pipe(clean());
|
||||||
};
|
};
|
||||||
|
Loading…
x
Reference in New Issue
Block a user