diff --git a/app.js b/app.js index bab5527..dc4b8dc 100755 --- a/app.js +++ b/app.js @@ -1,23 +1,73 @@ +const fs = require('fs'); +if (process.argv[0] == "--first-time") { + initialise() +} + const express = require('express'); const showdown = require('showdown') const crypto = require('crypto'); // For encrypting passwords const { fromUnixTime, format, getUnixTime } = require("date-fns") -const fs = require('fs'); -const users = require('./users.js'); -const posts = require('./posts.js'); -const comments = require('./comments.js'); -const config = require('./config.js'); -let converter = new showdown.Converter({simpleLineBreaks: true, tables: true, strikethrough: true, tasklists: true, encodeEmails: true}) +let users +let posts +let comments +let config + +try { + users = require('./users.js'); + posts = require('./posts.js'); + comments = require('./comments.js'); + config = require('./config.js'); +} +catch (error) { + console.log("A file is missing!") + console.log("Run with --first-time to initialise the program") + console.log("Error output:\n", error) + process.exit(1) +} +let converter = new showdown.Converter({ + simpleLineBreaks: true, + tables: true, + strikethrough: true, + tasklists: true, + encodeEmails: true +}) const app = express(); + let footer_div = config.site_wide_footer footer_div = replace_format_indicators(footer_div) - app.use(express.urlencoded({ extended: true })); app.use(express.json()); app.use(express.static(config.root_path)); +function initialise() { + try { + const users = require("./users.js"); + } + catch (error) { + fs.writeFileSync(`${__dirname}/users.js`, `export const users = []`) + } + try { + const posts = require("./posts.js"); + } + catch (error) { + fs.writeFileSync(`${__dirname}/posts.js`, `export const posts = []`) + } + try { + const users = require("./comments.js"); + } + catch (error) { + fs.writeFileSync(`${__dirname}/comments.js`, `export const comments = []\nexport const counter = 0`) + } + try { + const users = require("./config.js"); + } + catch (error) { + fs.copyFile('example-config.js', 'config.js') + } +} + function get_userID(username) { for (let i = 0; i < users.users.length; i++) { if (users.users[i]['username'] == username) { diff --git a/config.js b/config.js index 71e2f6d..35531ba 100755 --- a/config.js +++ b/config.js @@ -43,9 +43,9 @@ export const time_zone = "+0000" // %S - post seperator as defined by post_seperator // %T - Title // %U - URL the the user (poster) +// %W - Site Description as defined by site_description // %X - Comment submission box // %Y - Site Name as defined by site_name -// %W - Site Description as defined by site_description // %Z - Attribution (to me) and source code link and license export const timeline_header = `
%C
%B%C
@@ -79,6 +81,8 @@ export const timeline_post_format = `%C
Permalink%C
diff --git a/example-config.js b/example-config.js new file mode 100755 index 0000000..d385c33 --- /dev/null +++ b/example-config.js @@ -0,0 +1,105 @@ +export const seperator = "%C
+%B%C
+%B%C
+Permalink%C
+%B