mirror of
https://github.com/spacedriveapp/spacedrive
synced 2024-07-18 17:49:10 +00:00
* custom updater with toasts * new state management + updated router route * tauri-specific update route * ref * update in prod only * change 'Install' to 'Update' * fix tsconfig * desktop tauri * remove tauri patch * tauri 1.5 * tauri 1.5 * use tauri script * native-deps * Rework preprep and tauri script to better support tauri 1.5 * Update to tauri 1.5.1 - Update workspace and apps/desktop dependencies - Fix mustache import, @types/mustache is not compatible with ES imports - Replace arm64 with aarch64 in machineID, they should be treated the same and this simplyfies the code * Fix tauri updater not building due to missing key - Fix dmg background not being found - Generate an adhoc key for tauri updater with it is enabled and the user is doing a prod build * Fix ctrl+c/ctrl+v typo * Normalie @tanstack/react-query version through workspace - Use undici in scripts instead of global fetch - Fix typecheck * Fix linux prod and dev builds - Improve error handling in tauri.mjs * Normalize dev deps in workspace - Improve linux shared libs setup * Fix CI and server docker * Fix windows - Remove superfluous envvar * Attempt to fix server, mobile, deb and release updater * Attempt to fix deb and mobile again - Fix type on deb dependency - Enable release deb for aarch64-unknown-linux-gnu * Github doesn't have arm runners - Fix typo in server Dockerfile * Publish deb and updater artifacts * remove version from asset name * update commands * log release * Some logs on updater errors * show updater errors on frontend * fix desktop ui caching --------- Co-authored-by: Vítor Vasconcellos <vasconcellos.dev@gmail.com> Co-authored-by: Ericson Fogo Soares <ericson.ds999@gmail.com>
42 lines
862 B
JavaScript
42 lines
862 B
JavaScript
import { exec as execCb } from 'node:child_process'
|
|
import * as fs from 'node:fs/promises'
|
|
import * as os from 'node:os'
|
|
import * as path from 'node:path'
|
|
import { env } from 'node:process'
|
|
import { promisify } from 'node:util'
|
|
|
|
const exec = promisify(execCb)
|
|
|
|
/**
|
|
* @param {string} progName
|
|
* @returns {Promise<boolean>}
|
|
*/
|
|
async function where(progName) {
|
|
// Reject paths
|
|
if (/[\\]/.test(progName)) return false
|
|
try {
|
|
await exec(`where "${progName}"`)
|
|
} catch {
|
|
return false
|
|
}
|
|
|
|
return true
|
|
}
|
|
|
|
/**
|
|
* @param {string} progName
|
|
* @returns {Promise<boolean>}
|
|
*/
|
|
export async function which(progName) {
|
|
return os.type() === 'Windows_NT'
|
|
? where(progName)
|
|
: Promise.any(
|
|
Array.from(new Set(env.PATH?.split(':'))).map(dir =>
|
|
fs.access(path.join(dir, progName), fs.constants.X_OK)
|
|
)
|
|
).then(
|
|
() => true,
|
|
() => false
|
|
)
|
|
}
|