Summary: this page describes how to create a plugin.nuspec metadata description file for your custom extension.

Introduction

Each extension must contain a description file that contains the information required for each extension to function correctly. The requirements for this file are listed below:

Description file name

The description file must be named plugin.nuspec.

Description file location

Please place the plugin.nuspec file at the root of your extensions folder:

Description file content

The plugin.nuspec file should be encoded in utf-8 without BOM and must contain the following elements:

Please note:

ElementDescription
id

The id of the extension:

  • You must use the same name as you have designated for the extension's folder.
  • Maximum length is 99 characters
  • id must use all LOWERCASE characters - extensions will be rejected when the id contains at least one uppercase character.

For example:

  • for CAST extensions provided by the Product team, the recommended id uses the form: com.castsoftware.nameoftheextension
  • for CAST extensions provided by the CAST Labs, the recommended id uses the form com.castsoftware.labs.nameoftheextension
  • for CAST extensions provided by the User Community team, the recommended id uses the form com.castsoftware.uc.nameoftheextension
title

The extension's title. CAST recommends using a meaningful title. For example:

  • if your extension supports a new framework CAST recommends including the framework name in the title
  • if your extension supports a technology CAST recommends including the technology name in the title
  • in order to give more clarity CAST recommends including the name of the company that provides the product that is targeted by the extension in the title as well
  • if the extension involves an existing CAST component, include the name of the component explicitly in the name of the extension
  • it is not necessary to include "CAST" in the name of the extension
version

The extension version number. This must use the format defined by Semantic Versioning 2.0.0. For example: 1.0.0. Please follow the versioning policy defined within your own team.

Maximum length is 30.

The Stable versus Pre-Release versions is encoded inside the version itself, following the Semantic Versioning conventions also:

  • x.y.z are considered as stable
  • x.y.z-... are considered as pre-release

 For example:

  • Alpha versions
    • For alpha version: 1.1.0-alpha1 is considered as a pre-release alpha version
    • For alpha version: 1.1.0-alpha2 is considered as a pre-release alpha version

  • Beta versions
    • For beta version: 1.1.0-beta1 is considered as a pre-release beta version
    • For beta version: 1.1.0-beta2 is considered as a pre-release beta version

  •  Functional releases
    • For a functional release: 1.2.0-funcrel is considered as a functional release version
    • For a functional release: 1.3.0-funcrel is considered as a functional release version
  • Long Term Support
    • Version 1.0.1 : is considered as stable
    • Version 1.3.0 : is considered as stable 
For User Community extensions CAST recommends not using intermediate version numbering such as: alphas, betas and functional releases - a simple version number (such as 1.3.0) is sufficient (the versions provided by the User Community do not follow a standard product development process with the release of the alphas, betas etc versions therefore this numbering is not necessary).


authors

The author of the extension using an email address. Multiple email addresses should be separated by a comma. However in the case of CAST provided extensions the following values are recommended:

  • for CAST extensions provided by the Product team, the author is set to "CAST Product"
  • for CAST extensions provided by the Labs team, the author is set to "CAST Labs"
  • for CAST extensions provided by the User Community team, the author will be "User Community".
ownersThe owner of the extension. In the case of official CAST extensions the owner is always "CAST".
projectUrl

Each extension must include a link to the related extension documentation.

The documentation, stored in a separate page (which MUST BE FREELY AVAILABLE ON THE INTERNET) must include the following information:

  • a description of the extension, which scenarios the extension can be used in, what results should be expected and how the results generated by the extension impact the results of the entire analysis
  • a section must be dedicated to listing CAST AIP compliance
  • where specific technologies are supported by the extension, the versions of the technologies/frameworks supported should also be listed
  • types of projects supported by the extension
  • details of the types of projects, objects, links created by the extension
  • list of any new metrics provided by the extension
  • list of any new Quality Rules provided by the extension
  • a clear list of limitations if there are any

Publication:

iconUrlEach extension must include a link to an icon that will be displayed in CAST Console, CAST Extend etc. See Configuring an icon for your extension.
descriptionA quick description of the extension. This description is displayed in the CAST Extension Downloader, therefore cannot exceed 200 characters. The description must contain a few details about the extension, which scenarios the extension can be used in, what results should be expected and how the results generated by the extension impact the results of the entire analysis.
releaseNotesA link to a a description of the changes made in each release of the package. This field only shows up when the _Updates_ tab is selected and the package is an update to a previously installed package. It is displayed where the Description would normally be displayed.
dependencies

This element configured the dependencies required by the extension - i.e. which other extensions must be installed and which release of CAST AIP is required (this is mandatory). For example if an extension is compliant with CAST AIP 7.3.6 and/or 8.0.0 then this should be added here.

This element also provides the possibility to declare dependencies between extensions.

licenseUrlThis concerns the type of license. In the case of CAST extensions provided by the Product team the license is a CAST standard license. In all the other cases, the author must add a link to a chosen license.
tags

A space-delimited list of tags and keywords that describe the package. This information is used to help make sure users can find the package using searches.

You are free to add any tag you wish to help describe your extension, however, CAST requires that you use at least one tag from a set of mandatory categories described in Extension tags.

Example templates

CAST Product extensions

Please find below an example plugin.nuspec file that is used with "official" CAST AIP extensions created by CAST R&D:

<?xml version="1.0" encoding="utf-8"?>
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
    <metadata>
        <id>com.castsoftware.nameoftheextension</id>
        <version>x.x.x</version>
        <title>MyExtension</title>
        <authors>CAST Product</authors>
        <owners>CAST</owners>
        <licenseUrl>https://extend.castsoftware.com/V2/Licenses/Cast-Licence-Product-1.0.html</licenseUrl>
        <projectUrl>https://doc.castsoftware.com/display/TECHNOS</projectUrl>
		<iconUrl>https://raw.githubusercontent.com/CAST-Extend/com.castsoftware.nameoftheextension/master/example.png</iconUrl>
        <requireLicenseAcceptance>false</requireLicenseAcceptance>
        <description>This is a great extension that creates great objects and even greater links</description>
		<releaseNotes>https://doc.castsoftware.com/display/TECHNOS/PHP/What's+new</releaseNotes>
        <tags>CASTProduct LongTerm CAIP8.0 CAIP7.3</tags>
        <dependencies>
            <dependency id="CAIP" version="8.0.0" />
        </dependencies>
    </metadata>
</package>

CAST Labs extensions

Please find below an example plugin.nuspec file that should be used with custom CAST AIP extensions created by CAST Labs:

<?xml version="1.0" encoding="utf-8"?>
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
    <metadata>
        <id>com.castsoftware.labs.nameoftheextension</id>
        <version>x.x.x</version>
        <title>MyExtension</title>
        <authors>CAST Labs</authors>
        <owners>CAST</owners>
        <licenseUrl>http://www.castsoftware.com/ps/doc/extension/license</licenseUrl>
        <projectUrl>https://github.com/CAST-Extend/com.castsoftware.labs.nameoftheextension</projectUrl>
		<iconUrl>https://raw.githubusercontent.com/CAST-Extend/com.castsoftware.labs.nameoftheextension/master/example.png</iconUrl>
        <requireLicenseAcceptance>false</requireLicenseAcceptance>
        <description>This is a great extension that creates great objects and even greater links</description>
		<releaseNotes>https://github.com/CAST-Extend/com.castsoftware.labs.nameoftheextension/wiki#a-specific-release-note-subsection</releaseNotes>
        <tags>Language FP CSS CAIP8.0.x</tags>
        <dependencies>
            <dependency id="CAIP" version="8.0.0" />
        </dependencies>
    </metadata>
</package>

User Community extensions

Please find below an example plugin.nuspec file that should be used with custom CAST AIP extensions created by the User Community:

<?xml version="1.0" encoding="utf-8"?>
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
    <metadata>
        <id>com.castsoftware.uc.nameoftheextension</id>
        <version>x.x.x</version>
        <title>MyExtension</title>
        <authors>User Community</authors>
        <owners>CAST</owners>
        <licenseUrl>http://www.castsoftware.com/ps/doc/extension/license</licenseUrl>
        <projectUrl>https://github.com/CAST-Extend/com.castsoftware.uc.nameoftheextension</projectUrl>
		<iconUrl>https://raw.githubusercontent.com/CAST-Extend/com.castsoftware.uc.nameoftheextension/master/example.png</iconUrl>
        <requireLicenseAcceptance>false</requireLicenseAcceptance>
        <description>This is a great extension that creates great objects and even greater links</description>
		<releaseNotes>https://github.com/CAST-Extend/com.castsoftware.uc.nameoftheextension/wiki#a-specific-release-note-subsection</releaseNotes>
        <tags>Language FP CSS CAIP8.0.x</tags>
        <dependencies>
            <dependency id="CAIP" version="8.0.0" />
        </dependencies>
    </metadata>
</package>