aboutsummaryrefslogtreecommitdiff
path: root/snag/readme.txt
blob: ffc6041ed727132377231290b123eff6f38a58d1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# SNAGGLE Package Manager (snag)

## Useful Subcommands
install/inst - install the specified package(s) (default)
remove       - uninstall the specified package(s)
upgrade/up   - upgrade the package database
find/search  - list packages whose metadata matches specified search string (flag to limit to installed)
info/desc    - describe the metadata (and install data) of the specified package(s)
log          - open your pager to the build log of the specified package

files        - list the installed files of the specified package(s)
why          - list why this package is installed (manually installed, as a dependency, from a group)

## Important Directories
Package Database        - /var/snag/pkgs/
Install Database        - /var/snag/install/
Logs/In Progress Builds - /var/snag/logs/
SNAG Configuration      - /etc/snag/

## Terminology
Package Database      - the directory containing package descriptions
Package Description   - the directory and script containing build instructions for a package
Package Info/Metadata - the metadata encoded in the package description
Package Attribute     - a single key value property of the package info
Install Database      - the directory containing information on installed package
Install Description   - the data stored about a package in the install database

## Package Description Format
Each package has a directory in the package database, named by its `id`.
Inside each package directory is the description script named `{id}.sh`
The description script should have functions for `configure`, `build`, and `install`
The description script should define variables for attributes with the name `pkg_{attr}`

## Install Description Format
TBD. Will contain at least:
- date installed
- flists
- install reason


## Interesting Features
- switch between cli and tui mode mid run
- build packages that aren't in the database

Packages have the following attributes:
`id`   - the identifier name of the package. everything uses this
`name` - the display name of package
`desc` - the short description of the package

## Developer Subcommands
`validate` - check a package description and check for format errors or warnings