diff --git a/Makefile b/Makefile index 0c183cab365f383da249f650a86833575823f4ed..d0add7d92b2d12a0c714bd45e70d70c60a1a0c35 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,5 @@ MAKEFLAGS+=-j2 +PROJECTS_FILENAME = content/pages/projects.md dev: watch server @@ -8,5 +9,22 @@ server: jbmafp -s -fetch-projects: - cd tools && python projects.py +update-projects: projects-header + cat content/pages/projects.fossil.md.part \ + content/pages/projects.github.md.part >> \ + content/pages/projects.md + +projects-header: + echo "---" > $(PROJECTS_FILENAME) + echo "title: Personal projects" >> $(PROJECTS_FILENAME) + echo "date: 2024-10-21T12:00:00+02:00" >> $(PROJECTS_FILENAME) + echo "url: projects.html" >> $(PROJECTS_FILENAME) + echo "type: page" >> $(PROJECTS_FILENAME) + echo "draft: false" >> $(PROJECTS_FILENAME) + echo "---\n" >> $(PROJECTS_FILENAME) + +update-fossil: + cd tools && bash fossil-projects.sh + +update-github: + cd tools && python github-projects.py diff --git a/content/pages/projects.fossil.md.part b/content/pages/projects.fossil.md.part new file mode 100644 index 0000000000000000000000000000000000000000..796af87522d43a41a996c875ffd7744c357e21a4 --- /dev/null +++ b/content/pages/projects.fossil.md.part @@ -0,0 +1,4 @@ +## Fossil repositories + +- [pats.fossil](/projects/pats.fossil)
Size: 220K, Modified: 2025-08-02 20:24:05 +- [xmagnify.fossil](/projects/xmagnify.fossil)
Size: 220K, Modified: 2025-08-02 20:24:05 diff --git a/content/pages/projects.github.md.part b/content/pages/projects.github.md.part new file mode 100644 index 0000000000000000000000000000000000000000..92a8c748c98beb063863dbab60e0e119320ad151 --- /dev/null +++ b/content/pages/projects.github.md.part @@ -0,0 +1,392 @@ + + +## GitHub repositories + +
+ +- [abtts](#abtts) +- [blpconvert](#blpconvert) +- [ClassicEnhanced](#classicenhanced) +- [clutch](#clutch) +- [jbmafp](#jbmafp) +- [lazycommit](#lazycommit) +- [makext](#makext) +- [mprogress](#mprogress) +- [newsbarge](#newsbarge) +- [oberon](#oberon) +- [p9tree](#p9tree) +- [pats](#pats) +- [rssperado](#rssperado) +- [sm](#sm) +- [sparklines](#sparklines) +- [ttdaw](#ttdaw) +- [TurtleTweaks](#turtletweaks) +- [xmagnify](#xmagnify) + + +
+ +## abtts +Convert text like ebooks into audiobooks with UnrealSpeech. + + +
+ +|Released|Description|Download| +|--------|-----------|--------| +|2023-07-05|Added introduction audio option| [abtts-v0.3.tar.gz](/projects/abtts-v0.3.tar.gz) | +|2023-07-03|Moved to OGG as default format| [abtts-v0.2.tar.gz](/projects/abtts-v0.2.tar.gz) | +|2023-07-03|First release| [abtts-v0.1.tar.gz](/projects/abtts-v0.1.tar.gz) | + + +
+ + + +## blpconvert +This tool converts BLP texture files used in many games such as World of Warcraft into PNG files. With support for DXT1, DXT3 and DXT5 compression. + + +
+ +|Released|Description|Download| +|--------|-----------|--------| +|2025-02-04|First version| [blpconvert-v1.0.tar.gz](/projects/blpconvert-v1.0.tar.gz) | + + +
+ + + +## ClassicEnhanced +Quality of life improvements and general enhancements for WoW Classic Client. + + +
+ +|Released|Description|Download| +|--------|-----------|--------| +|2024-04-13|Fixed Druid initial state of mana bar| [ClassicEnhanced-v1.0.1.tar.gz](/projects/ClassicEnhanced-v1.0.1.tar.gz) | +|2024-04-13|First release| [ClassicEnhanced-v1.0.0.tar.gz](/projects/ClassicEnhanced-v1.0.0.tar.gz) | + + +
+ + + +## clutch +Clutch allows you to run nested dwm session inside your existing X or Wayland session. This comes in handy when you already have a desktop environment running (like Gnome) but you want to have a tiling window manager as well. + + +
+ +|Released|Description|Download| +|--------|-----------|--------| +|2024-06-19|First release| [clutch-v1.0.tar.gz](/projects/clutch-v1.0.tar.gz) | + + +
+ + + +## jbmafp +A simple static site generator that is semi compatible with Hugo and aims to be a simpler version of it, getting out of your way when it comes to taxonomies. + + +
+ +|Released|Description|Download| +|--------|-----------|--------| +|2024-06-21|Added better filtering| [jbmafp-v0.3.tar.gz](/projects/jbmafp-v0.3.tar.gz) | +|2024-06-18|Added filters first, last, random| [jbmafp-v0.2.tar.gz](/projects/jbmafp-v0.2.tar.gz) | +|2024-03-10|First release| [jbmafp-v0.1.tar.gz](/projects/jbmafp-v0.1.tar.gz) | + + +
+ + + +## lazycommit +Git commit messages for lazy people that use AI in the backend. + + +
+ +|Released|Description|Download| +|--------|-----------|--------| +|2025-03-17|First release| [lazycommit-v1.0.tar.gz](/projects/lazycommit-v1.0.tar.gz) | + + +
+ + + +## makext +Makext is a collection of useful extensions for Makefiles, aimed at simplifying and enhancing the functionality of Make-based projects. These extensions provide additional features and convenience functions to improve the overall usage of GNU Make as a task runner. + + +
+ +|Released|Description|Download| +|--------|-----------|--------| +|2024-05-15|First release| [makext-v1.0.tar.gz](/projects/makext-v1.0.tar.gz) | + + +
+ + + +## mprogress +Displays progress bar in terminal. It can be used as a standalone program so you can put it in /usr/bin. The name is stupid like that because of the potential name conflicts. + + +
+ +|Released|Description|Download| +|--------|-----------|--------| +|2022-12-31|First release| [mprogress-v1.0.tar.gz](/projects/mprogress-v1.0.tar.gz) | + + +
+ + + +## newsbarge +Converts RSS feeds into single HTMLpage containing all the feed stories. + + +
+ +|Released|Description|Download| +|--------|-----------|--------| +|2025-03-01|First release| [newsbarge-v0.1.tar.gz](/projects/newsbarge-v0.1.tar.gz) | + + +
+ + + +## oberon +This is a tiny project boilerplate for OpenResty and Lua website that includes basic router, memcached, Redis and MySQL with accompanying examples how to use all this. + + +
+ +|Released|Description|Download| +|--------|-----------|--------| +|2025-03-29|First release| [oberon-v1.0.tar.gz](/projects/oberon-v1.0.tar.gz) | + + +
+ + + +## p9tree +tree is written with Plan9 Operating System in mind so it may not work with other systems. + + +
+ +|Released|Description|Download| +|--------|-----------|--------| +|2023-11-11|First release| [p9tree-v1.0.tar.gz](/projects/p9tree-v1.0.tar.gz) | + + +
+ + + +## pats +Pats is a command-line tool for managing PulseAudio audio sinks that allows you to list available audio outputs and cycles between them seamlessly. + + +
+ +|Released|Description|Download| +|--------|-----------|--------| +|2025-07-19|First release| [pats-v1.0.tar.gz](/projects/pats-v1.0.tar.gz) | + + +
+ + + +## rssperado +The RSS parser is a command-line utility that simplifies the process of parsing RSS feeds, enriching the extracted data, exporting it to JSON files, enabling content classification, and providing English translation. + + +
+ +|Released|Description|Download| +|--------|-----------|--------| +|2023-06-07|First release| [rssperado-v1.0.tar.gz](/projects/rssperado-v1.0.tar.gz) | + + +
+ + + +## sm +Simple snapshot utility that uses TAR to compress current directory into a .tar file while ignoring some of the directories. + + +
+ +|Released|Description|Download| +|--------|-----------|--------| +|2024-10-21|First release| [sm-v1.0.tar.gz](/projects/sm-v1.0.tar.gz) | + + +
+ + + +## sparklines +Self-contained tiny SVG sparkline chart library written in vanilla JS with zero dependencies. + + +
+ +|Released|Description|Download| +|--------|-----------|--------| +|2023-12-09|First release| [sparklines-v1.0.tar.gz](/projects/sparklines-v1.0.tar.gz) | + + +
+ + + +## ttdaw +ttdaw is a tiny terminal based digital audio workstation made for fun, experimentation and learning more about audio, MIDI and terminal applications in general. + + +
+ +|Released|Description|Download| +|--------|-----------|--------| +|2024-12-22|First release| [ttdaw-v0.1.tar.gz](/projects/ttdaw-v0.1.tar.gz) | + + +
+ + + +## TurtleTweaks +World of Warcraft 1.12 client Tweaks and Enhancements Addon. + + +
+ +|Released|Description|Download| +|--------|-----------|--------| +|2023-05-14|Added cooldown timers to actionbars| [TurtleTweaks-v0.7.tar.gz](/projects/TurtleTweaks-v0.7.tar.gz) | +|2023-05-12|Rested bar now has a proper progress bar| [TurtleTweaks-v0.6.tar.gz](/projects/TurtleTweaks-v0.6.tar.gz) | +|2023-05-09|Removed debug messages| [TurtleTweaks-v0.5.1.tar.gz](/projects/TurtleTweaks-v0.5.1.tar.gz) | +|2023-05-09|Added option to open world map in a window| [TurtleTweaks-v0.5.tar.gz](/projects/TurtleTweaks-v0.5.tar.gz) | +|2023-05-09|Added nameplate scaling option| [TurtleTweaks-v0.4.tar.gz](/projects/TurtleTweaks-v0.4.tar.gz) | +|2023-05-08|Fixed progress bar to reflect the value in rested bar| [TurtleTweaks-v0.3.tar.gz](/projects/TurtleTweaks-v0.3.tar.gz) | +|2023-05-08|Added align grid slashcommand| [TurtleTweaks-v0.2.tar.gz](/projects/TurtleTweaks-v0.2.tar.gz) | +|2023-05-08|First release| [TurtleTweaks-v0.1.tar.gz](/projects/TurtleTweaks-v0.1.tar.gz) | + + +
+ + + +## xmagnify +Xmagnify is a real-time screen magnification tool for X11 systems that provides a zoomed view of the area around your mouse cursor. + + +
+ +|Released|Description|Download| +|--------|-----------|--------| +|2025-07-18|First release| [xmagnify-v1.0.tar.gz](/projects/xmagnify-v1.0.tar.gz) | + + +
+ + + + + + + diff --git a/content/pages/projects.md b/content/pages/projects.md index 8c341b655e0fdc0b6917db5e7c8370be8e0140c2..cc1018524348843e120f2adf26b3ba6aaafe6cdd 100644 --- a/content/pages/projects.md +++ b/content/pages/projects.md @@ -6,6 +6,14 @@ type: page draft: false --- +## Fossil repositories + +- [pats.fossil](/projects/pats.fossil)
Size: 220K, Modified: 2025-08-02 20:21:40 +- [xmagnify.fossil](/projects/xmagnify.fossil)
Size: 220K, Modified: 2025-08-02 20:21:40 + + +## GitHub repositories +
- [abtts](#abtts) diff --git a/static/projects/pats.fossil b/static/projects/pats.fossil new file mode 100644 index 0000000000000000000000000000000000000000..ad9173727b1356e579413368c91f4b3baac290d8 Binary files /dev/null and b/static/projects/pats.fossil differ diff --git a/static/projects/xmagnify.fossil b/static/projects/xmagnify.fossil new file mode 100644 index 0000000000000000000000000000000000000000..258d27d65a7f3a2fd27ae361250dfa8745557668 Binary files /dev/null and b/static/projects/xmagnify.fossil differ diff --git a/tools/fossil-projects.sh b/tools/fossil-projects.sh new file mode 100644 index 0000000000000000000000000000000000000000..bb6e67356f05003343e34b10d7dd9712967e0462 --- /dev/null +++ b/tools/fossil-projects.sh @@ -0,0 +1,17 @@ +set -xe + +OUT=../content/pages/projects.fossil.md.part + +echo -e "## Fossil repositories\n" > $OUT + +find ~/Projects/ -type f -name "*.fossil" -not -path "*/website/*" | while read -r file; do + cp $file ../static/projects/ +done + +find ../static/projects/ -type f -name "*.fossil" | while read -r file; do + base=$(basename "$file") + size=$(stat -c %s "$file" | numfmt --to=iec) + modified_date=$(stat -c %Y "$file") + formatted_date=$(date -d @"$modified_date" +"%Y-%m-%d %H:%M:%S") + echo -e "- [$base](/projects/$base)
Size: $size, Modified: $formatted_date" >> $OUT +done diff --git a/tools/projects.py b/tools/github-projects.py rename from tools/projects.py rename to tools/github-projects.py index 65cea8d6f828ad97499bc3a9346711cd72e4ce16..e2afe958c466d98892fe2e1b9ab4a7e5cf5b85e3 100644 --- a/tools/projects.py +++ b/tools/github-projects.py @@ -12,17 +12,11 @@ headers = { "Accept": "application/vnd.github.v3+json" } - def generate_markdown_file(include_repositories): - file = open("../content/pages/projects.md", "w") + file = open("../content/pages/projects.github.md.part", "w") - file.write("---\n") - file.write("title: Personal projects\n") - file.write("date: 2024-10-21T12:00:00+02:00\n") - file.write("url: projects.html\n") - file.write("type: page\n") - file.write("draft: false\n") - file.write("---") + file.write(DOUBLE_NL) + file.write("## GitHub repositories") file.write(DOUBLE_NL) file.write("
") @@ -76,8 +70,6 @@ file.write(DOUBLE_NL) file.close() - - def download_tarball(url, filepath): with requests.get(url, stream=True, timeout=30) as response: response.raise_for_status() @@ -85,7 +77,6 @@ with open(filepath, "wb") as file: for chunk in response.iter_content(chunk_size=8192): file.write(chunk) - def assert_rate_limit(response): rate_limit_limit = int(response.headers.get("x-ratelimit-limit")) @@ -96,7 +87,6 @@ print(f"Reset time: {datetime.fromtimestamp(rate_limit_reset)}") if rate_limit_remaining == 0: sys.exit(1) - def fetch_github_data(): include_repositories = [] @@ -135,7 +125,6 @@ print(f" > {release['tag_name']}, {release['name']}, {release['filename']}") download_tarball(release["tarball_url"], f"../static/projects/{release['filename']}") return include_repositories - include_repositories = fetch_github_data()