@codesnippets/codesnippets
Version:
Open source code snippets and examples.
41 lines (33 loc) • 1.32 kB
text/typescript
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);
}
});