diff --git a/.eslintrc.js b/.eslintrc.js index 8d01eba..2fbd828 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -1,31 +1,31 @@ module.exports = { - "env": { - "browser": true, - "node": true - }, - "extends": [ - "airbnb-base", - "plugin:import/errors", - "plugin:import/warnings", - "prettier", - ], - "plugins": [ - "import", - "prettier", - ], - "rules": { - "import/order": ["error", { - "groups": ["builtin", "external", "parent", "sibling", "index"], - "newlines-between": "never" - }], - "no-console": 0, - "prefer-template": 2, - "prettier/prettier": [ - "error", - { - "singleQuote": true, - "trailingComma": "all", - } - ] + env: { + browser: true, + node: true + }, + extends: [ + 'airbnb-base', + 'plugin:import/errors', + 'plugin:import/warnings', + 'prettier' + ], + plugins: ['import', 'prettier'], + rules: { + 'import/order': [ + 'error', + { + groups: ['builtin', 'external', 'parent', 'sibling', 'index'], + 'newlines-between': 'never' } -}; \ No newline at end of file + ], + 'no-console': 0, + 'prefer-template': 2, + 'prettier/prettier': [ + 'error', + { + singleQuote: true, + trailingComma: 'all' + } + ] + } +}; diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 0000000..0d18603 --- /dev/null +++ b/.prettierrc @@ -0,0 +1,5 @@ +{ + "semi": true, + "trailingComma": "all", + "singleQuote": true +} \ No newline at end of file diff --git a/build.js b/build.js index 6444506..ba83930 100644 --- a/build.js +++ b/build.js @@ -1,7 +1,5 @@ const fs = require('fs-extra'); -const fetch = require('node-fetch'); const cheerio = require('cheerio'); -const dayjs = require('dayjs'); const showdown = require('showdown'); const Parcel = require('parcel-bundler'); const sm = require('sitemap'); @@ -24,26 +22,8 @@ process.on('unhandledRejection', handleFailure); // --- FILES const README = 'README.md'; const WEBSITE_FOLDER = 'website'; -const DATA_FOLDER = 'data'; -const LATEST_FILENAME = `${DATA_FOLDER}/latest`; -const MAPPING = `${DATA_FOLDER}/mapping.json`; -const CATEGORY = `${DATA_FOLDER}/category.json`; const indexTemplate = `${WEBSITE_FOLDER}/index.tmpl.html`; const indexDestination = `${WEBSITE_FOLDER}/index.html`; -const tableTemplate = `${WEBSITE_FOLDER}/table.tmpl.html`; -const tableDestination = `${WEBSITE_FOLDER}/table.html`; - -// --- CONFIG -const valueNames = [ - 'name', - 'description', - 'homepage', - 'star', - 'updated', - 'language', - 'license', - 'author', -]; const sitemapOpts = { hostname: 'https://awesome-docker.netlify.com/', @@ -56,177 +36,9 @@ const sitemapOpts = { lastmodrealtime: true, lastmodfile: 'dist/index.html', }, - { - url: '/table.html', - changefreq: 'daily', - priority: 0.8, - lastmodrealtime: true, - lastmodfile: 'dist/table.html', - }, ], }; -// --- FORMAT -const loadEmoji = () => - fetch('https://api.github.com/emojis') - .then(r => r.json()) - .catch(handleFailure); - -let emojiMapURL = {}; - -const emojify = text => { - if (!text) return text; - const colonWrapped = /(:[\w\-+]+:)/g; - const result = text.replace(colonWrapped, match => { - const name = match.replace(/:/g, ''); - const url = emojiMapURL[name]; - return url ? `` : match; - }); - return result || text; -}; - -const getLastUpdate = updated => { - const updt = Number(dayjs(updated).diff(dayjs(), 'days')); - if (updt < 0) { - if (Math.abs(updt) === 1) return `1 day ago`; - return `${Math.abs(updt)} days ago`; - } else if (updt === 0) return 'today'; - 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, - html_url: repoURL, - description, - homepage, - stargazers_count: stargazers, - pushed_at: updated, - language, - license, - owner, - categoryName, - }, - i, -) => - [ - `
${emojify(description) || '-'}
`, - ` `, - (homepage && - `website`) || - '', - ` `, - (language && `${language}
`) || '', - (license && - license.url !== null && - `${mapLicense( - license.name, - )}`) || - '', - `${categoryName}
`, - owner && - `${ - owner.login - }`, - 'Sort by
${buttonHTLM}