From bac6f80ff7b1e3d41c2c09da71420f626efd8710 Mon Sep 17 00:00:00 2001 From: Raine Date: Sat, 14 Oct 2023 22:39:47 +0200 Subject: [PATCH] docs: spec changes --- docs/manifest.md | 5 +++++ docs/pkgfile.md | 24 ------------------------ docs/pkgfiles/current.md | 25 +++++++++++++++++++++++++ docs/pkgfiles/planned.md | 22 ++++++++++++++++++++++ 4 files changed, 52 insertions(+), 24 deletions(-) create mode 100644 docs/manifest.md delete mode 100644 docs/pkgfile.md create mode 100644 docs/pkgfiles/current.md create mode 100644 docs/pkgfiles/planned.md diff --git a/docs/manifest.md b/docs/manifest.md new file mode 100644 index 0000000..ef6febe --- /dev/null +++ b/docs/manifest.md @@ -0,0 +1,5 @@ +# Manifest + +--- + +The manifest spec is located in `/package.toml` as an example. \ No newline at end of file diff --git a/docs/pkgfile.md b/docs/pkgfile.md deleted file mode 100644 index 4b2b81a..0000000 --- a/docs/pkgfile.md +++ /dev/null @@ -1,24 +0,0 @@ -# PKGFILE -This file is essentially a tar with the manifest in the header. - -## Format -The format is as follows: -``` -[PKGFILE version (1 byte)][manifest length x 256 (1 byte)][manifest length (1 byte)] -[manifest (manifest length bytes)] -[archive] -``` - -The file is Big Endian. - -## Unpacking -To unpack a PKGFILE, you can use the following command: -```bash -pkgr unpack -``` - -## Packing -You can write your own packer, or use the following command: -```bash -pkgr pack -``` diff --git a/docs/pkgfiles/current.md b/docs/pkgfiles/current.md new file mode 100644 index 0000000..bd0eb22 --- /dev/null +++ b/docs/pkgfiles/current.md @@ -0,0 +1,25 @@ +# PKGFILE + +version 1 + +--- +PKGFiles are an all-in-one solution to install a package. + +## Overhead + +Because pkgfiles include everything, many times you can download more than what is needed. +This may seem stupid but pkgfiles are *not* meant to stay on your system. + +## Format + +The format is as follows: + +``` +[PKGFILE version (1 byte)][manifest length x 256 (1 byte)][manifest length (1 byte)] +[manifest (manifest length bytes)] +[archive] +``` + +### Endianness + +The file is Big Endian. diff --git a/docs/pkgfiles/planned.md b/docs/pkgfiles/planned.md new file mode 100644 index 0000000..398f8da --- /dev/null +++ b/docs/pkgfiles/planned.md @@ -0,0 +1,22 @@ +# Planned PKGFILE features. + +--- + +### Compression + +> Planned for next PKGFILE version. + +Currently, compression is not supported, since PKGFILE is an all-in-one solution this is very unpleasant. +When compression will be implemented, there is a big possibility that the manifest won't be compressed. +This is done to allow servers to easily parse and inspect manifests. +The compression will likely be versatile in the way that the format will be stated in the header and the pkgr +implementation can work it out by itself. +There will be a default compression format, likely gzip. + +### Compact Manifest + +> Not planned yet. + +Right now, the manifest is an utf-8 blob sandwiched between the header and the archive. +This also requires a fixed max size for the manifest which is unfavourable. +In the future, the manifest may turn into a versatile binary blob with no size limitations. \ No newline at end of file