PlasterTemplate/plasterManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<plasterManifest
  schemaVersion="1.0" xmlns="http://www.microsoft.com/schemas/PowerShell/Plaster/v1">
  <metadata>
    <name>Sampler</name>
    <id>01ff2349-1b77-46dd-a247-ce056aae043c</id>
    <version>0.0.1</version>
    <title>Sampler Module Template</title>
    <description>Sampler Module Template with bootstrap</description>
    <author>Gael Colas</author>
    <tags>Template, Build, Module</tags>
  </metadata>
  <parameters>
    <parameter name="ModuleType" type="choice" default='1' prompt="Select the type of Module you would like to create:">
      <choice label='Simple &amp;Module Without Build'
            help="Creates a simple module without the build automation."
            value="SimpleModule_NoBuild"/>
 
      <choice label='&amp;Simple Module with build automation'
            help="Creates a simple module with minimal structure and build scripts."
            value="SimpleModule"/>
 
      <choice label='Select &amp;features...'
            help="Will prompt you for more details as to what you'd like to scaffold."
            value="CustomModule"/>
 
      <choice label='&amp;Complete Module Sample'
            help="Creates a module with complete structure and example file."
            value="CompleteModule"/>
 
      <choice label='Complete &amp;Without Build'
            help="Creates a module with complete structure and example file, but without Build automation."
            value="CompleteModule_NoBuild"/>
 
    </parameter>
    <parameter store="text" name="ModuleAuthor" type="text" prompt="Author's name" default="$Env:Username" />
    <parameter store="text" name="ModuleName" type="text" prompt="Name of your module" />
    <parameter store="text" name="ModuleDescription" type="text" prompt="Description of this module" />
    <parameter name="ModuleVersion" type="text" prompt="Module version" default="0.0.1" />
 
    <parameter store="text" name="License" type="choice" prompt="Do you want to include a License to your project?" default="1" condition='$PLASTER_PARAM_ModuleType -eq "CustomModule"' >
      <choice label='&amp;Yes' value='true' />
      <choice label='&amp;No' value='false' />
    </parameter>
 
    <parameter store="text" name="LicenseType" type="choice" prompt="What license do you want?" default="2" condition='$PLASTER_PARAM_License -eq "true" -and $PLASTER_PARAM_ModuleType -eq "CustomModule"' >
      <choice label='&amp;Apache'
              help="Adds an Apache license file."
              value="Apache" />
 
      <choice label='&amp;MIT'
              help="Adds an MIT license file."
              value="MIT" />
 
      <choice label='&amp;None'
              help="No license specified."
              value="None" />
    </parameter>
 
    <parameter store="text" name="SourceDirectory" type="choice" prompt="What name do you give your source folder?" default="1" condition="">
          <choice label="&amp;The Module's name (${PLASTER_PARAM_ModuleName})" value="${PLASTER_PARAM_ModuleName}" />
          <choice label="&amp;source" value="source" />
          <choice label="s&amp;rc" value="src" />
    </parameter>
 
    <parameter name="Features" type="multichoice" prompt="What feature would you like to add to your project?" default="0" condition='$PLASTER_PARAM_ModuleType -eq "CustomModule"' >
      <choice label='&amp;*All'
              help="Adds all features below."
              value="All"/>
 
      <choice label='&amp;Enums'
              help="Adds enum folders and an example."
              value="Enums"/>
 
      <choice label='&amp;Classes'
              help="Adds PSv5+ Classes folders and an example."
              value="Classes"/>
 
      <choice label='&amp;DSC Resources'
              help="Adds DSCResources folders and an example."
              value="DSCResources"/>
 
      <choice label='&amp;Sample Scripts'
              help="Adds Sample scripts in folders."
              value="SampleScripts"/>
 
      <choice label='&amp;Git ignore'
              help="Adds project .gitignore."
              value="git"/>
 
      <choice label='Ghe&amp;rkin BDD'
              help="Adds Gherkin folders"
              value="Gherkin"/>
 
      <choice label='&amp;Unit Tests'
              help="Adds Tests folders and example with your features."
              value="UnitTests"/>
 
      <choice label='&amp;Quality tests'
              help="Adds the Module quality verifying Unit tests, help and code coverage."
              value="ModuleQuality"/>
 
      <choice label='&amp;Build'
              help="Adds Build folders and an scripts."
              value="Build"/>
 
      <choice label='&amp;AppVeyor'
              help="Adds AppVeyor folders and an example."
              value="AppVeyor"/>
 
      <choice label='Test&amp;Kitchen'
              help="Adds TestKitchen folders, yaml and an example."
              value="TestKitchen"/>
    </parameter>
  </parameters>
    <!--
      condition=''
      ${PLASTER_PARAM_ModuleType} SimpleModule CustomModule CompleteModule SimpleModule_NoBuild CompleteModule_NoBuild SharedDscConfig
      -in @("SimpleModule","CustomModule","CompleteModule","SimpleModule_NoBuild","CompleteModule_NoBuild","SharedDscConfig")
      ${PLASTER_PARAM_ModuleAuthor}
      ${PLASTER_PARAM_ModuleName}
      ${PLASTER_PARAM_ModuleDescription}
      ${PLASTER_PARAM_ModuleVersion}
      ${PLASTER_PARAM_License} true false
      ${PLASTER_PARAM_LicenseType} Apache MIT None
      ${PLASTER_PARAM_Features} All UnitTests ModuleQuality AppVeyor TestKitchen Gherkin DSCResources Enums Classes SampleScripts git
 
     -->
  <content>
    <!-- MODULES FOLDER SCAFFOLDING -->
    <!-- SOURCE MAIN Folder -->
    <file source=''
          destination='${PLASTER_PARAM_ModuleName}/${PLASTER_PARAM_SourceDirectory}'
    />
 
    <!-- CLASSES Folder-->
    <file source=''
          destination='${PLASTER_PARAM_ModuleName}/${PLASTER_PARAM_SourceDirectory}/Classes'
          condition='(${PLASTER_PARAM_Features}.Contains("All") -or ${PLASTER_PARAM_Features}.Contains("Classes")) -or ${PLASTER_PARAM_ModuleType} -in @("CompleteModule","CompleteModule_NoBuild")'
    />
 
    <!-- Enums Folder-->
    <file source=''
          destination='${PLASTER_PARAM_ModuleName}/${PLASTER_PARAM_SourceDirectory}/enums'
          condition='${PLASTER_PARAM_Features}.Contains("All") -or ${PLASTER_PARAM_Features}.Contains("Enums") -or ${PLASTER_PARAM_ModuleType} -in @("CompleteModule","CompleteModule_NoBuild")'
    />
 
    <!-- PRIVATE FUNCTIONS Folder-->
    <file source=''
          destination='${PLASTER_PARAM_ModuleName}/${PLASTER_PARAM_SourceDirectory}/Private'
          condition='${PLASTER_PARAM_ModuleType} -ne "SharedDscConfig"'
    />
 
    <!-- PUBLIC FUNCTIONS Folder -->
    <file source=''
          destination='${PLASTER_PARAM_ModuleName}/${PLASTER_PARAM_SourceDirectory}/Public'
          condition='${PLASTER_PARAM_ModuleType} -ne "SharedDscConfig"'
    />
 
    <!-- PESTER MAIN FOLDER -->
    <file source=''
          destination='${PLASTER_PARAM_ModuleName}/tests'
          condition='${PLASTER_PARAM_ModuleType} -in @("SimpleModule","CompleteModule","SimpleModule_NoBuild","CompleteModule_NoBuild","SharedDscConfig") -or ${PLASTER_PARAM_Features}.Contains("All") -or ${PLASTER_PARAM_Features}.Contains("UnitTests") -or ${PLASTER_PARAM_Features}.Contains("ModuleQuality") -or ${PLASTER_PARAM_Features}.Contains("TestKitchen")'
    />
 
    <!-- GHERKIN -->
    <file source=''
          destination='${PLASTER_PARAM_ModuleName}/specs/steps'
          condition='${PLASTER_PARAM_Features}.Contains("Gherkin")'
    />
 
    <!-- UNIT TESTS Classes Sample Files -->
    <file source='tests/Unit/Classes/**'
          destination='${PLASTER_PARAM_ModuleName}/tests/Unit/Classes/'
          condition='${PLASTER_PARAM_ModuleType} -in @("CompleteModule","CompleteModule_NoBuild") -or ${PLASTER_PARAM_Features}.Contains("All") -or (${PLASTER_PARAM_Features}.Contains("UnitTests") -and ${PLASTER_PARAM_Features}.Contains("Classes"))'
    />
 
    <!-- UNIT TESTS Private Functions Sample Files -->
    <file source='tests/Unit/Private/**'
          destination='${PLASTER_PARAM_ModuleName}/tests/Unit/Private/'
          condition='${PLASTER_PARAM_ModuleType} -in @("SimpleModule","SimpleModule_NoBuild","CompleteModule","CompleteModule_NoBuild") -or (${PLASTER_PARAM_Features}.Contains("All") -or (${PLASTER_PARAM_Features}.Contains("UnitTests") -and ${PLASTER_PARAM_Features}.contains("SampleScripts")))'
    />
 
    <!-- UNIT TESTS Public Functions Sample Files -->
    <file source='tests/Unit/Public/**'
          destination='${PLASTER_PARAM_ModuleName}/tests/Unit/Public/'
          condition='${PLASTER_PARAM_ModuleType} -in @("SimpleModule","SimpleModule_NoBuild","CompleteModule","CompleteModule_NoBuild") -or (${PLASTER_PARAM_Features}.Contains("All") -or (${PLASTER_PARAM_Features}.Contains("UnitTests") -and ${PLASTER_PARAM_Features}.contains("SampleScripts")))'
    />
 
    <!-- QUALITY TESTS for Module -->
    <file source='tests/QA/**'
          destination='${PLASTER_PARAM_ModuleName}/tests/QA/'
          condition='${PLASTER_PARAM_ModuleType} -in @("SimpleModule","SimpleModule_NoBuild","CompleteModule","CompleteModule_NoBuild","SharedDscConfig") -or (${PLASTER_PARAM_Features}.contains("ModuleQuality") -or ${PLASTER_PARAM_Features}.contains("All"))'
    />
 
    <!-- PUBLIC FUNCTION Sample -->
    <file source='Sampler/Public/Get-Something.ps1'
          destination='${PLASTER_PARAM_ModuleName}/${PLASTER_PARAM_SourceDirectory}/Public/Get-Something.ps1'
          condition='${PLASTER_PARAM_ModuleType} -ne "SharedDscConfig" -and (${PLASTER_PARAM_ModuleType} -in @("CompleteModule","CompleteModule_NoBuild") -or ${PLASTER_PARAM_Features}.Contains("All") -or ${PLASTER_PARAM_Features}.Contains("SampleScripts"))'
    />
 
    <!-- PRIVATE FUNCTION Sample -->
    <file source='Sampler/Private/Get-PrivateFunction.ps1'
          destination='${PLASTER_PARAM_ModuleName}/${PLASTER_PARAM_SourceDirectory}/Private/Get-PrivateFunction.ps1'
          condition='${PLASTER_PARAM_ModuleType} -ne "SharedDscConfig" -and (${PLASTER_PARAM_ModuleType} -in @("CompleteModule","CompleteModule_NoBuild") -or ${PLASTER_PARAM_Features}.Contains("All") -or ${PLASTER_PARAM_Features}.Contains("SampleScripts"))'
    />
 
    <!-- CLASSES Samples -->
    <file source='Sampler/Classes/**'
          destination='${PLASTER_PARAM_ModuleName}/${PLASTER_PARAM_SourceDirectory}/Classes/'
          condition='${PLASTER_PARAM_Features}.Contains("All") -or (${PLASTER_PARAM_Features}.Contains("Classes") -and ${PLASTER_PARAM_Features}.Contains("SampleScripts")) -or ${PLASTER_PARAM_ModuleType} -in @("CompleteModule","CompleteModule_NoBuild")'
    />
 
    <!-- OUTPUT FOLDER -->
    <file source=''
          destination='${PLASTER_PARAM_ModuleName}/output'
          condition='${PLASTER_PARAM_Features}.Contains("All") -or ${PLASTER_PARAM_ModuleType} -in @("CompleteModule","SimpleModule")'
    />
    <!-- REQUIRED MODULES FOLDER -->
    <file source=''
          destination='${PLASTER_PARAM_ModuleName}/output/RequiredModules'
          condition='${PLASTER_PARAM_Features}.Contains("All") -or ${PLASTER_PARAM_ModuleType} -in @("CompleteModule","SimpleModule")'
    />
 
    <!-- END OF MODULES FOLDER SCAFFOLDING -->
 
    <!-- REPOSITORY Files -->
    <!-- GITIGNORE -->
    <file source='Sampler/assets/gitignore'
          destination='${PLASTER_PARAM_ModuleName}/.gitignore'
          condition='${PLASTER_PARAM_Features}.Contains("All") -or ${PLASTER_PARAM_Features}.Contains("git") -or ${PLASTER_PARAM_ModuleType} -in @("SimpleModule","CompleteModule","SimpleModule_NoBuild","CompleteModule_NoBuild","SharedDscConfig")'
    />
 
    <!-- GITATTRIBUTES -->
    <file source='Sampler/assets/gitattributes'
          destination='${PLASTER_PARAM_ModuleName}/.gitattributes'
          condition='${PLASTER_PARAM_Features}.Contains("All") -or ${PLASTER_PARAM_Features}.Contains("git") -or ${PLASTER_PARAM_ModuleType} -in @("SimpleModule","CompleteModule","SimpleModule_NoBuild","CompleteModule_NoBuild","SharedDscConfig")'
    />
 
    <!-- KITCHEN YAML Sample -->
    <templateFile source='Sampler/assets/kitchen.yml.template'
                  destination='${PLASTER_PARAM_ModuleName}/.kitchen.yml'
                  condition='${PLASTER_PARAM_ModuleType} -in @("CompleteModule","SharedDscConfig") -or ${PLASTER_PARAM_Features}.Contains("All") -or ${PLASTER_PARAM_Features}.Contains("TestKitchen")'
    />
 
    <!-- PSDEPLOY Sample -->
    <templateFile source='Sampler/assets/Deploy.PSDeploy.template'
                  destination='${PLASTER_PARAM_ModuleName}/Deploy.PSDeploy.ps1'
                  condition='${PLASTER_PARAM_ModuleType} -in @("SimpleModule","CompleteModule","SharedDscConfig") -or ${PLASTER_PARAM_Features}.Contains("All") -or (${PLASTER_PARAM_Features}.Contains("Build") -and !${PLASTER_PARAM_Features}.Contains("AppVeyor"))'
    />
 
    <!-- BUILD SCRIPTS -->
    <!-- BUILD ENTRYPOINT -->
    <file source='build.ps1'
          destination='${PLASTER_PARAM_ModuleName}/build.ps1'
          condition='${PLASTER_PARAM_Features}.Contains("All") -or ${PLASTER_PARAM_Features}.Contains("Build") -or ${PLASTER_PARAM_ModuleType} -in @("SimpleModule","CompleteModule","SharedDscConfig")'
    />
 
    <!-- REQUIRED MODULES MANIFEST -->
    <file source='RequiredModules.psd1'
          destination='${PLASTER_PARAM_ModuleName}/RequiredModules.psd1'
          condition='${PLASTER_PARAM_ModuleType} -in @("SimpleModule","CompleteModule","SharedDscConfig") -or ${PLASTER_PARAM_Features}.Contains("All") -or ${PLASTER_PARAM_Features}.Contains("Build")'
    />
 
    <!-- RESOLVE DEPENDENCY Script (used in build.ps1) -->
    <file source='Resolve-Dependency.ps1'
          destination='${PLASTER_PARAM_ModuleName}/Resolve-Dependency.ps1'
          condition='${PLASTER_PARAM_ModuleType} -in @("SimpleModule","CompleteModule","SharedDscConfig") -or ${PLASTER_PARAM_Features}.Contains("All") -or ${PLASTER_PARAM_Features}.Contains("Build")'
    />
 
    <!-- RESOLVE DEPENDENCY Configuration Manifest -->
    <file source='Resolve-Dependency.psd1'
          destination='${PLASTER_PARAM_ModuleName}/Resolve-Dependency.psd1'
          condition='${PLASTER_PARAM_ModuleType} -in @("SimpleModule","CompleteModule","SharedDscConfig") -or ${PLASTER_PARAM_Features}.Contains("All") -or ${PLASTER_PARAM_Features}.Contains("Build")'
    />
 
    <!-- BUILD YAML CONFIGURATION -->
    <file source='Sampler/assets/build.yaml'
          destination='${PLASTER_PARAM_ModuleName}/build.yaml'
          condition='${PLASTER_PARAM_ModuleType} -in @("SimpleModule","CompleteModule","SharedDscConfig") -or ${PLASTER_PARAM_Features}.Contains("All") -or ${PLASTER_PARAM_Features}.Contains("Build")'
    />
 
    <!-- EMPTY MODULE BUILDER MANIFEST (waiting for bug fix https://github.com/PoshCode/ModuleBuilder/issues/44) -->
    <file source='Sampler/Build.psd1'
          destination='${PLASTER_PARAM_ModuleName}/${PLASTER_PARAM_SourceDirectory}/Build.psd1'
          condition='${PLASTER_PARAM_ModuleType} -in @("SimpleModule","CompleteModule","SharedDscConfig") -or ${PLASTER_PARAM_Features}.Contains("All") -or ${PLASTER_PARAM_Features}.Contains("Build")'
    />
 
    <!-- APPVEYOR -->
    <file source='appveyor.yml'
          destination='${PLASTER_PARAM_ModuleName}/appveyor.yml'
          condition='${PLASTER_PARAM_Features}.Contains("AppVeyor")'
    />
 
    <!-- AZURE PIPELINES -->
    <file source='azure-pipelines.yml'
          destination='${PLASTER_PARAM_ModuleName}/azure-pipelines.yml'
          condition='${PLASTER_PARAM_ModuleType} -in @("SimpleModule","CompleteModule","SharedDscConfig") -or ${PLASTER_PARAM_Features}.Contains("All") -or ${PLASTER_PARAM_Features}.Contains("Azure-Pipelines")'
    />
    <!-- END OF BUILD SCRIPTS -->
 
    <!-- DSC RESOURCES files and folders -->
    <!-- DSCResources -->
    <file source=''
          destination='${PLASTER_PARAM_ModuleName}/${PLASTER_PARAM_SourceDirectory}/DSCResources'
          condition='${PLASTER_PARAM_ModuleType} -in @("CompleteModule","CompleteModule_NoBuild") -or ${PLASTER_PARAM_Features}.Contains("All") -or ${PLASTER_PARAM_Features}.Contains("DSCResources")'
    />
 
    <!-- Examples -->
    <file source=''
          destination='${PLASTER_PARAM_ModuleName}/${PLASTER_PARAM_SourceDirectory}/Examples'
    />
 
    <!-- DSCResource Sample Files -->
    <file source='Sampler/DSCResources/**'
          destination='${PLASTER_PARAM_ModuleName}/${PLASTER_PARAM_SourceDirectory}/DSCResources/'
          condition='${PLASTER_PARAM_ModuleType} -in @("CompleteModule","CompleteModule_NoBuild") -or ${PLASTER_PARAM_Features}.Contains("All") -or (${PLASTER_PARAM_Features}.Contains("DSCResources") -and ${PLASTER_PARAM_Features}.Contains("SampleScripts"))'
    />
    <!-- END OF DSCResources files and folders -->
 
    <!-- MODULE MANIFEST -->
    <newModuleManifest destination='${PLASTER_PARAM_ModuleName}/${PLASTER_PARAM_SourceDirectory}/${PLASTER_PARAM_ModuleName}.psd1'
        moduleVersion='$PLASTER_PARAM_ModuleVersion'
        rootModule='${PLASTER_PARAM_ModuleName}.psm1'
        author='$PLASTER_PARAM_ModuleAuthor'
        description='$PLASTER_PARAM_ModuleDescription'
        condition='-not (Test-Path "${PLASTER_PARAM_ModuleName}/${PLASTER_PARAM_ModuleName}/${PLASTER_PARAM_ModuleName}.psd1")'
    />
 
    <!-- <templateFile
        source='media/module.template'
        destination='${PLASTER_PARAM_ModuleName}/${PLASTER_PARAM_SourceDirectory}/${PLASTER_PARAM_ModuleName}.psm1'
        condition='-not (Test-Path "${PLASTER_PARAM_ModuleName}/${PLASTER_PARAM_SourceDirectory}/${PLASTER_PARAM_ModuleName}.psm1")'
    /> -->
 
    <!-- LICENSE based on type of license MIT/Apache2/CC...-->
    <!-- MIT License -->
    <templateFile source='Sampler/assets/LICENSES/LICENSE.MIT.Template'
                  destination='${PLASTER_PARAM_ModuleName}/LICENSE'
                  condition='${PLASTER_PARAM_License} -eq "true" -and ${PLASTER_PARAM_LicenseType} -eq "MIT"'
    />
 
    <!-- APACHE License -->
    <templateFile source='Sampler/assets/LICENSES/LICENSE.Apache.Template'
                  destination='${PLASTER_PARAM_ModuleName}/LICENSE'
                  condition='${PLASTER_PARAM_License} -eq "true" -and ${PLASTER_PARAM_LicenseType} -eq "Apache"'
    />
 
    <!-- END OF LICENSE based on type of license MIT/Apache2/CC...-->
 
    <!-- Add Markup help files -->
    <templateFile source='Sampler/assets/README.md.template'
                  destination='${PLASTER_PARAM_ModuleName}/README.md'
    />
    <!-- ABOUT MODULE help text file -->
    <templateFile source='Sampler/assets/about_ModuleName.help.template'
                  destination='${PLASTER_PARAM_ModuleName}/${PLASTER_PARAM_SourceDirectory}/en-US/about_${PLASTER_PARAM_ModuleName}.help.txt'
    />
 
   <!-- VSCODE SETTINGS -->
   <file source='Sampler/assets/vscode'
          destination='${PLASTER_PARAM_ModuleName}/.vscode'
          condition='${PLASTER_PARAM_ModuleType} -in @("CompleteModule","CompleteModule_NoBuild","SimpleBuild") -or ${PLASTER_PARAM_Features}.Contains("All") -or ${PLASTER_PARAM_Features}.Contains("vscode")'
    />
 
   <!-- GITHUB TEMPLATES -->
   <file source='Sampler/assets/github'
          destination='${PLASTER_PARAM_ModuleName}/.github'
          condition='${PLASTER_PARAM_ModuleType} -in @("CompleteModule","CompleteModule_NoBuild","SimpleBuild") -or ${PLASTER_PARAM_Features}.Contains("All") -or ${PLASTER_PARAM_Features}.Contains("github")'
    />
 
   <!-- CONTRIBUTING MD -->
   <file source='CONTRIBUTING.md'
          destination='${PLASTER_PARAM_ModuleName}/CONTRIBUTING.md'
          condition='${PLASTER_PARAM_ModuleType} -in @("CompleteModule","CompleteModule_NoBuild","SimpleBuild") -or ${PLASTER_PARAM_Features}.Contains("All") -or ${PLASTER_PARAM_Features}.Contains("git")'
    />
 
   <!-- CODE OF CONDUCT MD -->
   <file source='CODE_OF_CONDUCT.md'
          destination='${PLASTER_PARAM_ModuleName}/CODE_OF_CONDUCT.md'
          condition='${PLASTER_PARAM_ModuleType} -in @("CompleteModule","CompleteModule_NoBuild","SimpleBuild") -or ${PLASTER_PARAM_Features}.Contains("All") -or ${PLASTER_PARAM_Features}.Contains("git")'
    />
 
   <!-- MARKDOWN LINT -->
   <file source='Sampler/assets/markdownlint.json'
          destination='${PLASTER_PARAM_ModuleName}/.markdownlint.json'
          condition='${PLASTER_PARAM_ModuleType} -in @("CompleteModule","CompleteModule_NoBuild","SimpleBuild") -or ${PLASTER_PARAM_Features}.Contains("All") -or ${PLASTER_PARAM_Features}.Contains("vscode")'
    />
 
   <!-- GITVERSION CONFIG YAML -->
   <file source='GitVersion.yml'
          destination='${PLASTER_PARAM_ModuleName}/GitVersion.yml'
          condition='${PLASTER_PARAM_ModuleType} -in @("CompleteModule","SimpleBuild") -or ${PLASTER_PARAM_Features}.Contains("All") -or ${PLASTER_PARAM_Features}.Contains("git")'
    />
  </content>
</plasterManifest>