37 lines
1.1 KiB
JavaScript
37 lines
1.1 KiB
JavaScript
const fs = require('fs')
|
|
const path = require('path')
|
|
const mkdirp = require('mkdirp')
|
|
const { execSync } = require('child_process')
|
|
const open = require('open')
|
|
|
|
let xdgConfigHome = process.env.XDG_CONFIG_HOME
|
|
let systemdUserHome = process.env.SYSTEMD_USER_HOME
|
|
|
|
if (xdgConfigHome == null) {
|
|
// Note: path.join() throws when arguments are null-ish.
|
|
xdgConfigHome = path.join(process.env.HOME, '.config')
|
|
}
|
|
|
|
if (systemdUserHome == null) {
|
|
systemdUserHome = path.join(xdgConfigHome, 'systemd', 'user')
|
|
}
|
|
|
|
const targetPath = path.join(systemdUserHome, 'oasis.service')
|
|
|
|
if (fs.existsSync(targetPath)) {
|
|
console.log('Cowardly refusing to overwrite file:', targetPath)
|
|
} else {
|
|
mkdirp(systemdUserHome)
|
|
|
|
const sourcePath = path.join(__dirname, 'oasis.service')
|
|
fs.copyFileSync(sourcePath, targetPath)
|
|
|
|
execSync('systemctl --user daemon-reload')
|
|
console.log('Service configuration has been installed to:', targetPath)
|
|
}
|
|
|
|
// Since this isn't in a post-install script we can enable, start, and open it.
|
|
execSync('systemctl --user enable oasis')
|
|
execSync('systemctl --user start oasis')
|
|
open('http://localhost:4515')
|