If invoked with no arguments, it will read white-space seperated packages from `/etc/pkg/pkg_list.txt`, resolves their dependencies and installs/upgrades them in the correct order if they are not already installed or are older than the version in the repository.
The user will be prompted to optionally exclude packages from the list if `-y` is not given.
If the package name is in `/etc/pkg/pkg_list.txt` is followed by `key=value` pairs, these will be passed to the Slackbuild as environment variables. For example, `mypackage FOO=bar` will set the environment variable `FOO` to `bar` when building `mypackage`.
Additionally, if the file `/etc/pkg/mypackage.prebuild` exists and is executable, it will be run before building (and after downloading the sources of) `mypackage`.
The first argument passed to the prebuild script is the path to the directory containing the sources/slackbuild of the package.

An initial `pkg_list.txt` can be generated by running `pkg -l` (list installed SBo packages) and then removing packages which you do not use directly but are, i.e., dependencies of other packages.

Running `pkg -c` maintains a generated slackpkg blacklist at `/var/lib/pkg/slackpkg/blacklist` so that orphaned packages can be automatically removed while packages in `/etc/pkg/pkg_list.txt` and their dependencies are not removed.
To achieve this it copies the official `/etc/slackpkg/blacklist` to `/var/lib/pkg/slackpkg/blacklist` and then appends the packages in `/etc/pkg/pkg_list.txt` and their dependencies to the generated blacklist. The generated slackpkg configuration directory also links to the official `/etc/slackpkg/mirrors` and `/etc/slackpkg/slackpkg.conf`, so the official configuration remains the source of truth.

Packages can also be greylisted in `/etc/pkg/greylist` so that they are not installed by `pkg` but are not removed by `slackpkg clean-system` either (since they are still added to `/var/lib/pkg/slackpkg/blacklist`).

The normal install/upgrade workflow does not update the generated blacklist. If positional arguments are given, they are treated as package names and installed/upgraded in the correct order, but they are not protected from a later `pkg -c`. Add `mypackage` to `/etc/pkg/pkg_list.txt` to prevent this.

Running `pkg -c` builds the generated blacklist and runs `slackpkg clean-system` with slackpkg pointed at `/var/lib/pkg/slackpkg`. This cleans third-party packages that are not tracked by `pkg` while keeping the official `/etc/slackpkg/blacklist` untouched.

`pkg` can also be used to view the README of a packages or list their dependencies/dependents.

By default, it clones the SBo repo to `/var/lib/pkg/sbo` syncs the repository before if the `-u` flag is given.

Any invalid flag like `-h` will print the usage and exit.

## Options
