Classes/project.class.psm1

class project {

    ####################
    ## ATTRIBUTES ##
    ####################

    # name of the project. It must be lowercase
    [ValidatePattern('^[a-z]+$',Options='None')]
    [string]$name

    # display name of the project. It can be eye-candy
    [string]$displayName

    # owner of the project. only one person, or company name.
    [string]$owner

    # authors of the project. An array of persons who work on the project
    [string[]]$authors

    # URL to (the sources of) the project
    [System.Uri]$projectUrl

    # URL to the license file
    [System.Uri]$licenseUrl

    # Path to the license file
    [String]$licenseFile

    # URL to the icon
    [System.Uri]$iconUrl

    # Path to the icon file
    [String]$iconFile

    # description of the project
    [string]$description

    # tags to help identify project
    [string[]]$tags

    # version of the project
    [system.version]$version

    # prerelease string if applicable
    [string]$preRelease

    # build number
    [uint]$build

    # release not of this version
    [string]$releaseNote

    # copyright of the project
    [string]$copyright

    # company hosting the project
    [string]$companyName

    # list of dependencies of the project
    [string[]]$depends

    ####################
    ## CONSTRUCTORS ##
    ####################

    constructor () {
        # edevel("Loading [" + $this.GetType() + "]")
    }

    osObject () {
        $this.constructor()
    }

    osObject ([string]$Root) {
        $this.constructor()
        $this.Root = $Root
    }

    #############
    ## METHODS ##
    #############

    ####################
    ## STATIC METHODS ##
    ####################

}