UNPKG

cesletter

Version:

Provides the Letter to a CES Director in a variety of useful formats

93 lines (84 loc) 2.66 kB
/* @flow */ /* eslint no-console:0 */ const { exec, execSync } = require('child_process'); const fs = require('fs'); const paths = require('../utils/paths'); const getLinksFromMarkdownList = require('../utils/getLinksFromMarkdownList'); const addRepeats = require('../utils/addRepeats'); const offlineLinks = require('../src/md/offline_links.json'); const port = 1337; function downloadSimpleSitesViaProxy(links, sites) { sites.forEach((site, index) => { const url = site.overwriteUrl || (links.reduce((prev, link) => { if (link.name === site.name) { return link.url; } return prev; }, false)); const wgetCmd = [ 'wget', '-e use_proxy=yes', `-e http_proxy=localhost:${port}`, `-e https_proxy=localhost:${port}`, '--ca-certificate=../../.http-mitm-proxy/certs/ca.pem', '--ca-directory=../../.http-mitm-proxy/certs/', '--no-check-certificate', '--page-requisites', '--adjust-extension', '--convert-links', '--span-hosts', '--backup-converted', '--load-cookies cookies.txt', '--save-cookies cookies.txt', '--header="User-Agent: Mozilla/5.0 (Windows NT 6.0) AppleWebKit/537.11 ' + '(KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11"', '--header="Referer: http://xmodulo.com/"', `--header="CESLETTER-PATH: ${url.replace(/^([^\/]+)\/\/([^\/]+)/, '')}"`, '--timeout=50', '--quiet', '-e robots=off', `"${url}"`, ].join(' '); try { execSync(wgetCmd, { cwd: paths.offlineStorage, }); } catch (err) { if (err.error) { console.log(err.error); } } if (site.moveFromPath && site.moveFromPath.length) { const mvCmd = [ 'mv', `"${site.moveFromPath}"`, `"${site.offlinePath}"`, ].join(' '); try { execSync(mvCmd, { cwd: paths.offlineStorage }); } catch (err) { if (err.error) { console.log(err.error, wgetCmd); } } } console.log('Finished', index + 1, 'of', sites.length); }); } fs.readFile(`${paths.markdownSource}links.md`, 'utf8', (err, data) => { if (err) { console.log(err); } exec(`mkdir -p ${paths.offlineStorage}`, () => { const cookiesFile = 'cookies.txt'; exec(`touch ${cookiesFile}`, { cwd: paths.offlineStorage }, () => { const sites = addRepeats(offlineLinks.prerendered || []); console.log('Starting prerendered sites...'); downloadSimpleSitesViaProxy( getLinksFromMarkdownList(data), sites ); console.log('Finished prerendered sites!'); }); }); });