Add docker and CI stuff, minor updates

This commit is contained in:
askiiart 2023-11-21 11:53:00 -06:00
parent 0f497ee7c2
commit 958818cbb2
Signed by untrusted user who does not match committer: askiiart
GPG key ID: BC3800E55FB54D67
12 changed files with 69 additions and 27 deletions

14
.drone.yml Normal file
View file

@ -0,0 +1,14 @@
kind: pipeline
name: default
steps:
- name: build and publish
image: plugins/docker
pull: always
settings:
repo: askiiart/feed-the-void
tags: latest
username:
from_secret: docker_username
password:
from_secret: docker_password

View file

@ -1,2 +1,3 @@
FROM python:slim-bookworm FROM python:slim-bookworm
RUN apt update && apt install -y pandoc RUN apt update && apt install -y pandoc
CMD ["/data/run.sh"]

View file

@ -1,31 +1,25 @@
# F E E D T H E V O I D # F E E D T H E V O I D
<!-- Note that there's a zero-width space between the spaces so that all 3 render --> <!-- Note that there's a zero-width space between the spaces so that all 3 render -->
![Useful Linux Tips: Run dd if=/dev/zero of=/dev/null to feed nothing to the void](/feed-the-void.png) ![Useful Linux Tips: Run dd if=/dev/zero of=/dev/null to feed nothing to the void](/site-files/feed-the-void.png)
<!-- Source of meme is unknown -->
**Witness the void consume zeroes for all eternity** <p style="font-size: 36px;"><b>Witness the void consume zeroes for all eternity</b></p>
--- ---
This puts the output of `dd` into a file, which is then read and made into a webpage every second. It's just a bodged-together mess, but it works* This puts the output of `dd` into a file, which is then read and made into a webpage every second. It's just a [bodged](https://www.youtube.com/watch?v=lIFE7h3m40U)-together mess and it's super CPU-heavy, but it works*
\* Disclaimer: No idea if this works, I'm from the past where the program wasn't done yet. \* Disclaimer: No idea if this works, I'm from the past where the program wasn't done yet.
## Docker ## Docker
1. Clone the repo - `git clone https://git.askiiart.net/askiiart/feed-the-void.git && cd feed-the-void`
`docker run`: `docker run`:
```sh ```sh
docker run -v .:/data registry.askiiart.net/askiiart/feed-the-void docker run -it --rm --restart unless-stopped -v .:/data registry.askiiart.net/askiiart/feed-the-void
``` ```
`docker-compose.yml`: `docker-compose.yml`: See [docker-compose.yml](docker-compose.yml)
```yml
version: "3.7"
services:
feed-the-void:
image: registry.askiiart.net/askiiart/feed-the-void
volumes:
- .:/data
```

8
dd-progress-to-file.py Normal file → Executable file
View file

@ -6,13 +6,17 @@ from os import remove
shell = Popen(['dd', 'if=/dev/zero', 'of=/dev/null', 'status=progress'], shell = Popen(['dd', 'if=/dev/zero', 'of=/dev/null', 'status=progress'],
stdout=PIPE, stderr=STDOUT, universal_newlines=True, bufsize=1) stdout=PIPE, stderr=STDOUT, universal_newlines=True, bufsize=1)
remove('output') try:
remove('output')
except FileNotFoundError:
pass
try: try:
for line in iter(shell.stdout.readline, b''): for line in iter(shell.stdout.readline, b''):
f = open('output', 'w') f = open('output', 'w')
if (line.strip() != ''): # Ignore empty lines (always 1 at the start) if (line.strip() != ''): # Ignore empty lines (always 1 at the start)
line = line.rstrip() line = line.rstrip()
print(line) #print(line)
f.write(line) f.write(line)
f.close() f.close()

15
docker-compose.yml Normal file
View file

@ -0,0 +1,15 @@
version: "3.7"
services:
feed-the-void:
image: registry.askiiart.net/askiiart/feed-the-void
volumes:
- .:/data
restart: unless-stopped
nginx:
image: nginx:alpine-slim
volumes:
- ./site-files:/usr/share/nginx/html
restart: unless-stopped
ports:
- 8080:80

4
run.sh Executable file
View file

@ -0,0 +1,4 @@
#!/usr/bin/env bash
dir=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" &>/dev/null && pwd)
$dir/dd-progress-to-file.py &
$dir/site-files/make-page.sh

View file

@ -10,3 +10,5 @@ output here
``` ```
![Useful Linux Tips: Run dd if=/dev/zero of=/dev/null to feed nothing to the void](feed-the-void.png) ![Useful Linux Tips: Run dd if=/dev/zero of=/dev/null to feed nothing to the void](feed-the-void.png)
<p style="font-size: 36px; text-align: center;"><b>Witness the void consume zeroes for all eternity</b></p>

View file

@ -1,11 +1,16 @@
#!/usr/bin/env bash #!/usr/bin/env bash
set -e set -e
dir=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" &>/dev/null && pwd)
while true; do while true; do
dir=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" &>/dev/null && pwd) #pandoc -f markdown-smart --data-dir . --template ${dir}/template.html -t html -o $dir/tmp.html $dir/index.md --metadata title="$(grep -m 1 -oP '(?<=^# ).*' $dir/index.md | cat)"
pandoc -f markdown-smart --data-dir . --template ${dir}/template.html -t html -o $dir/tmp.html $dir/index.md --metadata title="$(grep -m 1 -oP '(?<=^# ).*' $dir/index.md | cat)" #chmod 777 $dir/../output
sed -i "s/output here/$(sed 's/\//\\\//g' $dir/../output)/g" $dir/tmp.html #sed -i "s/output here/$(sed 's/\//\\\//g' $dir/../output)/g" $dir/tmp.html
sed "s/sourceCode /language-/g" $dir/tmp.html > $dir/index.html #sed "s/sourceCode /language-/g" $dir/tmp.html > $dir/index.html
rm -f $dir/tmp.html #rm -f $dir/tmp.html
#sleep 1
# Can just run these 3 lines if index.html already exists
chmod 777 $dir/../output
sed -i "s/output here/$(sed 's/\//\\\//g' $dir/../output)/g" $dir/index.html
sleep 1 sleep 1
done done

1
site-files/prism.min.css vendored Normal file
View file

@ -0,0 +1 @@
code[class*=language-],pre[class*=language-]{color:#f8f8f2;background:0 0;text-shadow:0 1px rgba(0,0,0,.3);font-family:Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto;border-radius:.3em}:not(pre) >code[class*=language-],pre[class*=language-]{background:#121212}:not(pre) >code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#8292a2}.token.punctuation{color:#f8f8f2}.token.namespace{opacity:.7}.token.constant,.token.deleted,.token.property,.token.symbol,.token.tag{color:#f92672}.token.boolean,.token.number{color:#ae81ff}.token.attr-name,.token.builtin,.token.char,.token.inserted,.token.selector,.token.string{color:#a6e22e}.language-css .token.string,.style .token.string,.token.entity,.token.operator,.token.url,.token.variable{color:#f8f8f2}.token.atrule,.token.attr-value,.token.class-name,.token.function{color:#e6db74}.token.keyword{color:#66d9ef}.token.important,.token.regex{color:#fd971f}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}pre[class*=language-].line-numbers{position:relative;padding-left:3.8em;counter-reset:linenumber}pre[class*=language-].line-numbers>code{position:relative;white-space:inherit}.line-numbers .line-numbers-rows{position:absolute;pointer-events:none;top:0;font-size:100%;left:-3.8em;width:3em;letter-spacing:-1px;border-right:1px solid #999;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.line-numbers-rows>span{display:block;counter-increment:linenumber}.line-numbers-rows>span:before{content:counter(linenumber);color:#999;display:block;padding-right:.8em;text-align:right}div.code-toolbar{position:relative}div.code-toolbar>.toolbar{position:absolute;z-index:10;top:.3em;right:.2em;transition:opacity .3s ease-in-out;opacity:0}div.code-toolbar:hover>.toolbar{opacity:1}div.code-toolbar:focus-within>.toolbar{opacity:1}div.code-toolbar>.toolbar>.toolbar-item{display:inline-block}div.code-toolbar>.toolbar>.toolbar-item>a{cursor:pointer}div.code-toolbar>.toolbar>.toolbar-item>button{background:0 0;border:0;color:inherit;font:inherit;line-height:normal;overflow:visible;padding:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}div.code-toolbar>.toolbar>.toolbar-item>a,div.code-toolbar>.toolbar>.toolbar-item>button,div.code-toolbar>.toolbar>.toolbar-item>span{color:#bbb;font-size:.8em;padding:0 .5em;background:#f5f2f0;background:rgba(224,224,224,.2);box-shadow:0 2px 0 0 rgba(0,0,0,.2);border-radius:.5em}div.code-toolbar>.toolbar>.toolbar-item>a:focus,div.code-toolbar>.toolbar>.toolbar-item>a:hover,div.code-toolbar>.toolbar>.toolbar-item>button:focus,div.code-toolbar>.toolbar>.toolbar-item>button:hover,div.code-toolbar>.toolbar>.toolbar-item>span:focus,div.code-toolbar>.toolbar>.toolbar-item>span:hover{color:inherit;text-decoration:none}

View file

@ -2,9 +2,10 @@ body {
color: #dadada; color: #dadada;
background: #202020; background: #202020;
margin: 1em auto; margin: 1em auto;
max-width: 90vw; max-width: 1000px;
padding: 0 .62em; padding: 0 .62em;
font: 1.0em/1.35 sans-serif font: 1.0em/1.35 sans-serif;
text-align: center;
} }
a:link, a:link,

1
site-files/style.min.css vendored Normal file
View file

@ -0,0 +1 @@
body{color:#dadada;background:#202020;margin:1em auto;max-width:1000px;padding:0 .62em;font:1.0/1.35 sans-serif;text-align:center}a:link,a:visited{color:#80c47b}a:hover,a:visited:hover{color:#6bb794}h1,h2,h3{line-height:1.2}code{background:#121212}pre{background:#121212}wrap{word-wrap:break-word}@media(max-device-width:1200px){h1{line-height:1.2;font-size:40px}h2{line-height:1.2;font-size:30px}body{font-size:20px}pre,code{font-size:16px}}@media print{body{max-width:none}}footer{text-align:center}

View file

@ -5,8 +5,8 @@
<link rel="icon" href="feed-the-void.png" type="image/icon"> <link rel="icon" href="feed-the-void.png" type="image/icon">
<meta http-equiv="refresh" content="5" /> <meta http-equiv="refresh" content="5" />
<title>$title$</title> <title>$title$</title>
<link href="prism.css" rel="stylesheet" /> <link href="prism.min.css" rel="stylesheet" />
<link href="style.css" rel="stylesheet" /> <link href="style.min.css" rel="stylesheet" />
</head> </head>
<body class="line-numbers"> <body class="line-numbers">
$body$ $body$