import { join, extname } from 'path' import { existsSync, readdirSync, writeFileSync, mkdirSync } from 'fs' import { init, installExtensions } from '@janhq/core/node' export async function setup() { /** * Setup Jan Data Directory */ const appDir = process.env.JAN_DATA_DIRECTORY ?? join(__dirname, '..', 'jan') console.debug(`Create app data directory at ${appDir}...`) if (!existsSync(appDir)) mkdirSync(appDir) //@ts-ignore global.core = { // Define appPath function for app to retrieve app path globaly appPath: () => appDir, } init({ extensionsPath: join(appDir, 'extensions'), }) /** * Write app configurations. See #1619 */ console.debug('Writing config file...') writeFileSync( join(appDir, 'settings.json'), JSON.stringify({ data_folder: appDir, }), 'utf-8' ) /** * Install extensions */ console.debug('Installing extensions...') const baseExtensionPath = join(__dirname, '../../..', 'pre-install') const extensions = readdirSync(baseExtensionPath) .filter((file) => extname(file) === '.tgz') .map((file) => join(baseExtensionPath, file)) await installExtensions(extensions) console.debug('Extensions installed') }