OK, I’m putting this out there to see if I’ve missed anything that would be useful. This is the list of metadata that we’ll be storing about Modules in the PoshCode repository. It duplicates most of the information in the PowerShell Manifests, but it adds more of information that we feel is important for searching, sorting and organizing … and in the PoshCode Module manifests, wildcards are not allowed for any of the “export” values. The export information in the module is intended to represent the initial state of the module after import: listing all the cmdlets, functions, variables and aliases …
PoshCode Module Manifest Format:
GUID
The globally unique identifier for this module. Helps us tell modules apart
Name
The name of this module. Helps us find modules, and helps you guess what they’re for.
ModuleVersion
The version of this module. Together with the GUID, this is the unique key for the module. It should be incremented whenever you release it.
Description
A short description of the module. What it is, what it does, what it’s for.
ModuleType
Tells whether the module is a Script module or a Binary module (if they are both, then they are Binary).
Author
The person(s) who created this module. No organizations here, just people.
Company
A company (if there is one) that created this module or provides support for it.
Copyright
The copyright statement. You should always fill this out and assign copyright to the correct author, group or corporation.
License
The software license(s) that this module can be licensed under. It’s enough to use an acronym like “GPL v2” or “MIT” or “Ms-PL” ... but if you have a custom license you can specify a description of it or the full text of it. Multiple entries are allowed.
LicenseUri
The url(s) for a full copy of the license. If you’re using an open source license you can link to it’s page on opensource.org
Category
We’ll publish our official category list later, but the category is intended to be an assignment to a single category in a hierarchical tree.
Tags
A collection of user-assigned free-text keywords that help to categorize the module and serve as additional search terms.
Homepage
If the module has a home page on the internet, this is the URL. You can use the link to the PoshCode Docs page (which our cmdlets will generate for you) if you don’t have your own page.
Download
This is the link to download the module. If you’re hosting it on PoshCode, we will fill this in. If you’re hosting it elsewhere, this must be a download link. If it’s a commercial module that requires payment, you should leave this link empty unless you have a free trial download. Note: I’m still working on the commercial angle. Would it be helpful to include the price here? If we offered a way to sell your modules through PoshCode, would you use it?
RequiredAssemblies
Assembly names (or relative paths, if the assemblies are included in the module folder) for assemblies that must be loaded before the module will work. These should be the Assembly FullName, not a partial name.
RequiredModules
The names and versions (and GUIDs) of any modules that this module depends on.
PowerShellVersion
The version of Powershell required (2.0, for now).
FrameworkVersion
The version of the .Net Framework required. The framework version implies the CLR version, so we’ll just stick to this. I’m still toying with the idea of saying the list is 2.0, 3.0, 3.5, 3.5.1, and 4.0 … rather than allowing the normal version with the full four digits.
VersionChanges
This is either the list of changes in this version, or a complete list of the changes in previous versions.
Exported Cmdlets
The list of (binary) cmdlets exported by this module.
Exported Functions
The list of script functions exported by this module.
Exported Aliases
The list of aliases exported by this module.
Exported Variables
The list of variables exported by this module.
Deprecated things …
I’m leaning against having these items in the PoshCode manifest — they don’t seem to be helpful for finding or sorting or understanding a module.
- ModuleFile
- ModuleToProcess
- FormatsToProcess
- TypesToProcess
Comments Requested
I’m hoping for feedback about this list, what I might be missing, or if there’s anything in here I should leave out … let me hear it!
I’ve made some tweaks to this already, and I decided to go ahead and post it on the wiki