tauri-build/src/build-project.ts
Jonas Kruckenberg 116ed3b140
add logic
2022-05-07 12:45:53 +02:00

44 lines
1.0 KiB
TypeScript

import {execa} from 'execa'
import {join} from 'path'
import glob from 'tiny-glob'
interface BuildOptions {
runner?: string
projectPath?: string
configPath?: string
args?: string[]
target?: string
}
export async function buildProject(options: BuildOptions): Promise<string[]> {
const projectPath = options.configPath || process.cwd()
const runner = options.runner || 'tauri'
let args: string[] = options.args || []
if (options.configPath) {
args.push('--config', options.configPath)
}
if (options.target) {
args.push('--target', options.target)
}
await execa(runner, args, {cwd: projectPath})
const outDir = options.target
? `./target/${options.target}/release/bundle`
: `./target/release/bundle`
const macOSExts = ['app', 'app.tar.gz', 'app.tar.gz.sig', 'dmg']
const linuxExts = [
'AppImage',
'AppImage.tar.gz',
'AppImage.tar.gz.sig',
'deb'
]
const windowsExts = ['msi', 'msi.zip', 'msi.zip.sig']
return glob(
join(outDir, `*/*.{${[...macOSExts, linuxExts, windowsExts].join(',')}}`)
)
}