Switch to a .env file instead of config.json.

This commit is contained in:
flash 2025-04-11 19:53:37 +00:00
parent 250b69398f
commit f8d548fb36
Signed by: flash
GPG key ID: 2C9C2C574D47FE3E
6 changed files with 39 additions and 23 deletions

13
.env.example Normal file
View file

@ -0,0 +1,13 @@
# Values contained below are also the defaults.
# Enable debug mode
# Primarily turns off minification of output styles, might also display more info in the console
#AMI_DEBUG=1
# Application title
# Sets the title of the application, might be overridden for the window title by the common settings below once they're loaded
#AMI_TITLE="Flashii Chat"
# Common configuration location
# Contains further information shared by the other chat client
#FUTAMI_URL="//futami.flashii.net/common.json"

1
.gitignore vendored
View file

@ -7,3 +7,4 @@
/node_modules
/public/assets
/public/index.html
/.env

View file

@ -2,6 +2,7 @@ NODE_EXE := $(shell which node)
NPM_EXE := $(shell which npm)
BUILD_EXE := build.js
ENV_FILE := .env
all: install build
@ -12,15 +13,15 @@ update:
${NPM_EXE} update --save
build:
${NODE_EXE} ${BUILD_EXE}
${NODE_EXE} --env-file-if-exists ${ENV_FILE} ${BUILD_EXE}
rebuild-css:
${NODE_EXE} ${BUILD_EXE} css
${NODE_EXE} --env-file-if-exists ${ENV_FILE} ${BUILD_EXE} css
rebuild-html:
${NODE_EXE} ${BUILD_EXE} html
${NODE_EXE} --env-file-if-exists ${ENV_FILE} ${BUILD_EXE} html
rebuild-js:
${NODE_EXE} ${BUILD_EXE} js
${NODE_EXE} --env-file-if-exists ${ENV_FILE} ${BUILD_EXE} js
.PHONY: all install update build rebuild-css rebuild-html rebuild-js

View file

@ -4,17 +4,27 @@ Chat client forked from the original Sock Chat client. Maintained for compatibil
## Configuration
Configuration consists of a `config.json` file that contains the various URLs and a default chat title (the unified one is taken from whatever the remote `common.json` supplies).
Make sure you create the file before building. An example is also supplied.
Configuration consists of a `.env` file that contains the various URLs and a default chat title (the unified one is taken from whatever the remote `common.json` supplies).
The defaults supplied by `build.js` are what are used for the production instance. Make sure you modify them as needed!
## Building
Ami uses a build script written in Node.js; make sure you have NPM available and then run the following commands.
Ami uses a build script written in Node.js and a Makefile to make life easier.
I recommend using something like `nvm` with a Node version of at least `v22.14.0 (LTS)`.
```sh
# Installs packages without updating package.json or package-lock.json
npm ci
# Runs the package install and build recipes
make [all]
# Runs the build process, make sure to run this after updates or changes as well
node build.js
# Installs package versions expected by package-lock.json
make install
# Runs the build process
make build
# Updates latest versions of packages expected by package.json
make update
# Rebuild a specific type of asset for speedier development
make rebuild-css / rebuild-html / rebuild-js
```

View file

@ -4,8 +4,7 @@ const fs = require('fs');
const exec = require('util').promisify(require('child_process').exec);
(async () => {
const config = JSON.parse(fs.readFileSync(pathJoin(__dirname, 'config/config.json')));
const isDebug = fs.existsSync(pathJoin(__dirname, '.debug'));
const isDebug = !!process.env.AMI_DEBUG;
const env = {
root: __dirname,
@ -16,13 +15,11 @@ const exec = require('util').promisify(require('child_process').exec);
housekeep: [ pathJoin(__dirname, 'public', 'assets') ],
vars: {
html: {
title: config.title,
title: process.env.AMI_TITLE ?? 'Flashii Chat',
},
build: {
FUTAMI_DEBUG: isDebug,
FUTAMI_URL: config.common_url,
MAMI_URL: config.modern_url,
AMI_URL: config.compat_url,
FUTAMI_URL: process.env.FUTAMI_URL ?? '//futami.flashii.net/common.json',
GIT_HASH: (await exec('git log --pretty="%H" -n1 HEAD')).stdout,
},
},

View file

@ -1,6 +0,0 @@
{
"title": "Flashii Chat",
"common_url": "//futami.flashii.net/common.json",
"modern_url": "//chat.flashii.net",
"compat_url": "//sockchat.flashii.net"
}