diff --git a/.gitignore b/.gitignore index e6f7042..d75949c 100644 --- a/.gitignore +++ b/.gitignore @@ -6,4 +6,7 @@ env/ *.pyd *.pyc +# Temp files +releases.json + .vscode \ No newline at end of file diff --git a/_includes/release_table.html b/_includes/release_table.html new file mode 100644 index 0000000..eef618b --- /dev/null +++ b/_includes/release_table.html @@ -0,0 +1,41 @@ + +
+
+ + + + + + + + + + + {% for release in config.releases %} + {% if release.prefix == prefix %} + + + + + + + {% endif %} + {% endfor %} + +
Release Date GitHub Docker
+ {% if release.local_path %} + {{ release.tag_name }} + {% else %} + {{ release.tag_name }} + {% endif %} + {{ release.date }} + {{ release.tag_name }} + + {% if release.docker %} + inventree/inventree:{{ release.tag_name }} + {% else %} + Not available for this release + {% endif %} +
+
+
\ No newline at end of file diff --git a/docs/hooks.py b/docs/hooks.py index 1bd9fff..b097fae 100644 --- a/docs/hooks.py +++ b/docs/hooks.py @@ -2,8 +2,64 @@ Custom mkdocs hooks, using the mkdocs-simple-hooks plugin """ +import json import os +import re +from datetime import datetime +from urllib import request + + +def get_release_data(): + """Return InvenTree release information. + + - First look to see if 'releases.json' file exists + - If data does not exist in this file, request via the github API + """ + + json_file = os.path.join(os.path.dirname(__file__), 'releases.json') + + releases = [] + + if os.path.exists(json_file): + # Release information has been cached to file + + print("Loading release information from 'releases.json'") + with open(json_file) as f: + releases = json.loads(f.read()) + else: + + # Download release information via the GitHub API + print("Fetching InvenTree release information from api.github.com:") + releases = [] + + # Keep making API requests until we run out of results + page = 1 + + while 1: + url = f"https://api.github.com/repos/inventree/inventree/releases?page={page}&per_page=150" + + print(f" - {url}") + + response = request.urlopen(url, timeout=30) + assert(response.status == 200) + + data = json.loads(response.read().decode()) + + if len(data) == 0: + break + + for item in data: + releases.append(item) + + page += 1 + + # Cache these results to file + with open(json_file, 'w') as f: + print("Saving release information to 'releases.json'") + f.write(json.dumps(releases)) + + return releases def on_config(config, *args, **kwargs): """ @@ -68,17 +124,53 @@ def on_config(config, *args, **kwargs): print(f"config.site_url = '{site_url}'") print(f"config.assets_dir = '{assets_dir}'") - return config + release_data = get_release_data() + + releases = [] + for item in release_data: -def my_cfg(config, *args, **kwargs): + # Ignore draft releases + if item['draft']: + continue + + tag = item['tag_name'] - # print(config.keys()) + # Check that the tag is formatted correctly + re.match('^\d+\.\d+\.\d+$', tag) - for k in config.keys(): - print(f"- {k}") + if not re.match: + print(f"Found badly formatted release: {tag}") + continue - print(config['site_url']) + # Check if there is a local file with release information + local_path = os.path.join( + os.path.dirname(__file__), + 'releases', + f'{tag}.md', + ) + + if os.path.exists(local_path): + item['local_path'] = local_path + + # Extract the date + item['date'] = item['published_at'].split('T')[0] + + date = datetime.fromisoformat(item['date']) + + # First tagged docker release was 2021-04-18 + if date > datetime(year=2021, month=4, day=17): + item['docker'] = True + + # Add a "prefix" so we can split by sub version + item['prefix'] = '.'.join(tag.split('.')[:-1]) + + releases.append(item) + + print(f"- found {len(releases)} releases.") + + # Sort releases by descending date + config['releases'] = sorted(releases, key=lambda it: it['date'], reverse=True) return config diff --git a/docs/releases/release_notes.md b/docs/releases/release_notes.md index 5f0df73..017ba39 100644 --- a/docs/releases/release_notes.md +++ b/docs/releases/release_notes.md @@ -27,74 +27,29 @@ Specific tagged releases are shown below. Click on the release notes for each ve !!! info "Release Notes" Starting from v0.7.2, release notes have been migrated to GitHub. Release notes for older versions are available at the links below. -### 0.7.x -| Release | Date | GitHub | Docker | -| --- | --- | --- | --- | -| 0.7.7 | 2022-07-26 | [0.7.7](https://github.com/inventree/InvenTree/releases/tag/0.7.7) | inventree:0.7.7 | -| 0.7.6 | 2022-07-22 | [0.7.6](https://github.com/inventree/InvenTree/releases/tag/0.7.6) | inventree:0.7.6 | -| 0.7.5 | 2022-07-15 | [0.7.5](https://github.com/inventree/InvenTree/releases/tag/0.7.5) | inventree:0.7.5 | -| 0.7.4 | 2022-06-23 | [0.7.4](https://github.com/inventree/InvenTree/releases/tag/0.7.4) | inventree:0.7.4 | -| 0.7.3 | 2022-06-16 | [0.7.3](https://github.com/inventree/InvenTree/releases/tag/0.7.3) | inventree:0.7.3 | -| 0.7.2 | 2022-06-15 | [0.7.2](https://github.com/inventree/InvenTree/releases/tag/0.7.2) | inventree:0.7.2 | -| [0.7.1](./0.7.1.md) | 2022-06-02 | [0.7.1](https://github.com/inventree/InvenTree/releases/tag/0.7.1) | [inventree:0.7.1](https://hub.docker.com/layers/inventree/inventree/inventree/0.7.1/images/sha256-5da112efd1aa43d2e22df7053e6344e884d094aaddcf6401f0ccbaac245e61da?context=explore) | -| [0.7.0](./0.7.0.md) | 2022-05-24 | [0.7.0](https://github.com/inventree/InvenTree/releases/tag/0.7.0) | [inventree:0.7.0](https://hub.docker.com/layers/inventree/inventree/inventree/0.7.0/images/sha256-b15d2970e1577cc8e2429487636f07576912cec8d3c7ee0227c3e51711f0042a?context=explore) | +### 0.8.x +{% with prefix="0.8" %}{% include "release_table.html" %}{% endwith %} +### 0.7.x +{% with prefix="0.7" %}{% include "release_table.html" %}{% endwith %} ### 0.6.x -| Release | Date | GitHub | Docker | -| --- | --- | --- | --- | -| [0.6.4](./0.6.4.md) | 2022-05-10 | [0.6.4](https://github.com/inventree/InvenTree/releases/tag/0.6.4) | [inventree:0.6.4](https://hub.docker.com/layers/inventree/inventree/inventree/0.6.4/images/sha256-9b89052490e6b43edc541f2a0856397db85742749fa8f2a262a0654b0532f7a9?context=explore) | -| [0.6.3](./0.6.3.md) | 2022-03-30 | [0.6.3](https://github.com/inventree/InvenTree/releases/tag/0.6.3) | [inventree:0.6.3](https://hub.docker.com/layers/inventree/inventree/inventree/0.6.3/images/sha256-dc583301371686a30c919a25dd68e5101ea9ecb8cb63dde617fa8b2c44c27ff6?context=explore) | -| [0.6.2](./0.6.2.md) | 2022-03-10 | [0.6.2](https://github.com/inventree/InvenTree/releases/tag/0.6.2) | [inventree:0.6.2](https://hub.docker.com/layers/inventree/inventree/0.6.2/images/sha256-09e8a4a95285906b4d1d5dbd2274f56595f0b402c296d59eca2c8534c0242257?context=explore) | -| [0.6.1](./0.6.1.md) | 2022-03-04 | [0.6.1](https://github.com/inventree/InvenTree/releases/tag/0.6.1) | [inventree:0.6.1](https://hub.docker.com/layers/inventree/inventree/0.6.1/images/sha256-7586a9feaa50e2928742ea4b0a6441505984b196105a7f84b70b845d42e4af75?context=explore) | -| [0.6.0](./0.6.0.md) | 2022-02-21 | [0.6.0](https://github.com/inventree/InvenTree/releases/tag/0.6.0) | [inventree:0.6.0](https://hub.docker.com/layers/inventree/inventree/0.6.0/images/sha256-7f4d936d8647ee107a04752f13265687c580c89d5afdd4565e7073f2c32b357a?context=explore) | +{% with prefix="0.6" %}{% include "release_table.html" %}{% endwith %} ### 0.5.x - -| Release | Date | GitHub | Docker | -| --- | --- | --- | --- | -| [0.5.4](./0.5.4.md) | 2021-11-3 | [0.5.4](https://github.com/inventree/InvenTree/releases/tag/0.5.4) | [inventree:0.5.4](https://hub.docker.com/layers/inventree/inventree/0.5.4/images/sha256-35512b55ea1f78a802c915d3ea920bb8e1ef0c8f3f1b68ec1941d2a6a1141bd3?context=explore) | -| [0.5.3](./0.5.3.md) | 2021-10-19 | [0.5.3](https://github.com/inventree/InvenTree/releases/tag/0.5.3) | [inventree:0.5.3](https://hub.docker.com/layers/inventree/inventree/0.5.3/images/sha256-ecdfbd2906241b2495cee3c5acc12bdec5ed66b2d32ab146dbc2b71131a73a7a?context=explore) | -| [0.5.2](./0.5.2.md) | 2021-10-19 | [0.5.2](https://github.com/inventree/InvenTree/releases/tag/0.5.2) | [inventree:0.5.2](https://hub.docker.com/layers/inventree/inventree/0.5.2/images/sha256-ff4f435df894c5aa5ea18ee7f3637e81a29ed356ed82dba70ecbd28da3e3d965?context=explore) | -| [0.5.1](./0.5.1.md) | 2021-10-11 | [0.5.1](https://github.com/inventree/InvenTree/releases/tag/0.5.1) | [inventree:0.5.1](https://hub.docker.com/layers/inventree/inventree/0.5.1/images/sha256-3dbfb2e1bc73a0ff2bf537b56f7151c98097923cf77f5313a2a914586ab75973?context=explore) | -| [0.5.0](./0.5.0.md) | 2021-10-1 | [0.5.0](https://github.com/inventree/InvenTree/releases/tag/0.5.0) | [inventree:0.5.0](https://hub.docker.com/layers/inventree/inventree/0.5.0/images/sha256-eed8b5df1512d4f1f8596d782d894f8e582c0978d0109020da3ee852bb9326ee?context=explore) | +{% with prefix="0.5" %}{% include "release_table.html" %}{% endwith %} ### 0.4.x - -| Release | Date | GitHub | Docker | -| --- | --- | --- | --- | -| [0.4.5](./0.4.5.md) | 2021-08-10 | [0.4.5](https://github.com/inventree/InvenTree/releases/tag/0.4.5) | [inventree:0.4.5](https://hub.docker.com/layers/inventree/inventree/0.4.5/images/sha256-87c84512b31b9a5a0810c79fcb9a9f4515395d0c610619017e41d28b52946eaa?context=explore) | -| [0.4.4](./0.4.4.md) | 2021-08-09 | [0.4.4](https://github.com/inventree/InvenTree/releases/tag/0.4.4) | [inventree:0.4.4](https://hub.docker.com/layers/inventree/inventree/0.4.4/images/sha256-adf5f8515a1a1f8b35404e1bb634ef31572baf9472fd5e6920327953c822e477?context=explore) | -| [0.4.3](./0.4.3.md) | 2021-08-05 | [0.4.3](https://github.com/inventree/InvenTree/releases/tag/0.4.3) | [inventree:0.4.3](https://hub.docker.com/layers/inventree/inventree/0.4.3/images/sha256-441af7821e59c1f96e012fe3060497aa8da9d085701513d1eab3a45c42297fc8?context=explore) | -| [0.4.2](./0.4.2.md) | 2021-08-02 | [0.4.2](https://github.com/inventree/InvenTree/releases/tag/0.4.2) | [inventree:0.4.2](https://hub.docker.com/layers/inventree/inventree/0.4.2/images/sha256-987c656ec21cc8f8dc1c1d74d5443368161b6ef27cb823edcbcddd5aa28ccf6c?context=explore) | -| [0.4.1](./0.4.1.md) | 2021-07-31 | [0.4.1](https://github.com/inventree/InvenTree/releases/tag/0.4.1) | [inventree:0.4.1](https://hub.docker.com/layers/inventree/inventree/0.4.1/images/sha256-fa0560d4b1fa99c5e49f8d1b1f78893ef0361db7a05f92aed08d1a405fe715c4?context=explore) | -| [0.4.0](./0.4.0.md) | 2021-07-28 | [0.4.0](https://github.com/inventree/InvenTree/releases/tag/0.4.0) | [inventree:0.4.0](https://hub.docker.com/layers/inventree/inventree/0.4.0/images/sha256-475cbd226b4a2ac2a23106e33d84497642b1e373a9d7521e6773c1ea4d0b32c9?context=explore) | +{% with prefix="0.4" %}{% include "release_table.html" %}{% endwith %} ### 0.3.x - -| Release | Date | GitHub | Docker | -| --- | --- | --- | --- | -| [0.3.0](./0.3.0.md) | 2021-07-15 | [0.3.0](https://github.com/inventree/InvenTree/releases/tag/0.3.0) | [inventree:0.3.0](https://hub.docker.com/layers/inventree/inventree/0.3.0/images/sha256-b442a236fbc4b91e1e5fdbba2a080655e30447422aaa2e32cd6053571900b2c3?context=explore) | +{% with prefix="0.3" %}{% include "release_table.html" %}{% endwith %} ### 0.2.x - -| Release | Date | GitHub | Docker | -| --- | --- | --- | --- | -| [0.2.4](./0.2.4.md) | 2021-06-27 | [0.2.4](https://github.com/inventree/InvenTree/releases/tag/0.2.4) | [inventree:0.2.4](https://hub.docker.com/layers/inventree/inventree/0.2.4/images/sha256-a7a9f860d4ef47cda83ca79edc147a6b7d4c86860cd92d37e5e4fc5bec95da82?context=explore) | -| [0.2.3](./0.2.3.md) | 2021-06-16 | [0.2.3](https://github.com/inventree/InvenTree/releases/tag/0.2.3) | [inventree:0.2.3](https://hub.docker.com/layers/inventree/inventree/0.2.3/images/sha256-527c78eb7e32cbf67f82ba5226f9a9486c1de58c03057c7c9edc7626f6127f02?context=explore) | -| [0.2.2](./0.2.2.md) | 2021-05-29 | [0.2.2](https://github.com/inventree/InvenTree/releases/tag/0.2.2) | [inventree:0.2.2](https://hub.docker.com/layers/inventree/inventree/0.2.2/images/sha256-cd6f13de516ceae53dbe9e4d1ff014a040f71f5651e7099e9299f2e678a51209?context=explore) | -| [0.2.1](./0.2.1.md) | 2021-04-18 | [0.2.1](https://github.com/inventree/InvenTree/releases/tag/0.2.1) | [inventree:0.2.1](https://hub.docker.com/layers/inventree/inventree/0.2.1/images/sha256-ea6932dd19864df2a7918f244ec5e5b3eeb06d2c9e4892bdcc7d4b491721b4e6?context=explore) | -| [0.2.0](./0.2.0.md) | 2021-04-11 | [0.2.0](https://github.com/inventree/InvenTree/releases/tag/0.2.0) | - | +{% with prefix="0.2" %}{% include "release_table.html" %}{% endwith %} ### 0.1.x - -| Release | Date | GitHub | Docker | -| --- | --- | --- | --- | -| [0.1.8](./0.1.8.md) | 2021-04-10 | [0.1.8](https://github.com/inventree/InvenTree/releases/tag/0.1.8) | - | -| [0.1.7](./0.1.7.md) | 2021-03-04 | [0.1.7](https://github.com/inventree/InvenTree/releases/tag/0.1.7) | - | -| [0.1.6](./0.1.6.md) | 2021-02-21 | [0.1.6](https://github.com/inventree/InvenTree/releases/tag/0.1.6) | - | -| [0.1.5](./0.1.5.md) | 2021-01-19 | [0.1.5](https://github.com/inventree/InvenTree/releases/tag/0.1.5) | - | -| [0.1.4](./0.1.4.md) | 2020-11-15 | [0.1.4](https://github.com/inventree/InvenTree/releases/tag/0.1.4) | - | +{% with prefix="0.1" %}{% include "release_table.html" %}{% endwith %} ## Upcoming Features