- Nim 51.2%
- Python 46.2%
- Makefile 2.1%
- Shell 0.5%
| assets | ||
| atule | ||
| doc | ||
| transpkg | Require newer version of anomlib | |
| .gitignore | ||
| AdiffFormat.org | ||
| atule.nimble | ||
| config.nims | ||
| LICENSE | ||
| Makefile | ||
| package | Add some convenient symlinks | |
| Plugins.org | ||
| project.geany | ||
| README.org | ||
| requirements.txt | ||
Tiny Transitional Package Management
https://img.shields.io/badge/justforfunnoreally-dev-9ff.svg https://img.shields.io/badge/License-GPL_v3_or_later-blue.svg
GPL version 3 plushttps://raw.githubusercontent.com/vshymanskyy/StandWithUkraine/main/badges/StandWithUkraine.svg https://codeberg.org/ashleyirispuppy/pages/raw/branch/main/images/pr.svg?v=5
https://codeberg.org/ashleyirispuppy/pages/raw/branch/main/images/trans-badge.svg https://codeberg.org/ashleyirispuppy/pages/raw/branch/main/images/free-Palestine.svg
👷 The library is not ready for general use at the moment. 🏗️
Transpkg will look for all diferences btw packages to creates an intermidiate package. This "transitional package" can be used for restoring new version from the old package and vise versa. Instead of downloading "updates" we can download "differential updates" instead to make things faster.
Transpkg's 3 stages are already planned and i'm excited to see when will come up the first.
Transpkg will be available as library and simple enough to use it inside another python project or write plugins for it.
Transpkg supposed to be upen's sub-project, for managing differential updates. Unfortunally upen requires morph or i hope will use my nvfs (which is my new experimental project) to work, for complex flexibale API support. Transpkg is much simpler and will work on its own just with common utils like tar and diff.
How Transpkg will work?
- Transpkg will unpack old and new packages
- Hash each file to know if there are files that can be reused later
- Get metadata: e.i. privs, ownership, time and date, etc.
- Get order in which files were added in tars. It may help us restoring tars with the original hash
- If your restore metadata and file order, original hash should remain untouched (in theory), however it may be complicated
- At the end transpkg creates transitional package (AKA Differential Update) which can be 10x smaller.
- Created mid package can be shared on the internet as update (a patch package)
- On the other side downloaded transpkg can be applied to construct new package from the old one and vise versa.
- Having old or new package together with mid package is as good as having both old and new packages (but saved a lot of space)
What features are planned
Reusing old packages
- To use differential updates you have to tell your Current Version to the Updates' Provider. When usually we re telling only which Version you wanna download and update to.
- The reciever may declare what old versions they have locally
- This will help speeding up the downloading process
Restoring Missing Package's known files
- Each package that goes thru transpkg will be unpacked.
- Also, each upacked package and its files will be hashed and reused later.
- If reused package is missing, its content's hashes are known.
- This feature will let us continue the work (even if pkg is missing) as long as pkg's required files are available in cache
Why Atule?
- Atool is amazing, but is 12 years outdated...
- Note: It's not planned to be an alternative for the Atool!
- But Upen gonna need this Tiny Archive Management
- For Differential Updates Upen did required
atool --diffcommand - But Atool is outdated. It does not support Zstd yet, when tar does
- Well, The Atool2 (which is Atool's fork) actually supports Zstd
- Also the output with 'Unpack-9999/' is terrible .__.
- We had to unpack tar archive one more time just to fix Atool's output!!!
- Atool is written in Perl, so We can't just import that as a library. :C😒😢🫠
- Fixing Atool's output is not Sustainable
TODO Support
Atule should support
- First well supported package format shall be .tar.gz as the most popular one
- Auto-detect package's format.
- Convert archive with any format into any another format
- unpack two packages, check the differences and report all details.
- make a Differential Package (that's btw two pkgs) with the same format (that first package has).
- also Atule is a library, so you can manipulate with all functions to make more tools
Also thoughts about what Atule should support
- Support `.iso` images, if we can.
- diff updates should also support work with files and directories
- since Unpacks are Dirs, we could check diffs btw two dirs!
- check the DiffPDF out, is it possible to make a PatchPDF for it?