feat: improved configuration (#31)

This commit is contained in:
Morten Olsen
2024-01-14 12:49:54 +01:00
committed by GitHub
parent 2109bc3af9
commit 7436b3439c
14 changed files with 42 additions and 28 deletions

View File

@@ -20,10 +20,10 @@ class Auth {
#setup = async () => {
const { config } = this.#options;
const secretLocation = resolve(config.files.location, 'secret');
const secretLocation = resolve(config.files.data, 'secret');
let secret = '';
await mkdir(config.files.data, { recursive: true });
if (!existsSync(secretLocation)) {
await mkdir(config.files.location, { recursive: true });
secret = nanoid();
await writeFile(secretLocation, secret);
} else {

View File

@@ -3,7 +3,8 @@ import { Knex } from 'knex';
type Config = {
database: Omit<Knex.Config, 'migrations'>;
files: {
location: string;
data: string;
cache: string;
};
auth?: {
oidc?: {

View File

@@ -62,7 +62,7 @@ class LoadRepo extends EventEmitter<LoadRepoEvents> {
const db = await database.instance;
const id = options.id || nanoid();
const script = createHash('sha256').update(options.script).digest('hex');
const scriptDir = resolve(this.#options.config.files.location, 'scripts');
const scriptDir = resolve(this.#options.config.files.data, 'scripts');
await mkdir(scriptDir, { recursive: true });
await writeFile(resolve(scriptDir, `${script}.js`), options.script);

View File

@@ -59,7 +59,7 @@ class RunnerInstance extends EventEmitter<RunnerInstanceEvents> {
const { runs, secrets } = repos;
try {
const { script: scriptHash, input } = await runs.getById(id);
const scriptLocation = resolve(config.files.location, 'scripts', `${scriptHash}.js`);
const scriptLocation = resolve(config.files.data, 'scripts', `${scriptHash}.js`);
const script = await readFile(scriptLocation, 'utf-8');
const allSecrets = await secrets.getAll();
await runs.started(id);

View File

@@ -1,11 +1,14 @@
import { resolve } from 'path';
import envPaths from 'env-paths';
import { Database } from '../database/database.js';
import { Repos } from '../repos/repos.js';
import { Runner } from '../runner/runner.js';
import { Config } from '../config/config.js';
import { Auth } from '../auth/auth.js';
import { resolve } from 'path';
import { Scheduler } from '../scheduler/scheduler.js';
const paths = envPaths('mini-loader-server');
class Runtime {
#repos: Repos;
#runner: Runner;
@@ -41,12 +44,13 @@ class Runtime {
database: {
client: 'sqlite3',
connection: {
filename: resolve(process.cwd(), 'data', 'database.sqlite'),
filename: resolve(paths.data, 'database.sqlite'),
},
useNullAsDefault: true,
},
files: {
location: resolve(process.cwd(), 'data', 'files'),
data: process.env.DATA_DIR || resolve(paths.data, 'data', 'files'),
cache: process.env.CACHE_DIR || resolve(paths.cache, 'data', 'cache'),
},
});

View File

@@ -1,3 +1,4 @@
import pkg from '../../package.json';
import { fastifyTRPCPlugin, FastifyTRPCPluginOptions } from '@trpc/server/adapters/fastify';
import fastify from 'fastify';
import { RootRouter, rootRouter } from '../router/router.js';
@@ -13,9 +14,6 @@ const createServer = async (runtime: Runtime) => {
level: 'warn',
},
});
server.get('/', async () => {
return { hello: 'world' };
});
server.get('/health', async (req) => {
let authorized = false;
@@ -27,7 +25,7 @@ const createServer = async (runtime: Runtime) => {
authorized = true;
}
} catch (error) {}
return { authorized, status: 'ok' };
return { authorized, status: 'ok', version: pkg.version };
});
server.register(fastifyTRPCPlugin, {