This repository has been archived by the owner on Mar 14, 2022. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
GPM (Draft)
Thibault Hottou edited this page Dec 19, 2020
·
9 revisions
NOTHING HERE IS FINAL
In this document you will find more information on what GPM or Games Package Manager is, what is its purpose and how could you use it effectively.
- [1] First comes the section about the unique keywords use to describe GPM and its environment.
- [2] Then is explained what is GPM and what is its purpose
- [3] And finally what GPM offers through its set of commands
* means the definition is either incomplete or needs verification and anyone with more knowledge is free to edit the definition.
-
Project
: a project is the foundation of GPM, it is a directory on the user's disk where dependencies can be added to form a modpack. The project can be composed only of dependencies, source code for a new mod or both. -
Package
: a package is what a project becomes once it is stored in the store. A package is an archive with its own folder architecture and metadata files -
Dependency
: a dependency is essentially apackage
that aproject
depends on. -
Remote
or aStore
: is a server on the internet storing thePackages
and exposes them to the users in an organised way. -
Local package cache
*:
Game Package Manager is a CLI tool that will enable:
- Download of mod packages from stores.
- Installation of mod packages from stores or locally to a game.
- Uninstall mod packages.
- Package mods.
- Upload package mods for stores.
- Required dependencies will be handled by GPM
Command | Usage | Description |
---|---|---|
add |
For downloading dependency from a repository or by providing a path locally. | |
remove |
Removes locally installed dependency. | |
list |
Lists available dependency. | |
init |
Initialises a project for creating dependency. | |
start |
Starts the currently active project's game with selected dependencies installed. | |
build |
Builds a project with metadata into a package. | |
publish |
Builds a project with metadata into a package then publishes to a store. | |
enable |
Enables a locally installed dependency. | |
disable |
Disables a currently enabled dependency locally. | |
remote list |
Lists stores that are already installed. | |
remote add |
Adds a store to remote list via specifying URL. |
|
remote remove |
Removes a previously installed store specified by URL. | |
search |
Queries packages from added remotes. | |
cache list |
Lists packages in the local package cache. | |
cache add |
Download and add a package to the local package cache. | |
cache remove |
Delete's a package from the local package cache. |
- TOML --> JSON.
- License will have a SPDX Expression
- Basic metadata should be made through CLI when triggered by
build
orpublish
. - Contains title and small description up to 250 Characters.
- Specified game listed in metadata?
- There will be a default source
- Adding insecure remote connections could prove a security concern.
- allowlists and denylists will be implemented.
- Mods will be encrypted.
- Identifiers or priority for stores to address duplicate mods across repositories.
- VFS 3 Categories.
Todo
Nothing confirmed