Add spellchecker (#5)
continuous-integration/drone/push Build is passing Details

* Add entries into dictionary
* Add spellchecker
* Update CI
* Fix first article

Co-authored-by: Davide Polonio <poloniodavide@gmail.com>
Reviewed-on: #5
pull/6/head
Davide Polonio 2021-05-19 21:47:51 +00:00
parent 94220dab8c
commit b7e9d065a2
5 changed files with 70 additions and 15 deletions

View File

@ -8,6 +8,10 @@ steps:
commands: commands:
- npm install - npm install
- npm run lint - npm run lint
- name: spellchecker checks
image: polpetta/spellchecker
commands:
- ./tools/spellchecker.sh en
- name: hugo build - name: hugo build
image: klakegg/hugo:0.82.1-ext-alpine-ci image: klakegg/hugo:0.82.1-ext-alpine-ci
commands: commands:

View File

@ -56,7 +56,7 @@ his dispenser` caption=`Engineer class with a dispenser. Thanks to [Team
Fortress wiki](https://wiki.teamfortress.com) for providing the image I Fortress wiki](https://wiki.teamfortress.com) for providing the image I
shamelessly downloaded from them` >}} shamelessly downloaded from them` >}}
I hope Valve will not sue me for taking that assed as my website favicon. I I hope Valve will not sue me for taking that asset as my website favicon. I
swear I will change it, a day. Pinky promise. swear I will change it, a day. Pinky promise.
### Hosting ### Hosting
@ -84,12 +84,12 @@ while trying to kill the boredom caused by COVID-19 lockdown, I discovered
bothered too much to understand what was about. I though "well, it surely is bothered too much to understand what was about. I though "well, it surely is
some sort of filesystem". I was somewhat right, but not the way I thought. some sort of filesystem". I was somewhat right, but not the way I thought.
IPFS acts like a peer-to-peer network, where nodes hash the content IPFS acts like a peer-to-peer network, where nodes hash the content they want to
they want to share to let other nodes grab it. You can grab this content using share to let other nodes grab it. You can grab this content using your local
your local node or using one of the many available gateways. Nodes can "pin" a node or using one of the many available gateways. Nodes can "pin" a file too, in
file too, in order to keep it locally and to serve it to other nodes. If a file order to keep it locally and to serve it to other nodes. If a file gets pinned
gets pinned by different nodes and gains traction it basically becomes by different nodes and gains traction it basically can not be deleted from the
undeletable from the web. web.
#### Choosing the right tools #### Choosing the right tools
@ -113,10 +113,10 @@ Finally, in order to achieve full automation with DNS updates, I would have
needed to implement and use NameCheap APIs (currently it is the DNS provider I needed to implement and use NameCheap APIs (currently it is the DNS provider I
use for most of my websites). "What's the difficulty?" one would ask. [Here is use for most of my websites). "What's the difficulty?" one would ask. [Here is
the official documentation](https://www.namecheap.com/support/api/intro/), and the official documentation](https://www.namecheap.com/support/api/intro/), and
even if the APIs look promising, while studing them my will to live decreased a even if the APIs look promising, while studying them my will to live decreased a
little bit, and so I decided that if I wanted to get up and running with less little bit, and so I decided that if I wanted to get up and running with less
maintenance as possible, with a good uptime while having the maximum maintenance as possible, with a good uptime while having the maximum
automatization possible I needed to rely on a dedicated service. Luckily automation possible I needed to rely on a dedicated service. Luckily
[fleek.co](https://fleek.co) was what I was searching for. They currently [fleek.co](https://fleek.co) was what I was searching for. They currently
provide the possibility to buy a domain from their website, giving them all the provide the possibility to buy a domain from their website, giving them all the
hassle of updating the new website on IPFS, distributing it, refreshing a very hassle of updating the new website on IPFS, distributing it, refreshing a very
@ -131,10 +131,10 @@ imagine, provides multiple benefits:
to understand why the website does not load/the DNS is not properly updated to understand why the website does not load/the DNS is not properly updated
The only downside to this approach is that Fleek provides limitations on how The only downside to this approach is that Fleek provides limitations on how
much data and bandwith you can host. At the time of writing, you can only host much data and bandwidth you can host. At the time of writing, you can only host
up to 3GB (enough for this website) and have a 50GB bandwith (that's ok for now) up to 3GB (enough for this website) and have a 50GB bandwidth (that is fine for
for the free version. [Upgrading you account](https://fleek.co/pricing/) to one now) for the free version. [Upgrading you account](https://fleek.co/pricing/) to
of the available plans give you extra space and bandwith. one of the available plans give you extra space and bandwidth.
## Future improvements ## Future improvements

View File

@ -4,7 +4,8 @@
"description": "Personal Hugo website", "description": "Personal Hugo website",
"main": "none.js", "main": "none.js",
"scripts": { "scripts": {
"lint": "markdownlint-cli2 content/" "lint": "markdownlint-cli2 content/",
"spellchecker": "bash tools/spellchecker.sh en"
}, },
"repository": { "repository": {
"type": "git", "type": "git",

25
tools/dictionary.en.pws Normal file
View File

@ -0,0 +1,25 @@
personal_ws-1.1 en 0
engiwithdispenser
Github
fleek
Fleek
Mies
der
Rohe's
favicon
src
png
Pinky
DigitalOcean
Scaleway
uptime
lockdown
filesystem
IPFS
vCPU
CDN
DNS
NameCheap
APIs
fediverse
COVID

25
tools/spellchecker.sh Executable file
View File

@ -0,0 +1,25 @@
#!/bin/bash
set -e
reporoot="$(git rev-parse --show-toplevel)"
lang="${1}"
if [ -z "${2}" ]
then
texdir="/content/english"
else
texdir="${2}"
fi
echo "Checking files in ${reporoot}${texdir}"
for i in $(find "${reporoot}${texdir}" -type f -iname "*.md")
do
tmp="$(cat "${i}" | aspell -M -a --lang="${lang}" --encoding=utf-8 --add-extra-dicts="${reporoot}/tools/dictionary.$1.pws" 2>/dev/null | grep -v "*" | grep -v "@" | grep -v "+" | sed '/^\s*$/d')"
if [ "${tmp}" != "" ]
then
echo "******* List of errors detected for ${i} *******"
echo "${tmp}"
exit 1
else
echo "${i} OK"
fi
done