UNPKG

playercast

Version:

Cast to media player and control playback remotely

93 lines (81 loc) 2.05 kB
const fs = require('fs'); const systemdPath = `${process.env.HOME}/.config/systemd/user`; const servicePath = `${systemdPath}/playercast.service`; module.exports = { create: (server, argv) => { if(!fs.existsSync(systemdPath)) { fs.mkdirSync(systemdPath.substring(0, systemdPath.lastIndexOf('/'))); fs.mkdirSync(systemdPath); } var execString = `${process.argv[1]} `; if(server) execString += `${server.ip}:${server.port} `; execString += `-q -n '${argv.name}'`; const argvFilter = (option) => { if( option !== '_' && option !== 'quiet' && option !== 'name' && option !== 'listen' && option !== 'attach' && option !== 'subs' && option !== 'create-service' && option !== 'remove-service' && option.length > 1 // Do not process aliases ) { return option; } } const options = Object.keys(argv).filter(argvFilter); options.forEach(option => { if(argv[option] === true) execString += ` --${option}`; else if(argv[option] !== false) { if(isNaN(argv[option])) execString += ` --${option} '${argv[option]}'`; else execString += ` --${option} ${argv[option]}`; } }); const contents = [ `[Unit]`, `Description=Playercast Service`, `After=network-online.target`, `Wants=network-online.target`, ``, `[Service]`, `Type=simple`, `Environment=DISPLAY=:0`, `Environment=PATH=${process.env.PATH}`, `ExecStart=${execString}`, `Restart=always`, ``, `[Install]`, `WantedBy=default.target` ].join('\n'); fs.writeFileSync(servicePath, contents); console.log('Created systemd service file'); console.log([ 'Enable and start service with commands:', ' systemctl --user enable playercast', ' systemctl --user start playercast' ].join('\n')); process.exit(0); }, remove: () => { if(fs.existsSync(servicePath)) { fs.unlinkSync(servicePath); return console.log('Removed systemd service file'); } console.error('Service file not installed!'); process.exit(0); } }