21 lines
797 B
TypeScript
21 lines
797 B
TypeScript
import * as fs from 'fs'
|
|
import { exec as cbExec } from 'child_process'
|
|
import * as path from 'path'
|
|
import { promisify } from 'util'
|
|
|
|
const app = process && process.type === 'renderer' ? require('@electron/remote').app : require('electron').app
|
|
const ollama = app.isPackaged ? path.join(process.resourcesPath, 'ollama') : path.resolve(process.cwd(), '..', 'ollama')
|
|
const exec = promisify(cbExec)
|
|
const symlinkPath = '/usr/local/bin/ollama'
|
|
|
|
export function installed() {
|
|
return fs.existsSync(symlinkPath) && fs.readlinkSync(symlinkPath) === ollama
|
|
}
|
|
|
|
export async function install() {
|
|
const command = `do shell script "mkdir -p ${path.dirname(
|
|
symlinkPath
|
|
)} && ln -F -s \\"${ollama}\\" \\"${symlinkPath}\\"" with administrator privileges`
|
|
|
|
await exec(`osascript -e '${command}'`)
|
|
}
|