From 39d6149a01e6d08eb8b79f84100ac4459566d083 Mon Sep 17 00:00:00 2001
From: Etzelia
Date: Fri, 26 Mar 2021 15:10:37 +0000
Subject: [PATCH] pages (#1)
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
Reviewed-on: https://git.birbmc.com/BirbMC/birbmc.com/pulls/1
Co-Authored-By: Etzelia
Co-Committed-By: Etzelia
---
.drone.yml | 19 +++-
package-lock.json | 198 ++++++++++++++++++++++++++++++++++++++++
package.json | 8 +-
pages.js | 52 +++++++++++
src/assets/js/birbmc.js | 44 +++++++++
src/assets/js/main.js | 45 +--------
src/index.html | 97 +-------------------
src/pages.html | 52 +++++++++++
src/pages/smp-to-ssp.md | 43 +++++++++
9 files changed, 412 insertions(+), 146 deletions(-)
create mode 100644 pages.js
create mode 100644 src/assets/js/birbmc.js
create mode 100644 src/pages.html
create mode 100644 src/pages/smp-to-ssp.md
diff --git a/.drone.yml b/.drone.yml
index 75b6a28..d5ecd05 100644
--- a/.drone.yml
+++ b/.drone.yml
@@ -1,5 +1,18 @@
---
kind: pipeline
+name: compliance
+trigger:
+ event:
+ - pull_request
+steps:
+ - name: build
+ pull: always
+ image: node:14
+ commands:
+ - npm install
+ - npm run build
+---
+kind: pipeline
name: release
trigger:
event:
@@ -12,9 +25,7 @@ steps:
image: node:14
commands:
- npm install
- - npm run webfonts
- - npm run sass
- - npm run dist
+ - npm run build
- name: archive
pull: always
image: jolheiser/drone-arc:latest
@@ -30,4 +41,4 @@ steps:
from_secret: gitea_token
base: https://git.etztech.xyz
files:
- - "dist.tar.gz"
\ No newline at end of file
+ - "dist.tar.gz"
diff --git a/package-lock.json b/package-lock.json
index 43631bd..f4bb0be 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -35,6 +35,15 @@
"picomatch": "^2.0.4"
}
},
+ "argparse": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
+ "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
+ "dev": true,
+ "requires": {
+ "sprintf-js": "~1.0.2"
+ }
+ },
"balanced-match": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
@@ -162,6 +171,12 @@
"integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
"dev": true
},
+ "esprima": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
+ "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
+ "dev": true
+ },
"fill-range": {
"version": "7.0.1",
"resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
@@ -181,6 +196,15 @@
"path-exists": "^4.0.0"
}
},
+ "front-matter": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/front-matter/-/front-matter-4.0.2.tgz",
+ "integrity": "sha512-I8ZuJ/qG92NWX8i5x1Y8qyj3vizhXS31OxjKDu3LKP+7/qBgfIKValiZIEwoVoJKUHlhWtYrktkxV1XsX+pPlg==",
+ "dev": true,
+ "requires": {
+ "js-yaml": "^3.13.1"
+ }
+ },
"fs.realpath": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
@@ -281,6 +305,16 @@
"integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
"dev": true
},
+ "js-yaml": {
+ "version": "3.14.1",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
+ "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
+ "dev": true,
+ "requires": {
+ "argparse": "^1.0.7",
+ "esprima": "^4.0.0"
+ }
+ },
"locate-path": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
@@ -423,6 +457,170 @@
"integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=",
"dev": true
},
+ "showdown": {
+ "version": "1.9.1",
+ "resolved": "https://registry.npmjs.org/showdown/-/showdown-1.9.1.tgz",
+ "integrity": "sha512-9cGuS382HcvExtf5AHk7Cb4pAeQQ+h0eTr33V1mu+crYWV4KvWAw6el92bDrqGEk5d46Ai/fhbEUwqJ/mTCNEA==",
+ "dev": true,
+ "requires": {
+ "yargs": "^14.2"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
+ "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
+ "dev": true
+ },
+ "ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "dev": true,
+ "requires": {
+ "color-convert": "^1.9.0"
+ }
+ },
+ "cliui": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz",
+ "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==",
+ "dev": true,
+ "requires": {
+ "string-width": "^3.1.0",
+ "strip-ansi": "^5.2.0",
+ "wrap-ansi": "^5.1.0"
+ }
+ },
+ "color-convert": {
+ "version": "1.9.3",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+ "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+ "dev": true,
+ "requires": {
+ "color-name": "1.1.3"
+ }
+ },
+ "color-name": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
+ "dev": true
+ },
+ "emoji-regex": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
+ "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
+ "dev": true
+ },
+ "find-up": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
+ "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
+ "dev": true,
+ "requires": {
+ "locate-path": "^3.0.0"
+ }
+ },
+ "is-fullwidth-code-point": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+ "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
+ "dev": true
+ },
+ "locate-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
+ "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
+ "dev": true,
+ "requires": {
+ "p-locate": "^3.0.0",
+ "path-exists": "^3.0.0"
+ }
+ },
+ "p-locate": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
+ "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
+ "dev": true,
+ "requires": {
+ "p-limit": "^2.0.0"
+ }
+ },
+ "path-exists": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
+ "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
+ "dev": true
+ },
+ "string-width": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
+ "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
+ "dev": true,
+ "requires": {
+ "emoji-regex": "^7.0.1",
+ "is-fullwidth-code-point": "^2.0.0",
+ "strip-ansi": "^5.1.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
+ "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^4.1.0"
+ }
+ },
+ "wrap-ansi": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz",
+ "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.0",
+ "string-width": "^3.0.0",
+ "strip-ansi": "^5.0.0"
+ }
+ },
+ "yargs": {
+ "version": "14.2.3",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-14.2.3.tgz",
+ "integrity": "sha512-ZbotRWhF+lkjijC/VhmOT9wSgyBQ7+zr13+YLkhfsSiTriYsMzkTUFP18pFhWwBeMa5gUc1MzbhrO6/VB7c9Xg==",
+ "dev": true,
+ "requires": {
+ "cliui": "^5.0.0",
+ "decamelize": "^1.2.0",
+ "find-up": "^3.0.0",
+ "get-caller-file": "^2.0.1",
+ "require-directory": "^2.1.1",
+ "require-main-filename": "^2.0.0",
+ "set-blocking": "^2.0.0",
+ "string-width": "^3.0.0",
+ "which-module": "^2.0.0",
+ "y18n": "^4.0.0",
+ "yargs-parser": "^15.0.1"
+ }
+ },
+ "yargs-parser": {
+ "version": "15.0.1",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-15.0.1.tgz",
+ "integrity": "sha512-0OAMV2mAZQrs3FkNpDQcBk1x5HXb8X4twADss4S0Iuk+2dGnLOE/fRHrsYm542GduMveyA77OF4wrNJuanRCWw==",
+ "dev": true,
+ "requires": {
+ "camelcase": "^5.0.0",
+ "decamelize": "^1.2.0"
+ }
+ }
+ }
+ },
+ "sprintf-js": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
+ "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
+ "dev": true
+ },
"string-width": {
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz",
diff --git a/package.json b/package.json
index 0a11c6a..1fc1fe4 100644
--- a/package.json
+++ b/package.json
@@ -7,7 +7,9 @@
"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 --up 1 src/* src/assets/css/* src/assets/js/* src/assets/webfonts/* src/images/* dist/"
+ "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/",
+ "pages": "node pages.js",
+ "build": "npm run webfonts && npm run sass && npm run dist && npm run pages"
},
"repository": {
"type": "git",
@@ -18,6 +20,8 @@
"devDependencies": {
"@fortawesome/fontawesome-free": "^5.15.1",
"copyfiles": "^2.4.0",
- "dart-sass": "^1.25.0"
+ "dart-sass": "^1.25.0",
+ "front-matter": "^4.0.2",
+ "showdown": "^1.9.1"
}
}
diff --git a/pages.js b/pages.js
new file mode 100644
index 0000000..c2a3302
--- /dev/null
+++ b/pages.js
@@ -0,0 +1,52 @@
+const fs = require('fs');
+const path = require('path');
+const showdown = require('showdown');
+const frontmatter = require('front-matter');
+const converter = new showdown.Converter();
+
+// Pages to process
+const dir = 'src/pages';
+// Where to put them
+const distDir = 'dist'
+// Required meta
+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'));
+ 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))
+ });
+}
+
+
+// Generic template
+const template = fs.readFileSync(path.join('src', 'pages.html')).toString();
+
+// Inject the title and body
+function buildTemplate(title, body) {
+ return template
+ .replace('{{title}}', title)
+ .replace('{{body}}', body)
+}
+
+// Validate a page's metadata
+function validateMeta(meta) {
+ const attr = meta.attributes;
+ let errs = [];
+ requiredMeta.forEach((required) => {
+ if (!(required in attr)) errs.push(`missing ${required}`);
+ });
+ return errs
+}
+
+// Run the h*ckin' thing
+run();
diff --git a/src/assets/js/birbmc.js b/src/assets/js/birbmc.js
new file mode 100644
index 0000000..afa8bbb
--- /dev/null
+++ b/src/assets/js/birbmc.js
@@ -0,0 +1,44 @@
+(function() {
+ // Logo Easter Egg
+ document.querySelector("span.logo").addEventListener("dblclick", (e) => {
+ e.currentTarget.classList.toggle("rotated");
+ });
+
+ // Konami Code Easter Egg
+ var pattern = ['ArrowUp', 'ArrowUp', 'ArrowDown', 'ArrowDown', 'ArrowLeft', 'ArrowRight', 'ArrowLeft', 'ArrowRight', 'b', 'a'];
+ var current = 0;
+
+ var keyHandler = function (event) {
+
+ // If the key isn't in the pattern, or isn't the current key in the pattern, reset
+ if (pattern.indexOf(event.key) < 0 || event.key !== pattern[current]) {
+ current = 0;
+ return;
+ }
+
+ // Update how much of the pattern is complete
+ current++;
+
+ // If complete, alert and reset
+ if (pattern.length === current) {
+ current = 0;
+ document.querySelector("body").classList.add("animate");
+ }
+
+ };
+
+ // Listen for keydown events
+ document.addEventListener('keydown', keyHandler, false);
+
+
+ // Discord
+ document.getElementById("discord").addEventListener("click", () => {
+ let widget = document.querySelector("#discord > .widget");
+
+ if (widget.style.display === "block") {
+ widget.style.display = "none";
+ } else {
+ widget.style.display = "block";
+ }
+ });
+})();
diff --git a/src/assets/js/main.js b/src/assets/js/main.js
index 757ac05..16424f6 100644
--- a/src/assets/js/main.js
+++ b/src/assets/js/main.js
@@ -120,47 +120,4 @@
speed: 1000
});
- // Logo Easter Egg
- document.querySelector("span.logo").addEventListener("dblclick", (e) => {
- e.currentTarget.classList.toggle("rotated");
- });
-
- // Konami Code Easter Egg
- var pattern = ['ArrowUp', 'ArrowUp', 'ArrowDown', 'ArrowDown', 'ArrowLeft', 'ArrowRight', 'ArrowLeft', 'ArrowRight', 'b', 'a'];
- var current = 0;
-
- var keyHandler = function (event) {
-
- // If the key isn't in the pattern, or isn't the current key in the pattern, reset
- if (pattern.indexOf(event.key) < 0 || event.key !== pattern[current]) {
- current = 0;
- return;
- }
-
- // Update how much of the pattern is complete
- current++;
-
- // If complete, alert and reset
- if (pattern.length === current) {
- current = 0;
- document.querySelector("body").classList.add("animate");
- }
-
- };
-
- // Listen for keydown events
- document.addEventListener('keydown', keyHandler, false);
-
-
- // Discord
- document.getElementById("discord").addEventListener("click", () => {
- let widget = document.querySelector("#discord > .widget");
-
- if (widget.style.display === "block") {
- widget.style.display = "none";
- } else {
- widget.style.display = "block";
- }
- });
-
-})(jQuery);
\ No newline at end of file
+})(jQuery);
diff --git a/src/index.html b/src/index.html
index b7be651..5902ef1 100644
--- a/src/index.html
+++ b/src/index.html
@@ -66,11 +66,6 @@
Please stop by! We have a greylist so anybody can come look
around before applying!
-
@@ -120,11 +115,6 @@
-
@@ -136,28 +126,6 @@
server!
-
@@ -296,75 +264,11 @@
Take a look around and do /apply when you're ready!
-
© BirbMC. Design: HTML5 UP.
@@ -389,6 +293,7 @@
+
+
+
+
+
+
+
+