From d6160edaa47452afe2c92c4a770b5abccf85d35c Mon Sep 17 00:00:00 2001 From: "Felix W. Dekker" Date: Sun, 17 May 2020 16:49:10 +0200 Subject: [PATCH] Add tools page --- .editorconfig | 11 ++++ .gitattributes | 1 + .gitignore | 117 ++++++++++++++++++++++++++++++++++++++++ Gruntfile.js | 121 ++++++++++++++++++++++++++++++++++++++++++ LICENSE | 21 ++++++++ README.md | 22 ++++++++ package-lock.json | Bin 0 -> 219476 bytes package.json | 33 ++++++++++++ src/main/css/main.css | 8 +++ src/main/index.html | 47 ++++++++++++++++ src/main/js/index.js | 32 +++++++++++ 11 files changed, 413 insertions(+) create mode 100644 .editorconfig create mode 100644 .gitattributes create mode 100644 .gitignore create mode 100644 Gruntfile.js create mode 100644 LICENSE create mode 100644 README.md create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 src/main/css/main.css create mode 100644 src/main/index.html create mode 100644 src/main/js/index.js diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..fd1294f --- /dev/null +++ b/.editorconfig @@ -0,0 +1,11 @@ +root = true + +[*] +charset = utf-8 +trim_trailing_whitespace = true + +end_of_line = lf +insert_final_newline = true + +indent_style = space +indent_size = 4 diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..1a6bd45 --- /dev/null +++ b/.gitattributes @@ -0,0 +1 @@ +package-lock.json binary diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e7ea1e8 --- /dev/null +++ b/.gitignore @@ -0,0 +1,117 @@ +## Node +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +lerna-debug.log* + +# Diagnostic reports (https://nodejs.org/api/report.html) +report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json + +# Runtime data +pids +*.pid +*.seed +*.pid.lock + +# Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + +# Coverage directory used by tools like istanbul +coverage +*.lcov + +# nyc test coverage +.nyc_output + +# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) +.grunt + +# Bower dependency directory (https://bower.io/) +bower_components + +# node-waf configuration +.lock-wscript + +# Compiled binary addons (https://nodejs.org/api/addons.html) +build/Release + +# Dependency directories +node_modules/ +jspm_packages/ + +# Snowpack dependency directory (https://snowpack.dev/) +web_modules/ + +# TypeScript cache +*.tsbuildinfo + +# Optional npm cache directory +.npm + +# Optional eslint cache +.eslintcache + +# Microbundle cache +.rpt2_cache/ +.rts2_cache_cjs/ +.rts2_cache_es/ +.rts2_cache_umd/ + +# Optional REPL history +.node_repl_history + +# Output of 'npm pack' +*.tgz + +# Yarn Integrity file +.yarn-integrity + +# dotenv environment variables file +.env +.env.test + +# parcel-bundler cache (https://parceljs.org/) +.cache +.parcel-cache + +# Next.js build output +.next +out + +# Nuxt.js build / generate output +.nuxt +dist + +# Gatsby files +.cache/ +# Comment in the public line in if your project uses Gatsby and not Next.js +# https://nextjs.org/blog/next-9-1#public-directory-support +# public + +# vuepress build output +.vuepress/dist + +# Serverless directories +.serverless/ + +# FuseBox cache +.fusebox/ + +# DynamoDB Local files +.dynamodb/ + +# TernJS port file +.tern-port + +# Stores VSCode versions used for testing VSCode extensions +.vscode-test + +# yarn v2 + +.yarn/cache +.yarn/unplugged +.yarn/build-state.yml +.pnp.* diff --git a/Gruntfile.js b/Gruntfile.js new file mode 100644 index 0000000..e404c27 --- /dev/null +++ b/Gruntfile.js @@ -0,0 +1,121 @@ +const path = require("path"); + +module.exports = grunt => { + grunt.initConfig({ + pkg: grunt.file.readJSON("package.json"), + clean: { + default: ["dist/"], + }, + copy: { + css: { + files: [{expand: true, cwd: "src/main/", src: "**/*.css", dest: "dist/"}] + }, + html: { + files: [{expand: true, cwd: "src/main/", src: "**/*.html", dest: "dist/"}] + }, + }, + focus: { + dev: { + include: ["css", "html", "js", "link"], + }, + }, + replace: { + dev: { + src: ["./dist/*.html", "./dist/*.js"], + replacements: [ + { + from: "%%VERSION_NUMBER%%", + to: "<%= pkg.version %>+" + new Date().toISOString().slice(0, 19).replace(/[-:T]/g, "") + } + ], + overwrite: true + }, + deploy: { + src: ["./dist/*.html", "./dist/*.js"], + replacements: [ + { + from: "%%VERSION_NUMBER%%", + to: "<%= pkg.version %>" + } + ], + overwrite: true + }, + }, + watch: { + css: { + files: ["src/main/**/*.css"], + tasks: ["copy:css"], + }, + html: { + files: ["src/main/**/*.html"], + tasks: ["copy:html"], + }, + js: { + files: ["src/main/**/*.js"], + tasks: ["webpack:dev", "replace:dev"], + }, + link: { + files: ["node_modules/@fwdekker/*/dist/**"], + tasks: ["webpack:dev", "replace:dev"], + }, + }, + webpack: { + options: { + entry: "./src/main/js/index.js", + module: { + rules: [ + { + test: /\.js$/, + exclude: /node_modules/, + }, + ], + }, + resolve: { + extensions: [".js"], + }, + output: { + filename: "bundle.js", + path: path.resolve(__dirname, "dist/"), + }, + }, + dev: { + mode: "development", + devtool: "inline-source-map", + }, + deploy: { + mode: "production", + }, + }, + }); + + grunt.loadNpmTasks("grunt-contrib-clean"); + grunt.loadNpmTasks("grunt-contrib-copy"); + grunt.loadNpmTasks("grunt-contrib-watch"); + grunt.loadNpmTasks("grunt-focus"); + grunt.loadNpmTasks("grunt-text-replace"); + grunt.loadNpmTasks("grunt-webpack"); + + grunt.registerTask("dev", [ + // Pre + "clean", + // Copy files + "copy:css", + "copy:html", + // Compile JS + "webpack:dev", + "replace:dev", + ]); + grunt.registerTask("dev:server", ["dev", "focus:dev"]); + grunt.registerTask("deploy", [ + // Pre + "clean", + // Copy files + "copy:css", + "copy:html", + // Compile JS + "webpack:deploy", + "replace:deploy", + ]); + + grunt.registerTask("default", ["dev"]); +}; diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..e172412 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2020 Felix W. Dekker + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md new file mode 100644 index 0000000..4fadcae --- /dev/null +++ b/README.md @@ -0,0 +1,22 @@ +# Tools +Main page for the /tools directory. + +## Development +### Requirements +* [npm](https://www.npmjs.com/) + +### Setting up +```shell script +# Install dependencies (only needed once) +$> npm ci +``` + +### Building +```shell script +# Build the page in `dist/` for development +$> npm run dev +# Same as above, but automatically rerun it whenever files are changed +$> npm run dev:server +# Build the page in `dist/` for deployment +$> npm run deploy +``` diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000000000000000000000000000000000000..ad4bba11f7b3fd874519835601b7c1943caadbe7 GIT binary patch literal 219476 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 + + + + + + + + + + Tools | FWDekker + + + + + + +
+ +
+ + + + +
+
+
+
+
+
+
+
+ +
+ + + + + + diff --git a/src/main/js/index.js b/src/main/js/index.js new file mode 100644 index 0000000..a850b37 --- /dev/null +++ b/src/main/js/index.js @@ -0,0 +1,32 @@ +import {$, doAfterLoad, footer, header, nav} from "@fwdekker/template"; +import h from "hyperscript"; + + +const unpackEntry = function (entry, depth = 0) { + return h("li", + h(`h${depth + 4}`, h("a", {href: entry.link, innerHTML: entry.name})), + entry.entries.length === 0 ? undefined : h("ul", entry.entries.map(it => unpackEntry(it, depth + 1))) + ); +}; + + +doAfterLoad(() => { + $("#nav").appendChild(nav()); + $("#header").appendChild(header({title: "Tools", description: "An overview of tools I have created"})); + $("#footer").appendChild(footer({ + author: "Felix W. Dekker", + authorURL: "https://fwdekker.com/", + license: "MIT License", + licenseURL: "https://git.fwdekker.com/FWDekker/tools/src/branch/master/LICENSE", + vcs: "git", + vcsURL: "https://git.fwdekker.com/FWDekker/tools/", + version: "v%%VERSION_NUMBER%%" + })); + $("main").style.display = null; + + fetch("https://fwdekker.com/api/nav/") + .then(it => it.json()) + .then(json => json.entries.find(it => it.name === "Tools")) + .then(json => h("ul", json.entries.map(entry => unpackEntry(entry)))) + .then(listing => $("#listing").append(listing)); +});