UNPKG

s-bit-agent

Version:

s.BitAgent is a simple Bitwarden CLI wrapper which provides a SSH2 Key Agent solution for Bitwarden.

92 lines (90 loc) 3.85 kB
"use strict"; var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.SystemdAutostartService = void 0; const common_1 = require("@nestjs/common"); const fs = require("fs"); const child_process = require("child_process"); let SystemdAutostartService = class SystemdAutostartService { constructor() { this.name = 'Systemd Autostart (User)'; } async canActivate() { try { if (process.platform !== 'linux' && process.platform !== 'darwin') { return false; } const result = child_process.spawnSync('systemctl', ['--user', 'status']); return result.status === 0; } catch (error) { console.error('Error checking systemd availability:', error); return false; } } async install(command, name, marker) { try { const homeDir = process.env.HOME; if (!homeDir) { throw new Error('Could not determine user home directory'); } const serviceFilePath = `${homeDir}/.config/systemd/user/${name}-${marker}.service`; const serviceContent = this.generateServiceFileContent(command, marker); fs.writeFileSync(serviceFilePath, serviceContent); child_process.execSync(`systemctl --user enable ${name}-${marker}.service`); child_process.execSync(`systemctl --user daemon-reload`); child_process.execSync(`systemctl --user start ${name}-${marker}.service`); return true; } catch (error) { console.error('Error installing autostart:', error); return false; } } async uninstall(marker) { try { const serviceFiles = fs.readdirSync(`${process.env.HOME}/.config/systemd/user`); const serviceFile = serviceFiles.find((file) => file.includes(`${marker}.service`)); if (serviceFile) { child_process.execSync(`systemctl --user stop ${serviceFile}`); child_process.execSync(`systemctl --user disable ${serviceFile}`); fs.unlinkSync(`${process.env.HOME}/.config/systemd/user/${serviceFile}`); child_process.execSync(`systemctl --user daemon-reload`); } return true; } catch (error) { console.error('Error uninstalling autostart:', error); return false; } } async isInstalled(marker) { try { const serviceFiles = fs.readdirSync(`${process.env.HOME}/.config/systemd/user`); return serviceFiles.some((file) => file.includes(`${marker}.service`)); } catch (error) { console.error('Error checking if autostart is installed:', error); return false; } } generateServiceFileContent(command, marker) { return `[Unit] Description=Autostart entry for ${marker} [Service] ExecStart=${command} [Install] WantedBy=default.target `; } }; exports.SystemdAutostartService = SystemdAutostartService; exports.SystemdAutostartService = SystemdAutostartService = __decorate([ (0, common_1.Injectable)() ], SystemdAutostartService); //# sourceMappingURL=systemd.service.js.map