From 3d5b5da7adbc5f63c3b120b31a595970d39eac58 Mon Sep 17 00:00:00 2001 From: Etzelia Date: Tue, 18 May 2021 13:49:52 +0000 Subject: [PATCH] spotlight (#2) Merge branch 'main' of https://git.birbmc.com/BirbMC/birbmc.com into spotlight # Conflicts: # package.json # pages.js # src/pages.html Add community spotlight and inject extra pages. Signed-off-by: Etzelia Add pages (#16) Execute anonymous function Signed-off-by: Etzelia Exclude pages.html, it's only used as a template Signed-off-by: Etzelia Add pages Signed-off-by: Etzelia Co-authored-by: Etzelia Reviewed-on: https://git.etztech.xyz/BirbMC/birbmc.com/pulls/16 Reviewed-by: ZeroHD Co-Authored-By: Etzelia Co-Committed-By: Etzelia Co-authored-by: Etzelia Reviewed-on: https://git.birbmc.com/BirbMC/birbmc.com/pulls/2 Co-Authored-By: Etzelia Co-Committed-By: Etzelia --- index.js | 50 ++++++++++++++++++++++++++++++++++++ package.json | 5 ++-- pages.js | 43 +++++++++++++++++++++++-------- src/assets/sass/_birbmc.scss | 3 +++ src/assets/sass/main.scss | 3 +++ src/index.html | 16 +++++++++++- src/index.json | 5 ++++ src/pages.html | 1 + 8 files changed, 113 insertions(+), 13 deletions(-) create mode 100644 index.js create mode 100644 src/assets/sass/_birbmc.scss create mode 100644 src/index.json diff --git a/index.js b/index.js new file mode 100644 index 0000000..e6431d8 --- /dev/null +++ b/index.js @@ -0,0 +1,50 @@ +const fs = require('fs'); +const pages = require('./pages'); + +// Index +const srcIndex = 'src/index.html'; +const srcIndexConfig = 'src/index.json'; +// Where to put it +const distIndex = 'dist/index.html' + +// Actual processing +function run() { + const config = indexConfig(); + + // Community + const community = []; + const configCommunity = config['community']; + Object.keys(configCommunity).forEach((c) => { + community.push(`
  • ${c}

  • `); + }); + + // Pages + const other = []; + pages.getPages().forEach((page) => { + other.push(`
  • ${page.title}

  • `); + }); + + fs.writeFileSync(distIndex, buildIndex(community, other)) +} + +const indexTemplate = fs.readFileSync(srcIndex).toString(); + +// Inject the config +function buildIndex(community, pages) { + return indexTemplate + .replace('{{community}}', community) + .replace('{{pages}}', pages) +} + +// Module stuff +function indexConfig() { + const contents = fs.readFileSync(srcIndexConfig); + return JSON.parse(contents.toString()); +} + +module.exports = { indexConfig }; + +// Run the h*ckin' thing +if (require.main === module) { + run(); +} diff --git a/package.json b/package.json index 1fc1fe4..78b02b7 100644 --- a/package.json +++ b/package.json @@ -7,9 +7,10 @@ "sass-noscript": "npx dart-sass -s compressed src/assets/sass/noscript.scss src/assets/css/noscript.css", "sass": "npm run sass-main && npm run sass-noscript", "webfonts": "npx copyfiles --flat node_modules/@fortawesome/fontawesome-free/webfonts/* src/assets/webfonts/", - "dist": "npx copyfiles --exclude src/elements.html --exclude src/generic.html --exclude src/pages.html --up 1 src/* src/assets/css/* src/assets/js/* src/assets/webfonts/* src/images/* dist/", + "dist": "npx copyfiles --up 1 src/assets/css/* src/assets/js/* src/assets/webfonts/* src/images/* dist/", "pages": "node pages.js", - "build": "npm run webfonts && npm run sass && npm run dist && npm run pages" + "index": "node index.js", + "build": "npm run webfonts && npm run sass && npm run dist && npm run pages && npm run index" }, "repository": { "type": "git", diff --git a/pages.js b/pages.js index c2a3302..74e77d2 100644 --- a/pages.js +++ b/pages.js @@ -14,16 +14,10 @@ const requiredMeta = ['title'] // Actual processing function run() { if (!fs.existsSync(distDir)) fs.mkdirSync(distDir); - fs.readdirSync(dir).forEach((file) => { - const filePath = path.join(dir, file) - const contents = fs.readFileSync(filePath); - const meta = frontmatter(contents.toString()) - const errs = validateMeta(meta); - if (errs.length) throw `Errors in ${file}:\n${errs.join('\n')}`; - const dirPath = path.join(distDir, 'path' in meta.attributes ? meta.attributes.path : path.basename(file, '.md')); + getPages().forEach((page) => { + const dirPath = path.join(distDir, page.path); if (!fs.existsSync(dirPath)) fs.mkdirSync(dirPath); - const body = converter.makeHtml(meta.body); - fs.writeFileSync(path.join(dirPath, 'index.html'), buildTemplate(meta.attributes.title, body)) + fs.writeFileSync(path.join(dirPath, 'index.html'), buildTemplate(page.title, page.body)) }); } @@ -48,5 +42,34 @@ function validateMeta(meta) { return errs } + +// Module stuff +class Page { + constructor(title, path, body, file) { + this.title = title; + this.path = path; + this.body = body; + this.file = file; + } +} + +function getPages() { + const pages = []; + fs.readdirSync(dir).forEach((file) => { + const filePath = path.join(dir, file) + const contents = fs.readFileSync(filePath); + const meta = frontmatter(contents.toString()) + const errs = validateMeta(meta); + if (errs.length) throw `Errors in ${file}:\n${errs.join('\n')}`; + const body = converter.makeHtml(meta.body); + pages.push(new Page(meta.attributes.title, 'path' in meta.attributes ? meta.attributes.path : path.basename(file), body, file)); + }); + return pages; +} + +module.exports = { getPages }; + // Run the h*ckin' thing -run(); +if (require.main === module) { + run(); +} diff --git a/src/assets/sass/_birbmc.scss b/src/assets/sass/_birbmc.scss new file mode 100644 index 0000000..d1792ba --- /dev/null +++ b/src/assets/sass/_birbmc.scss @@ -0,0 +1,3 @@ +.home { + margin-left: 1em; +} diff --git a/src/assets/sass/main.scss b/src/assets/sass/main.scss index 132628f..68725bd 100644 --- a/src/assets/sass/main.scss +++ b/src/assets/sass/main.scss @@ -94,3 +94,6 @@ $fa-font-path: "../webfonts"; @import "layout/main"; @import "layout/footer"; @import "layout/wrapper"; + +// BirbMC +@import "birbmc"; diff --git a/src/index.html b/src/index.html index 5902ef1..34a85a5 100644 --- a/src/index.html +++ b/src/index.html @@ -221,12 +221,26 @@

    Join our Steam GroupSteam Group

    + +
    +

    Community Spotlight

    +
      + {{community}} +
    +
    + +
    +

    Other Pages

    +
      + {{pages}} +
    +

    Donations

    diff --git a/src/index.json b/src/index.json new file mode 100644 index 0000000..b885966 --- /dev/null +++ b/src/index.json @@ -0,0 +1,5 @@ +{ + "community": { + "Grand River's YouTube": "https://www.youtube.com/c/GrandRiverGaming" + } +} diff --git a/src/pages.html b/src/pages.html index f516add..7f14562 100644 --- a/src/pages.html +++ b/src/pages.html @@ -27,6 +27,7 @@
    +
    {{body}}