[WIP] specification

pull/1/head
Polarian 2022-09-13 20:22:14 +01:00
parent b214dc01c4
commit 5d41fb6253
Signed by: Polarian
GPG Key ID: 0770E5312238C760
2 changed files with 70 additions and 1 deletions

View File

@ -1,3 +1,7 @@
# lbpkg
lbpkg is a command line interface to create lb packages from a `LBPKG`
file.
Command line interface to create lb packages
## Project structure
`spec` contains the specification for lb packages
`src` contains the source code for lbpkg command line tool

65
spec/spec.md Normal file
View File

@ -0,0 +1,65 @@
# Speciifcation for lbpkg's
This file contains the full specification for lbpkgs
## File extension
lbpkgs use the file extension `.tar.xz.lbpkg`, all files in the package
are contained within a`tar`, compressed using `xz`.
## Package layout
Unlike other package formats, lbpkg's do not use directories to define
the path to install packages to, instead there is a `LBMANIFEST` in
the root of the package, which contains the filename and then the path
for the file to be installed to.
There should also be a `PKGINFO` file within the package, which outlines
the info about the package, such as the name of the license, and what it
is licensed as.
All other files within the package should be installed to a path
declared by the `LBMANFEST` file.
## Package files
This section defines the required package files in order for the package
to be valid
### Manifest
The manifest file should be named `LBMANIFEST` (case specific), each
line of the file declares the name the file or directory to install, the
name and install path should be separated with space (`U+0020`), see
example below:
`bash /bin/bash`
This follows the format:
`<file/directory name> <full install path>`
#### Setting file permissions
You can set the file permissions of a file within the manifest file by
appending the permission after the install path, example below:
`bash /bin/bash 775`
This follows the format:
`<file/directory name> <full install path> <permission>`
If a permission is not defined, the permission of the file within the
package is used.
#### Setting ownership
You can set the ownership of a file or directory within the manifest
file by appending the ownership string (`<user>:<group>`) after the
permission, example below:
`bash /bin/bash 775 root:root`
This follows the format:
`<file/directory name> <full install path> <permission> <ownership
string>`
If the ownership is not defined, the ownership of the file within the
package is used.
### Info