UNPKG

alia

Version:
51 lines (50 loc) 1.78 kB
import logger from '../utils/logger.js'; import { request } from '../utils/request.js'; export class GistService { configService; constructor(configService) { this.configService = configService; } async restore() { logger.info('restore config from gist...'); const gistId = this.configService.gistId; let data = {}; data = await request.call(gistId, { method: 'GET', headers: { 'User-Agent': 'nodejs' } }); const { updated_at, files } = data; logger.info(`fetched: ${updated_at}`); const gistFile = files[this.configService.fileName]; if (!gistFile) { throw new Error(`gist must contain a file named '${this.configService.fileName}'`); } const aliaConfig = JSON.parse(gistFile.content); aliaConfig.meta = this.configService.meta; this.configService.save(aliaConfig); logger.info('...done:', this.configService.filePath); } async backup() { logger.info('backup local config to gist...'); const gistId = this.configService.gistId; const token = this.configService.token; const config = this.configService.config; config.meta = {}; const data = JSON.stringify({ description: 'Alia Config', files: { [this.configService.fileName]: { content: JSON.stringify(config, null, 2) } } }); const { html_url } = await request.call(gistId, { method: 'PATCH', headers: { 'User-Agent': 'nodejs', Authorization: `token ${token}` } }, data); logger.info('...done:', html_url); } }