From 66423cb3c07072fb6cafb269c0251abe4b3f24e1 Mon Sep 17 00:00:00 2001 From: deadvey Date: Sun, 19 Oct 2025 21:19:13 +0100 Subject: [PATCH] There is now a Makefile because I learnt make syntax --- .gitignore | 3 +- Makefile | 41 ++++++++++++++++++ docs/INSTALLATION.md | 6 +-- src/initialise.js | 50 ---------------------- src/server.js | 9 +--- webroot/custom.css | 4 -- webroot/robots.txt | 99 -------------------------------------------- 7 files changed, 46 insertions(+), 166 deletions(-) create mode 100644 Makefile delete mode 100644 src/initialise.js delete mode 100644 webroot/custom.css delete mode 100644 webroot/robots.txt diff --git a/.gitignore b/.gitignore index d8cd783..7ffc407 100755 --- a/.gitignore +++ b/.gitignore @@ -7,5 +7,6 @@ config.json data.json hitcount.txt *.swp -data/ +data +webroot images/* diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..a6967b8 --- /dev/null +++ b/Makefile @@ -0,0 +1,41 @@ +DATA_DIR=data +WEBROOT_DIR=webroot + +all: config css users posts comments data +clean: + rm -rf data + rm -rf webroot + rm -f config.json + +# config file +config: config.json +config.json: + cp example-config.json config.json + echo '!!!PLEASE MODIFY config.json ACCORDING TO YOUR NEEDS!!!' + +# custom.css +css: $(WEBROOT_DIR)/custom.css +$(WEBROOT_DIR)/custom.css: + mkdir -p webroot + echo '* {\n font-family: sans-serif;\n}' > $(WEBROOT_DIR)/custom.css + +# users.json +users: $(DATA_DIR)/users.json +$(DATA_DIR)/users.json: + mkdir -p data + echo '[]' > $(DATA_DIR)/users.json +# posts.json +posts: $(DATA_DIR)/posts.json +$(DATA_DIR)/posts.json: + mkdir -p data + echo '[]' > $(DATA_DIR)/posts.json +# comments.json +comments: $(DATA_DIR)/comments.json +$(DATA_DIR)/comments.json: + mkdir -p data + echo '[]' > $(DATA_DIR)/comments.json +# data.json +data: $(DATA_DIR)/data.json +$(DATA_DIR)/data.json: + mkdir -p data + echo '{"hitcount": 0}' > $(DATA_DIR)/data.json diff --git a/docs/INSTALLATION.md b/docs/INSTALLATION.md index 42c80d0..2d0bef1 100644 --- a/docs/INSTALLATION.md +++ b/docs/INSTALLATION.md @@ -2,10 +2,8 @@ This program is currently just ran manually.
All you need to do is clone the git repository:
```git clone https://git.javalsai.tuxcord.net/deadvey/blogger-nodejs.git```
-Then navigate to /src:
-```cd src```
-Then run the initialisation function:
-```node server.js --first-time```
+Then run the Makefile:
+```make``` Then you should modify config.json in / to suit your needs.
# Running I would reccomend running the program in tmux so it does not stop running when you close the terminal window.
diff --git a/src/initialise.js b/src/initialise.js deleted file mode 100644 index dfeeacd..0000000 --- a/src/initialise.js +++ /dev/null @@ -1,50 +0,0 @@ -import { createRequire } from 'module'; -const require = createRequire(import.meta.url) -// Initialise the program by creating users.js, comments.js, posts.js and config.js -// All require default content in them to start off with -// Then exit successfully -// returns nothing -export function initialise() { - const fs = require("fs"); - try { - const users = require("../data/users.json"); - } - catch (error) { - console.log("Creating users file") - fs.writeFileSync(`../data/users.json`, `[]`) - } - try { - const posts = require("../data/posts.json"); - } - catch (error) { - console.log("Creating posts file") - fs.writeFileSync(`../data/posts.json`, `[]`) - } - try { - const comments = require("../data/comments.json"); - } - catch (error) { - console.log("Creating comments file") - fs.writeFileSync(`../data/comments.json`, `[]`) - } - try { - const comments = require("../data/data.json"); - } - catch (error) { - console.log("Creating generic data file") - fs.writeFileSync(`../data/data.json`, `{"hitcount": 0}`) - } - try { - const config = require("../config.json"); - } - catch (error) { - console.log("Copying the example config to config.js") - console.log("!!! PLEASE MODIFY config.json TO YOUR NEEDS !!!") - fs.copyFile('../example-config.json', '../config.json', (err) => { - console.log("Error copying file") - }) - } - - console.log("Successfully initialised") - process.exit(0) -} diff --git a/src/server.js b/src/server.js index d4e20ee..6b1851b 100644 --- a/src/server.js +++ b/src/server.js @@ -10,15 +10,8 @@ const { fromUnixTime, format, getUnixTime } = require("date-fns") // A date util const ejs = require("ejs") const func = require("./functions.js") const data = require("./data.js") -const init = require("./initialise.js") -// There's only one possible argument, so we can just check if the user passed that one -// TODO I plan on adding more such as --help and --post so I should make this more robust at some point -if (process.argv[2] == "--first-time") { - init.initialise() // Creates any files such users.js, posts.js, comments.js or config.js if they are not present -} - // Define the modules now so they are global let users // contains a list of users, each user is an object containing username,prettyname,hash and description let posts // contains a list of posts, @@ -37,7 +30,7 @@ if (config["data_storage"] == "json") { // if they don't all import then // inform the user to pass --first-time and exit with an error code console.log("A file is missing!") - console.log("Run with --first-time to initialise the program") + console.log("Run 'make' to initialise the data files") console.log(error) process.exit(1) } diff --git a/webroot/custom.css b/webroot/custom.css deleted file mode 100644 index 587e3ab..0000000 --- a/webroot/custom.css +++ /dev/null @@ -1,4 +0,0 @@ -/* Put any CSS you want in here, it will be applied to the whole website */ -* { - font-family: sans-serif; -} diff --git a/webroot/robots.txt b/webroot/robots.txt deleted file mode 100644 index 0ba66bf..0000000 --- a/webroot/robots.txt +++ /dev/null @@ -1,99 +0,0 @@ -User-agent: AddSearchBot -User-agent: AI2Bot -User-agent: Ai2Bot-Dolma -User-agent: aiHitBot -User-agent: Amazonbot -User-agent: Andibot -User-agent: anthropic-ai -User-agent: Applebot -User-agent: Applebot-Extended -User-agent: Awario -User-agent: bedrockbot -User-agent: bigsur.ai -User-agent: Brightbot 1.0 -User-agent: Bytespider -User-agent: CCBot -User-agent: ChatGPT Agent -User-agent: ChatGPT-User -User-agent: Claude-SearchBot -User-agent: Claude-User -User-agent: Claude-Web -User-agent: ClaudeBot -User-agent: CloudVertexBot -User-agent: cohere-ai -User-agent: cohere-training-data-crawler -User-agent: Cotoyogi -User-agent: Crawlspace -User-agent: Datenbank Crawler -User-agent: DeepSeekBot -User-agent: Devin -User-agent: Diffbot -User-agent: DuckAssistBot -User-agent: Echobot Bot -User-agent: EchoboxBot -User-agent: FacebookBot -User-agent: facebookexternalhit -User-agent: Factset_spyderbot -User-agent: FirecrawlAgent -User-agent: FriendlyCrawler -User-agent: Gemini-Deep-Research -User-agent: Google-CloudVertexBot -User-agent: Google-Extended -User-agent: Google-Firebase -User-agent: GoogleAgent-Mariner -User-agent: GoogleOther -User-agent: GoogleOther-Image -User-agent: GoogleOther-Video -User-agent: GPTBot -User-agent: iaskspider/2.0 -User-agent: ICC-Crawler -User-agent: ImagesiftBot -User-agent: img2dataset -User-agent: ISSCyberRiskCrawler -User-agent: Kangaroo Bot -User-agent: LinerBot -User-agent: meta-externalagent -User-agent: Meta-ExternalAgent -User-agent: meta-externalfetcher -User-agent: Meta-ExternalFetcher -User-agent: meta-webindexer -User-agent: MistralAI-User -User-agent: MistralAI-User/1.0 -User-agent: MyCentralAIScraperBot -User-agent: netEstate Imprint Crawler -User-agent: NovaAct -User-agent: OAI-SearchBot -User-agent: omgili -User-agent: omgilibot -User-agent: OpenAI -User-agent: Operator -User-agent: PanguBot -User-agent: Panscient -User-agent: panscient.com -User-agent: Perplexity-User -User-agent: PerplexityBot -User-agent: PetalBot -User-agent: PhindBot -User-agent: Poseidon Research Crawler -User-agent: QualifiedBot -User-agent: QuillBot -User-agent: quillbot.com -User-agent: SBIntuitionsBot -User-agent: Scrapy -User-agent: SemrushBot-OCOB -User-agent: SemrushBot-SWA -User-agent: ShapBot -User-agent: Sidetrade indexer bot -User-agent: TerraCotta -User-agent: Thinkbot -User-agent: TikTokSpider -User-agent: Timpibot -User-agent: VelenPublicWebCrawler -User-agent: WARDBot -User-agent: Webzio-Extended -User-agent: wpbot -User-agent: YaK -User-agent: YandexAdditional -User-agent: YandexAdditionalBot -User-agent: YouBot -Disallow: /