mirror of
https://github.com/spacedriveapp/spacedrive
synced 2024-07-13 08:24:04 +00:00
49cc098f32
* 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>
34 lines
1,019 B
JavaScript
34 lines
1,019 B
JavaScript
import { spawn } from 'node:child_process'
|
|
|
|
/**
|
|
* @param {string} command
|
|
* @param {string[]} args
|
|
* @param {string} [cwd]
|
|
* @returns {Promise<void>}
|
|
*/
|
|
export default function (command, args, cwd) {
|
|
if (typeof command !== 'string' || command.length === 0)
|
|
throw new Error('Command must be a string and not empty')
|
|
|
|
if (args == null) args = []
|
|
else if (!Array.isArray(args) || args.some(arg => typeof arg !== 'string'))
|
|
throw new Error('Args must be an array of strings')
|
|
|
|
return new Promise((resolve, reject) => {
|
|
const child = spawn(command, args, { cwd, shell: true, stdio: 'inherit' })
|
|
process.on('SIGTERM', () => child.kill('SIGTERM'))
|
|
process.on('SIGINT', () => child.kill('SIGINT'))
|
|
process.on('SIGBREAK', () => child.kill('SIGBREAK'))
|
|
process.on('SIGHUP', () => child.kill('SIGHUP'))
|
|
child.on('error', reject)
|
|
child.on('exit', (code, signal) => {
|
|
if (code === null) code = signal === 'SIGINT' ? 0 : 1
|
|
if (code === 0) {
|
|
resolve()
|
|
} else {
|
|
reject(code)
|
|
}
|
|
})
|
|
})
|
|
}
|