Skip to content

V1210N/directus-extensions-installer

Repository files navigation

Introduction

This package is a utility for use with Directus. It retrieves and extracts extensions from Github repositories into your Directus installation.

Its creation was due to the need for a way to install Directus extensions when deploying on Kubernetes. You can run this tool before npx directus bootstrap to install extensions on your Directus pods by overriding the command argument. Example override:

container:
    command:
        - sh
        - -c
    args:
        - npx directus-extensions-installer install;
          npx directus bootstrap && npx directus start;

Configuration for this tool is given in the form of environment variables for indicating directories as well as a .yaml file for the extensions themselves. This way you can mount a ConfigMap as a YAML file inside the image, and then just point the tool to it.

Usage

npx directus-extensions-installer

You may also specify options in the command line if you wish to override the defaults without setting environment variables.

OPTION DESCRIPTION DEFAULT
--directus-dir Indicates the Directus installation directory. This variable is used to find out where to extract downloads to. /directus
--download-dir Directory to download the extensions to. If it doesn't exist, it'll be created. This is deleted after use. ./downloads
--config Points to the .yaml file which includes the extensions' specifications. ./extensions.yaml
--keepConfig Determines whether the configuration file will be kept after the operations. This is because they may contain sensitive information, like tokens. false

 
If you wish to download a release from an extension repository located at https://github.com/foo/bar-extension, then you'd use an extensions.yaml that would look like so:

- name: extension-name
  owner: foo
  repo: bar-extension
  type: module

You can specifiy multiple extensions.

YAML config file model:

PROPERTY TYPE DESCRIPTION
name required string The extension's name.
owner required string Name of the repository's owner in the Github link. Example: github.com/foo/bar has 'foo' as the owner.
repo required string Repository's name.
type required string Type of extension. Valid values include only one of the Directus extension types: "module", "interface", "display" or "layout".
token optional string Github personal token. Only necessary if the specified repository is private. The token should have the appropriate permissions to read the repository. If invalid, you'll receive an error stating that the asset was not found.
tag optional string Specify a tag to use for downloading the extension. Defaults to latest.

Current limitations

  • Currently only supports extensions available for download as .zip.
  • If run more than once it will install duplicates.
  • Does not check for duplicates in extensions.yaml.

Observations

  • If your Github permission tokens are invalid, it'll throw an error stating that the asset was not found (instead of saying that you are unauthorized), so make sure your token is valid.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

No packages published