diff --git a/.gitignore b/.gitignore index 548fcc0..bda70ea 100644 --- a/.gitignore +++ b/.gitignore @@ -8,5 +8,5 @@ yarn-error.log coverage .nyc_output coverage.lcov -/lib -db.json \ No newline at end of file +dist/ +db.json diff --git a/packages/scraper/package.json b/packages/scraper/package.json index bbae48c..27cfbc4 100644 --- a/packages/scraper/package.json +++ b/packages/scraper/package.json @@ -29,7 +29,7 @@ }, "dependencies": { "axios": "^0.18.0", - "esm": "^3.0.17", + "esm": "^3.0.81", "lodash": "^4.17.10", "lowdb": "^1.0.0" }, diff --git a/packages/search-site/dist/.empty b/packages/search-site/dist/.empty new file mode 100644 index 0000000..e69de29 diff --git a/packages/search-site/index.js b/packages/search-site/index.js index 8ee32f7..8f8cc10 100644 --- a/packages/search-site/index.js +++ b/packages/search-site/index.js @@ -2,4 +2,4 @@ require = require('esm')(module); const mod = require('./src/index.mjs').default; -module.exports = mod; +mod(); diff --git a/packages/search-site/index.mjs b/packages/search-site/index.mjs index 5329a9f..ab478a1 100644 --- a/packages/search-site/index.mjs +++ b/packages/search-site/index.mjs @@ -1,3 +1,3 @@ import mod from './src/index.mjs'; -export default mod; +mod(); diff --git a/packages/search-site/package.json b/packages/search-site/package.json index a707de5..f3ab7b8 100644 --- a/packages/search-site/package.json +++ b/packages/search-site/package.json @@ -6,8 +6,9 @@ "module": "index.mjs", "description": "strain search static website", "scripts": { - "start": "node .", - "build": "echo NO BUILD YET" + "start": "node . serve", + "build": "node . build", + "dev": "nodemon -i dist/ -w src -e mjs,ejs -x 'node . build'" }, "author": "joe fleming (https://github.com/w33ble)", "license": "MIT", @@ -15,6 +16,10 @@ "cjs": true }, "dependencies": { + "ejs": "^2.6.1", "esm": "^3.0.81" + }, + "devDependencies": { + "nodemon": "^1.18.4" } } diff --git a/packages/search-site/src/index.html b/packages/search-site/src/index.html new file mode 100644 index 0000000..b45e7d2 --- /dev/null +++ b/packages/search-site/src/index.html @@ -0,0 +1,14 @@ + + + + + + + Strain Search + + + +

Hosted Stuff

+ + + diff --git a/packages/search-site/src/index.mjs b/packages/search-site/src/index.mjs index 301cea4..f9853d0 100644 --- a/packages/search-site/src/index.mjs +++ b/packages/search-site/src/index.mjs @@ -1 +1,75 @@ -// package code goes here \ No newline at end of file +import http from 'http'; +import fs from 'fs'; +import ejs from 'ejs'; + +const srcFile = 'src/index.html'; +const destFile = 'dist/index.html'; + +function build() { + const data = {}; + const options = {}; + + return new Promise((resolve, reject) => { + ejs.renderFile(srcFile, data, options, (err, str) => { + if (err) reject(err); + else { + fs.writeFile(destFile, str, er => { + if (er) reject(er); + else { + console.log(`Site built: ${destFile}`); + resolve(); + } + }); + } + }); + }); +} + +async function serve() { + const PORT = '3000'; + + await build(); + + http + .createServer((req, res) => { + fs.readFile(destFile, (err, str) => { + if (err) { + res.writeHead(500, { 'Content-Type': 'text/plain' }); + res.end('Failed :('); + console.error(err); + return; + } + + res.writeHead(200, { 'Content-Type': 'text/html' }); + res.end(str); + }); + }) + .listen(PORT, () => { + console.log(`Server listening on http://localhost:${PORT}`); + }); +} + +export default async function() { + const cmds = ['build', 'serve']; + const cmd = process.argv.splice(2)[0]; + + try { + switch (cmd) { + case 'build': { + await build(); + break; + } + case 'serve': { + await serve(); + break; + } + default: { + const msg = `Please use one of ${cmds.map(c => `"${c}"`).join(', ')}`; + if (cmd.length) console.error(`Unknown command "${cmd}". ${msg}`); + else console.error(`No command provided. ${msg}`); + } + } + } catch (err) { + console.error(err); + } +} diff --git a/yarn.lock b/yarn.lock index 8d4f139..e5411be 100644 --- a/yarn.lock +++ b/yarn.lock @@ -653,6 +653,10 @@ duplexer@~0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1" +ejs@^2.6.1: + version "2.6.1" + resolved "https://registry.yarnpkg.com/ejs/-/ejs-2.6.1.tgz#498ec0d495655abc6f23cd61868d926464071aa0" + elegant-spinner@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/elegant-spinner/-/elegant-spinner-1.0.1.tgz#db043521c95d7e303fd8f345bedc3349cfb0729e" @@ -824,7 +828,7 @@ eslint@^4.9.0: table "4.0.2" text-table "~0.2.0" -esm@^3.0.17, esm@^3.0.81: +esm@^3.0.81: version "3.0.81" resolved "https://registry.yarnpkg.com/esm/-/esm-3.0.81.tgz#3d78df013960b6d30bb5a5adfafe5d9da654b9d2"