do not prompt the user to move to applications if ollama in path

This commit is contained in:
Bruce MacDonald 2024-03-18 16:17:23 +01:00
parent 22f326464e
commit a467bd3f6c
2 changed files with 55 additions and 38 deletions

View File

@ -32,7 +32,7 @@ const logger = winston.createLogger({
format: winston.format.printf(info => info.message), format: winston.format.printf(info => info.message),
}) })
app.on('ready', () => { app.on('ready', async () => {
const gotTheLock = app.requestSingleInstanceLock() const gotTheLock = app.requestSingleInstanceLock()
if (!gotTheLock) { if (!gotTheLock) {
app.exit(0) app.exit(0)
@ -54,7 +54,7 @@ app.on('ready', () => {
app.focus({ steal: true }) app.focus({ steal: true })
init() await init()
}) })
function firstRunWindow() { function firstRunWindow() {
@ -207,7 +207,7 @@ async function checkUpdate() {
} }
} }
function init() { async function init() {
if (app.isPackaged) { if (app.isPackaged) {
checkUpdate() checkUpdate()
setInterval(() => { setInterval(() => {
@ -217,9 +217,9 @@ function init() {
updateTray() updateTray()
if (process.platform === 'darwin') { const isInstalled = await installed();
if (app.isPackaged) {
if (!app.isInApplicationsFolder()) { if (process.platform === 'darwin' && app.isPackaged && !app.isInApplicationsFolder() && !isInstalled) {
const chosen = dialog.showMessageBoxSync({ const chosen = dialog.showMessageBoxSync({
type: 'question', type: 'question',
buttons: ['Move to Applications', 'Do Not Move'], buttons: ['Move to Applications', 'Do Not Move'],
@ -249,12 +249,10 @@ function init() {
} }
} }
} }
}
}
server() server()
if (store.get('first-time-run') && installed()) { if (store.get('first-time-run1') && isInstalled) {
if (process.platform === 'darwin') { if (process.platform === 'darwin') {
app.dock.hide() app.dock.hide()
} }

View File

@ -1,5 +1,4 @@
import * as fs from 'fs' import { exec as cbExec, spawn } from 'child_process'
import { exec as cbExec } from 'child_process'
import * as path from 'path' import * as path from 'path'
import { promisify } from 'util' import { promisify } from 'util'
@ -8,8 +7,28 @@ const ollama = app.isPackaged ? path.join(process.resourcesPath, 'ollama') : pat
const exec = promisify(cbExec) const exec = promisify(cbExec)
const symlinkPath = '/usr/local/bin/ollama' const symlinkPath = '/usr/local/bin/ollama'
export function installed() { export async function installed() {
return fs.existsSync(symlinkPath) && fs.readlinkSync(symlinkPath) === ollama const shells = ['/bin/zsh', '/bin/bash', '/usr/local/bin/fish'];
const checks = shells.map(shell =>
new Promise(resolve => {
const proc = spawn(shell, ['-l', '-c', `which ollama`]);
proc.on('error', () => {
resolve(false); // if the shell isn't found, this will resolve false here
});
proc.on('close', code => {
if (code === 0) {
resolve(true); // ollama found, resolve true immediately
} else {
resolve(false);
}
});
})
);
const results = await Promise.allSettled(checks)
return results.some(result => result.status === 'fulfilled' && result.value === true)
} }
export async function install() { export async function install() {