"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); require("dotenv/config"); const log_1 = require("./log"); const promises_1 = require("fs/promises"); const path_1 = require("path"); const db_1 = require("./db"); const env_1 = require("./env"); const templates_1 = require("./templates"); class Build { constructor() { this.log = (0, log_1.createLog)('build'); this.log.info(`Building site: ${new Date()}`); this.tmpl = new templates_1.Templates(); this.db = new db_1.DB(); this.www = (0, env_1.envString)('WWW', './www'); this.main(); } async main() { let photos; let html; let data = { title: (0, env_1.envString)('TITLE', 'Unknown'), h1: (0, env_1.envString)('H1', 'Unknown'), artist: (0, env_1.envString)('ARTIST', 'Unknown'), umami_url: (0, env_1.envString)('UMAMI_URL', null), umami_id: (0, env_1.envString)('UMAMI_ID', null), year: (new Date()).getFullYear() }; let home = (0, path_1.join)(this.www, 'index.html'); await this.tmpl.build(); photos = await this.db.getAll(); photos = photos.map((photo) => { photo.thumbHeight = Math.round((420.0 / photo.width) * photo.height) + 4; return photo; }); html = await this.tmpl.render('index', { ...data, photos }); try { await (0, promises_1.writeFile)(home, html, 'utf8'); this.log.info(`Wrote ${home}`); } catch (err) { this.log.error(`Error writing home page`, err); } } } new Build(); //# sourceMappingURL=build.js.map