Skip to content
This repository has been archived by the owner on Mar 14, 2022. It is now read-only.

GPM (Draft)

Thibault Hottou edited this page Dec 19, 2020 · 9 revisions

GPM

NOTHING HERE IS FINAL

What is in this document

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

Keywords used in this document

* 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 a package that a project depends on.
  • Remote or a Store: is a server on the internet storing the Packages and exposes them to the users in an organised way.
  • Local package cache*:

What is Game Package Manager

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

CLI

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.

Metadata

  • TOML --> JSON.
  • License will have a SPDX Expression
  • Basic metadata should be made through CLI when triggered by build or publish.
  • Contains title and small description up to 250 Characters.
  • Specified game listed in metadata?

Remotes

  • 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.

Installation Strategies

  • VFS 3 Categories.

Nightly Releases

Todo

GUI

Nothing confirmed