From df7d086ab9e5832d1f8aa33b87efc803582f06bc Mon Sep 17 00:00:00 2001 From: sk1982 Date: Sun, 7 Apr 2024 06:04:56 -0400 Subject: [PATCH] add some license info --- LICENSE.txt | 12 ++++++++++++ next.config.mjs | 20 +++++++++++++++++++- src/app/layout.tsx | 9 ++++++++- src/instrumentation.ts | 4 ++++ 4 files changed, 43 insertions(+), 2 deletions(-) create mode 100644 LICENSE.txt diff --git a/LICENSE.txt b/LICENSE.txt new file mode 100644 index 0000000..f5f404b --- /dev/null +++ b/LICENSE.txt @@ -0,0 +1,12 @@ +BSD Zero Clause License + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. diff --git a/next.config.mjs b/next.config.mjs index e223baa..42475c9 100644 --- a/next.config.mjs +++ b/next.config.mjs @@ -1,9 +1,26 @@ +import fs from 'fs'; + let baseAssetUrl = process.env.ASSET_URL ?? '/'; if (!baseAssetUrl.endsWith('/')) baseAssetUrl += '/'; let basePath = process.env.BASE_PATH ?? ''; if (basePath.endsWith('/')) basePath = basePath.slice(0, -1); +const packageInfo = JSON.parse(fs.readFileSync('package.json').toString()); + +let versionString = `Actaeon v${packageInfo.version}`; + +try { + const rev = fs.readFileSync('.git/HEAD').toString().trim(); + if (!rev.includes(':')) + versionString += ` (${rev})`; + const branch = rev.replace(/^ref:\s+refs\/heads\//, ''); + const hash = fs.readFileSync(`.git/${rev.slice(5)}`).toString().trim(); + if (branch !== 'main') + versionString += ` on ${branch}`; + versionString += ` (${hash.slice(0, 8)})`; +} catch { } + /** @type {import('next').NextConfig} */ const nextConfig = { images: { @@ -24,7 +41,8 @@ const nextConfig = { }, env: { NEXT_PUBLIC_BASE_PATH: basePath, - NEXT_PUBLIC_ASSET_URL: baseAssetUrl + NEXT_PUBLIC_ASSET_URL: baseAssetUrl, + NEXT_PUBLIC_VERSION_STRING: versionString }, sassOptions: { additionalData: `$asset-url: "${baseAssetUrl}";` diff --git a/src/app/layout.tsx b/src/app/layout.tsx index 588d25e..9f053e5 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -2,6 +2,7 @@ import './globals.scss'; import { LayoutProps } from '@/types/layout'; import { getAssetUrl } from '@/helpers/assets'; import { Providers } from '@/components/providers'; +import Script from 'next/script'; export default async function RootLayout({children}: LayoutProps) { return ( @@ -20,7 +21,13 @@ export default async function RootLayout({children}: LayoutProps) { {children} - + + ); } diff --git a/src/instrumentation.ts b/src/instrumentation.ts index 559f046..5831b74 100644 --- a/src/instrumentation.ts +++ b/src/instrumentation.ts @@ -1,5 +1,9 @@ export async function register() { if (process.env.NEXT_RUNTIME === 'nodejs') { + console.log(`\x1b[38;2;115;0;172m▄\x1b[38;2;120;0;174m▀\x1b[38;2;125;0;176m█\x1b[38;2;131;0;178m \x1b[38;2;136;0;180m█\x1b[38;2;141;0;182m▀\x1b[38;2;146;0;184m▀\x1b[38;2;151;0;187m \x1b[38;2;156;0;189m▀\x1b[38;2;162;0;191m█\x1b[38;2;167;0;193m▀\x1b[38;2;172;0;195m \x1b[38;2;177;0;197m▄\x1b[38;2;182;0;199m▀\x1b[38;2;188;0;201m█\x1b[38;2;193;0;203m \x1b[38;2;198;0;205m█\x1b[38;2;203;0;207m▀\x1b[38;2;208;0;209m▀\x1b[38;2;214;0;211m \x1b[38;2;219;0;213m█\x1b[38;2;224;0;216m▀\x1b[38;2;229;0;218m█\x1b[38;2;234;0;220m \x1b[38;2;239;0;222m█\x1b[38;2;245;0;224m▄\x1b[38;2;250;0;226m░\x1b[38;2;255;0;228m█\x1b[m`); + console.log(`\x1b[38;2;115;0;172m█\x1b[38;2;120;0;174m▀\x1b[38;2;125;0;176m█\x1b[38;2;131;0;178m \x1b[38;2;136;0;180m█\x1b[38;2;141;0;182m▄\x1b[38;2;146;0;184m▄\x1b[38;2;151;0;187m \x1b[38;2;156;0;189m░\x1b[38;2;162;0;191m█\x1b[38;2;167;0;193m░\x1b[38;2;172;0;195m \x1b[38;2;177;0;197m█\x1b[38;2;182;0;199m▀\x1b[38;2;188;0;201m█\x1b[38;2;193;0;203m \x1b[38;2;198;0;205m█\x1b[38;2;203;0;207m█\x1b[38;2;208;0;209m▄\x1b[38;2;214;0;211m \x1b[38;2;219;0;213m█\x1b[38;2;224;0;216m▄\x1b[38;2;229;0;218m█\x1b[38;2;234;0;220m \x1b[38;2;239;0;222m█\x1b[38;2;245;0;224m░\x1b[38;2;250;0;226m▀\x1b[38;2;255;0;228m█\x1b[m`); + console.log('This is free software. \x1B[1mIf you payed for it, you have been scammed.\x1b[m') + if (process.env.NODE_ENV === 'production') { const secret = process.env.NEXTAUTH_SECRET ?? process.env.AUTH_SECRET;