Skip to content

Extension Distribution System

danwalmsley edited this page Sep 11, 2016 · 15 revisions

A lot of the following information also relates to distribution of AS itself.

Package Index Entry

The package indexes will provide the following information:

  • Package Name (Must be unique in entire ecosystem)
  • Package Description
  • Package Author
  • Package Category
  • Package git URL
  • Excluded Tags (this can be used to block specific tags, or exclude them by wildcard, and <*-v3 would exclude all tags less than v3.

Package reference will be: [Author].[Category].[Name] i.e. AvalonStudio.Toolchains.Clang

Format will be Json.

Package Repository Tags

Format will be like this... v[Version]-[Ring]-[Environment]

i.e. v1.0.0-Stable-Common v1.0.0-Stable-Windows v0.9.0-Stable-Common v0.9.0-Stable-Windows v0.9.0-Stable-Linux

v1.0.0-Stable-Common v0.9.0-Stable-Common

1.0.9-PreRelease-Osx

Latest version will be highest version in with Release ring.

This will allow the application to filter tags that relate to the platform its running on, and stable or pre-release, and then list the version.

Repository Layout

Cloning Packages

Packages should be cloned into /AppData/Packages/PackageReference/Tag/Platform-Branch

Package File System

Packages will be able to store data in /AppData/Packages/PackageReference/Data

and

/AppData/Packates/PackageReference/Tag/Platform-Branch/Data

Packages will be shallow cloned, so minimal code download is done.

Feeds

It is proposed there will be 3 feeds, although only 1 list in the UI.

  1. Official Packages - All VitalElement and AvalonStudio written packages.

  2. Approved Packages - Approved 3rd Party Packages

  3. Unofficial Packages - Packages made by 3rd parties, but not tested by us. Managed by via vitalelement website.

Each feed will be a package index with different levels of management. Official packages will display a Gold Star, Approved will display Star of another colour, and Unoffical packages no star.

AvalonStudio cannot be forked or distributed with any of the above 3 feeds removed. Although they will be allowed to disable unofficial packages.

Distributions and end users can add extra feeds from sources unknown to vital element or Avalon studio.

Installing a Package

  1. Get the tags from the remote repo git ls-remote --tags
  2. Filter all the tags by environment
  3. Filter all the tags that don't contain pre-release by default.
  4. Select a tag