mirror of
https://github.com/veggiemonk/awesome-docker.git
synced 2024-12-22 14:15:10 -05:00
Remove beta
This commit is contained in:
parent
6ae26b9fd6
commit
2de40bd9aa
58
.eslintrc.js
58
.eslintrc.js
@ -1,31 +1,31 @@
|
|||||||
module.exports = {
|
module.exports = {
|
||||||
"env": {
|
env: {
|
||||||
"browser": true,
|
browser: true,
|
||||||
"node": true
|
node: true
|
||||||
},
|
},
|
||||||
"extends": [
|
extends: [
|
||||||
"airbnb-base",
|
'airbnb-base',
|
||||||
"plugin:import/errors",
|
'plugin:import/errors',
|
||||||
"plugin:import/warnings",
|
'plugin:import/warnings',
|
||||||
"prettier",
|
'prettier'
|
||||||
],
|
],
|
||||||
"plugins": [
|
plugins: ['import', 'prettier'],
|
||||||
"import",
|
rules: {
|
||||||
"prettier",
|
'import/order': [
|
||||||
],
|
'error',
|
||||||
"rules": {
|
{
|
||||||
"import/order": ["error", {
|
groups: ['builtin', 'external', 'parent', 'sibling', 'index'],
|
||||||
"groups": ["builtin", "external", "parent", "sibling", "index"],
|
'newlines-between': 'never'
|
||||||
"newlines-between": "never"
|
|
||||||
}],
|
|
||||||
"no-console": 0,
|
|
||||||
"prefer-template": 2,
|
|
||||||
"prettier/prettier": [
|
|
||||||
"error",
|
|
||||||
{
|
|
||||||
"singleQuote": true,
|
|
||||||
"trailingComma": "all",
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
}
|
||||||
};
|
],
|
||||||
|
'no-console': 0,
|
||||||
|
'prefer-template': 2,
|
||||||
|
'prettier/prettier': [
|
||||||
|
'error',
|
||||||
|
{
|
||||||
|
singleQuote: true,
|
||||||
|
trailingComma: 'all'
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
};
|
||||||
|
5
.prettierrc
Normal file
5
.prettierrc
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"semi": true,
|
||||||
|
"trailingComma": "all",
|
||||||
|
"singleQuote": true
|
||||||
|
}
|
190
build.js
190
build.js
@ -1,7 +1,5 @@
|
|||||||
const fs = require('fs-extra');
|
const fs = require('fs-extra');
|
||||||
const fetch = require('node-fetch');
|
|
||||||
const cheerio = require('cheerio');
|
const cheerio = require('cheerio');
|
||||||
const dayjs = require('dayjs');
|
|
||||||
const showdown = require('showdown');
|
const showdown = require('showdown');
|
||||||
const Parcel = require('parcel-bundler');
|
const Parcel = require('parcel-bundler');
|
||||||
const sm = require('sitemap');
|
const sm = require('sitemap');
|
||||||
@ -24,26 +22,8 @@ process.on('unhandledRejection', handleFailure);
|
|||||||
// --- FILES
|
// --- FILES
|
||||||
const README = 'README.md';
|
const README = 'README.md';
|
||||||
const WEBSITE_FOLDER = 'website';
|
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 indexTemplate = `${WEBSITE_FOLDER}/index.tmpl.html`;
|
||||||
const indexDestination = `${WEBSITE_FOLDER}/index.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 = {
|
const sitemapOpts = {
|
||||||
hostname: 'https://awesome-docker.netlify.com/',
|
hostname: 'https://awesome-docker.netlify.com/',
|
||||||
@ -56,177 +36,9 @@ const sitemapOpts = {
|
|||||||
lastmodrealtime: true,
|
lastmodrealtime: true,
|
||||||
lastmodfile: 'dist/index.html',
|
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 ? `<img src="${url}" class="emoji" alt="${name}" />` : 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,
|
|
||||||
) =>
|
|
||||||
[
|
|
||||||
`<li data-id="${i}">`,
|
|
||||||
`<a href="${repoURL}" class="link ${valueNames[0]}">${name}</a>`,
|
|
||||||
`<p class="${valueNames[1]}">${emojify(description) || '-'}</p>`,
|
|
||||||
`<p class="${
|
|
||||||
valueNames[4]
|
|
||||||
} timestamp" data-timestamp="${updated}">Last code update: ${getLastUpdate(
|
|
||||||
updated,
|
|
||||||
)}</p>`,
|
|
||||||
(homepage &&
|
|
||||||
`<a href="${mapHomePage(homepage)}" class="link ${
|
|
||||||
valueNames[2]
|
|
||||||
}">website</a>`) ||
|
|
||||||
'<p></p>',
|
|
||||||
`<p class="${
|
|
||||||
valueNames[3]
|
|
||||||
} timestamp" title="Stars on GitHub" data-stars="${stargazers}">⭐️${stargazers}</p>`,
|
|
||||||
(language && `<p class="${valueNames[5]}">${language}</p>`) || '<p></p>',
|
|
||||||
(license &&
|
|
||||||
license.url !== null &&
|
|
||||||
`<a href="${license.url}" class="link ${valueNames[6]}">${mapLicense(
|
|
||||||
license.name,
|
|
||||||
)}</a>`) ||
|
|
||||||
'<p></p>',
|
|
||||||
`<p title="Category">${categoryName}</p>`,
|
|
||||||
owner &&
|
|
||||||
`<a href="${owner.html_url}" class="link ${valueNames[7]}">${
|
|
||||||
owner.login
|
|
||||||
}</a>`,
|
|
||||||
'</li>',
|
|
||||||
].join('');
|
|
||||||
|
|
||||||
const buttonHTLM = valueNames
|
|
||||||
.filter(x => !['description', 'homepage'].includes(x))
|
|
||||||
.map(v => `<button class="sort" data-sort="${v}">${v} </button>`)
|
|
||||||
.join('');
|
|
||||||
|
|
||||||
const processMetadata = metaData =>
|
|
||||||
[
|
|
||||||
`<div class="container">`,
|
|
||||||
`<div class="searchbar"><input class="search" placeholder="Search" /></div>`,
|
|
||||||
`<div class="sortbtn"><p>Sort by</p>${buttonHTLM}</div>`,
|
|
||||||
`</div>`,
|
|
||||||
'<ul class="list">',
|
|
||||||
Object.values(metaData)
|
|
||||||
.map(formatEntry)
|
|
||||||
.join(''),
|
|
||||||
'</ul>',
|
|
||||||
].join('');
|
|
||||||
|
|
||||||
const normalizedMetadata = ([mapping, category, data]) =>
|
|
||||||
data.reduce((acc, repo) => {
|
|
||||||
const m = mapping[repo.html_url];
|
|
||||||
if (!m) {
|
|
||||||
console.log('MISSING:', { repo: repo.html_url });
|
|
||||||
return acc;
|
|
||||||
}
|
|
||||||
const c = m && category[m.category];
|
|
||||||
if (!c) {
|
|
||||||
console.log('CATEGORY MISSING', { mapping: m });
|
|
||||||
return acc;
|
|
||||||
}
|
|
||||||
return {
|
|
||||||
...acc,
|
|
||||||
...{
|
|
||||||
[repo.html_url.toLowerCase()]: {
|
|
||||||
...repo,
|
|
||||||
ownerType: repo.owner && repo.owner.type,
|
|
||||||
categoryName: c.name,
|
|
||||||
categoryDescription: c.description,
|
|
||||||
status: m.status,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
};
|
|
||||||
}, {});
|
|
||||||
|
|
||||||
async function processTable() {
|
|
||||||
try {
|
|
||||||
LOG.debug('Loading files...', { LATEST_FILENAME, tableTemplate });
|
|
||||||
const latestFilename = await fs.readFile(LATEST_FILENAME, 'utf8');
|
|
||||||
LOG.debug({ latestFilename });
|
|
||||||
|
|
||||||
const data = await Promise.all([
|
|
||||||
fs.readJSON(MAPPING),
|
|
||||||
fs.readJSON(CATEGORY),
|
|
||||||
fs.readJSON(latestFilename),
|
|
||||||
]);
|
|
||||||
|
|
||||||
const metaData = normalizedMetadata(data);
|
|
||||||
LOG.debug({ metaData });
|
|
||||||
const template = await fs.readFile(tableTemplate, 'utf8');
|
|
||||||
LOG.debug('Processing template');
|
|
||||||
const $ = cheerio.load(template);
|
|
||||||
$('#md').append(processMetadata(metaData));
|
|
||||||
LOG.debug('Writing table.html');
|
|
||||||
await fs.outputFile(tableDestination, $.html(), 'utf8');
|
|
||||||
LOG.debug('✅ DONE 👍');
|
|
||||||
} catch (err) {
|
|
||||||
handleFailure(err);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
async function processIndex() {
|
async function processIndex() {
|
||||||
const converter = new showdown.Converter({
|
const converter = new showdown.Converter({
|
||||||
omitExtraWLInCodeBlocks: true,
|
omitExtraWLInCodeBlocks: true,
|
||||||
@ -286,8 +98,6 @@ const bundle = () => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
async function main() {
|
async function main() {
|
||||||
emojiMapURL = await loadEmoji();
|
|
||||||
await processTable();
|
|
||||||
await processIndex();
|
await processIndex();
|
||||||
await bundle();
|
await bundle();
|
||||||
}
|
}
|
||||||
|
@ -18,11 +18,8 @@
|
|||||||
"homepage": "https://github.com/veggiemonk/awesome-docker#readme",
|
"homepage": "https://github.com/veggiemonk/awesome-docker#readme",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"cheerio": "1.0.0-rc.3",
|
"cheerio": "1.0.0-rc.3",
|
||||||
"dayjs": "1.8.19",
|
|
||||||
"draftlog": "1.0.12",
|
"draftlog": "1.0.12",
|
||||||
"fs-extra": "8.1.0",
|
"fs-extra": "8.1.0",
|
||||||
"list.js": "1.5.0",
|
|
||||||
"node-fetch": "2.6.0",
|
|
||||||
"parcel-bundler": "1.12.4",
|
"parcel-bundler": "1.12.4",
|
||||||
"rimraf": "3.0.0",
|
"rimraf": "3.0.0",
|
||||||
"showdown": "1.9.1",
|
"showdown": "1.9.1",
|
||||||
@ -38,4 +35,4 @@
|
|||||||
"eslint-plugin-prettier": "3.1.2",
|
"eslint-plugin-prettier": "3.1.2",
|
||||||
"prettier": "1.19.1"
|
"prettier": "1.19.1"
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,19 +0,0 @@
|
|||||||
const List = require('list.js');
|
|
||||||
|
|
||||||
const main = () => {
|
|
||||||
const userList = new List('md', {
|
|
||||||
valueNames: [
|
|
||||||
'name',
|
|
||||||
'description',
|
|
||||||
'homepage',
|
|
||||||
{ name: 'star', attr: 'data-stars' },
|
|
||||||
{ name: 'updated', attr: 'data-timestamp' },
|
|
||||||
'language',
|
|
||||||
'license',
|
|
||||||
'author',
|
|
||||||
],
|
|
||||||
});
|
|
||||||
console.log(`There are ${userList.size()} projects`);
|
|
||||||
};
|
|
||||||
|
|
||||||
main();
|
|
@ -207,8 +207,6 @@
|
|||||||
<a href="https://github.com/veggiemonk/awesome-docker" class="btn"
|
<a href="https://github.com/veggiemonk/awesome-docker" class="btn"
|
||||||
>View on GitHub</a
|
>View on GitHub</a
|
||||||
>
|
>
|
||||||
<a href="table.html" class="btn">View Beta</a>
|
|
||||||
<br />
|
|
||||||
<!-- Place this tag where you want the button to render. -->
|
<!-- Place this tag where you want the button to render. -->
|
||||||
<a
|
<a
|
||||||
class="github-button"
|
class="github-button"
|
||||||
|
@ -1,16 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<urlset
|
|
||||||
xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
|
|
||||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
|
||||||
xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9
|
|
||||||
http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd">
|
|
||||||
<!-- created with Free Online Sitemap Generator www.xml-sitemaps.com -->
|
|
||||||
|
|
||||||
|
|
||||||
<url>
|
|
||||||
<loc>http://awesome-docker.netlify.com/</loc>
|
|
||||||
<lastmod>2018-04-22T10:28:08+00:00</lastmod>
|
|
||||||
</url>
|
|
||||||
|
|
||||||
|
|
||||||
</urlset>
|
|
0
website/style.css
vendored
0
website/style.css
vendored
@ -1,344 +0,0 @@
|
|||||||
<!DOCTYPE html>
|
|
||||||
<html class="no-js" lang="en">
|
|
||||||
|
|
||||||
<head>
|
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
|
||||||
<meta http-equiv="Cache-control" content="public">
|
|
||||||
<meta charset="UTF-8">
|
|
||||||
<title>Awesome-docker</title>
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
||||||
<meta name="theme-color" content="#3685b3">
|
|
||||||
<meta name="description" content="A curated list of Docker resources and projects.">
|
|
||||||
<meta name="keywords" content="free and open-source open source projects for docker moby kubernetes linux awesome awesome-list container tools dockerfile list moby docker-container docker-image docker-environment docker-deployment docker-swarm docker-api docker-monitoring docker-machine docker-security docker-registry">
|
|
||||||
<meta name="google-site-verification" content="_yiugvz0gCtfsBLyLl1LnkALXb6D4ofiwCyV1XOlYBM" />
|
|
||||||
<link rel="icon" type="image/png" href="favicon.png">
|
|
||||||
<style>
|
|
||||||
:root {
|
|
||||||
--main-list-header: #3685b3;
|
|
||||||
--main-list-footer: #3685b3;
|
|
||||||
}
|
|
||||||
* {
|
|
||||||
box-sizing: border-box
|
|
||||||
}
|
|
||||||
|
|
||||||
html {
|
|
||||||
font-family: sans-serif;
|
|
||||||
-ms-text-size-adjust: 100%;
|
|
||||||
-webkit-text-size-adjust: 100%
|
|
||||||
}
|
|
||||||
|
|
||||||
body {
|
|
||||||
padding: 0;
|
|
||||||
margin: 0;
|
|
||||||
font-family: Open Sans, Helvetica Neue, Helvetica, Arial, sans-serif;
|
|
||||||
font-size: 16px;
|
|
||||||
line-height: 1.5;
|
|
||||||
color: #606c71
|
|
||||||
}
|
|
||||||
|
|
||||||
section {
|
|
||||||
display: block
|
|
||||||
}
|
|
||||||
|
|
||||||
a {
|
|
||||||
background-color: transparent;
|
|
||||||
color: #3685b3;
|
|
||||||
text-decoration: none
|
|
||||||
}
|
|
||||||
|
|
||||||
strong {
|
|
||||||
font-weight: 700
|
|
||||||
}
|
|
||||||
|
|
||||||
h1 {
|
|
||||||
font-size: 2em;
|
|
||||||
margin: .67em 0
|
|
||||||
}
|
|
||||||
|
|
||||||
img {
|
|
||||||
border: 0
|
|
||||||
}
|
|
||||||
/*******************************************************/
|
|
||||||
.btn {
|
|
||||||
display: inline-block;
|
|
||||||
margin-bottom: 1rem;
|
|
||||||
color: hsla(0, 0%, 100%, .7);
|
|
||||||
background-color: hsla(0, 0%, 100%, .08);
|
|
||||||
border: 1px solid hsla(0, 0%, 100%, .2);
|
|
||||||
border-radius: .3rem
|
|
||||||
}
|
|
||||||
.page-header {
|
|
||||||
color: #fff;
|
|
||||||
text-align: center;
|
|
||||||
background-color: #3685b3;
|
|
||||||
background-image: linear-gradient(120deg, #155799, #5DBCD2)
|
|
||||||
}
|
|
||||||
.project-name {
|
|
||||||
margin-top: 0;
|
|
||||||
margin-bottom: .1rem
|
|
||||||
}
|
|
||||||
.project-tagline {
|
|
||||||
margin-bottom: 2rem;
|
|
||||||
font-weight: 400;
|
|
||||||
opacity: .7
|
|
||||||
}
|
|
||||||
/*******************************************************/
|
|
||||||
.container {
|
|
||||||
display: grid;
|
|
||||||
grid-template-columns: 1fr 1fr;
|
|
||||||
margin-top: 1rem;
|
|
||||||
}
|
|
||||||
/*******************************************************/
|
|
||||||
.searchbar {
|
|
||||||
display: flex;
|
|
||||||
justify-content: center;
|
|
||||||
}
|
|
||||||
.searchbar > .search {
|
|
||||||
border-radius: .25rem;
|
|
||||||
padding: .5rem 1rem .5rem 1rem;
|
|
||||||
margin: 1rem 0 1rem 0;
|
|
||||||
width: 18rem;
|
|
||||||
font-size: 2.5rem;
|
|
||||||
}
|
|
||||||
/*******************************************************/
|
|
||||||
|
|
||||||
.sortbtn {
|
|
||||||
display: grid;
|
|
||||||
grid-template-columns: repeat(4, 6.5rem);
|
|
||||||
justify-content: right;
|
|
||||||
padding-right: 1rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.sortbtn :first-child {
|
|
||||||
grid-row: span 4;
|
|
||||||
align-self: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.sort {
|
|
||||||
border-radius: 6px;
|
|
||||||
border: 1px solid white;
|
|
||||||
color: #fff;
|
|
||||||
text-decoration: none;
|
|
||||||
background-color: var(--main-list-header);
|
|
||||||
height: 2rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.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;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*=========================================================================*/
|
|
||||||
.emoji {
|
|
||||||
height: 1rem;
|
|
||||||
width: 1rem;
|
|
||||||
}
|
|
||||||
/*=========================================================================*/
|
|
||||||
|
|
||||||
|
|
||||||
.list {
|
|
||||||
display: grid;
|
|
||||||
grid-gap: 1rem;
|
|
||||||
grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
|
|
||||||
line-height: 1;
|
|
||||||
padding: 1rem;
|
|
||||||
margin: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.list > li {
|
|
||||||
display: grid;
|
|
||||||
grid-template-rows: 2rem 1fr 2rem 2rem 2rem;
|
|
||||||
grid-template-columns: 1fr 1fr;
|
|
||||||
list-style: none;
|
|
||||||
box-shadow: 2px 2px 6px 0px rgba(0, 0, 0, 0.3);
|
|
||||||
border-radius: 1rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
li > .description,
|
|
||||||
li > .name,
|
|
||||||
li > .updated {
|
|
||||||
grid-column: span 2;
|
|
||||||
}
|
|
||||||
|
|
||||||
.list li > * {
|
|
||||||
text-align: center;
|
|
||||||
margin: 0;
|
|
||||||
padding-top: .25rem;
|
|
||||||
padding-bottom: .25rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.link {
|
|
||||||
text-decoration: underline;
|
|
||||||
}
|
|
||||||
|
|
||||||
.list li > :first-child {
|
|
||||||
color: white;
|
|
||||||
background-color: var(--main-list-header);
|
|
||||||
border-radius: .4rem .4rem 0 0;
|
|
||||||
}
|
|
||||||
.list li > .description {
|
|
||||||
border-bottom: 1px solid var(--main-list-header);
|
|
||||||
word-wrap: break-word;
|
|
||||||
padding: 1rem;
|
|
||||||
}
|
|
||||||
.list li > .updated {
|
|
||||||
border-bottom: 1px solid var(--main-list-header);
|
|
||||||
}
|
|
||||||
|
|
||||||
.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 .4rem 0;
|
|
||||||
padding: .5rem 0 .5rem 0;
|
|
||||||
}
|
|
||||||
.list > li > :nth-last-child(2) {
|
|
||||||
color: lightgoldenrodyellow;
|
|
||||||
background-color: var(--main-list-footer);
|
|
||||||
border-radius: 0 0 0 .4rem;
|
|
||||||
padding: .5rem 0 .5rem 0;
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
|
|
||||||
.name {
|
|
||||||
font-size: x-large;
|
|
||||||
text-decoration: underline;
|
|
||||||
}
|
|
||||||
.star {
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*******************************************************/
|
|
||||||
|
|
||||||
@media screen and (min-width:64em) {
|
|
||||||
.btn {
|
|
||||||
padding: .75rem 1rem
|
|
||||||
}
|
|
||||||
.page-header {
|
|
||||||
padding: 5rem 6rem
|
|
||||||
}
|
|
||||||
.project-name {
|
|
||||||
font-size: 3.25rem
|
|
||||||
}
|
|
||||||
.project-tagline {
|
|
||||||
font-size: 1.25rem
|
|
||||||
}
|
|
||||||
.main-content {
|
|
||||||
font-size: 1.1rem;
|
|
||||||
margin: 0 8rem 0 8rem;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@media screen and (min-width:42em) and (max-width:64em) {
|
|
||||||
.btn {
|
|
||||||
padding: .6rem .9rem;
|
|
||||||
font-size: .9rem
|
|
||||||
}
|
|
||||||
.page-header {
|
|
||||||
padding: 3rem 4rem
|
|
||||||
}
|
|
||||||
.project-name {
|
|
||||||
font-size: 2.25rem
|
|
||||||
}
|
|
||||||
.project-tagline {
|
|
||||||
font-size: 1.15rem
|
|
||||||
}
|
|
||||||
.main-content {
|
|
||||||
font-size: 1.1rem
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@media screen and (max-width:42em) {
|
|
||||||
.btn {
|
|
||||||
display: block;
|
|
||||||
width: 100%;
|
|
||||||
padding: .75rem;
|
|
||||||
font-size: .9rem
|
|
||||||
}
|
|
||||||
.page-header {
|
|
||||||
padding: 2rem 1rem
|
|
||||||
}
|
|
||||||
.project-name {
|
|
||||||
font-size: 1.75rem
|
|
||||||
}
|
|
||||||
.project-tagline {
|
|
||||||
font-size: 1rem
|
|
||||||
}
|
|
||||||
.main-content {
|
|
||||||
font-size: 1rem
|
|
||||||
}
|
|
||||||
.container {
|
|
||||||
grid-template-columns: 1fr;
|
|
||||||
justify-content: center;
|
|
||||||
}
|
|
||||||
.sortbtn {
|
|
||||||
display: grid;
|
|
||||||
grid-template-columns: repeat(3, 6.5rem);
|
|
||||||
justify-content: center;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
<!-- <link rel="stylesheet" href="style.css"> -->
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body>
|
|
||||||
<section class="page-header">
|
|
||||||
<h1 class="project-name">Awesome-docker</h1>
|
|
||||||
<h2 class="project-tagline">A curated list of Docker resources and projects</h2>
|
|
||||||
<a href="https://github.com/veggiemonk/awesome-docker" class="btn">View on GitHub</a>
|
|
||||||
<br>
|
|
||||||
<!-- Place this tag where you want the button to render. -->
|
|
||||||
<a class="github-button" href="https://github.com/veggiemonk/awesome-docker" data-icon="octicon-star" data-size="large" data-count-href="/veggiemonk/awesome-docker/stargazers"
|
|
||||||
data-show-count="true" data-count-aria-label="# stargazers on GitHub" aria-label="Star veggiemonk/awesome-docker on GitHub">Star</a>
|
|
||||||
</section>
|
|
||||||
<section id="md" class="main-content"></section>
|
|
||||||
<script src="index.js"></script>
|
|
||||||
<!--Place this tag in your head or just before your close body tag. -->
|
|
||||||
<script async defer src="https://buttons.github.io/buttons.js"></script>
|
|
||||||
</body>
|
|
||||||
|
|
||||||
</html>
|
|
Loading…
Reference in New Issue
Block a user