A music player that connects to your cloud/distributed storage.
at main 6.2 kB view raw
1export NODE_NO_WARNINGS := "1" 2 3 4BUILD_DIR := "./dist" 5NPM_DIR := "./node_modules" 6SRC_DIR := "./src" 7SYSTEM_DIR := "./system" 8 9ESBUILD := "node system/Js/esbuild.mjs" 10ELM_REVIEW := NPM_DIR + "/.bin/elm-review " + SRC_DIR + " --config system/Review --compiler " + NPM_DIR + "/.bin/elm --elm-format-path " + NPM_DIR + "/.bin/elm-format" 11 12 13default: dev 14 15 16# Tasks 17# ===== 18 19@build: clean css elm copy-wasm js system license 20 echo "> Build completed ⚡" 21 22 23@build-prod: quality clean (css "minify") elm-prod copy-wasm js-prod system license 24 echo "> Production build completed 🛳" 25 26 27check-versions: 28 #!/usr/bin/env node 29 console.log("> Checking version numbers 🧮") 30 const pwd = "{{invocation_directory()}}" 31 32 const package = require(`${pwd}/package.json`) 33 const manifest = require(`${pwd}/src/Static/Manifests/manifest.json`) 34 35 if (package.version !== manifest.version) { 36 console.error(`The version from package.json doesn't match the one from the app manifest. The package version is '${package.version}' and the manifest version is '${manifest.version}'.`) 37 process.exit(1) 38 } 39 40 41@clean: 42 echo "> Cleaning build directory" 43 rm -rf {{BUILD_DIR}} || true 44 mkdir -p {{BUILD_DIR}} 45 46 47@copy-wasm: 48 echo "> Copying WASM files" 49 mkdir -p {{BUILD_DIR}}/wasm 50 cp {{NPM_DIR}}/mediainfo.js/dist/MediaInfoModule.wasm {{BUILD_DIR}}/wasm/media-info.wasm 51 52 53@css minify="false": 54 echo "{{ if minify == "minify" { "> Compiling CSS (optimised)" } else { "> Compiling CSS" } }}" 55 56 {{NPM_DIR}}/.bin/tailwind \ 57 --input {{SRC_DIR}}/Css/About.css \ 58 --output {{BUILD_DIR}}/about.css \ 59 --content {{SRC_DIR}}/Static/About/**/*.* \ 60 --config {{SYSTEM_DIR}}/Css/Tailwind.js \ 61 --postcss {{SYSTEM_DIR}}/Css/PostCSS.js \ 62 --jit \ 63 {{ if minify == "minify" { "--minify" } else { "" } }} 64 65 {{NPM_DIR}}/.bin/tailwind \ 66 --input {{SRC_DIR}}/Css/Application.css \ 67 --output {{BUILD_DIR}}/application.css \ 68 --content "{{SRC_DIR}}/Static/Html/**/*.*,{{SRC_DIR}}/Core/Themes/**/*.elm,{{SRC_DIR}}/Core/UI/**/*.elm,{{SRC_DIR}}/Core/UI.elm,{{SRC_DIR}}/Library/**/*.elm,{{SRC_DIR}}/Javascript/**/*.ts" \ 69 --config {{SYSTEM_DIR}}/Css/Tailwind.js \ 70 --postcss {{SYSTEM_DIR}}/Css/PostCSS.js \ 71 --jit \ 72 {{ if minify == "minify" { "--minify" } else { "" } }} 73 74 75@elm: 76 echo "> Compiling Elm application" 77 {{NPM_DIR}}/.bin/elm make {{SRC_DIR}}/Core/Brain.elm --output {{BUILD_DIR}}/js/brain.elm.js 78 {{NPM_DIR}}/.bin/elm make {{SRC_DIR}}/Core/UI.elm --output {{BUILD_DIR}}/js/ui.elm.js 79 80 81@elm-prod: 82 echo "> Compiling Elm application (optimised)" 83 {{NPM_DIR}}/.bin/elm make {{SRC_DIR}}/Core/Brain.elm --output {{BUILD_DIR}}/js/brain.elm.js --optimize 84 {{NPM_DIR}}/.bin/elm make {{SRC_DIR}}/Core/UI.elm --output {{BUILD_DIR}}/js/ui.elm.js --optimize 85 86 {{NPM_DIR}}/.bin/esbuild {{BUILD_DIR}}/js/brain.elm.js \ 87 --minify --outfile={{BUILD_DIR}}/js/brain.elm.tmp.js 88 89 {{NPM_DIR}}/.bin/esbuild {{BUILD_DIR}}/js/ui.elm.js \ 90 --minify --outfile={{BUILD_DIR}}/js/ui.elm.tmp.js 91 92 rm {{BUILD_DIR}}/js/brain.elm.js 93 mv {{BUILD_DIR}}/js/brain.elm.tmp.js {{BUILD_DIR}}/js/brain.elm.js 94 rm {{BUILD_DIR}}/js/ui.elm.js 95 mv {{BUILD_DIR}}/js/ui.elm.tmp.js {{BUILD_DIR}}/js/ui.elm.js 96 97 98js: 99 #!/usr/bin/env bash 100 build_timestamp="`date '+%s'`" 101 echo "> Compiling Javascript code" 102 103 # Workers 104 {{ESBUILD}} ./src/Javascript/Workers/search.ts \ 105 --outfile={{BUILD_DIR}}/search.js 106 107 {{ESBUILD}} ./src/Javascript/Workers/service.ts \ 108 --outfile={{BUILD_DIR}}/service-worker.js \ 109 --define:BUILD_TIMESTAMP=$build_timestamp 110 111 {{ESBUILD}} ./src/Javascript/Brain/index.ts \ 112 --outdir={{BUILD_DIR}}/js/brain/ \ 113 --splitting \ 114 --alias:brain.elm.js={{BUILD_DIR}}/js/brain.elm.js \ 115 --inject:./system/Js/node-shims.js \ 116 --alias:node:buffer=buffer/ \ 117 --alias:node:stream=stream 118 119 # Main 120 {{ESBUILD}} ./src/Javascript/UI/index.ts \ 121 --outdir={{BUILD_DIR}}/js/ui/ \ 122 --define:BUILD_TIMESTAMP=$build_timestamp \ 123 --splitting \ 124 --alias:node:buffer=buffer/ \ 125 --alias:node:stream=stream 126 127 128js-prod: 129 #!/usr/bin/env bash 130 build_timestamp="`date '+%s'`" 131 echo "> Compiling Javascript code (optimised)" 132 133 # Workers 134 {{ESBUILD}} ./src/Javascript/Workers/search.ts \ 135 --minify \ 136 --outfile={{BUILD_DIR}}/search.js 137 138 {{ESBUILD}} ./src/Javascript/Workers/service.ts \ 139 --minify \ 140 --outfile={{BUILD_DIR}}/service-worker.js \ 141 --define:BUILD_TIMESTAMP=$build_timestamp 142 143 {{ESBUILD}} ./src/Javascript/Brain/index.ts \ 144 --outdir={{BUILD_DIR}}/js/brain/ \ 145 --splitting \ 146 --minify \ 147 --alias:brain.elm.js={{BUILD_DIR}}/js/brain.elm.js \ 148 --inject:./system/Js/node-shims.js \ 149 --alias:node:buffer=buffer/ \ 150 --alias:node:stream=stream 151 152 # Main 153 {{ESBUILD}} ./src/Javascript/UI/index.ts \ 154 --outdir={{BUILD_DIR}}/js/ui/ \ 155 --define:BUILD_TIMESTAMP=$build_timestamp \ 156 --splitting \ 157 --minify \ 158 --alias:node:buffer=buffer/ \ 159 --alias:node:stream=stream 160 161 162@license: 163 echo "> Copying license file" 164 cp LICENSE {{BUILD_DIR}}/LICENSE 165 166 167@system: 168 echo "> Compiling system" 169 {{NPM_DIR}}/.bin/gren make system/Build/Build.gren 170 node app 171 rm app 172 173 174 175# 176# Dev tasks 177# 178 179@dev: build 180 just watch & just server 181 182 183@doc-tests: 184 echo "> Running documentation tests" 185 ( cd src && \ 186 find . -name "*.elm" -print0 | \ 187 xargs -0 -n 1 -I % sh -c 'elm-proofread -- % || exit 255; echo "\n\n"' \ 188 ) 189 190 191@elm-format: 192 echo "> Running elm-format" 193 {{NPM_DIR}}/.bin/elm-format {{SRC_DIR}} --yes 194 195 196@elm-housekeeping: elm-format elm-review 197 198 199@elm-review: 200 echo "> Running elm-review" 201 {{ELM_REVIEW}} --fix-all 202 203 204@quality: check-versions 205 echo "> Running es-lint" 206 {{NPM_DIR}}/.bin/eslint src/Javascript/**/* 207 echo "> Running elm-review" 208 {{ELM_REVIEW}} 209 210 211@server: 212 echo "> Booting up web server on port 8000" 213 {{NPM_DIR}}/.bin/serve {{BUILD_DIR}} -p 8000 --no-request-logging 214 215 216@test: doc-tests 217 218 219@watch: 220 echo "> Watching" 221 just watch-css & just watch-elm & just watch-js & just watch-system 222 223 224@watch-css: 225 watchexec -p -w {{SRC_DIR}}/Css -w {{SYSTEM_DIR}}/Css -- just css js 226 227 228@watch-elm: 229 watchexec -p -w {{SRC_DIR}} -e elm -- just elm js css 230 231 232@watch-js: 233 watchexec -p -w {{SRC_DIR}} -e js,ts -- just js 234 235 236@watch-system: 237 watchexec -p --ignore *.elm --ignore *.js --ignore *.ts --ignore *.css --ignore src-tauri/** -- just system js