UNPKG

@codesnippets/codesnippets

Version:
41 lines (33 loc) 1.32 kB
import crypto = require('crypto'); import fs = require('fs'); import glob = require('glob'); import path = require('path'); import semver = require('semver'); import { removeComments } from './removeComments'; let object: any = {}; let host = 'https://raw.githubusercontent.com/trimorphdev/codesnippets/master'; let indexPath = path.resolve(path.join(__dirname, '../snippets.jsonc')); let index = JSON.parse(removeComments(fs.readFileSync(indexPath).toString())); for (let language of index) { let lang = {}; const files = glob.sync(language.path, { cwd: path.resolve(path.join(__dirname, '../')) }); for (let snippet of files) { const hash = crypto.createHash('sha1'); hash.update(fs.readFileSync(snippet)); let fn = path.basename(snippet); lang[fn.split('.')[0]] = { path: snippet, url: `${host}/${snippet}`, sum: hash.digest('hex') } } object[language.name] = lang; } fs.writeFileSync(path.resolve(path.join(__dirname, '../snippets.lock.json')), JSON.stringify(object, undefined, 2)); fs.readFile(path.resolve(path.join(__dirname, '../snippets.lock')), (err, res) => { if (err) throw err; const vers = semver.inc(res.toString(), 'patch'); if (vers) { fs.writeFileSync(path.resolve(path.join(__dirname, '../snippets.lock')), vers); } });