diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml
index 82823d5..6944ed8 100644
--- a/.github/workflows/publish.yml
+++ b/.github/workflows/publish.yml
@@ -33,5 +33,5 @@ jobs:
run: |
s3cmd rm --recursive --force s3://blog.kenpayne.co.uk/
s3cmd put --recursive site/ s3://blog.kenpayne.co.uk/ --acl-public --guess-mime-type --no-mime-magic --add-header='Cache-Control:max-age=0'
- s3cmd sync s3://static.kenpayne.co.uk/ s3://blog.kenpayne.co.uk/_static/ --acl-public --guess-mime-type --no-mime-magic --add-header='Cache-Control:max-age=0'
+ s3cmd sync s3://static.kenpayne.co.uk/ s3://blog.kenpayne.co.uk/assets/ --acl-public --guess-mime-type --no-mime-magic --add-header='Cache-Control:max-age=0'
- run: echo "Done 🚀"
diff --git a/.gitignore b/.gitignore
index a82e6a9..cedefdc 100644
--- a/.gitignore
+++ b/.gitignore
@@ -2,6 +2,7 @@
# mkdocs build folder
site/
+docs/assets/
# Compiled source #
###################
diff --git a/Makefile b/Makefile
index da6b540..36ddf24 100644
--- a/Makefile
+++ b/Makefile
@@ -2,4 +2,10 @@ serve:
poetry run mkdocs serve
html:
- poetry run mkdocs build
\ No newline at end of file
+ poetry run mkdocs build
+
+upload:
+ poetry run aws s3 sync docs/assets s3://static.kenpayne.co.uk/ --delete
+
+download:
+ poetry run aws s3 sync s3://static.kenpayne.co.uk/ docs/assets --dryrun
diff --git a/docs/stoves/articles/british-military-no-6/img/temp.jpeg b/docs/stoves/articles/british-military-no-6/img/temp.jpeg
deleted file mode 100644
index ecc1e67..0000000
Binary files a/docs/stoves/articles/british-military-no-6/img/temp.jpeg and /dev/null differ
diff --git a/docs/stoves/articles/optimus-111/img/purchased/optimus-1.jpeg b/docs/stoves/articles/optimus-111/img/purchased/optimus-1.jpeg
deleted file mode 100644
index 6276c73..0000000
Binary files a/docs/stoves/articles/optimus-111/img/purchased/optimus-1.jpeg and /dev/null differ
diff --git a/docs/stoves/articles/optimus-111/img/purchased/optimus-2.jpeg b/docs/stoves/articles/optimus-111/img/purchased/optimus-2.jpeg
deleted file mode 100644
index 87216c7..0000000
Binary files a/docs/stoves/articles/optimus-111/img/purchased/optimus-2.jpeg and /dev/null differ
diff --git a/docs/stoves/articles/optimus-111/img/purchased/optimus-3.jpeg b/docs/stoves/articles/optimus-111/img/purchased/optimus-3.jpeg
deleted file mode 100644
index 6f53773..0000000
Binary files a/docs/stoves/articles/optimus-111/img/purchased/optimus-3.jpeg and /dev/null differ
diff --git a/docs/stoves/articles/optimus-111/img/purchased/optimus-4.jpeg b/docs/stoves/articles/optimus-111/img/purchased/optimus-4.jpeg
deleted file mode 100644
index e1af6db..0000000
Binary files a/docs/stoves/articles/optimus-111/img/purchased/optimus-4.jpeg and /dev/null differ
diff --git a/docs/stoves/articles/optimus-111/img/purchased/optimus-5.jpeg b/docs/stoves/articles/optimus-111/img/purchased/optimus-5.jpeg
deleted file mode 100644
index d22a5be..0000000
Binary files a/docs/stoves/articles/optimus-111/img/purchased/optimus-5.jpeg and /dev/null differ
diff --git a/docs/stoves/articles/optimus-111/img/refurbished/optimus-1.jpeg b/docs/stoves/articles/optimus-111/img/refurbished/optimus-1.jpeg
deleted file mode 100644
index b2c09ad..0000000
Binary files a/docs/stoves/articles/optimus-111/img/refurbished/optimus-1.jpeg and /dev/null differ
diff --git a/docs/stoves/articles/optimus-111/img/refurbished/optimus-2.jpeg b/docs/stoves/articles/optimus-111/img/refurbished/optimus-2.jpeg
deleted file mode 100644
index 026c639..0000000
Binary files a/docs/stoves/articles/optimus-111/img/refurbished/optimus-2.jpeg and /dev/null differ
diff --git a/docs/stoves/articles/optimus-111/img/refurbished/optimus-3.jpeg b/docs/stoves/articles/optimus-111/img/refurbished/optimus-3.jpeg
deleted file mode 100644
index fde1e14..0000000
Binary files a/docs/stoves/articles/optimus-111/img/refurbished/optimus-3.jpeg and /dev/null differ
diff --git a/docs/stoves/articles/optimus-111/img/refurbished/optimus-4.jpeg b/docs/stoves/articles/optimus-111/img/refurbished/optimus-4.jpeg
deleted file mode 100644
index 3a6be5d..0000000
Binary files a/docs/stoves/articles/optimus-111/img/refurbished/optimus-4.jpeg and /dev/null differ
diff --git a/docs/stoves/articles/optimus-111/img/refurbished/optimus-5.jpeg b/docs/stoves/articles/optimus-111/img/refurbished/optimus-5.jpeg
deleted file mode 100644
index 0d1f23c..0000000
Binary files a/docs/stoves/articles/optimus-111/img/refurbished/optimus-5.jpeg and /dev/null differ
diff --git a/docs/stoves/articles/optimus-111/index.md b/docs/stoves/articles/optimus-111/index.md
index 7656bee..c09f5ef 100644
--- a/docs/stoves/articles/optimus-111/index.md
+++ b/docs/stoves/articles/optimus-111/index.md
@@ -25,11 +25,11 @@ All in all, I am very happy with how this stove has turned out and look forward
-- 
-- 
-
-- 
-- 
+- 
+- 
+
+- 
+- 
@@ -37,10 +37,10 @@ All in all, I am very happy with how this stove has turned out and look forward
-- 
-- 
-
-- 
-- 
+- 
+- 
+
+- 
+- 
diff --git a/docs/stoves/index.md b/docs/stoves/index.md
index b22ac39..9554dfb 100644
--- a/docs/stoves/index.md
+++ b/docs/stoves/index.md
@@ -6,10 +6,10 @@
-{width=300}
+{width=300}
[British Military No. 6](articles/british-military-no-6/index.md)
-{width=300}
+{width=300}
[Optimus 111](articles/optimus-111/index.md)
diff --git a/poetry.lock b/poetry.lock
index f16ff59..86e984a 100644
--- a/poetry.lock
+++ b/poetry.lock
@@ -1,4 +1,23 @@
-# This file is automatically @generated by Poetry 1.7.1 and should not be changed by hand.
+# This file is automatically @generated by Poetry 1.8.1 and should not be changed by hand.
+
+[[package]]
+name = "awscli"
+version = "1.32.59"
+description = "Universal Command Line Environment for AWS."
+optional = false
+python-versions = ">= 3.8"
+files = [
+ {file = "awscli-1.32.59-py3-none-any.whl", hash = "sha256:b6290b3a0a54206853f90daf7e8f4a971ffe063fcb80cc475336bde0bab7293a"},
+ {file = "awscli-1.32.59.tar.gz", hash = "sha256:5861be75beecf5bff41efa591c44b8e05d564465490cb8469da5dde06920673e"},
+]
+
+[package.dependencies]
+botocore = "1.34.59"
+colorama = ">=0.2.5,<0.4.5"
+docutils = ">=0.10,<0.17"
+PyYAML = ">=3.10,<6.1"
+rsa = ">=3.1.2,<4.8"
+s3transfer = ">=0.10.0,<0.11.0"
[[package]]
name = "babel"
@@ -14,6 +33,25 @@ files = [
[package.extras]
dev = ["freezegun (>=1.0,<2.0)", "pytest (>=6.0)", "pytest-cov"]
+[[package]]
+name = "botocore"
+version = "1.34.59"
+description = "Low-level, data-driven core of boto 3."
+optional = false
+python-versions = ">= 3.8"
+files = [
+ {file = "botocore-1.34.59-py3-none-any.whl", hash = "sha256:4bc112dafb1679ab571117593f7656604726a3da0e5ae5bad00ea772fa40e75c"},
+ {file = "botocore-1.34.59.tar.gz", hash = "sha256:24edb4d21d7c97dea0c6c4a80d36b3809b1443a30b0bd5e317d6c319dfac823f"},
+]
+
+[package.dependencies]
+jmespath = ">=0.7.1,<2.0.0"
+python-dateutil = ">=2.1,<3.0.0"
+urllib3 = {version = ">=1.25.4,<2.1", markers = "python_version >= \"3.10\""}
+
+[package.extras]
+crt = ["awscrt (==0.19.19)"]
+
[[package]]
name = "certifi"
version = "2024.2.2"
@@ -140,13 +178,24 @@ colorama = {version = "*", markers = "platform_system == \"Windows\""}
[[package]]
name = "colorama"
-version = "0.4.6"
+version = "0.4.4"
description = "Cross-platform colored terminal text."
optional = false
-python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7"
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
+files = [
+ {file = "colorama-0.4.4-py2.py3-none-any.whl", hash = "sha256:9f47eda37229f68eee03b24b9748937c7dc3868f906e8ba69fbcbdd3bc5dc3e2"},
+ {file = "colorama-0.4.4.tar.gz", hash = "sha256:5941b2b48a20143d2267e95b1c2a7603ce057ee39fd88e7329b0c292aa16869b"},
+]
+
+[[package]]
+name = "docutils"
+version = "0.16"
+description = "Docutils -- Python Documentation Utilities"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
files = [
- {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"},
- {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"},
+ {file = "docutils-0.16-py2.py3-none-any.whl", hash = "sha256:0c5b78adfbf7762415433f5515cd5c9e762339e23369dbe8000d84a4bf4ab3af"},
+ {file = "docutils-0.16.tar.gz", hash = "sha256:c2de3a60e9e7d07be26b7f2b00ca0309c207e06c100f9cc2a94931fc75a478fc"},
]
[[package]]
@@ -194,6 +243,17 @@ MarkupSafe = ">=2.0"
[package.extras]
i18n = ["Babel (>=2.7)"]
+[[package]]
+name = "jmespath"
+version = "1.0.1"
+description = "JSON Matching Expressions"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "jmespath-1.0.1-py3-none-any.whl", hash = "sha256:02e2e4cc71b5bcab88332eebf907519190dd9e6e82107fa7f83b1003a6252980"},
+ {file = "jmespath-1.0.1.tar.gz", hash = "sha256:90261b206d6defd58fdd5e85f478bf633a2901798906be2ad389150c5c60edbe"},
+]
+
[[package]]
name = "markdown"
version = "3.5.2"
@@ -417,6 +477,17 @@ files = [
docs = ["furo (>=2023.9.10)", "proselint (>=0.13)", "sphinx (>=7.2.6)", "sphinx-autodoc-typehints (>=1.25.2)"]
test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.4.3)", "pytest-cov (>=4.1)", "pytest-mock (>=3.12)"]
+[[package]]
+name = "pyasn1"
+version = "0.5.1"
+description = "Pure-Python implementation of ASN.1 types and DER/BER/CER codecs (X.208)"
+optional = false
+python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7"
+files = [
+ {file = "pyasn1-0.5.1-py2.py3-none-any.whl", hash = "sha256:4439847c58d40b1d0a573d07e3856e95333f1976294494c325775aeca506eb58"},
+ {file = "pyasn1-0.5.1.tar.gz", hash = "sha256:6d391a96e59b23130a5cfa74d6fd7f388dbbe26cc8f1edf39fdddf08d9d6676c"},
+]
+
[[package]]
name = "pygments"
version = "2.17.2"
@@ -661,6 +732,37 @@ urllib3 = ">=1.21.1,<3"
socks = ["PySocks (>=1.5.6,!=1.5.7)"]
use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"]
+[[package]]
+name = "rsa"
+version = "4.7.2"
+description = "Pure-Python RSA implementation"
+optional = false
+python-versions = ">=3.5, <4"
+files = [
+ {file = "rsa-4.7.2-py3-none-any.whl", hash = "sha256:78f9a9bf4e7be0c5ded4583326e7461e3a3c5aae24073648b4bdfa797d78c9d2"},
+ {file = "rsa-4.7.2.tar.gz", hash = "sha256:9d689e6ca1b3038bc82bf8d23e944b6b6037bc02301a574935b2dd946e0353b9"},
+]
+
+[package.dependencies]
+pyasn1 = ">=0.1.3"
+
+[[package]]
+name = "s3transfer"
+version = "0.10.0"
+description = "An Amazon S3 Transfer Manager"
+optional = false
+python-versions = ">= 3.8"
+files = [
+ {file = "s3transfer-0.10.0-py3-none-any.whl", hash = "sha256:3cdb40f5cfa6966e812209d0994f2a4709b561c88e90cf00c2696d2df4e56b2e"},
+ {file = "s3transfer-0.10.0.tar.gz", hash = "sha256:d0c8bbf672d5eebbe4e57945e23b972d963f07d82f661cabf678a5c88831595b"},
+]
+
+[package.dependencies]
+botocore = ">=1.33.2,<2.0a.0"
+
+[package.extras]
+crt = ["botocore[crt] (>=1.33.2,<2.0a.0)"]
+
[[package]]
name = "six"
version = "1.16.0"
@@ -674,18 +776,18 @@ files = [
[[package]]
name = "urllib3"
-version = "2.2.1"
+version = "2.0.7"
description = "HTTP library with thread-safe connection pooling, file post, and more."
optional = false
-python-versions = ">=3.8"
+python-versions = ">=3.7"
files = [
- {file = "urllib3-2.2.1-py3-none-any.whl", hash = "sha256:450b20ec296a467077128bff42b73080516e71b56ff59a60a02bef2232c4fa9d"},
- {file = "urllib3-2.2.1.tar.gz", hash = "sha256:d0570876c61ab9e520d776c38acbbb5b05a776d3f9ff98a5c8fd5162a444cf19"},
+ {file = "urllib3-2.0.7-py3-none-any.whl", hash = "sha256:fdb6d215c776278489906c2f8916e6e7d4f5a9b602ccbcfdf7f016fc8da0596e"},
+ {file = "urllib3-2.0.7.tar.gz", hash = "sha256:c97dfde1f7bd43a71c8d2a58e369e9b2bf692d1334ea9f9cae55add7d0dd0f84"},
]
[package.extras]
brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"]
-h2 = ["h2 (>=4,<5)"]
+secure = ["certifi", "cryptography (>=1.9)", "idna (>=2.0.0)", "pyopenssl (>=17.1.0)", "urllib3-secure-extra"]
socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"]
zstd = ["zstandard (>=0.18.0)"]
@@ -733,4 +835,4 @@ watchmedo = ["PyYAML (>=3.10)"]
[metadata]
lock-version = "2.0"
python-versions = "^3.12"
-content-hash = "73183d9eafe8f15496029769dfc95e44d0e2c3e45c65f4bbef07aadf23f6e347"
+content-hash = "276151f8cc8a5487717034bd3adec5bfd35f2ca05c00203bf8e453e2ad2a34cc"
diff --git a/pyproject.toml b/pyproject.toml
index 65c20e1..1fddd32 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -13,6 +13,9 @@ mkdocs-material = "^9.5.10"
mkdocs-glightbox = "^0.3.7"
+[tool.poetry.group.dev.dependencies]
+awscli = "^1.32.59"
+
[build-system]
requires = ["poetry-core"]
build-backend = "poetry.core.masonry.api"