diff --git a/app/src/app.tsx b/app/src/app.tsx index 9bb94b11..501a4bb1 100644 --- a/app/src/app.tsx +++ b/app/src/app.tsx @@ -1,34 +1,31 @@ import { useState } from 'react' import copy from 'copy-to-clipboard' -import { exec } from 'child_process' +import { exec as cbExec } from 'child_process' import * as path from 'path' import * as fs from 'fs' import { DocumentDuplicateIcon } from '@heroicons/react/24/outline' import { app } from '@electron/remote' import OllamaIcon from './ollama.svg' +import { promisify } from 'util' const ollama = app.isPackaged ? path.join(process.resourcesPath, 'ollama') : path.resolve(process.cwd(), '..', 'ollama') +const exec = promisify(cbExec) -async function installCLI(callback: () => void) { +async function installCLI() { const symlinkPath = '/usr/local/bin/ollama' if (fs.existsSync(symlinkPath) && fs.readlinkSync(symlinkPath) === ollama) { - callback && callback() return } - const command = ` - do shell script "ln -F -s ${ollama} /usr/local/bin/ollama" with administrator privileges - ` - exec(`osascript -e '${command}'`, (error: Error | null, stdout: string, stderr: string) => { - if (error) { - console.error(`cli: failed to install cli: ${error.message}`) - callback && callback() - return - } + const command = `do shell script "ln -F -s ${ollama} /usr/local/bin/ollama" with administrator privileges` - callback && callback() - }) + try { + await exec(`osascript -e '${command}'`) + } catch (error) { + console.error(`cli: failed to install cli: ${error.message}`) + return + } } export default function () { @@ -66,12 +63,10 @@ export default function () {
> ollama