Skip to content

Manifests/Schemas used for applications, frameworks and stacks deployment within Infinite OS Marketplace.

License

Notifications You must be signed in to change notification settings

goinfinite/os-marketplace

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Infinite OS Marketplace

This repository stores the installation and uninstallation manifests for all marketplace catalog items supported by Infinite OS.

Cross-Version Support

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.

Manifest/Schema Properties

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

WordPress example.

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.

System Data Fields

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.

Avatars

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.

About

Manifests/Schemas used for applications, frameworks and stacks deployment within Infinite OS Marketplace.

Resources

License

Stars

Watchers

Forks

Contributors 4

  •  
  •  
  •  
  •  

Languages