From 3889ef57eedbec9d3ffdfd49cb19f4de5ecaf7d1 Mon Sep 17 00:00:00 2001 From: "ErikWDev (new Mac)" Date: Tue, 20 Jul 2021 15:13:46 +0200 Subject: [PATCH] Stop using deprecated API:s, add LICENSE, add tests, formatting and more --- .gitignore | 5 +- CHANGELOG.md | 25 +++ LICENSE | 21 ++ README.md | 14 +- assetsfile.nim | 197 ------------------ assetsfilefast.nim | 197 ------------------ examples/README.md | 4 + example.nim => examples/example.nim | 0 .../templatesdir}/chatapp.html | 0 .../templatesdir}/index.html | 0 nim.cfg | 1 + nimassets.nimble | 23 +- src/nimassets.nim | 99 ++++----- tests/nim.cfg | 1 + tests/test.nim | 7 + tests/testassets/asset1.txt | 1 + 16 files changed, 139 insertions(+), 456 deletions(-) create mode 100644 CHANGELOG.md create mode 100644 LICENSE delete mode 100644 assetsfile.nim delete mode 100644 assetsfilefast.nim create mode 100644 examples/README.md rename example.nim => examples/example.nim (100%) rename {templatesdir => examples/templatesdir}/chatapp.html (100%) rename {templatesdir => examples/templatesdir}/index.html (100%) create mode 100644 tests/nim.cfg create mode 100644 tests/test.nim create mode 100644 tests/testassets/asset1.txt diff --git a/.gitignore b/.gitignore index d78eb39..13c9e0b 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,2 @@ -nimassets -example - +build +tests/assetfile.nim diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..c5adeea --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,25 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [0.2.0] - 2021-07-20 + +### Added + +- This changelog +- The MIT LICENSE file that was mentioned in the .nimble file +- A simple test inside the tests directory +- Nimble tasks that will be executed before `nimble test` to generate the assetfile to be tested. + +### Changed + +- The generated assetfile now uses the `[]=` operator instead of `.add` for registering assets in the internal table since `.add` for tables has been deprecated since Nim 1.4 +- Examples now live inside the `examples` directory +- The binary will now be built using the -d:release flag + +## [0.1.0] - 2018 + +- Initial Release \ No newline at end of file diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..417ca9a --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2018-2021 Ahmed T. Youssef + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file diff --git a/README.md b/README.md index 42d9524..6f17250 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ nimassets `Nim Assets` is heavily inspired by [go-bindata](https://github.com/jt ## Usage ```bash -nimassets 0.1.0 (Bundle your assets into nim file) +nimassets 0.2.0 (Bundle your assets into nim file) -h | --help : show help -v | --version : show version -o | --output : output filename @@ -14,8 +14,9 @@ nimassets 0.1.0 (Bundle your assets into nim file) ### Bundle -To bundle all the files in directory `templatesdir` into single nim file `assetsfile.nim` +To bundle all the files in directory `templatesdir` from the `examples` folder into single nim file `assetsfile.nim` ```bash +cd examples nimassets -d=templatesdir -o=assetsfile.nim ``` @@ -25,7 +26,12 @@ nimassets -d=templatesdir -o=assetsfile.nim ### Use Assets ``` -import assetsfile +import assetsfile # name from -o= echo assetsfile.getAsset("templatesdir/index.html") -``` \ No newline at end of file +``` + +### Development +To run tests, simply do `nimble test` from the root of this repository. + +To compile the distributable binary, run `nimble assetsBin`. It will be built and available in `./build/nimassets`. \ No newline at end of file diff --git a/assetsfile.nim b/assetsfile.nim deleted file mode 100644 index 6f80d77..0000000 --- a/assetsfile.nim +++ /dev/null @@ -1,197 +0,0 @@ -import os, tables, strformat, base64, ospaths - -var assets = initTable[string, string]() - -proc getAsset*(path: string): string = - result = assets[path].decode() - -assets.add("templatesdir/index.html", """PCFkb2N0eXBlIGh0bWw+CjxoZWFkPgo8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cjx0aXRsZT57JSBi -bG9jayB0aXRsZSAlfXslIGVuZGJsb2NrICV9PC90aXRsZT4KCgo8bGluayByZWw9InN0eWxlc2hl -ZXQiIGhyZWY9Imh0dHA6Ly9jZG4ud2ViaXguY29tL2VkZ2Uvd2ViaXguY3NzIiB0eXBlPSJ0ZXh0 -L2NzcyI+IAoKPGxpbmsgaHJlZj0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290 -c3RyYXAvNC4wLjAvY3NzL2Jvb3RzdHJhcC5taW4uY3NzIiByZWw9InN0eWxlc2hlZXQiIGludGVn -cml0eT0ic2hhMzg0LUduNTM4NHhxUTFhb1dYQSswNThSWFB4UGc2Znk0SVd2VE5oMEUyNjNYbUZj -SmxTQXdpR2dGQVcvZEFpUzZKWG0iIGNyb3Nzb3JpZ2luPSJhbm9ueW1vdXMiPgo8c2NyaXB0IHNy -Yz0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvNC4wLjAvanMvYm9v -dHN0cmFwLm1pbi5qcyIgaW50ZWdyaXR5PSJzaGEzODQtSlpSNlNwZWpoNFUwMmQ4ak90NnZMRUhm -ZS9KUUdpUlJTUVF4U2ZGV3BpMU1xdVZkQXlqVWFyNSs3NlBWQ21ZbCIgY3Jvc3NvcmlnaW49ImFu -b255bW91cyI+PC9zY3JpcHQ+CjxzY3JpcHQgc3JjPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQv -bnBtL2pxdWVyeS9kaXN0L2pxdWVyeS5taW4uanMiPjwvc2NyaXB0Pgo8c2NyaXB0IHR5cGU9InRl -eHQvamF2YXNjcmlwdCIgc3JjPSIvc3RhdGljL2pzL3dlYml4L3dlYml4L3dlYml4LmpzIj48L3Nj -cmlwdD4KPGxpbmsgaHJlZj0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Ii9zdGF0aWMvanMvd2ViaXgv -d2ViaXgvd2ViaXguY3NzIj48L3NjcmlwdD4KPHNjcmlwdCBzcmM9Imh0dHBzOi8vY2RuLnJhd2dp -dC5jb20vYW1hcmsvZ3VuL21hc3Rlci9ndW4uanMiPjwvc2NyaXB0Pgo8c2NyaXB0PgogICAgICAg -ICAgICAgICAgdmFyIGd1biA9IEd1bignaHR0cHM6Ly9ndW5qcy5oZXJva3VhcHAuY29tL2d1bicp -OwogICAgICAgICAgICAgICAgdmFyIHNvY2sgPSBuZXcgV2ViU29ja2V0KCJ3czovL2xvY2FsaG9z -dDo4MDAwL2Rpc3BhdGNoIik7CiAgICAgICAgICAgICAgICBzb2NrLm9ub3BlbiA9IGZ1bmN0aW9u -KCl7CiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coIk9wZW5lZCBhIGNvbm5lY3Rpb24u -LiIpOwogICAgICAgICAgICAgICAgfTsKCgo8L3NjcmlwdD4KCjwvaGVhZD4KPGJvZHk+CgogIDwh -LS0gV3JhcCBhbGwgcGFnZSBjb250ZW50IGhlcmUgLS0+CiAgPGRpdiBpZD0id3JhcCI+CgogICAg -PCEtLSBGaXhlZCBuYXZiYXIgLS0+CiAgICA8ZGl2IGNsYXNzPSJuYXZiYXIgbmF2YmFyLWRlZmF1 -bHQgbmF2YmFyLWZpeGVkLXRvcCI+CiAgICAgIDxkaXYgY2xhc3M9ImNvbnRhaW5lciI+CiAgICAg -ICAgPGRpdiBjbGFzcz0ibmF2YmFyLWhlYWRlciI+CiAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1 -dHRvbiIgY2xhc3M9Im5hdmJhci10b2dnbGUiIGRhdGEtdG9nZ2xlPSJjb2xsYXBzZSIgZGF0YS10 -YXJnZXQ9Ii5uYXZiYXItY29sbGFwc2UiPgogICAgICAgICAgICA8c3BhbiBjbGFzcz0iaWNvbi1i -YXIiPjwvc3Bhbj4KICAgICAgICAgICAgPHNwYW4gY2xhc3M9Imljb24tYmFyIj48L3NwYW4+CiAg -ICAgICAgICAgIDxzcGFuIGNsYXNzPSJpY29uLWJhciI+PC9zcGFuPgogICAgICAgICAgPC9idXR0 -b24+CiAgICAgICAgICA8YSBjbGFzcz0ibmF2YmFyLWJyYW5kIiBocmVmPSIvIj4wQ2hhdC1XZWJp -eDwvYT4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KCiAgICA8IS0tIEJl -Z2luIHBhZ2UgY29udGVudCAtLT4KICAgIDxtYWluIGlkPSJjb250ZW50IiByb2xlPSJtYWluIiBj -bGFzcz0iY29udGFpbmVyIj4KCiAgICAgIHslIGJsb2NrIGNvbnRlbnQgJX17JSBlbmRibG9jayAl -fQogICAgICAKICAgIDwvbWFpbj4KCiAgPC9kaXY+CgogIDxkaXYgaWQ9ImZvb3RlciI+CiAgICA8 -ZGl2IGNsYXNzPSJjb250YWluZXIiPgogICAgICA8cD5Zb3VyIENvbXBhbnkgJmNvcHk7IEFsbCBS -aWdodHMgUmVzZXJ2ZWQuPC9wPgogICAgICB7JSBibG9jayBmb290ZXIgJX17JSBlbmRibG9jayAl -fQogICAgPC9kaXY+CiAgPC9kaXY+Cgo8L2JvZHk+CjwvaHRtbD4=""" ) - -assets.add("templatesdir/chatapp.html", """eyUgZXh0ZW5kcyAiaW5kZXguaHRtbCIgJX0KCgp7JSBibG9jayBjb250ZW50ICV9CiAgICA8ZGl2 -IGlkPSJjb250YWluZXIiPgogICAgICAgICAgICA8ZGl2IGlkPSJjaGF0Y29udGFpbmVyIj4KICAg -ICAgICAgICAgPC9kaXY+CgogICAgICAgIDxzY3JpcHQ+CiAgICAgICAgICAgICAgICB3ZWJpeC5y -ZWFkeShmdW5jdGlvbigpIHsKCiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB0b29sYmFyID0g -ewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93czogWwogICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlldzog -InRvb2xiYXIiLCBoZWlnaHQ6IDEwMCwgZWxlbWVudHM6WwogICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAge3ZpZXc6ICJsYWJlbCIsIGxhYmVsOiAiPHNwYW4gc3R5bGU9J2Zv -bnQtc2l6ZTogMThweDsnPldlYml4IDAtQ2hhdDwvc3Bhbj4ifSwKICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAg -ICAgICAgICAgICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAg -ICAgICAgICAgICAgICAgICAgICAgbGV0IHR4dG1zZyA9IHsKICAgICAgICAgICAgICAgICAgICAg -ICAgICAgIHZpZXc6ICJ0b29sYmFyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1l -bnRzOiBbCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgaWQ6J3R4dE1zZycsCiAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgIHZpZXc6J3RleHQnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICBuYW1lOid0eHRNc2cnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICB2aWV3OididXR0b24nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICBpZDonYnRuU2VuZE1zZycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -IHZhbHVlOidTZW5kJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTon -c3RhbmRhcmQnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGljazogZnVu -Y3Rpb24oKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUu -bG9nKCdidG5TZW5kIGlzIGNsaWNrZWQuJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICBzZW5kQ2hhdE1zZygpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg -ICAgICAgICAgICAgXQogICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAg -ICAgICAgICBsZXQgcm9vbXNQYW5lID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93 -czpbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICB2aWV3OiAnbGlzdCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgIGxhYmVsQWxpZ246J3JpZ2h0JywKICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgaGVpZ2h0OjUwMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -d2lkdGg6IDIwMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6ICdsaXN0 -Q2hhdFJvb21zJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0OnRy -dWUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgIHtpZDondHh0VXNlcm5hbWUnLCB2aWV3Oid0ZXh0JywgbmFtZTondHh0VXNl -cm5hbWUnfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgICAgICAg -ICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGxlZnRwYW5lID0gewogICAgICAg -ICAgICAgICAgICAgICAgICAgICAgcm93czogWwogICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgIHsgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXc6ICJsaXN0Iiwg -CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsQWxpZ246ICJyaWdodCIs -IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDUwMCwgCiAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiA0MDAsCiAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiAiIiwKICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgaWQ6ICJsaXN0Q2hhdHMiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgfSwgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAg -ICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAgICAgLy9tYXliZSBpdCdzIGJldHRl -ciB0byBhbGxvdyBpdCBhcyBhIHBvcHVwCiAgICAgICAgICAgICAgICAgICAgICAgIGxldCByaWdo -dHBhbmUgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dzOlsKICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICB7IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICB2aWV3OiAidGVtcGxhdGUiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -dGVtcGxhdGU6ICJUZXh0IHRvIGJlIHNob3duIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgaWQ6ICJmb3Jtc1BhbmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICB3aWR0aDo0MDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAg -ICAgICAgICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAg -ICAgICAgICAgICAgICAgICAgbGV0IGhib3ggPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAg -ICBjb2xzOiBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVmdHBhbmUsCiAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmlnaHRwYW5lCiAgICAgICAgICAgICAgICAgICAg -ICAgICAgICBdIAogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAg -ICAgIGxldCB2Ym94ID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93czogWwogICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhib3gsCiAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgdHh0bXNnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgXQogICAgICAgICAg -ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHdlYml4LnVpKHsKICAgICAg -ICAgICAgICAgICAgICAgICAgICAgIGNvbHM6WwogICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgIHJvb21zUGFuZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2Ym94CiAgICAg -ICAgICAgICAgICAgICAgICAgICAgICBdICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAg -ICAgICAgICAgICAgICAgICAgICB9KTsKCiAgICAgICAgICAgICAgICAgICAgICAgIHdlYml4LlVJ -TWFuYWdlci5hZGRIb3RLZXkoIkVudGVyIiwgc2VuZENoYXRNc2csW10pOwogICAgICAgICAgICAg -ICAgICAgICAgICB3ZWJpeC5VSU1hbmFnZXIuc2V0Rm9jdXMoJCQoInR4dE1zZyIpKTsKCiAgICAg -ICAgICAgICAgICAgICAgICAgIGxldCByb29tc2xpc3RlbmRwb2ludCA9ICIvcm9vbXMiOwogICAg -ICAgICAgICAgICAgICAgICAgICAkLmFqYXgoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7 -CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogIkdFVCIsCiAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgdXJsOnJvb21zbGlzdGVuZHBvaW50LAogICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uKGRhdGEpewogICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygiREFUQTogIiArIGRhdGEpOwogICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBrIG9mIGRhdGEpewogICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coIkFERElORyBL -OiAiLCBrKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQkKCJsaXN0 -Q2hhdFJvb21zIikuYWRkKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBrLAogICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOmsKICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sMCk7CiAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g -c2VsZWN0IHRoZSBmaXJzdG9uZSBieSBkZWZhdWx0LgogICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAkJCgnbGlzdENoYXRSb29tcycpLnNlbGVjdChwYXJzZWRbMF0pOyAKCiAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQkKCdsaXN0Q2hhdFJvb21zJykucmVmcmVz -aCgpOyAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg -ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAg -ICAgICAgCgogICAgICAgICAgICAgICAgICAgICAgICBzb2NrLm9ubWVzc2FnZSA9IGZ1bmN0aW9u -KG0pewoKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBkYXRhID0gSlNPTi5wYXJz -ZShtLmRhdGEpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbXNnID0gZGF0YVsn -bXNnX2JvZHknXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHR5cGUgPSAgZGF0 -YVsndHlwZSddOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coIlJFQ0VJ -VkVEIE1TRzogIiwgbXNnLCB0eXBlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGd1 -bi5nZXQoJzBjaGF0Jykuc2V0KG1zZyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAo -dHlwZSA9PT0gImh0bWwiKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCQoJ2Zv -cm1zUGFuZScpLnNldEhUTUwobXNnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1lbHNl -IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkJCgibGlzdENoYXRzIikuYWRkKAog -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgdmFsdWU6IG1zZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0s -IDAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAkJCgnbGlzdENoYXRzJykucmVmcmVzaCgpOwogICAgICAgICAgICAgICAgICAgICAgICAg -ICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJCQoJ2xpc3RD -aGF0Um9vbXMnKS5hdHRhY2hFdmVudCgnb25BZnRlclNlbGVjdCcsIChzZWxlY3RlZFJvb20pID0+ -ewogICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCJORVcgSUQ6ICIsIHNlbGVjdGVkUm9v -bSk7CiAgICAgICAgICAgICAgICAgICAgZmV0Y2goYC9yb29tLyR7c2VsZWN0ZWRSb29tfWApCiAg -ICAgICAgICAgICAgICAgICAgICAgIC50aGVuKCAocmVzcCkgPT4gewogICAgICAgICAgICAgICAg -ICAgICAgICAgICAgY29uc29sZS5sb2coIkRhdGE6IiwgcmVzcCk7CiAgICAgICAgICAgICAgICAg -ICAgICAgICAgICByZXR1cm4gcmVzcC5qc29uKCkKICAgICAgICAgICAgICAgICAgICAgICAgfSku -dGhlbigganNvbkRhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNv -bGUubG9nKCIqKioqKipEQVRBOiAiLCBqc29uRGF0YSk7CiAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgY29uc29sZS5sb2coIkNoYXRyb29tIGNoYW5nZWQgdG86ICIsIHNlbGVjdGVkUm9v -bSk7IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgW2ssIHZdIG9m -IE9iamVjdC5lbnRyaWVzKGpzb25EYXRhKSl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgIGNvbnNvbGUubG9nKCJLOiAiLCBrLCAiIFY6ICIsIHYpOwogICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAvLyB7bWlkfTp7cm9vbX06e3NlbmRlcl9pZH06e21zZ190eXBl -fTp7bXNnX2JvZHl9Onttc2dfdGltZX0iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgIGxldCB7bWlkLCByb29tLCBzZW5kZXJfaWQsIG1zZ190eXBlLCBtc2dfdGltZX0gPSBrLnNw -bGl0KCI6IikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2co -Ik8gaXMgOiAiLCBrLCB2KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQg -cGFyc2VkTXNnID0gSlNPTi5wYXJzZSh2KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgJCQoImxpc3RDaGF0cyIpLmFkZCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOmAk -e3NlbmRlcl9pZH0gc2FpZDogJHtwYXJzZWRNc2dbJ21zZ19ib2R5J119YAogICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICB9LDApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgIH0gCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSAgICAKICAgICAgICAgICAgICAg -ICAgICAgICAgCiAgICAgICAgICAgICAgICB9KQoKICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHNl -bmRDaGF0TXNnKCkgewogICAgICAgICAgICAgICAgICAgIC8vIGxldCBzZW5kZXJfaWQgPSAkJCgn -dHh0VXNlcm5hbWUnKS5kYXRhLnZhbHVlOwogICAgICAgICAgICAgICAgICAgIGxldCBzZW5kZXJf -aWQgPSAkJCgndHh0VXNlcm5hbWUnKS5kYXRhLnZhbHVlOwogICAgICAgICAgICAgICAgICAgIGxl -dCBtc2dfYm9keSA9ICQkKCd0eHRNc2cnKS5kYXRhLnZhbHVlOwogICAgICAgICAgICAgICAgICAg -IGxldCByb29tbmFtZSA9ICQkKCdsaXN0Q2hhdFJvb21zJykuZ2V0U2VsZWN0ZWRJZCgpOwogICAg -ICAgICAgICAgICAgICAgIGxldCBtZXNzYWdlID0ge3NlbmRlcl9pZDpzZW5kZXJfaWQsIG1zZ19i -b2R5Om1zZ19ib2R5LCBtc2dfdHlwZToncGxhaW4nLCByb29tOnJvb21uYW1lfTsKICAgICAgICAg -ICAgICAgICAgICBzb2NrLnNlbmQoSlNPTi5zdHJpbmdpZnkobWVzc2FnZSkpOwogICAgICAgICAg -ICAgICAgICAgIC8vIGd1bi5nZXQoJzBjaGF0LXRtcCcpLnNldChtKTsKICAgICAgICAgICAgICAg -ICAgICBjb25zb2xlLmxvZygiSU4gU0VORENIQVQgTVNHOiAgIisgSlNPTi5zdHJpbmdpZnkobWVz -c2FnZSkpOwogICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCJET05FIFNFVCBJTiBndW4i -KTsKICAgICAgICAgICAgICAgICAgICAkKCcjdHh0TXNnJykudmFsKCIiKTsKICAgICAgICAgICAg -ICAgICAgICAKICAgICAgICAgICAgICAgICAgICAvLyAkJCgibGlzdENoYXRzIikuYWRkKAogICAg -ICAgICAgICAgICAgICAgIC8vICAgICB7CiAgICAgICAgICAgICAgICAgICAgLy8gICAgICAgICB2 -YWx1ZTogbQogICAgICAgICAgICAgICAgICAgIC8vICAgICB9LCAwCiAgICAgICAgICAgICAgICAg -ICAgLy8gKTsKICAgICAgICAgICAgICAgICAgICAvLyAkJCgnbGlzdENoYXRzJykucmVmcmVzaCgp -OwogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAg -IAogICAgICAgICAgICAgICAgfSk7CgoKCgoKCgoKCgoKCiAgICAgICAgICAgICAgICAvLyByZWxv -YWQgYWxsCiAgICAgICAgICAgICAgICAvLyBndW4ubWFwKCkub24oZnVuY3Rpb24obXNnLCBpZCl7 -CiAgICAgICAgICAgICAgICAvLyAgICAgJCQoImxpc3RDaGF0cyIpLmFkZCgKICAgICAgICAgICAg -ICAgIC8vICAgICAgICAgewogICAgICAgICAgICAgICAgLy8gICAgICAgICAgICAgaWQ6IGlkLAog -ICAgICAgICAgICAgICAgLy8gICAgICAgICAgICAgdmFsdWU6bXNnCiAgICAgICAgICAgICAgICAv -LyAgICAgICAgIH0KICAgICAgICAgICAgICAgIC8vICAgICApCgkJCQkvLyB9KTsKCgogICAgICAg -ICAgICA8L3NjcmlwdD4KCjwvZGl2Pgp7JSBlbmRibG9jayAlfQ==""" ) - diff --git a/assetsfilefast.nim b/assetsfilefast.nim deleted file mode 100644 index 6f80d77..0000000 --- a/assetsfilefast.nim +++ /dev/null @@ -1,197 +0,0 @@ -import os, tables, strformat, base64, ospaths - -var assets = initTable[string, string]() - -proc getAsset*(path: string): string = - result = assets[path].decode() - -assets.add("templatesdir/index.html", """PCFkb2N0eXBlIGh0bWw+CjxoZWFkPgo8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cjx0aXRsZT57JSBi -bG9jayB0aXRsZSAlfXslIGVuZGJsb2NrICV9PC90aXRsZT4KCgo8bGluayByZWw9InN0eWxlc2hl -ZXQiIGhyZWY9Imh0dHA6Ly9jZG4ud2ViaXguY29tL2VkZ2Uvd2ViaXguY3NzIiB0eXBlPSJ0ZXh0 -L2NzcyI+IAoKPGxpbmsgaHJlZj0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290 -c3RyYXAvNC4wLjAvY3NzL2Jvb3RzdHJhcC5taW4uY3NzIiByZWw9InN0eWxlc2hlZXQiIGludGVn -cml0eT0ic2hhMzg0LUduNTM4NHhxUTFhb1dYQSswNThSWFB4UGc2Znk0SVd2VE5oMEUyNjNYbUZj -SmxTQXdpR2dGQVcvZEFpUzZKWG0iIGNyb3Nzb3JpZ2luPSJhbm9ueW1vdXMiPgo8c2NyaXB0IHNy -Yz0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvNC4wLjAvanMvYm9v -dHN0cmFwLm1pbi5qcyIgaW50ZWdyaXR5PSJzaGEzODQtSlpSNlNwZWpoNFUwMmQ4ak90NnZMRUhm -ZS9KUUdpUlJTUVF4U2ZGV3BpMU1xdVZkQXlqVWFyNSs3NlBWQ21ZbCIgY3Jvc3NvcmlnaW49ImFu -b255bW91cyI+PC9zY3JpcHQ+CjxzY3JpcHQgc3JjPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQv -bnBtL2pxdWVyeS9kaXN0L2pxdWVyeS5taW4uanMiPjwvc2NyaXB0Pgo8c2NyaXB0IHR5cGU9InRl -eHQvamF2YXNjcmlwdCIgc3JjPSIvc3RhdGljL2pzL3dlYml4L3dlYml4L3dlYml4LmpzIj48L3Nj -cmlwdD4KPGxpbmsgaHJlZj0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Ii9zdGF0aWMvanMvd2ViaXgv -d2ViaXgvd2ViaXguY3NzIj48L3NjcmlwdD4KPHNjcmlwdCBzcmM9Imh0dHBzOi8vY2RuLnJhd2dp -dC5jb20vYW1hcmsvZ3VuL21hc3Rlci9ndW4uanMiPjwvc2NyaXB0Pgo8c2NyaXB0PgogICAgICAg -ICAgICAgICAgdmFyIGd1biA9IEd1bignaHR0cHM6Ly9ndW5qcy5oZXJva3VhcHAuY29tL2d1bicp -OwogICAgICAgICAgICAgICAgdmFyIHNvY2sgPSBuZXcgV2ViU29ja2V0KCJ3czovL2xvY2FsaG9z -dDo4MDAwL2Rpc3BhdGNoIik7CiAgICAgICAgICAgICAgICBzb2NrLm9ub3BlbiA9IGZ1bmN0aW9u -KCl7CiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coIk9wZW5lZCBhIGNvbm5lY3Rpb24u -LiIpOwogICAgICAgICAgICAgICAgfTsKCgo8L3NjcmlwdD4KCjwvaGVhZD4KPGJvZHk+CgogIDwh -LS0gV3JhcCBhbGwgcGFnZSBjb250ZW50IGhlcmUgLS0+CiAgPGRpdiBpZD0id3JhcCI+CgogICAg -PCEtLSBGaXhlZCBuYXZiYXIgLS0+CiAgICA8ZGl2IGNsYXNzPSJuYXZiYXIgbmF2YmFyLWRlZmF1 -bHQgbmF2YmFyLWZpeGVkLXRvcCI+CiAgICAgIDxkaXYgY2xhc3M9ImNvbnRhaW5lciI+CiAgICAg -ICAgPGRpdiBjbGFzcz0ibmF2YmFyLWhlYWRlciI+CiAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1 -dHRvbiIgY2xhc3M9Im5hdmJhci10b2dnbGUiIGRhdGEtdG9nZ2xlPSJjb2xsYXBzZSIgZGF0YS10 -YXJnZXQ9Ii5uYXZiYXItY29sbGFwc2UiPgogICAgICAgICAgICA8c3BhbiBjbGFzcz0iaWNvbi1i -YXIiPjwvc3Bhbj4KICAgICAgICAgICAgPHNwYW4gY2xhc3M9Imljb24tYmFyIj48L3NwYW4+CiAg -ICAgICAgICAgIDxzcGFuIGNsYXNzPSJpY29uLWJhciI+PC9zcGFuPgogICAgICAgICAgPC9idXR0 -b24+CiAgICAgICAgICA8YSBjbGFzcz0ibmF2YmFyLWJyYW5kIiBocmVmPSIvIj4wQ2hhdC1XZWJp -eDwvYT4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KCiAgICA8IS0tIEJl -Z2luIHBhZ2UgY29udGVudCAtLT4KICAgIDxtYWluIGlkPSJjb250ZW50IiByb2xlPSJtYWluIiBj -bGFzcz0iY29udGFpbmVyIj4KCiAgICAgIHslIGJsb2NrIGNvbnRlbnQgJX17JSBlbmRibG9jayAl -fQogICAgICAKICAgIDwvbWFpbj4KCiAgPC9kaXY+CgogIDxkaXYgaWQ9ImZvb3RlciI+CiAgICA8 -ZGl2IGNsYXNzPSJjb250YWluZXIiPgogICAgICA8cD5Zb3VyIENvbXBhbnkgJmNvcHk7IEFsbCBS -aWdodHMgUmVzZXJ2ZWQuPC9wPgogICAgICB7JSBibG9jayBmb290ZXIgJX17JSBlbmRibG9jayAl -fQogICAgPC9kaXY+CiAgPC9kaXY+Cgo8L2JvZHk+CjwvaHRtbD4=""" ) - -assets.add("templatesdir/chatapp.html", """eyUgZXh0ZW5kcyAiaW5kZXguaHRtbCIgJX0KCgp7JSBibG9jayBjb250ZW50ICV9CiAgICA8ZGl2 -IGlkPSJjb250YWluZXIiPgogICAgICAgICAgICA8ZGl2IGlkPSJjaGF0Y29udGFpbmVyIj4KICAg -ICAgICAgICAgPC9kaXY+CgogICAgICAgIDxzY3JpcHQ+CiAgICAgICAgICAgICAgICB3ZWJpeC5y -ZWFkeShmdW5jdGlvbigpIHsKCiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB0b29sYmFyID0g -ewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93czogWwogICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlldzog -InRvb2xiYXIiLCBoZWlnaHQ6IDEwMCwgZWxlbWVudHM6WwogICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAge3ZpZXc6ICJsYWJlbCIsIGxhYmVsOiAiPHNwYW4gc3R5bGU9J2Zv -bnQtc2l6ZTogMThweDsnPldlYml4IDAtQ2hhdDwvc3Bhbj4ifSwKICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAg -ICAgICAgICAgICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAg -ICAgICAgICAgICAgICAgICAgICAgbGV0IHR4dG1zZyA9IHsKICAgICAgICAgICAgICAgICAgICAg -ICAgICAgIHZpZXc6ICJ0b29sYmFyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1l -bnRzOiBbCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgaWQ6J3R4dE1zZycsCiAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgIHZpZXc6J3RleHQnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICBuYW1lOid0eHRNc2cnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICB2aWV3OididXR0b24nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICBpZDonYnRuU2VuZE1zZycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -IHZhbHVlOidTZW5kJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTon -c3RhbmRhcmQnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGljazogZnVu -Y3Rpb24oKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUu -bG9nKCdidG5TZW5kIGlzIGNsaWNrZWQuJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICBzZW5kQ2hhdE1zZygpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg -ICAgICAgICAgICAgXQogICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAg -ICAgICAgICBsZXQgcm9vbXNQYW5lID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93 -czpbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICB2aWV3OiAnbGlzdCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgIGxhYmVsQWxpZ246J3JpZ2h0JywKICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgaGVpZ2h0OjUwMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -d2lkdGg6IDIwMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6ICdsaXN0 -Q2hhdFJvb21zJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0OnRy -dWUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgIHtpZDondHh0VXNlcm5hbWUnLCB2aWV3Oid0ZXh0JywgbmFtZTondHh0VXNl -cm5hbWUnfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgICAgICAg -ICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGxlZnRwYW5lID0gewogICAgICAg -ICAgICAgICAgICAgICAgICAgICAgcm93czogWwogICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgIHsgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXc6ICJsaXN0Iiwg -CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsQWxpZ246ICJyaWdodCIs -IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDUwMCwgCiAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiA0MDAsCiAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiAiIiwKICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgaWQ6ICJsaXN0Q2hhdHMiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgfSwgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAg -ICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAgICAgLy9tYXliZSBpdCdzIGJldHRl -ciB0byBhbGxvdyBpdCBhcyBhIHBvcHVwCiAgICAgICAgICAgICAgICAgICAgICAgIGxldCByaWdo -dHBhbmUgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dzOlsKICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICB7IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICB2aWV3OiAidGVtcGxhdGUiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -dGVtcGxhdGU6ICJUZXh0IHRvIGJlIHNob3duIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgaWQ6ICJmb3Jtc1BhbmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICB3aWR0aDo0MDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAg -ICAgICAgICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAg -ICAgICAgICAgICAgICAgICAgbGV0IGhib3ggPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAg -ICBjb2xzOiBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVmdHBhbmUsCiAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmlnaHRwYW5lCiAgICAgICAgICAgICAgICAgICAg -ICAgICAgICBdIAogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAg -ICAgIGxldCB2Ym94ID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93czogWwogICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhib3gsCiAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgdHh0bXNnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgXQogICAgICAgICAg -ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHdlYml4LnVpKHsKICAgICAg -ICAgICAgICAgICAgICAgICAgICAgIGNvbHM6WwogICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgIHJvb21zUGFuZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2Ym94CiAgICAg -ICAgICAgICAgICAgICAgICAgICAgICBdICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAg -ICAgICAgICAgICAgICAgICAgICB9KTsKCiAgICAgICAgICAgICAgICAgICAgICAgIHdlYml4LlVJ -TWFuYWdlci5hZGRIb3RLZXkoIkVudGVyIiwgc2VuZENoYXRNc2csW10pOwogICAgICAgICAgICAg -ICAgICAgICAgICB3ZWJpeC5VSU1hbmFnZXIuc2V0Rm9jdXMoJCQoInR4dE1zZyIpKTsKCiAgICAg -ICAgICAgICAgICAgICAgICAgIGxldCByb29tc2xpc3RlbmRwb2ludCA9ICIvcm9vbXMiOwogICAg -ICAgICAgICAgICAgICAgICAgICAkLmFqYXgoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7 -CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogIkdFVCIsCiAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgdXJsOnJvb21zbGlzdGVuZHBvaW50LAogICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uKGRhdGEpewogICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygiREFUQTogIiArIGRhdGEpOwogICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBrIG9mIGRhdGEpewogICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coIkFERElORyBL -OiAiLCBrKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQkKCJsaXN0 -Q2hhdFJvb21zIikuYWRkKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBrLAogICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOmsKICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sMCk7CiAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g -c2VsZWN0IHRoZSBmaXJzdG9uZSBieSBkZWZhdWx0LgogICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAkJCgnbGlzdENoYXRSb29tcycpLnNlbGVjdChwYXJzZWRbMF0pOyAKCiAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQkKCdsaXN0Q2hhdFJvb21zJykucmVmcmVz -aCgpOyAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg -ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAg -ICAgICAgCgogICAgICAgICAgICAgICAgICAgICAgICBzb2NrLm9ubWVzc2FnZSA9IGZ1bmN0aW9u -KG0pewoKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBkYXRhID0gSlNPTi5wYXJz -ZShtLmRhdGEpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbXNnID0gZGF0YVsn -bXNnX2JvZHknXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHR5cGUgPSAgZGF0 -YVsndHlwZSddOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coIlJFQ0VJ -VkVEIE1TRzogIiwgbXNnLCB0eXBlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGd1 -bi5nZXQoJzBjaGF0Jykuc2V0KG1zZyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAo -dHlwZSA9PT0gImh0bWwiKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCQoJ2Zv -cm1zUGFuZScpLnNldEhUTUwobXNnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1lbHNl -IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkJCgibGlzdENoYXRzIikuYWRkKAog -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgdmFsdWU6IG1zZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0s -IDAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAkJCgnbGlzdENoYXRzJykucmVmcmVzaCgpOwogICAgICAgICAgICAgICAgICAgICAgICAg -ICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJCQoJ2xpc3RD -aGF0Um9vbXMnKS5hdHRhY2hFdmVudCgnb25BZnRlclNlbGVjdCcsIChzZWxlY3RlZFJvb20pID0+ -ewogICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCJORVcgSUQ6ICIsIHNlbGVjdGVkUm9v -bSk7CiAgICAgICAgICAgICAgICAgICAgZmV0Y2goYC9yb29tLyR7c2VsZWN0ZWRSb29tfWApCiAg -ICAgICAgICAgICAgICAgICAgICAgIC50aGVuKCAocmVzcCkgPT4gewogICAgICAgICAgICAgICAg -ICAgICAgICAgICAgY29uc29sZS5sb2coIkRhdGE6IiwgcmVzcCk7CiAgICAgICAgICAgICAgICAg -ICAgICAgICAgICByZXR1cm4gcmVzcC5qc29uKCkKICAgICAgICAgICAgICAgICAgICAgICAgfSku -dGhlbigganNvbkRhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNv -bGUubG9nKCIqKioqKipEQVRBOiAiLCBqc29uRGF0YSk7CiAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgY29uc29sZS5sb2coIkNoYXRyb29tIGNoYW5nZWQgdG86ICIsIHNlbGVjdGVkUm9v -bSk7IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgW2ssIHZdIG9m -IE9iamVjdC5lbnRyaWVzKGpzb25EYXRhKSl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgIGNvbnNvbGUubG9nKCJLOiAiLCBrLCAiIFY6ICIsIHYpOwogICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAvLyB7bWlkfTp7cm9vbX06e3NlbmRlcl9pZH06e21zZ190eXBl -fTp7bXNnX2JvZHl9Onttc2dfdGltZX0iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgIGxldCB7bWlkLCByb29tLCBzZW5kZXJfaWQsIG1zZ190eXBlLCBtc2dfdGltZX0gPSBrLnNw -bGl0KCI6IikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2co -Ik8gaXMgOiAiLCBrLCB2KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQg -cGFyc2VkTXNnID0gSlNPTi5wYXJzZSh2KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgJCQoImxpc3RDaGF0cyIpLmFkZCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOmAk -e3NlbmRlcl9pZH0gc2FpZDogJHtwYXJzZWRNc2dbJ21zZ19ib2R5J119YAogICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICB9LDApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgIH0gCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSAgICAKICAgICAgICAgICAgICAg -ICAgICAgICAgCiAgICAgICAgICAgICAgICB9KQoKICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHNl -bmRDaGF0TXNnKCkgewogICAgICAgICAgICAgICAgICAgIC8vIGxldCBzZW5kZXJfaWQgPSAkJCgn -dHh0VXNlcm5hbWUnKS5kYXRhLnZhbHVlOwogICAgICAgICAgICAgICAgICAgIGxldCBzZW5kZXJf -aWQgPSAkJCgndHh0VXNlcm5hbWUnKS5kYXRhLnZhbHVlOwogICAgICAgICAgICAgICAgICAgIGxl -dCBtc2dfYm9keSA9ICQkKCd0eHRNc2cnKS5kYXRhLnZhbHVlOwogICAgICAgICAgICAgICAgICAg -IGxldCByb29tbmFtZSA9ICQkKCdsaXN0Q2hhdFJvb21zJykuZ2V0U2VsZWN0ZWRJZCgpOwogICAg -ICAgICAgICAgICAgICAgIGxldCBtZXNzYWdlID0ge3NlbmRlcl9pZDpzZW5kZXJfaWQsIG1zZ19i -b2R5Om1zZ19ib2R5LCBtc2dfdHlwZToncGxhaW4nLCByb29tOnJvb21uYW1lfTsKICAgICAgICAg -ICAgICAgICAgICBzb2NrLnNlbmQoSlNPTi5zdHJpbmdpZnkobWVzc2FnZSkpOwogICAgICAgICAg -ICAgICAgICAgIC8vIGd1bi5nZXQoJzBjaGF0LXRtcCcpLnNldChtKTsKICAgICAgICAgICAgICAg -ICAgICBjb25zb2xlLmxvZygiSU4gU0VORENIQVQgTVNHOiAgIisgSlNPTi5zdHJpbmdpZnkobWVz -c2FnZSkpOwogICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCJET05FIFNFVCBJTiBndW4i -KTsKICAgICAgICAgICAgICAgICAgICAkKCcjdHh0TXNnJykudmFsKCIiKTsKICAgICAgICAgICAg -ICAgICAgICAKICAgICAgICAgICAgICAgICAgICAvLyAkJCgibGlzdENoYXRzIikuYWRkKAogICAg -ICAgICAgICAgICAgICAgIC8vICAgICB7CiAgICAgICAgICAgICAgICAgICAgLy8gICAgICAgICB2 -YWx1ZTogbQogICAgICAgICAgICAgICAgICAgIC8vICAgICB9LCAwCiAgICAgICAgICAgICAgICAg -ICAgLy8gKTsKICAgICAgICAgICAgICAgICAgICAvLyAkJCgnbGlzdENoYXRzJykucmVmcmVzaCgp -OwogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAg -IAogICAgICAgICAgICAgICAgfSk7CgoKCgoKCgoKCgoKCiAgICAgICAgICAgICAgICAvLyByZWxv -YWQgYWxsCiAgICAgICAgICAgICAgICAvLyBndW4ubWFwKCkub24oZnVuY3Rpb24obXNnLCBpZCl7 -CiAgICAgICAgICAgICAgICAvLyAgICAgJCQoImxpc3RDaGF0cyIpLmFkZCgKICAgICAgICAgICAg -ICAgIC8vICAgICAgICAgewogICAgICAgICAgICAgICAgLy8gICAgICAgICAgICAgaWQ6IGlkLAog -ICAgICAgICAgICAgICAgLy8gICAgICAgICAgICAgdmFsdWU6bXNnCiAgICAgICAgICAgICAgICAv -LyAgICAgICAgIH0KICAgICAgICAgICAgICAgIC8vICAgICApCgkJCQkvLyB9KTsKCgogICAgICAg -ICAgICA8L3NjcmlwdD4KCjwvZGl2Pgp7JSBlbmRibG9jayAlfQ==""" ) - diff --git a/examples/README.md b/examples/README.md new file mode 100644 index 0000000..0ffa00f --- /dev/null +++ b/examples/README.md @@ -0,0 +1,4 @@ +Run the following: ``` +nimassets -d:templatesdir -o:assetsfile.nim +nim c -r example.nim +``` diff --git a/example.nim b/examples/example.nim similarity index 100% rename from example.nim rename to examples/example.nim diff --git a/templatesdir/chatapp.html b/examples/templatesdir/chatapp.html similarity index 100% rename from templatesdir/chatapp.html rename to examples/templatesdir/chatapp.html diff --git a/templatesdir/index.html b/examples/templatesdir/index.html similarity index 100% rename from templatesdir/index.html rename to examples/templatesdir/index.html diff --git a/nim.cfg b/nim.cfg index aed303e..87581f8 100644 --- a/nim.cfg +++ b/nim.cfg @@ -1 +1,2 @@ --threads:on +-d:release \ No newline at end of file diff --git a/nimassets.nimble b/nimassets.nimble index b177d7b..089d96e 100644 --- a/nimassets.nimble +++ b/nimassets.nimble @@ -1,24 +1,33 @@ # Package -version = "0.1.0" +version = "0.2.0" author = "xmonader" description = "bundle your assets to a nim" license = "MIT" srcDir = "src" +binDir = "build" bin = @["nimassets"] +skipDirs = @["examples", "tests"] # Dependencies -requires "nim >= 0.19.0" +requires "nim >= 1.4.0" + +proc build() = + exec "nimble build --threads:on -d:release" task assetsBin, "Build nimassets": - exec "nimble build --threads:on" + build() task buildTemplates, "bundle templates in templatesdir": - # exec "nimble assetsBin" - exec "nimassets -d=templatesdir -o=assetsfile.nim" + build() + exec "./build/nimassets -d=examples/templatesdir -o=examples/assetsfile.nim" task buildTemplatesFast, "bundle templates in templatesdir fast": - # exec "nimble assetsBin" - exec "nimassets -d=templatesdir -o=assetsfilefast.nim -f" \ No newline at end of file + build() + exec "./build/nimassets -d=examples/templatesdir -o=examples/assetsfilefast.nim -f" + +before test: + build() + exec "./build/nimassets -d:tests/testassets -o:tests/assetfile.nim" \ No newline at end of file diff --git a/src/nimassets.nim b/src/nimassets.nim index 6e6029d..00c2132 100644 --- a/src/nimassets.nim +++ b/src/nimassets.nim @@ -1,41 +1,42 @@ -import os, tables, strformat, base64, ospaths, strutils, parseopt, threadpool +import + os, + strformat, + base64, + parseopt, + threadpool const buildBranchName* = staticExec("git rev-parse --abbrev-ref HEAD") ## \ ## `buildBranchName` branch zos is built from const buildCommit* = staticExec("git rev-parse HEAD") ## \ ## `buildCommit` commit zos is built from - + # const latestTag* = staticExec("git describe --abbrev=0 --tags") ## \ ## `latestTag` latest tag on this branch -const versionString* = fmt"0.1.0 ({buildBranchName}/{buildCommit})" +const versionString* = &"0.2.0 ({buildBranchName}/{buildCommit})" -let assetsFileHeader = """ -import os, tables, strformat, base64, ospaths +const assetsFileHeader = """ +import tables, base64 -var assets = initTable[string, string]() +var assets: Table[string, string] -proc getAsset*(path: string): string = +proc getAsset*(path: string): string = result = assets[path].decode() """ -proc generateDirAssetsSimple(dir:string): string = - var key, val, valString: string - - for path in expandTilde(dir).walkDirRec(): - key = path - val = readFile(path).encode() - valString = " \"\"\"" & val & "\"\"\" " - result &= fmt"""assets.add("{path}", {valString})""" & "\n\n" -proc handleFile(path:string): string {.thread.} = +proc handleFile(path: string): string {.thread.} = var val, valString: string val = readFile(path).encode() valString = " \"\"\"" & val & "\"\"\" " - result = fmt"""assets.add("{path}", {valString})""" & "\n\n" + result = &"""assets["{path}"] = {valString}""" & "\n\n" + +proc generateDirAssetsSimple*(dir: string): string = + for path in expandTilde(dir).walkDirRec(): + result &= handleFile(path) -proc generateDirAssetsSpawn(dir: string): string = +proc generateDirAssetsSpawn*(dir: string): string = var results = newSeq[FlowVar[string]]() for path in expandTilde(dir).walkDirRec(): results.add(spawn handleFile(path)) @@ -47,9 +48,10 @@ proc generateDirAssetsSpawn(dir: string): string = # TODO: checks async implementation sometime later.. -proc createAssetsFile(dirs:seq[string], outputfile="assets.nim", fast=false, compress=false) = - var generator: proc(s:string): string - var data = assetsFileHeader +proc createAssetsFile*(dirs:seq[string], outputfile="assets.nim", fast=false, compress=false) = + var + generator: proc(s:string): string + data = assetsFileHeader if fast: generator = generateDirAssetsSpawn @@ -58,12 +60,12 @@ proc createAssetsFile(dirs:seq[string], outputfile="assets.nim", fast=false, com for d in dirs: data &= generator(d) - + writeFile(outputfile, data) -proc writeHelp() = - #-c | --compress : compress - echo fmt""" +proc writeHelp() = + #-c | --compress : compress + echo &""" nimassets {versionString} (Bundle your assets into nim file) -h | --help : show help -v | --version : show version @@ -73,42 +75,43 @@ nimassets {versionString} (Bundle your assets into nim file) """ proc writeVersion() = - echo fmt"nimassets version {versionString}" + echo &"nimassets version {versionString}" proc cli*() = - var + var compress, fast : bool = false dirs = newSeq[string]() output = "assets.nim" - + if paramCount() == 0: writeHelp() quit(0) - + for kind, key, val in getopt(): case kind - of cmdLongOption, cmdShortOption: + of cmdLongOption, cmdShortOption: case key - of "help", "h": - writeHelp() - quit() - of "version", "v": - writeVersion() - quit() - # of "compress", "c": compress= true - of "fast", "f": fast = true - of "dir", "d": dirs.add(val) - of "output", "o": output = val - else: - discard - else: - discard - for d in dirs: - if not dirExists(d): - echo fmt"[-] Directory doesnt exist {d}" + of "help", "h": + writeHelp() + quit() + of "version", "v": + writeVersion() + quit() + # of "compress", "c": compress= true + of "fast", "f": fast = true + of "dir", "d": dirs.add(val) + of "output", "o": output = val + else: + discard + else: + discard + + for directory in dirs: + if not dirExists(directory): + echo &"[-] Directory doesnt exist: '{directory}'" quit 2 # 2 means dir doesn't exist. # echo fmt"compress: {compress} fast: {fast} dirs:{dirs} output:{output}" createAssetsFile(dirs, output, fast, compress) when isMainModule: - cli() \ No newline at end of file + cli() diff --git a/tests/nim.cfg b/tests/nim.cfg new file mode 100644 index 0000000..ac5825b --- /dev/null +++ b/tests/nim.cfg @@ -0,0 +1 @@ +--path:"../src/" \ No newline at end of file diff --git a/tests/test.nim b/tests/test.nim new file mode 100644 index 0000000..7142799 --- /dev/null +++ b/tests/test.nim @@ -0,0 +1,7 @@ +import + unittest, + assetfile # will be generated by the 'nimble test' task + +suite "Nimassets Tests": + test "Can Obtain Asset": + check getAsset("tests/testassets/asset1.txt") == readFile("tests/testassets/asset1.txt") diff --git a/tests/testassets/asset1.txt b/tests/testassets/asset1.txt new file mode 100644 index 0000000..b45ef6f --- /dev/null +++ b/tests/testassets/asset1.txt @@ -0,0 +1 @@ +Hello, World! \ No newline at end of file