This repository stores the installation and uninstallation manifests for all marketplace catalog items supported by Infinite OS.
This repository is versioned to ensure compatibility with both specific versions of Infinite OS and the manifestVersion
property found in each manifest. The manifestVersion
reflects the version of the individual manifest file.
Versioning for this repository is managed through branches, which act as releases. This allows users to clone only the desired branch corresponding to the required version, without the need for actual release tags:
git clone --single-branch --branch v2 https://github.com/goinfinite/os-marketplace
Important
The versioning of this repository works differently from the Infinite OS versioning. It is important to understand that the versioning here is done through branches and not releases, and its structure also differs from the Infinite OS. The Infinite OS uses major, minor, and patch versions, whereas this repository uses only a single version level, as all changes have significant impacts on the entire marketplace catalog management.
Below is a mapping of repository versions and the respective Infinite OS versions and manifestVersion
they support:
Infinite OS version | Repository branch (version) | manifestVersion |
---|---|---|
v0.0.1 v0.0.2 v0.0.4 v0.0.6 v0.0.7 v0.0.9 v0.1.0 v0.1.2 v0.1.5 |
v0 |
v1 |
v0.1.7 v0.1.8 v0.1.9 v0.2.0 v0.2.1 v0.2.2 v0.2.3 v0.2.4 v0.2.5 |
v1 |
v1 |
v0.2.6 |
v2 |
v1 |
Note
Branch versioning simplifies the control of manifests and ensures direct compatibility with Infinite OS. Branches allow accessing specific versions without additional steps, such as downloads and manual replacements, as the system uses Git for efficient operations like git fetch
. See how it's done.
These manifests have their own property structure, which is read by Infinite OS during the management of these catalog items. The supported formats are JSON (.json
) and YAML (.yml
, .yaml
).
Property | Type | Is required? | Description |
---|---|---|---|
manifestVersion |
string | no | The version of the manifest. This version changes whenever the manifest is updated, indicating the presence of new placeholders or new commands. |
name |
string | yes | The name of the catalog item that the manifest represents. |
slugs |
[]string | no | Reference names for the catalog item, which can include full names, acronyms, or any identifier related to the catalog item. |
type |
string | yes | The type of the catalog item, which indicates its purpose.app : application with their own functionality, such as WordPress.framework : structured software abstraction providing tools and guidelines for development, such as Laravel.stack : sets of solutions for building a specialized development and production environment, such as LAMP. |
description |
string | yes | A description of the catalog item that explains what it is, what it does, and its purpose. |
services |
[]string | no | List of service names that are dependencies for this catalog item, and therefore must be installed. The version can also be provided to ensure the specific version of the dependency to be installed, such as php:8.2 . |
mappings |
[]object | no | List of objects that will contain the mapping configurations for this item, allowing them to be created after installation, ensuring the item's access and usage environment is already configured post-installation.path : route that will be used by the mapping.matchPattern : comparison pattern that allows webserver to interpret the URL in different ways and ensure the route is properly served.targetType : what type of mapping it will be, defining what it should do when consumed. Must be url , service , response-code , inline-html or static-files .targetValue : value that will be consumed when accessing the mapping. It varies according to the type of mapping.targetHttpResponseCode : HTTP status code that will be used by the mapping when accessed.Only path , matchPattern and targetType are required, while the value and HTTP status code are optional depending on the type. You can create a mapping that redirects to a website with status 200, thus using both the value and HTTP status code at the same time. However, generally, only one of the two is used in most cases. |
dataFields |
[]object | no | List of objects that specify which extra required and/or optional data the user must provide for the installation of the catalog item.name : Data field's name.label : Data field's name that will be shown on the frontend interface.type : Input HTML type, check here.specificType : Subtype used to provide context to the type property. It is only used to generate random values based on the selected subtype. Must be password , username or email .defaultValue : Default value that will be used if no value is provided by the user during installation. If the specificType has been filled and this value does not exist, a new random value will be generated based on the specificType .options : If the type is select , this property should be filled with all possible selectable values as a list of strings.isRequired : Determines whether this data field should receive a value or not.Only name , label and type and isRequired are required. |
installCmdSteps |
[]string | no | Commands to install the catalog item. This is one of the main parts of the manifest, as it contains all the steps required to install dependencies, the catalog item itself, and configure it. This can include editing necessary files, changing file permissions, or using Infinite OS CLI commands when needed. |
uninstallCmdSteps |
[]string | no | Commands to uninstall the already installed catalog item. These steps typically reverse the installation commands, focusing on removing files and extra configurations that will no longer function without the installed catalog item. |
uninstallFileNames |
[]string | no | File names that will be deleted during the uninstallation of the catalog item, which remain in the installation directory, as they are no longer needed. |
estimatedSizeBytes |
string | no | The estimated size of the catalog item in bytes, providing clarity about the storage impact. |
avatarUrl |
string | yes | The URL for the catalog item's image, used for illustration purposes. |
screenshotUrls |
[]string | no | List of URL for the catalog item's screenshots, used for static demonstration purposes. |
Important
The services
property will be called before the installCmdSteps
.
If you need to install a service after some step of the installCmdSteps
, it's better to use the os create-installable
command to create the service instead of using the services
property.
Take node
service as an example. When you install the node
service, you have to inform the startupFile
property. You'll not have this information before the installCmdSteps
begins. The startup file will be created during the installation of the marketplace item. Therefore, you can use the os create-installable
command during the installCmdSteps
.
You can see an example of this approach in the n8n manifest file
file.
The system's data fields are predefined values used by Infinite OS to replace placeholders in installation commands. They are similar to the data fields in the manifests themselves, but these are provided by Infinite OS. These placeholders are denoted by %
at the beginning and end, such as %adminName%
.
The repository will automatically substitute these placeholders with the appropriate values during the installation process. For example:
wp core download --path=%installDirectory% --locale=%locale% --allow-root
In this example, %installDirectory%
will be replaced by the installation directory that Infinite OS will define according to the user installing the catalog item.
Below is a table of all available system data fields for creating manifests:
Name | Type | Description |
---|---|---|
installDirectory |
string | Path to the directory where all files created by the catalog item installation will be located. |
installUrlPath |
string | Route that will be exposed to access the installed catalog item. |
installHostname |
string | tHostname responsible for the installation of the catalog item. |
installUuid |
string | Unique identifier of the installation. Ideal for file and directory suffixes that will be used only by that installed item. |
installTempDir |
string | Temporary directory, usually used to store files and directories that will be temporarily used during the installation and discarded once the process is complete. |
installRandomPassword |
string | Automatically generated password by the system, eliminating the need for manual input. |
marketplaceCatalogItemAssetsDirPath |
string | Assets directory for the catalog item to be installed. Useful for pre-prepared configuration files ready to be used directly during installation. |
This substitution also occurs with the data fields added directly in the manifest. The name
of the data field, when added to a command between %
as a placeholder, will be replaced by the value of that data field during installation.
Important
System data field auto-generated values must be escaped within the manifest itself. Infinite OS won't append any character to the auto-generated values.
The avatars are images that represent the catalog item in the Infinite OS marketplace. They are used for illustration purposes and are displayed in the marketplace interface.
We recommend using Pixlr Express to create or edit images for the marketplace. The file should be named avatar.jpg
and have a resolution of 720x720 pixels.