From 613b75edb6f266768ae27281e786b5da73027a7c Mon Sep 17 00:00:00 2001 From: Grant Date: Mon, 11 Mar 2024 20:53:20 -0600 Subject: [PATCH] add base for tools and add seed_palette tool --- packages/server/src/tools/seed_palette.ts | 166 ++++++++++++++++++++++ packages/server/tool.sh | 43 ++++++ 2 files changed, 209 insertions(+) create mode 100644 packages/server/src/tools/seed_palette.ts create mode 100755 packages/server/tool.sh diff --git a/packages/server/src/tools/seed_palette.ts b/packages/server/src/tools/seed_palette.ts new file mode 100644 index 0000000..1ebd493 --- /dev/null +++ b/packages/server/src/tools/seed_palette.ts @@ -0,0 +1,166 @@ +import { PrismaClient } from "@prisma/client"; + +const prisma = new PrismaClient(); + +// eslint-disable-next-line no-console +const log = (...msg: any[]) => console.log(...msg); + +async function main() { + const palette: { name: string; hex: string }[] = [ + { + name: "White", + hex: "FFFFFF", + }, + { + name: "Light Grey", + hex: "C2CBD4", + }, + { + name: "Medium Grey", + hex: "858D98", + }, + { + name: "Deep Grey", + hex: "4B4F58", + }, + { + name: "Black", + hex: "000000", + }, + { + name: "Dark Chocolate", + hex: "38271D", + }, + { + name: "Chocolate", + hex: "6C422C", + }, + { + name: "Brown", + hex: "BC7541", + }, + { + name: "Peach", + hex: "FFB27F", + }, + { + name: "Beige", + hex: "FFD68F", + }, + { + name: "Pink", + hex: "FEB2D9", + }, + { + name: "Magenta", + hex: "F854CF", + }, + { + name: "Mauve", + hex: "C785F3", + }, + { + name: "Purple", + hex: "9C29BC", + }, + { + name: "Dark Purple", + hex: "562972", + }, + { + name: "Navy", + hex: "1E1E5B", + }, + { + name: "Blue", + hex: "153FA2", + }, + { + name: "Azure", + hex: "1C95DF", + }, + { + name: "Aqua", + hex: "A0E8FF", + }, + { + name: "Light Teal", + hex: "17A8A3", + }, + { + name: "Dark Teal", + hex: "226677", + }, + { + name: "Forest", + hex: "094C45", + }, + { + name: "Dark Green", + hex: "278242", + }, + { + name: "Green", + hex: "43C91E", + }, + { + name: "Lime", + hex: "B7F954", + }, + { + name: "Pastel Yellow", + hex: "FFFFAF", + }, + { + name: "Yellow", + hex: "FAE70F", + }, + { + name: "Orange", + hex: "FEA815", + }, + { + name: "Rust", + hex: "EA5B15", + }, + { + name: "Maroon", + hex: "5A0400", + }, + { + name: "Rose", + hex: "990700", + }, + { + name: "Red", + hex: "D81515", + }, + { + name: "Watermelon", + hex: "FF635E", + }, + ]; + + for (const { name, hex } of palette) { + log("Ensuring color", { name, hex }); + await prisma.paletteColor.upsert({ + where: { hex }, + update: {}, + create: { + name, + hex, + }, + }); + } +} + +main() + .then(async () => { + await prisma.$disconnect(); + }) + .catch(async (e) => { + // eslint-disable-next-line no-console + console.error(e); + await prisma.$disconnect(); + process.exit(1); + }); diff --git a/packages/server/tool.sh b/packages/server/tool.sh new file mode 100755 index 0000000..9976e4c --- /dev/null +++ b/packages/server/tool.sh @@ -0,0 +1,43 @@ +#!/bin/sh +# ^ this needs to be SH instead of bash because of Alpine Linux + +# Utility to use tool depending on environment (using built or dev tooling) + +MY_DIR="$(cd "$(dirname "$0")"; pwd)" +cd $MY_DIR + +USE_PROD=false +if [ "$NODE_ENV" = "production" ]; then + USE_PROD=true +fi + +if ! $USE_PROD; then + echo " Development environment detected"; + echo " NODE_ENV is either empty or set to development"; + echo " Set NODE_ENV to production to use production tools"; + echo ""; +fi + +DEV_TOOLS_ROOT=$MY_DIR/src/tools +PROD_TOOLS_ROOT=$MY_DIR/dist/tools + +if [ "$1" = "" ]; then + echo "Tool argument is empty, specify a filename (without extension) from tools directory"; + if $USE_PROD; then + echo " > Tools Directory: $PROD_TOOLS_ROOT" + else + echo " > Tools Directory: $DEV_TOOLS_ROOT" + fi + exit 1 +fi + +if [[ "$1" == *"."* ]]; then + echo "Tool argument contains a period, do not include extensions while executing tools" + exit 1 +fi + +if $USE_PROD; then + node $PROD_TOOLS_ROOT/$1.js +else + npx ts-node --transpile-only $DEV_TOOLS_ROOT/$1.ts +fi \ No newline at end of file -- GitLab