jan/server/helpers/setup.ts
2024-02-15 08:38:05 +07:00

48 lines
1.2 KiB
TypeScript

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')
}