Ressources/FRPSUGModuleTemplate/plasterManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<plasterManifest
  schemaVersion="1.1"
  templateType="Project" xmlns="http://www.microsoft.com/schemas/PowerShell/Plaster/v1">
  <metadata>
    <name>FRPSUG-ModuleTemplate</name>
    <id>430104ca-eec4-4602-bb82-83a786ee5d5b</id>
    <version>0.0.1</version>
    <title>Full Module Template For FRPSUG</title>
    <description>Full Module Template For FRPSUG</description>
    <author>Laurent LIENHARD</author>
    <tags>Module, Complete, FRPSUG</tags>
  </metadata>
  <parameters>
    <parameter name='ModuleName' type='text' prompt='`r`nEnter the name of the module' />
    <parameter name='ModuleDescription' type='text' prompt='`r`nEnter a description of the module (required for publishing to the PowerShell Gallery)' />
    <parameter name='AuthorName' type='user-fullname' prompt='`r`nEnter your full name' />
    <parameter name='AuthorEmail' type='user-email' prompt='`r`nEnter your email address' />
    <parameter name='ModuleVersion' type='text' prompt='`r`nEnter the version number for the module' default='0.0.1' />
    <parameter name='Company' type='text' prompt='`r`nEnter the company name' default='None' />
 
  <parameter name='ModuleFolders' type = 'multichoice' prompt='`r`nPlease select folders to include' default='0,1,2'>
    <choice label='&amp;Functions' value='functions' help='Adds a function folder to module'/>
    <choice label='&amp;Classes' value='Classes' help='Adds a Classes folder to module'/>
    <choice label='&amp;Enums' value='Enums' help='Adds a Enums folder to module'/>
  </parameter>
 
 <parameter name='UnitTests' type = 'choice' prompt='`r`nAdd UnitTests Folder' default='0'>
    <choice label='&amp;Yes' value='Yes' help='Add UnitTests Folder.'/>
    <choice label='&amp;No' value='No' help='No UnitTests support'/>
  </parameter>
 
  <parameter name='Editor' type='choice' default='1' store='text' prompt='`r`nWhich editor do you use'>
    <choice label='&amp;ISE' help='Your editor is PowerShell ISE.' value='ISE'/>
    <choice label='Visual Studio &amp;Code' help='Your editor is Visual Studio Code.' value='VSCode'/>
    <choice label='&amp;None' help='No editor specified.' value='None'/>
  </parameter>
 
  <parameter name='Github' type = 'choice' prompt='`r`nAdd support for Github' default='0'>
    <choice label='&amp;Yes' value='Yes' help='Add Github Folder.'/>
    <choice label='&amp;No' value='No' help='No Github support'/>
  </parameter>
 
  <parameter name='CICD' type = 'choice' prompt='`r`nAdd support for CI/CD' default='0'>
    <choice label='&amp;Yes' value='Yes' help='Add CI/CD Support.'/>
    <choice label='&amp;No' value='No' help='No CI/CD support'/>
  </parameter>
 
  <parameter name='Psake' type = 'choice' prompt='`r`nAdd support for Psake' default='0'>
    <choice label='&amp;Yes' value='Yes' help='Add Psake Support.'/>
    <choice label='&amp;No' value='No' help='No Psake support'/>
  </parameter>
 
  </parameters>
   
  <content>
    <message>____________________________________</message>
    <message>`r`n-> Creating your root folders for module : ${PLASTER_PARAM_ModuleName}</message>
    <message>____________________________________</message>
    <file source='' destination='${PLASTER_PARAM_ModuleName}' />
 
    <message>`r`n-> Creating module manifest</message>
    <newModuleManifest destination='$PLASTER_PARAM_ModuleName\${PLASTER_PARAM_ModuleName}.psd1' moduleVersion='$PLASTER_PARAM_ModuleVersion' rootModule='.\${PLASTER_PARAM_ModuleName}.psm1' author='$PLASTER_PARAM_AuthorName' companyName='${PLASTER_PARAM_Company}' description='$PLASTER_PARAM_ModuleDescription' encoding='UTF8-NoBOM'/>
 
    <message>`r`n-> Creating your source code folders </message>
    <file source='' destination='${PLASTER_PARAM_ModuleName}\Sources\Functions\Private' condition='$PLASTER_PARAM_ModuleFolders -contains "functions"' />
    <file source='' destination='${PLASTER_PARAM_ModuleName}\Sources\Functions\Public' condition='$PLASTER_PARAM_ModuleFolders -contains "functions"'/>
    <file source='' destination='${PLASTER_PARAM_ModuleName}\Sources\Classes' condition='$PLASTER_PARAM_ModuleFolders -contains "Classes"' />
    <file source='' destination='${PLASTER_PARAM_ModuleName}\Sources\Enums' condition='$PLASTER_PARAM_ModuleFolders -contains "Enums"' />
    <file source='' destination='${PLASTER_PARAM_ModuleName}\Tests' />
    <file source='' destination='${PLASTER_PARAM_ModuleName}\Docs' />
     
 
    <message condition='$PLASTER_PARAM_UnitTests -eq "Yes"'>`r`n-> Creating UnitTests folder</message>
    <file source='' destination='${PLASTER_PARAM_ModuleName}\UnitTests' condition='$PLASTER_PARAM_UnitTests -eq "Yes"' />
    <message condition='$PLASTER_PARAM_UnitTests -eq "Yes"'>`r`n-> Copying UnitTests files</message>
    <templateFile source='UnitTests\*.Tests.ps1' destination='${PLASTER_PARAM_ModuleName}\UnitTests\' condition='$PLASTER_PARAM_UnitTests -eq "Yes"'/>
 
    <message condition='$PLASTER_PARAM_Editor -eq "VSCode"'>`r`n-> Creating VSCode folder</message>
    <file source='' destination='.vscode' condition='$PLASTER_PARAM_Editor -eq "VSCode"' />
    <message condition='$PLASTER_PARAM_Editor -eq "VSCode"'>`r`n-> Creating VSCode files</message>
    <file source='vscode\settings.json' destination='${PLASTER_PARAM_ModuleName}\.vscode\settings.json' condition='$PLASTER_PARAM_Editor -eq "VSCode"' />
    <file source='vscode\launch.json' destination='${PLASTER_PARAM_ModuleName}\.vscode\launch.json' condition='$PLASTER_PARAM_Editor -eq "VSCode"' />
    <file source='vscode\PSScriptAnalyzerSettings.psd1' destination='${PLASTER_PARAM_ModuleName}\.vscode\PSScriptAnalyzerSettings.psd1' condition='$PLASTER_PARAM_Editor -eq "VSCode"' />
    <templateFile source='vscode\tasks.json' destination='${PLASTER_PARAM_ModuleName}\.vscode\tasks.json' condition='($PLASTER_PARAM_Editor -eq "VSCode")' />
 
    <message condition='$PLASTER_PARAM_Github -eq "Yes"'>`r`n-> Creating Github Ressources</message>
    <templateFile source='github\template.gitignore' destination='${PLASTER_PARAM_ModuleName}\.gitignore' condition='$PLASTER_PARAM_Github -eq "Yes"'/>
 
    <message condition='$PLASTER_PARAM_CICD -eq "Yes"'>`r`n-> Creating CI/CD folders</message>
    <file source='' destination='${PLASTER_PARAM_ModuleName}\CI' condition='$PLASTER_PARAM_CICD -eq "Yes"' />
    <file source='' destination='${PLASTER_PARAM_ModuleName}\CI\Deploy' condition='$PLASTER_PARAM_CICD -eq "Yes"' />
    <message condition='$PLASTER_PARAM_CICD -eq "Yes"'>`r`n-> Creating CI/CD files</message>
    <templateFile source='CI\template.Install.ps1' destination='${PLASTER_PARAM_ModuleName}\CI\Install.ps1' condition='$PLASTER_PARAM_CICD -eq "Yes"'/>
    <templateFile source='CI\template.Clean.ps1' destination='${PLASTER_PARAM_ModuleName}\CI\Clean.ps1' condition='$PLASTER_PARAM_CICD -eq "Yes"'/>
    <templateFile source='CI\template.Compile.ps1' destination='${PLASTER_PARAM_ModuleName}\CI\Compile.ps1' condition='$PLASTER_PARAM_CICD -eq "Yes"'/>
    <templateFile source='CI\template.Tests.ps1' destination='${PLASTER_PARAM_ModuleName}\CI\Tests.ps1' condition='$PLASTER_PARAM_CICD -eq "Yes"'/>
    <templateFile source='CI\template.Diagram.ps1' destination='${PLASTER_PARAM_ModuleName}\CI\Diagram.ps1' condition='$PLASTER_PARAM_CICD -eq "Yes"'/>
    <templateFile source='CI\template.Docs.ps1' destination='${PLASTER_PARAM_ModuleName}\CI\Docs.ps1' condition='$PLASTER_PARAM_CICD -eq "Yes"'/>
    <templateFile source='vscode\tasks_CICD.json' destination='${PLASTER_PARAM_ModuleName}\.vscode\tasks.json' condition='$PLASTER_PARAM_CICD -eq "Yes"'/>
    <templateFile source='CI\Deploy\template.PSDeploy.ps1' destination='${PLASTER_PARAM_ModuleName}\CI\Deploy\${PLASTER_PARAM_ModuleName}.PSDeploy.ps1' condition='$PLASTER_PARAM_CICD -eq "Yes"'/>
    <templateFile source='CI\template.Deploy.ps1' destination='${PLASTER_PARAM_ModuleName}\CI\Deploy.ps1' condition='$PLASTER_PARAM_CICD -eq "Yes"'/>
 
    <message condition='$PLASTER_PARAM_CICD -eq "No" -and $PLASTER_PARAM_Psake -eq "Yes" '>`r`n-> Psake tasks can't be create without CICD file</message>
    <message condition='$PLASTER_PARAM_CICD -eq "Yes" -and $PLASTER_PARAM_Psake -eq "Yes" '>`r`n-> Creating Psake folders</message>
    <file source='' destination='${PLASTER_PARAM_ModuleName}\Tasks' condition='$PLASTER_PARAM_CICD -eq "Yes" -and $PLASTER_PARAM_Psake -eq "Yes"' />
    <message condition='$PLASTER_PARAM_CICD -eq "Yes" -and $PLASTER_PARAM_Psake -eq "Yes" '>`r`n-> Creating Psake tasks files ...</message>
    <templateFile source='vscode\tasks_psake.json' destination='${PLASTER_PARAM_ModuleName}\.vscode\tasks.json' condition='$PLASTER_PARAM_CICD -eq "Yes" -and $PLASTER_PARAM_Psake -eq "Yes" '/>
    <templateFile source='Tasks\template.Tasks.ps1' destination='${PLASTER_PARAM_ModuleName}\Tasks\${PLASTER_PARAM_ModuleName}.Tasks.ps1' condition='$PLASTER_PARAM_CICD -eq "Yes" -and $PLASTER_PARAM_Psake -eq "Yes" '/>
    <templateFile source='Tasks\template.Install.Tasks.ps1' destination='${PLASTER_PARAM_ModuleName}\Tasks\Install.Tasks.ps1' condition='$PLASTER_PARAM_CICD -eq "Yes" -and $PLASTER_PARAM_Psake -eq "Yes" '/>
    <templateFile source='Tasks\template.Clean.Tasks.ps1' destination='${PLASTER_PARAM_ModuleName}\Tasks\Clean.Tasks.ps1' condition='$PLASTER_PARAM_CICD -eq "Yes" -and $PLASTER_PARAM_Psake -eq "Yes" '/>
    <templateFile source='Tasks\template.Compile.Tasks.ps1' destination='${PLASTER_PARAM_ModuleName}\Tasks\Compile.Tasks.ps1' condition='$PLASTER_PARAM_CICD -eq "Yes" -and $PLASTER_PARAM_Psake -eq "Yes" '/>
    <templateFile source='Tasks\template.Deploy.Tasks.ps1' destination='${PLASTER_PARAM_ModuleName}\Tasks\Deploy.Tasks.ps1' condition='$PLASTER_PARAM_CICD -eq "Yes" -and $PLASTER_PARAM_Psake -eq "Yes" '/>
    <templateFile source='Tasks\template.Docs.Tasks.ps1' destination='${PLASTER_PARAM_ModuleName}\Tasks\Docs.Tasks.ps1' condition='$PLASTER_PARAM_CICD -eq "Yes" -and $PLASTER_PARAM_Psake -eq "Yes" '/>
    <templateFile source='Tasks\template.Tests.Tasks.ps1' destination='${PLASTER_PARAM_ModuleName}\Tasks\Tests.Tasks.ps1' condition='$PLASTER_PARAM_CICD -eq "Yes" -and $PLASTER_PARAM_Psake -eq "Yes" '/>
    <templateFile source='Tasks\template.Diagram.Tasks.ps1' destination='${PLASTER_PARAM_ModuleName}\Tasks\Diagram.Tasks.ps1' condition='$PLASTER_PARAM_CICD -eq "Yes" -and $PLASTER_PARAM_Psake -eq "Yes" '/>
 
    <message>`r`n-> Testing require modules </message>
    <requireModule name='Pester' condition='$PLASTER_PARAM_UnitTests -eq "Yes"' minimumVersion='4.7.1' message='Without Pester, you will not be able to run the provided Pester test to validate your module manifest file.`nWithout version 3.4.0, VS Code will not display Pester warnings and errors in the Problems panel.'/>
    <requireModule name='psake' condition='$PLASTER_PARAM_Psake -eq "Yes"' minimumVersion='4.7.4' message='Without psake, you will not be able to run the provided build script to build and/or publish your module.'/>
    <requireModule name='PSScriptAnalyzer' condition='$PLASTER_PARAM_Editor -eq "VSCode"' minimumVersion='1.17.1' message="Without PSScriptAnalyzer, you will not be able to perform script analysis, or use the provided options to control script analysis."/>
    <requireModule name='PSdeploy' condition='$PLASTER_PARAM_CICD -eq "Yes"' minimumVersion='1.0.1' message='Without PSDeploy, you will not be able to automatically deploy your module.'/>
    <requireModule name='PSClassUtils' condition='$PLASTER_PARAM_CICD -eq "Yes"' minimumVersion='2.6.1' message='Without PSClassUtils, you will not be able to run the provided build script to build and/or publish your module.'/>
    <requireModule name='PlatyPS' condition='$PLASTER_PARAM_CICD -eq "Yes"' minimumVersion='0.12.0' message='Without PlatyPS, you will not be able to generate the documentation automatically.'/>
  </content>
</plasterManifest>