* feat: Start work on package api * feat: Browser Context Controller * feat: Add packages to cluster metadata feat: Change structure of Package * 🐛 fix: format * 🔨 feat: Add more functions wrapping around Modrinth * 🔨 feat: Start working on browser frontend * feat: BrowserPackage work + markdown support * 🐛 fix: fmt Signed-off-by: Pauline <git@ethanlibs.co> * 🚧 wip: h Signed-off-by: Pauline <git@ethanlibs.co> * feat: Download button for packages for suitable clusters + tweaks * 🚧 wip: markdown and stuff Signed-off-by: Pauline <git@ethanlibs.co> * 🐛 fix: some patches Signed-off-by: Pauline <git@ethanlibs.co> * 🐛 fix: remove react bloat Signed-off-by: Pauline <git@ethanlibs.co> * 🔨 chore(pkg/infer): try to reduce reused code Signed-off-by: Pauline <git@ethanlibs.co> * 🔨 chore: bump deps Signed-off-by: Pauline <git@ethanlibs.co> * 🐛 fix: markdown innerhtml Signed-off-by: Pauline <git@ethanlibs.co> * 🐛 fix: h Signed-off-by: Pauline <git@ethanlibs.co> * 🐛 fix: tweak Signed-off-by: Pauline <git@ethanlibs.co> * 🚧 wip: idk Signed-off-by: Pauline <git@ethanlibs.co> * fix: Gamemode compile error chore: Add missing and remove unused libraries feat: usePreventLeave hook feat: ClusterOverview edit mode continues with navigation (assuming there was a navigation attempt) after pressing Yes or No for save * feat: Add reload clusters button on home page * feat: More information provided to BrowserPackage * fix: Minor fixes (Navbar isActive, Markdown click prevention, Markdown list styling) * 🐛 fix: h Signed-off-by: Pauline <git@ethanlibs.co> * 🐛 fix: highlighting Signed-off-by: Pauline <git@ethanlibs.co> * 🐛 fix: forge modern Signed-off-by: Pauline <git@ethanlibs.co> * 🔨 chore: bump deps Signed-off-by: Pauline <git@ethanlibs.co> * fix: Markdown-it issue + Added promptOpener hook for Markdown links * feat: Made BrowserPackage sidebar sticky * refactor: Package system (not yet in a working state) * 🚧 wip: bump deps temp Signed-off-by: Pauline <git@ethanlibs.co> * feat: Added a package manager * ✨ feature: start prisma work, but it doesnt break anything so we can keep it until its done. also fix some stuff Signed-off-by: Pauline <git@ethanlibs.co> * 🐛 fix: pushing Signed-off-by: Pauline <git@ethanlibs.co> * 🐛 fix: linting Signed-off-by: Pauline <git@ethanlibs.co> * ✨ feature: start ingress integration Signed-off-by: Pauline <git@ethanlibs.co> * feat: Package Manager should work now 👍 * fix: Package manager tracing spam * feat: Added tauri commands for cluster packages format: Auto formatted frontend + backend * 🐛 fix: tmp Signed-off-by: Pauline <git@ethanlibs.co> * 🔨 chore: format Signed-off-by: Pauline <git@ethanlibs.co> * 🐛 fix: specta extension Signed-off-by: Pauline <git@ethanlibs.co> * 🐛 fix: github actions Signed-off-by: Pauline <git@ethanlibs.co> * 🐛 fix: alias Signed-off-by: Pauline <git@ethanlibs.co> * chore: Some tweaks and fixes * chore: Rebase + gitignore bindings.ts * chore: Remove bindings.ts * 🐛 fix: migrate Signed-off-by: Pauline <git@ethanlibs.co> * 🚧 wip: not sure Signed-off-by: Pauline <git@ethanlibs.co> * 🐛 fix: finalize prisma init schema Signed-off-by: Pauline <git@ethanlibs.co> * 🔨 chore: format Signed-off-by: Pauline <git@ethanlibs.co> * 🐛 fix: bump deps Signed-off-by: Pauline <git@ethanlibs.co> * 🐛 fix: system deps Signed-off-by: Pauline <git@ethanlibs.co> * fix: solid-router navigation issue * feat: Added new BrowserMain page * feat: Tweaks + new package list view * 🐛 fix: bump + format (todo: tauri2, etc) Signed-off-by: Pauline <git@ethanlibs.co> * 🐛 fix: devx (fixes #126) Signed-off-by: Pauline <git@ethanlibs.co> * 🔨 chore: migrate to consola Signed-off-by: Pauline <git@ethanlibs.co> --------- Signed-off-by: Pauline <git@ethanlibs.co> Co-authored-by: LynithDev <61880709+LynithDev@users.noreply.github.com>
66 lines
1.7 KiB
TypeScript
66 lines
1.7 KiB
TypeScript
import { env } from 'node:process';
|
|
import { machine, type } from 'node:os';
|
|
import { execaCommand } from 'execa';
|
|
import consola from 'consola';
|
|
|
|
const state: { __debug: boolean; libc: 'musl' | 'glibc' } = {
|
|
__debug: env.NODE_ENV === 'debug',
|
|
libc: 'glibc',
|
|
};
|
|
|
|
if (type() === 'Linux')
|
|
try {
|
|
const lldResult = await execaCommand('ldd /bin/ls');
|
|
if (lldResult.stdout.includes('msl'))
|
|
state.libc = 'musl';
|
|
}
|
|
catch (error) {
|
|
if (state.__debug) {
|
|
consola.warn('failed to check libs type');
|
|
consola.error(error);
|
|
}
|
|
}
|
|
|
|
const OS_TYPE: Record<string, string> = {
|
|
darwin: 'Darwin',
|
|
windows: 'Windows_NT',
|
|
linux: 'Linux',
|
|
};
|
|
|
|
type TripleID = ['Darwin' | 'Windows_NT', 'x86_64' | 'aarch64'] | ['Linux', 'x86_64' | 'aarch64', 'musl' | 'glibc'];
|
|
|
|
export function getTriple(): TripleID {
|
|
const tripleState: {
|
|
_libc: typeof state.libc;
|
|
_os: string;
|
|
_arch: string;
|
|
} = {
|
|
_libc: state.libc,
|
|
_os: '',
|
|
_arch: '',
|
|
};
|
|
|
|
if (env.TARGET_TRIPLE) {
|
|
const target = env.TARGET_TRIPLE.split('-');
|
|
tripleState._os = OS_TYPE[target[2] ?? ''] as string;
|
|
tripleState._arch = target[0] as string;
|
|
if (tripleState._os === 'Linux')
|
|
tripleState._libc = target[3]?.includes('musl') ? 'musl' : 'glibc';
|
|
}
|
|
else {
|
|
tripleState._os = type();
|
|
tripleState._arch = machine();
|
|
if (tripleState._arch === 'arm64')
|
|
tripleState._arch = 'aarch64';
|
|
}
|
|
|
|
if (tripleState._arch !== 'x86_64' && tripleState._arch !== 'aarch64')
|
|
throw new Error(`Unsuported architecture`);
|
|
|
|
if (tripleState._os === 'Linux')
|
|
return [tripleState._os, tripleState._arch, tripleState._libc];
|
|
else if (tripleState._os !== 'Darwin' && tripleState._os !== 'Windows_NT')
|
|
throw new Error(`Unsuported OS`);
|
|
|
|
return [tripleState._os, tripleState._arch];
|
|
}
|