diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 9e60461..455fdc7 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -94,10 +94,11 @@ jobs: APPLE_CERTIFICATE: ${{ secrets.APPLE_CERTIFICATE }} APPLE_CERTIFICATE_PASSWORD: ${{ secrets.APPLE_CERTIFICATE_PASSWORD }} APPLE_SIGNING_IDENTITY: ${{ env.CERT_ID }} + NO_STRIP: true with: tagName: v__VERSION__ # the action automatically replaces \_\_VERSION\_\_ with the app version. releaseName: 'Auto-release v__VERSION__' releaseBody: 'See the assets to download this version and install. This release was created automatically.' releaseDraft: false prerelease: true - args: ${{ matrix.args }} + args: ${{ matrix.args }} \ No newline at end of file diff --git a/.gitignore b/.gitignore index 5767a3f..c60be72 100644 --- a/.gitignore +++ b/.gitignore @@ -26,4 +26,7 @@ dist-ssr .output src-tauri/flamegraph.svg -src-tauri/perf* \ No newline at end of file +src-tauri/perf* + +/*.AppImage +/squashfs-root \ No newline at end of file diff --git a/.gitmodules b/.gitmodules index f47083b..df4511d 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,9 +1,6 @@ -[submodule "drop-base"] - path = drop-base - url = https://github.com/drop-oss/drop-base [submodule "src-tauri/tailscale/libtailscale"] path = src-tauri/tailscale/libtailscale url = https://github.com/tailscale/libtailscale.git -[submodule "src-tauri/umu/umu-launcher"] - path = src-tauri/umu/umu-launcher - url = https://github.com/Open-Wine-Components/umu-launcher.git +[submodule "libs/drop-base"] + path = libs/drop-base + url = https://github.com/drop-oss/drop-base.git diff --git a/build.mjs b/build.mjs new file mode 100644 index 0000000..c4846f1 --- /dev/null +++ b/build.mjs @@ -0,0 +1,48 @@ +import fs from "fs"; +import process from "process"; +import childProcess from "child_process"; +import createLogger from "pino"; + +const OUTPUT = "./.output"; +const logger = createLogger({ transport: { target: "pino-pretty" } }); + +async function spawn(exec, opts) { + const output = childProcess.spawn(exec, { ...opts, shell: true }); + output.stdout.on("data", (data) => { + process.stdout.write(data); + }); + output.stderr.on("data", (data) => { + process.stderr.write(data); + }); + + return await new Promise((resolve, reject) => { + output.on("error", (err) => reject(err)); + output.on("exit", () => resolve()); + }); +} + +const views = fs.readdirSync(".").filter((view) => { + const expectedPath = `./${view}/package.json`; + return fs.existsSync(expectedPath); +}); + +fs.mkdirSync(OUTPUT, { recursive: true }); + +for (const view of views) { + const loggerChild = logger.child({}); + process.chdir(`./${view}`); + + loggerChild.info(`Install deps for "${view}"`); + await spawn("yarn"); + + loggerChild.info(`Building "${view}"`); + await spawn("yarn build", { + env: { ...process.env, NUXT_APP_BASE_URL: `/${view}/` }, + }); + + process.chdir(".."); + + fs.cpSync(`./${view}/.output/public`, `${OUTPUT}/${view}`, { + recursive: true, + }); +} \ No newline at end of file diff --git a/composables/app-state.ts b/composables/app-state.ts deleted file mode 100644 index 2781bd2..0000000 --- a/composables/app-state.ts +++ /dev/null @@ -1,3 +0,0 @@ -import type { AppState } from "~/types"; - -export const useAppState = () => useState("state"); \ No newline at end of file diff --git a/drop-base b/libs/drop-base similarity index 100% rename from drop-base rename to libs/drop-base diff --git a/app.vue b/main/app.vue similarity index 75% rename from app.vue rename to main/app.vue index 46a38ab..7d4165f 100644 --- a/app.vue +++ b/main/app.vue @@ -10,8 +10,6 @@ import "~/composables/downloads.js"; import { invoke } from "@tauri-apps/api/core"; -import { AppStatus } from "~/types"; -import { listen } from "@tauri-apps/api/event"; import { useAppState } from "./composables/app-state.js"; import { initialNavigation, @@ -21,19 +19,26 @@ import { const router = useRouter(); const state = useAppState(); -try { - state.value = JSON.parse(await invoke("fetch_state")); -} catch (e) { - console.error("failed to parse state", e); + +async function fetchState() { + try { + state.value = JSON.parse(await invoke("fetch_state")); + if (!state.value) + throw createError({ + statusCode: 500, + statusMessage: `App state is: ${state.value}`, + fatal: true, + }); + } catch (e) { + console.error("failed to parse state", e); + throw e; + } } +await fetchState(); // This is inefficient but apparently we do it lol router.beforeEach(async () => { - try { - state.value = JSON.parse(await invoke("fetch_state")); - } catch (e) { - console.error("failed to parse state", e); - } + await fetchState(); }); setupHooks(); diff --git a/assets/main.scss b/main/assets/main.scss similarity index 100% rename from assets/main.scss rename to main/assets/main.scss diff --git a/assets/wallpaper.jpg b/main/assets/wallpaper.jpg similarity index 100% rename from assets/wallpaper.jpg rename to main/assets/wallpaper.jpg diff --git a/components/GameOptions/Launch.vue b/main/components/GameOptions/Launch.vue similarity index 100% rename from components/GameOptions/Launch.vue rename to main/components/GameOptions/Launch.vue diff --git a/components/GameOptionsModal.vue b/main/components/GameOptionsModal.vue similarity index 100% rename from components/GameOptionsModal.vue rename to main/components/GameOptionsModal.vue diff --git a/components/GameStatusButton.vue b/main/components/GameStatusButton.vue similarity index 100% rename from components/GameStatusButton.vue rename to main/components/GameStatusButton.vue diff --git a/components/Header.vue b/main/components/Header.vue similarity index 97% rename from components/Header.vue rename to main/components/Header.vue index 5cf299f..160b9ae 100644 --- a/components/Header.vue +++ b/main/components/Header.vue @@ -37,7 +37,7 @@ - + diff --git a/components/HeaderButton.vue b/main/components/HeaderButton.vue similarity index 100% rename from components/HeaderButton.vue rename to main/components/HeaderButton.vue diff --git a/components/HeaderQueueWidget.vue b/main/components/HeaderQueueWidget.vue similarity index 100% rename from components/HeaderQueueWidget.vue rename to main/components/HeaderQueueWidget.vue diff --git a/components/HeaderUserWidget.vue b/main/components/HeaderUserWidget.vue similarity index 96% rename from components/HeaderUserWidget.vue rename to main/components/HeaderUserWidget.vue index b6e245f..518f99c 100644 --- a/components/HeaderUserWidget.vue +++ b/main/components/HeaderUserWidget.vue @@ -1,5 +1,5 @@