UNPKG

@codesnippets/codesnippets

Version:
77 lines (64 loc) 1.77 kB
import fs = require('fs'); import glob = require('glob'); import path = require('path'); const syncRequest = require('sync-request'); import { isUpToDateSync } from './checkLock'; import { Language } from './language'; let indexPath = path.resolve(path.join(__dirname, '../snippets.lock.json')); let index; let lockUrl = 'https://raw.githubusercontent.com/trimorphdev/codesnippets/master/snippets.lock.json'; /** * Reloads the snippets index. */ export function reload() { if (isUpToDateSync()) { let contents: string = fs.readFileSync(indexPath).toString(); index = JSON.parse(contents); } else { let res = syncRequest('GET', lockUrl); fs.writeFileSync(indexPath, res.body); index = JSON.parse(res.body.toString()); } } /** * Gets a language by name. * @param name name of the Language * @returns the associated Language object */ export function getLanguage(name: string): Language { if (!index) reload(); for (let key of Object.keys(index)) { if (key.toLowerCase() == name.toLowerCase()) { return new Language(key, index[key]); } } } /** * A list of language names defined in snippets.jsonc * @returns list of languages */ export function getLanguageNames(): string[] { if (!index) reload(); let languages = []; for (let item of Object.keys(index)) { languages.push(item); } return languages; } /** * Gets a list of languages defined in snippets.jsonc * @returns list of languages */ export function getLanguages(): Language[] { if (!index) reload(); let languages = []; for (let item of Object.keys(index)) { languages.push(getLanguage(item)); } return languages; } export * from './language'; export * from './snippet';