{"id":14064074,"url":"https://github.com/larssb/PlasterPlethora","last_synced_at":"2025-07-29T17:31:54.494Z","repository":{"id":165677278,"uuid":"139437456","full_name":"larssb/PlasterPlethora","owner":"larssb","description":"A plethora of Plaster templates.","archived":false,"fork":false,"pushed_at":"2020-05-12T12:07:10.000Z","size":46,"stargazers_count":5,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-05-22T22:35:48.216Z","etag":null,"topics":["plaster","plaster-template","plaster-templates","powershell","scaffolding","template","templates"],"latest_commit_sha":null,"homepage":"","language":"PowerShell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/larssb.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2018-07-02T11:59:04.000Z","updated_at":"2022-10-31T21:38:17.000Z","dependencies_parsed_at":null,"dependency_job_id":"56b73aa3-c85a-4069-9448-55138df3a0ea","html_url":"https://github.com/larssb/PlasterPlethora","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/larssb%2FPlasterPlethora","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/larssb%2FPlasterPlethora/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/larssb%2FPlasterPlethora/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/larssb%2FPlasterPlethora/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/larssb","download_url":"https://codeload.github.com/larssb/PlasterPlethora/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":228032923,"owners_count":17858917,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["plaster","plaster-template","plaster-templates","powershell","scaffolding","template","templates"],"created_at":"2024-08-13T07:03:39.852Z","updated_at":"2024-12-04T02:31:07.084Z","avatar_url":"https://github.com/larssb.png","language":"PowerShell","funding_links":[],"categories":["PowerShell"],"sub_categories":[],"readme":"# PlasterPlethora\n\nThis is a useful collection of Plaster templates. In other words a plethora of Plaster templates. For your convenience and ease of use. \n\nI started this project as I was in need of a good way to share Plaster templates. Looking at the issue discussion in the Plaster project (e.g. https://github.com/PowerShell/Plaster/issues/224 or https://github.com/PowerShell/Plaster/issues/213 and there are more) I also thought that this is a general need of the PowerShell community. So here we are.\n\n__Plaster__\nPlaster is a scaffolding engine. Like [yeoman](http://yeoman.io/) is for WebApps. It helps you define, via a manifest file, the structure, included tools and so forth. For a module to be generated with Plaster. This makes it easy to scaffold e.g. a new PowerShell module. E.g. to avoid forgetting to include logging.\n\nYour brain capacity is hereby freed to think about the real challenge at hand, instead of navigating the standard details of creating 'x' coding project.\n\n__Hopes__\nI hope to kickstart a way to share Plaster templates. Doing it here on GitHub might certainly not be the perfect way. But, it's a start none the less. I hope, as time goes by. More people will join the project. Add templates.\n\nTogether can find a good way of sharing Plaster templates.\n\n## Pre-requisites\n\n1. Plaster has to be installed\n    1. If you haven't, it can be done by executing `Install-Module -Name Plaster` (which will download the module from the PSGallery \u0026 install it)\n1. Download the latest Plaster Plethora release from [releases](https://github.com/larssb/PlasterPlethora/releases) or `git clone` it\n    1. If you downloaded it, extract the release to a folder of your liking\n\n## Templating\n\n### Templates included\n\nPlease see the [template list](https://github.com/larssb/PlasterPlethora/wiki/Templates#template-list) wiki page for an overview and details on the included templates\n\n### Using the included templates\n\n1. Look at the code of the template that you wish to use. In order to feel safe about the code. This is always a good idea! (`Get-PlasterTemplate` can be used to inspect a template)\n1. To use a specific template: Use the `Invoke-Plaster` cmdlet by pointing it to the `content` folder of the template you wish to use. This will execute Plaster on the template manifest inside the `content` folder and generate a project based on the input you give to the template. Here is an example: `Invoke-Plaster -TemplatePath .\\PS-AdvModule+InvokeBuild+Log4Net+Pester\\content -DestinationPath ..\\testing`\n\n### Creating a new Plaster template\n\n1. If you have content, that you want included in the template. Start by either creating a folder in the root of the **PlasterPlethora** folder and put your content here or you can alternatively use the `-ContentPath` parameter to the `CreatePlasterTemplate` script. In order to specify an alternative folder where you have stored your content\n1. Then execute: `./CreatePlasterTemplate.ps1`\n\n## The structure of the templates\n\n### Naming\n\nThe naming of a template follows this \"convention\" \u003e [LANGUAGE-ProjectType+Tooling]. To which there is three parts.\n\n- LANGUAGE = the main programming language which the generated project will be based on.\n- `-` = a delimiter. Delimiting the `LANGUAGE` part and the `ProjectType` part.\n- ProjectType = The type of project represented by the template. E.g. if the project is an `advanced PowerShell project` the type could be = AdvModule AKA an advanced module.\n- `+` = a delimiter. Delimiting the `ProjectType` part and the `Tooling` parts of the naming convention.\n- Tooling = a `+` character delimited list of tools being used in the template. E.g. `PS-AdvModule+Pester` is a template generating a advanced PowerShell module which utilizes Pester.\n\n### Folders\n\n__Suggested folder structure__\n\n```txt\n\"TEMPLATE_NAME\" \u003e The root folder\n└───\"SUB_FOLDER\"\n└───\"SUB_SUB_FOLDER\"\n    └───\"SUB_FOLDER\"\n|───PlasterManifest.xml \u003e the Plaster template manifest file. This is the file in which you define the specifics of the entity to be scaffolded.\n```\n\nHere is a good example of what could be the structure of a Plaster template.\n\n```txt\nPS-AdvModule+Pester \u003e The root folder\n└───Docs\n    └───en-US\n    ├───OverOfMyApp.md\n└───Editor\n    └───VSCode\n    ├───extensions\n    └───snippets\n└───InvokeBuild\n└───Logging\n└───Tests\n└───PSScriptAnalyzer\n|───PlasterManifest.xml\n```","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flarssb%2FPlasterPlethora","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flarssb%2FPlasterPlethora","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flarssb%2FPlasterPlethora/lists"}