import { Message } from 'eris'; import { Client, Command } from '../class'; export default class SystemD_Start extends Command { constructor(client: Client) { super(client); this.name = 'start'; this.description = `Starts a SystemD user service, if the service is already running use \`${this.client.config.prefix}systemd restart \`.`; this.usage = `${this.client.config.prefix}systemd start `; this.enabled = true; } public async run(message: Message, args: string[]) { try { if (!args[0]) return this.client.commands.get('help').run(message, ['systemd', this.name]); const account = await this.client.db.Account.findOne({ userID: message.author.id }); if (!account) return this.error(message.channel, 'You do not have a Cloud Services account.'); try { await this.client.util.exec(`runuser ${account.username} -c 'DBUS_SESSION_BUS_ADDRESS="unix:path=/run/user/\${UID}/bus" systemctl --user start ${args[0]}'`); message.delete(); return this.success(message.channel, 'Service started.'); } catch (err) { if (err.includes('not found')) return this.error(message.channel, 'Service not found.'); return this.error(message.channel, err.toString()); } } catch (err) { return this.client.util.handleError(err, message, this); } } }