diff --git a/Dockerfile b/Dockerfile index 357fced..2fc664d 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,13 +1,15 @@ FROM node:16-alpine as builder -RUN apk add --no-cache --virtual .build-deps python make g++ +RUN apk add --no-cache --virtual .build-deps python3 make g++ COPY package.json package-lock.json tsconfig.json entrypoint.sh ./ COPY src src RUN npm ci && npm run tsc FROM node:16-alpine as app WORKDIR /usr/src/app -COPY --from=builder node_modules . -COPY --from=builder dist ./dist +RUN apk add git +COPY --from=builder ./node_modules ./node_modules +COPY --from=builder ./dist ./dist +COPY ./.git ./.git COPY entrypoint.sh . COPY databases/*.sql databases/ EXPOSE 8080 diff --git a/entrypoint.sh b/entrypoint.sh index 09b2035..9b73c6b 100755 --- a/entrypoint.sh +++ b/entrypoint.sh @@ -4,9 +4,9 @@ echo 'Entrypoint script' cd /usr/src/app # blank config, use defaults -cp /etc/sponsorblock/config.json . || cat < config.json +cat < config.json { } EOF -node dist/index.js \ No newline at end of file +node dist/src/index.js \ No newline at end of file diff --git a/src/config.ts b/src/config.ts index d42520c..4b4ab32 100644 --- a/src/config.ts +++ b/src/config.ts @@ -9,8 +9,6 @@ const configFile = process.env.TEST_POSTGRES ? "ci.json" : "config.json"; export const config: SBSConfig = JSON.parse(fs.readFileSync(configFile).toString("utf8")); -loadFromEnv(config); -migrate(config); addDefaults(config, { port: 8080, behindProxy: "X-Forwarded-For", @@ -74,7 +72,7 @@ addDefaults(config, { maxRewardTimePerSegmentInSeconds: 600, poiMinimumStartTime: 2, postgres: { - enabled: null, + enabled: false, user: "", host: "", password: "", @@ -120,7 +118,7 @@ addDefaults(config, { }, crons: null, redis: { - enabled: null, + enabled: false, socket: { host: "", port: 0 @@ -128,6 +126,8 @@ addDefaults(config, { disableOfflineQueue: true } }); +loadFromEnv(config); +migrate(config); // Add defaults function addDefaults(config: SBSConfig, defaults: SBSConfig) { @@ -153,25 +153,27 @@ function migrate(config: SBSConfig) { config.disableOfflineQueue = !redisConfig.enable_offline_queue; } - if (redisConfig.socket.host && redisConfig.enabled === null) { + if (redisConfig.socket?.host && redisConfig.enabled === undefined) { redisConfig.enabled = true; } } - if (config.postgres && config.postgres.user && config.postgres.enabled === null) { + if (config.postgres && config.postgres.user && config.postgres.enabled === undefined) { config.postgres.enabled = true; } } function loadFromEnv(config: SBSConfig, prefix = "") { for (const key in config) { + const fullKey = (prefix ? `${prefix}_` : "") + key; + if (typeof config[key] === "object") { - loadFromEnv(config[key], (prefix ? `${prefix}.` : "") + key); - } else if (process.env[key]) { - const value = process.env[key]; + loadFromEnv(config[key], fullKey); + } else if (process.env[fullKey]) { + const value = process.env[fullKey]; if (isNumber(value)) { config[key] = parseInt(value, 10); - } else if (isBoolean(value)) { + } else if (value.toLowerCase() === "true" || value.toLowerCase() === "false") { config[key] = value === "true"; } else { config[key] = value; diff --git a/src/utils/redis.ts b/src/utils/redis.ts index 5f70e35..e1bc2e9 100644 --- a/src/utils/redis.ts +++ b/src/utils/redis.ts @@ -16,13 +16,13 @@ interface RedisSB { } let exportClient: RedisSB = { - get: () => new Promise((resolve, reject) => reject()), - set: () => new Promise((resolve, reject) => reject()), - setEx: () => new Promise((resolve, reject) => reject()), - del: () => new Promise((resolve, reject) => reject()), - increment: () => new Promise((resolve, reject) => reject()), - sendCommand: () => new Promise((resolve, reject) => reject()), - quit: () => new Promise((resolve, reject) => reject()), + get: () => new Promise((resolve) => resolve(null)), + set: () => new Promise((resolve) => resolve(null)), + setEx: () => new Promise((resolve) => resolve(null)), + del: () => new Promise((resolve) => resolve(null)), + increment: () => new Promise((resolve) => resolve(null)), + sendCommand: () => new Promise((resolve) => resolve(null)), + quit: () => new Promise((resolve) => resolve(null)), }; if (config.redis?.enabled) {