import * as fs from 'fs'
import * as os from 'os'
import * as path from 'path'
import { App } from 'electron'

const APP_NAME = '{{packageName}}'

export interface AppPaths {
  cacheRoot: string
  userDataPath: string
  sessionDataPath: string
  chromiumCachePath: string
}

export function getAppPaths(): AppPaths {
  const cacheRoot = path.join(os.tmpdir(), APP_NAME)
  return {
    cacheRoot,
    userDataPath: path.join(cacheRoot, 'user-data'),
    sessionDataPath: path.join(cacheRoot, 'session-data'),
    chromiumCachePath: path.join(cacheRoot, 'chromium-cache')
  }
}

export function configureAppPaths(app: App): AppPaths {
  const paths = getAppPaths()
  fs.mkdirSync(paths.userDataPath, { recursive: true })
  fs.mkdirSync(paths.sessionDataPath, { recursive: true })
  fs.mkdirSync(paths.chromiumCachePath, { recursive: true })
  app.setPath('userData', paths.userDataPath)
  app.setPath('sessionData', paths.sessionDataPath)
  return paths
}
