Scaffolding¶

The structure of this module and repository was scaffolded using PSStucco by Jimmy Briggs, who forked and improved upon the original Stucco module by Brandon Olin. The Stucco module is a Plaster Template and if you haven't heard of Plaster yet, you might enjoy reading about it. It's a great little PowerShell framework which enables you to create flexible templates using an XML document.
Structure¶
Sample Module¶
There is a functional DadJokes module in this repository. You can import it directly with
Import-Module docs-workshop/docs-workshop.psd1, or you can "build" the module by running ./build.ps1.

Files and Folders¶
| Path | Description |
|---|---|
| .cache/ | Temporary files when using certain MkDocs plugins as well as a place to cache the dotnet CLI. |
| .config/dotnet-tools.json | Configuration file for the dotnet CLI used with dotnet tool restore to install the NerdbankGitVersioning tool. |
| .devcontainer/ | Optional (recommended) devcontainer configuration for this workshop. Use the devcontainer locally, or using GitHub codespaces. |
| .github/workflows | Workflow files describing when and how GitHub Actions should build the module and documentation. |
| .vscode/ | VSCode configuration files to help normalize the development environment between different users and machines. |
| docs/ | Source folder for markdown files and assets to be rendered into a static website. |
| docs-workshop/ | Contains the source for a sample DadJokes module. |
| Output/ | When running build.ps1, the "compiled" PowerShell module will be placed here. |
| sandbox/ | An empty folder used as a sandbox for following along during the workshop. Have fun and experiment! |
| tests/ | Pester tests go here. There are a few, but it was not a priority for this workshop. |
| .gitattributes | Helps ensure line endings don't become a never-ending source of senseless commits. |
| .gitignore | Prevents git from detecting changes in folders like .cache/ and Output/. |
| .markdownlint.json | Rules used with the markdownlint VSCode extension. There are certain default markdown linting rules I want to modify/ignore. |
| build.ps1 | Intended as the entrypoint for all build and CI/CD tasks whether it is being executed by a developer or by the pipeline. This ensures the environment is ready to build before invoking psake. |
| LICENSE | MIT license |
| mkdocs.yml | MkDocs configuration file. Describes the site to be built, and the theme, plugins, configuration, and options unique to this project. |
| psakeFile.ps1 | Called by build.ps1 using the psake module. Contains build configuration and tasks used for initializing, building, testing, and generating documentatation. |
| PSScriptAnalyzerSettings.psd1 | Used to configure PSScriptAnalyzer to limit nuissance warnings. |
| requirements.psd1 | Describes dependencies that the PSDepend module should ensure are in place before performing a build. |
| requirements.txt | Describes Python requirements installed with the pip CLI. |
| run.ps1 | A simple script to use as an entrypoint for interactive debugging. |
| version.json | The configuration file used by the Nerdbank.GitVersioning dotnet tool. It describes how the module version is determined based on the git commit height. |
Additional modules and tools¶
Additional modules and tools used in this repository include:
| Module | Purpose |
|---|---|
| BuildHelpers | Initializes a collection of useful environment variables prefixed with "BH" used during builds |
| dotnet CLI | The dotnet CLI is used to install and use the Nerdbank.GitVersioning CLI. |
| GitHub | Besides version control and ease of collaboration, it also provides codespaces and build automation. |
| Material for MkDocs | My prefered MkDocs theme for pretty much anything. |
| MkDocs | The python-based static site generator tool used to build a static website from markdown files. |
| Pester | The defacto standard testing framework for PowerShell |
| PlatyPS | Creates/Updates markdown files based on PowerShell command documentation returned by Get-Help |
| PowerShellBuild | Includes a collection of common psake tasks I use in a variety of PowerShell projects for CI/CD |
| psake | A great way to define and run build tasks |
| PSDepend | Uses requirements.psd1 to help bootstrap environment for development or CI/CD |
| VSCode | Kind of the bees knees when it comes to code editing in PowerShell and lots of other languages. |