48 lines
1.2 KiB
TypeScript
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')
|
|
}
|