From c852e15b995f2bbc4f17b76e5124b6a3f3872ba2 Mon Sep 17 00:00:00 2001
From: Julien Bisconti
Date: Sat, 9 Jun 2018 22:59:45 +0200
Subject: [PATCH] Table is production ready
---
build.js | 25 +++++-
buildTable.js | 48 +++++-----
icons.js | 40 ---------
package.json | 11 +--
website/index.js | 16 +++-
website/index.tmpl.html | 1 +
website/style.css | 163 ----------------------------------
website/table.tmpl.html | 188 ++++++++++++++++++++++++++++++++++++++--
8 files changed, 247 insertions(+), 245 deletions(-)
delete mode 100644 icons.js
diff --git a/build.js b/build.js
index 2e901b1..7a1ec10 100644
--- a/build.js
+++ b/build.js
@@ -2,6 +2,7 @@ const fs = require('fs');
const showdown = require('showdown');
const cheerio = require('cheerio');
const Parcel = require('parcel-bundler');
+const sm = require('sitemap');
process.env.NODE_ENV = 'production';
@@ -63,7 +64,29 @@ const bundle = (dest = destination) => {
})
.bundle()
.then(() => {
- fs.copyFileSync('website/sitemap.xml', 'dist/sitemap.xml');
+ // Creates a sitemap object given the input configuration with URLs
+ const sitemap = sm.createSitemap({
+ hostname: 'https://awesome-docker.netlify.com/',
+ cacheTime: 6000000, // 600 sec (10 min) cache purge period
+ urls: [
+ {
+ url: '/',
+ changefreq: 'daily',
+ priority: 0.8,
+ lastmodrealtime: true,
+ lastmodfile: 'dist/index.html',
+ },
+ {
+ url: '/table.html',
+ changefreq: 'weekly',
+ priority: 0.8,
+ lastmodrealtime: true,
+ lastmodfile: 'dist/table.html',
+ },
+ ],
+ });
+ fs.writeFileSync('dist/sitemap.xml', sitemap.toString());
+ // fs.copyFileSync('website/sitemap.xml', 'dist/sitemap.xml');
});
};
diff --git a/buildTable.js b/buildTable.js
index e121039..ab86667 100644
--- a/buildTable.js
+++ b/buildTable.js
@@ -1,7 +1,6 @@
const fs = require('fs');
const cheerio = require('cheerio');
const dayjs = require('dayjs');
-const icons = require('./icons');
const getLatestFilename = fs.readFileSync('data/latest', 'utf-8');
console.log(getLatestFilename);
@@ -38,6 +37,22 @@ const getLastUpdate = updated => {
return updated;
};
+const mapHomePage = h => {
+ if (h === 'manageiq.org') return 'https://manageiq.org';
+ else if (h === 'dev-sec.io') return 'https://dev-sec.io';
+ return h;
+};
+
+const mapLicense = l => {
+ if (l === 'GNU Lesser General Public License v3.0') return 'GNU LGPL v3.0';
+ else if (l === 'GNU General Public License v2.0') return 'GNU GPL v2.0';
+ else if (l === 'GNU General Public License v3.0') return 'GNU GPL v3.0';
+ else if (l === 'BSD 3-Clause "New" or "Revised" License')
+ return 'BSD 3-Clause';
+ else if (l === 'BSD 2-Clause "Simplified" License') return 'BSD 2-Clause';
+ return l;
+};
+
const formatEntry = (
{
name,
@@ -62,19 +77,19 @@ const formatEntry = (
updated,
)}
`,
(homepage &&
- `🔗 website`) ||
+ `website`) ||
'',
`⭐️${stargazers}
`,
- (language &&
- `${icons[language] ||
- '💻'}${language}
`) ||
- '',
+ (language && `💻${language}
`) || '',
(license &&
- `📃 ${
- license.name
- }`) ||
+ license.url !== null &&
+ `${mapLicense(
+ license.name,
+ )}`) ||
'',
owner &&
`Made by
',
- );
-
- $('body').append(
- [
- '',
- ].join(''),
- );
console.log('Writing table.html');
fs.writeFileSync(destination, $.html(), 'utf8');
console.log('DONE 👍');
diff --git a/icons.js b/icons.js
deleted file mode 100644
index 9ed310b..0000000
--- a/icons.js
+++ /dev/null
@@ -1,40 +0,0 @@
-module.exports = {
- C:
- '',
- Go:
- '',
- Ruby:
- '',
- CSS:
- '',
- 'C#':
- '',
- 'C++':
- '',
- Clojure: '',
- 'Emacs Lisp': '',
- Groovy: '',
- Haskell: '',
- HTML:
- '',
- Java:
- '',
- JavaScript:
- '',
- Lua: '',
- Makefile: '',
- Nginx:
- '',
- Perl: '',
- PHP:
- '',
- Python:
- '',
- Roff: '',
- Rust: '',
- Scala: '',
- Shell: '',
- Vue:
- '',
- XSLT: '',
-};
diff --git a/package.json b/package.json
index 0dc2a23..aed2301 100644
--- a/package.json
+++ b/package.json
@@ -4,11 +4,7 @@
"description": "A curated list of Docker resources and projects Inspired by @sindresorhus and improved by amazing contributors",
"main": "index.js",
"scripts": {
- "build": "rimraf ./dist/ && node build.js",
- "convert": "showdown makehtml -i README.md -o README.html --omitExtraWLInCodeBlocks --simplifiedAutoLink --excludeTrailingPunctuationFromURLs --literalMidWordUnderscores --strikethrough --tables --tablesHeaderId --ghCodeBlocks --tasklists --disableForced4SpacesIndentedSublists --simpleLineBreaks --requireSpaceBeforeHeadingText --ghCompatibleHeaderId --ghMentions --backslashEscapesHTMLTags --emoji --splitAdjacentBlockquotes",
- "package": "parcel build index.html --public-url /awesome-docker",
- "fetchdata": "node fetchRepos.js",
- "table": "node buildTable.js"
+ "build": "node buildTable.js && rimraf ./dist/ && node build.js"
},
"repository": {
"type": "git",
@@ -30,7 +26,8 @@
"node-fetch": "^2.1.2",
"parcel-bundler": "^1.8.1",
"rimraf": "^2.6.2",
- "showdown": "^1.8.6"
+ "showdown": "^1.8.6",
+ "sitemap": "^1.13.0"
},
"devDependencies": {
"babel-eslint": "^8.2.3",
@@ -40,6 +37,6 @@
"eslint-plugin-import": "^2.12.0",
"eslint-plugin-jsx-a11y": "^6.0.3",
"eslint-plugin-prettier": "^2.6.0",
- "prettier": "^1.13.4"
+ "prettier": "^1.13.5"
}
}
diff --git a/website/index.js b/website/index.js
index c96e45f..ea2aabf 100644
--- a/website/index.js
+++ b/website/index.js
@@ -1,7 +1,19 @@
-const list = require('list.js');
+const List = require('list.js');
const main = () => {
- console.log('hi!');
+ const userList = new List('md', {
+ valueNames: [
+ 'name',
+ 'description',
+ 'homepage',
+ 'star',
+ 'updated',
+ 'language',
+ 'license',
+ 'author',
+ ],
+ });
+ console.log(`There are ${userList.size()} projects`);
};
main();
diff --git a/website/index.tmpl.html b/website/index.tmpl.html
index 776158f..3250935 100644
--- a/website/index.tmpl.html
+++ b/website/index.tmpl.html
@@ -195,6 +195,7 @@
Awesome-docker
A curated list of Docker resources and projects
View on GitHub
+ View Beta
.search {
- border-radius: 5px;
- padding: 10px 20px 10px 20px;
- margin: 20px 0 20px 0;
- width: 300px;
-}
-
-/*******************************************************/
-
-.sortbtn {
- display: grid;
- grid-template-rows: repeat(auto-fill, 1fr);
- grid-template-columns: 100px 100px 100px 100px;
- justify-content: center;
-}
-
-.sortbtn :first-child {
- grid-row: span 3;
- align-self: center;
-}
-
-.sort {
- border-radius: 6px;
- border: 1px solid white;
- color: #fff;
- text-decoration: none;
- background-color: #28a8e0;
- height: 30px;
-}
-
-.sort:hover {
- text-decoration: none;
- background-color: #1b8aba;
-}
-
-.sort:focus {
- outline: none;
-}
-
-.sort:after {
- width: 0;
- height: 0;
- border-left: 5px solid transparent;
- border-right: 5px solid transparent;
- border-bottom: 5px solid transparent;
- content: "";
- position: relative;
- top: -10px;
- right: -5px;
-}
-
-.sort.asc:after {
- width: 0;
- height: 0;
- border-left: 5px solid transparent;
- border-right: 5px solid transparent;
- border-top: 5px solid #fff;
- content: "";
- position: relative;
- top: 13px;
- right: -5px;
-}
-
-.sort.desc:after {
- width: 0;
- height: 0;
- border-left: 5px solid transparent;
- border-right: 5px solid transparent;
- border-bottom: 5px solid #fff;
- content: "";
- position: relative;
- top: -10px;
- right: -5px;
-}
-
-/*******************************************************/
-
-.list {
- display: grid;
- grid-gap: 20px;
- grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
- line-height: 1;
- padding: 20px;
- margin: 0;
-}
-
-.list > li {
- display: grid;
- grid-template-rows: 40px 1fr 30px;
- grid-template-columns: 1fr 1fr;
- list-style: none;
- box-shadow: 2px 2px 6px 0px rgba(0, 0, 0, 0.3);
- border: 1px solid #ccc;
- border-radius: 20px;
-}
-
-li > .description,
-li > .name,
-li > .updated {
- grid-column: span 2;
-}
-
-.list li > * {
- text-align: center;
- margin: 0;
- padding-top: 5px;
- padding-bottom: 5px;
-}
-
-.language > svg {
- height: 1.5rem;
-}
-
-.list li > :first-child {
- color: white;
- background-color: var(--main-list-header);
- border-radius: 20px 20px 0 0;
- padding-top: 10px;
-}
-.list li > .description {
- border-bottom: 1px solid black;
-}
-
-.list > li > :nth-last-child(3),
-.list > li > :nth-last-child(4) {
- align-self: flex-end;
-}
-
-.list > li > :last-child {
- color: white;
- background-color: var(--main-list-footer);
- border-radius: 0 0 20px 0;
- padding: 10px 0 10px 0;
-}
-.list > li > :nth-last-child(2) {
- color: white;
- background-color: var(--main-list-footer);
- border-radius: 0 0 0 20px;
- padding: 10px 0 10px 0;
-}
-
-.pagination li {
- display:inline-block;
- padding:5px;
-}
\ No newline at end of file
diff --git a/website/table.tmpl.html b/website/table.tmpl.html
index e7b72f0..7d61b21 100644
--- a/website/table.tmpl.html
+++ b/website/table.tmpl.html
@@ -13,6 +13,10 @@
-
+
@@ -158,9 +330,9 @@ svg:not(:root) {
data-show-count="true" data-count-aria-label="# stargazers on GitHub" aria-label="Star veggiemonk/awesome-docker on GitHub">Star
-
+
-
+