cool plaintext archiver
Project description
This module is an implementation of archiver for a7d8473 archive format. It can archive directories, files, soft links, has shell interface.
What is a7d8473?
A7d8473 or simply a7d is a simple archive format, that has some nice features:
- If source directory has only text files, then archive will also be text file.
- Changing one line in the source file results in changing only one line in the archive.
- If all source files have line lenght limit, then archive will also have line lenght limit.
- Archived files are stored in compressor-friendly way: all the contents of the source file are usually included in the final archive file unchanged.
- Metadata is saved in git-like manner. Thus only this metadata is saved:
- Executable flag.
- Link flag.
- There is a bijection between the set of archive files and the set of directory structures.
Hello world
This is "Hello, world!" file pushed into a7d8473 archive.
a7d8473
:hello.txt/
Hello, world!
~ ~ ~
Here is a little more complex archive:
a7d8473
/name_of_directory/
:name_of_file.txt/
-> here is the content of file <-
~ ~ ~
!name_of_another_file_that_is_executable.py/
print('Hi')
~ ~ ~
@name_of_soft_link/
target_of_this_soft_link
~ ~ ~
@link_to_Hi.py/
./name_of_another_file_that_is_executable.py
~ ~ ~
/empty_directory/
\
\
The first line of archive file is always "a7d8473".
Other lines describe archived files and directories.
:
before hello.txt
means, that file hello.txt
is neither executable nor soft link.
There are other prefixes of file names:
@
denotes soft links.!
denotes executable files./
denotes directories.:
denotes simple files, which are neither executable nor soft links.
/
is also used as the end of the name because it is not a valid character in file names.
\
means end of directory, while ~ ~ ~
denotes end of file content.
Only printable ASCII characters are used outside of file contents.
Thus, archive files are text files as long as source files are text files.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file a7d-0.0.5.tar.gz
.
File metadata
- Download URL: a7d-0.0.5.tar.gz
- Upload date:
- Size: 3.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.7.1 importlib_metadata/4.10.0 pkginfo/1.8.2 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.2
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5a7b6ca48dbc1d8f88c450e0caf67f655df106504d45edf03f481bdbee60ac00 |
|
MD5 | 254df4033ea9cbd550d6dbee00d2c021 |
|
BLAKE2b-256 | b2caf641e9feb02106f7df45a6502d7947c42573368f3ca4ba82e327e943d666 |
File details
Details for the file a7d-0.0.5-py3-none-any.whl
.
File metadata
- Download URL: a7d-0.0.5-py3-none-any.whl
- Upload date:
- Size: 3.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.7.1 importlib_metadata/4.10.0 pkginfo/1.8.2 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.2
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 46421ed28d419aa4bf102af1a6580fa400ead6f90c46fcfb97f650095c243335 |
|
MD5 | 4d01acf7b207a7038071b8fa20bdbcb0 |
|
BLAKE2b-256 | da7abb5672a2258d4383598f72d78c2b46b52da38a1f32e8655e1103c1e3f863 |