👋🏻 Hi, and thank you for getting as far as reading the contributing guide!
I'm thrilled that you're interested in contributing to this project. Your contributions are valuable and help make the module even better.
If you find a bug, please raise an issue on the GitHub repo. Please include as much detail as possible, including the version of the module you're using, the version of PowerShell, and the OS you're running on.
If you have an idea for an enhancement, please raise an issue on the GitHub repo as a starting point. This allows us to discuss a potential solution. I've found that discussing the enhancement before writing code can save a lot of time and effort.
These are guidelines not rules, you can do whatever you want to make things work and open a PR but following these guidelines will make it easier for me to review your PR and get it merged.
- Fork this repo from the
prerelease
branch. This is where all development is done and pre-release versions are published from. Themain
branch is only used for production releases after the pre-release changes have had some more thorough testing. - This is a PowerShell module and I intend on keeping it mostly PowerShell so those familiar with PowerShell but not C# can still contribute. If you're adding a feature that requires a C# class, please raise an issue first so we can discuss the best way to implement it. I'm aware not all features can be implemented in PowerShell and I'm open to adding C# code where necessary.
- Importing namespaces at the top of the
ps1
scripts is not advised, it makes the code more concise but it removes the ability to easily copy-paste code into a script. - All public functions go in the
/PwshSpectreConsole/public
folder. These functions also need to be added to the FunctionsToExport array in thePwshSpectreConsole.psd1
file to make them accessible to users. - All internal functions go in the
/PwshSpectreConsole/private
folder. - All functions in the
/PwshSpectreConsole/public
folder should have a comment-based help block at the top of the function. This is used to generate the markdown for the documentation site. SeeRead-SpectreMultiSelection.ps1
for an example. See documentation help for more information. - All public functions should have unit tests in the
/PwshSpectreConsole.Tests
folder. These tests should be written in Pester and should test the function in a variety of scenarios. The tests should be named the same as the function they're testing with.Tests
appended to the end. e.g.Read-SpectreMultiSelection.tests.ps1
.
These people are awesome and you should go follow them to keep tabs on all the other awesome stuff they're doing:
- @patriksvensson
The Spectre Console creator. Without the dotnet library this module wouldn't exist. - @dfinke
Doug Finke helped fix some broken table logic in the earliest days of the module yet his biggest contribution has been to my growth as a developer. Thanks for helping me gather the courage to build in the open. - @trackd
The table whisperer. Most of the logic for translating between PowerShell objects and the format required by the Spectre Console table widgets has come from their big brain and it's melted mine. They're a crazy-talented PowerShell developer who has helped teach me a lot and their contributions are a big part of the v2 release. - @StartAutomating
Thanks for the sponsorship, EZOut and HelpOut modules. HelpOut is used to generate the markdown that powers the pwshspectreconsole.com documentation site. - @futuremotiondev, @ruckii and @csillikd-messerli
Thank you for the issues raised and the fixes you've pulled together making this module better.
If you have any questions, please reach out to me on Twitter @shaun_lawrie.
You can also find me on Discord in the PowerShell discord as shaunlawrie
.