Releases: prjseal/Package-Script-Writer
v1.1.2 - Process Cleanup on Exit
v1.1.1 - main menu exit button
Added
Exit Option in Interactive Mode - Added "Exit" option to the main menu for graceful application exit
v1.1.0 - Package search features and UX improvements
Thanks to feedback from @OwainWilliams I have improved the package search features when editing a script through the interactive CLI.
Added
- Enhanced Package Selection System - Completely redesigned package selection workflow with multiple discovery methods
- New main menu with 5 options for adding packages
- "Select from popular Umbraco packages" - Browse all marketplace packages with multi-select
- "Search for package on Umbraco Marketplace" - Search by keyword in marketplace
- "Search for package on nuget.org" - Full NuGet.org search integration via API
- "Modify selected packages" - Review and remove previously selected packages
- "Done - finish package selection" - Exit package selection loop
- Cancel Options - Added "Cancel" option at the top of all package selection lists to return to main menu
- Immediate Version Selection - Version selection now happens immediately after selecting each package (instead of batched after all selections)
- Modify Selected Packages Feature - New screen to review and remove selected packages
- All packages displayed pre-selected with two-line format (Package ID on first line, version on second line with dash prefix)
- Can uncheck packages to remove them
- Supports removing all packages (multi-select with
Required(false))
- NuGet.org Search Integration - Direct search of NuGet.org repository via API
- Searches packages beyond Umbraco Marketplace
- Returns up to 20 results
- Displays package ID, truncated description (100 chars), and authors
- Excludes pre-release packages by default
Changed
- Package Selection Menu Structure - Reorganized from 3 options to 5-option main loop
- Clearer menu option names: "Select from popular Umbraco packages" and "Search for package on Umbraco Marketplace"
- All cancel operations now return to the main package selection menu instead of aborting
- Package selection is now a continuous loop until user selects "Done"
- Version Display in Modify Screen - Changed from single-line format
PackageId (Version)to two-line format with dash prefixPackageId - Version
Fixed
- Fixed compilation error in
ModifySelectedPackagesAsyncwhere.Select()was incorrectly called with a collection instead of individual items - Fixed issue where users could not press Enter if all packages were unchecked in the modify screen
v1.0.1 - Moved Community Templates API into PSW website
What's Changed
Moved Community Templates API into PSW website instead of from GitHub
v1.0.0 - First full release out now.
Package Script Writer CLI
An interactive command-line tool for generating Umbraco CMS installation scripts. Features a beautiful terminal UI built with Spectre.Console, supports 500+ Marketplace packages, and offers both interactive and automation modes.
Quick Start
# Install globally from NuGet
dotnet tool install --global PackageScriptWriter.Cli
# Launch interactive mode
psw
# Or use CLI mode for automation
psw --default
psw -p "uSync,Diplo.GodMode" -n MyProjectKey Features
- 🎨 Beautiful Terminal UI - Built with Spectre.Console
- 🚀 Dual Mode - Interactive prompts OR command-line automation
- 📦 500+ Packages - Browse Umbraco Marketplace packages
- 💾 Templates - Save and reuse configurations
- 📊 History - Track all generated scripts
- 🔒 Secure - Command validation and password protection
- 🐳 Docker Ready - Optional Dockerfile generation
Installation
From NuGet (Recommended)
dotnet tool install --global PackageScriptWriter.CliFrom Source
git clone https://github.com/prjseal/Package-Script-Writer.git
cd Package-Script-Writer/src
dotnet pack PackageCliTool -c Release
dotnet tool install --global --add-source ./PackageCliTool/bin/Release PackageScriptWriter.CliUsage
Interactive Mode
pswNavigate through the menu-driven interface:
- Use default script
- Use local template
- Use community template
- Load script from history
- Create new script
- Load Umbraco versions table
- Help
CLI Mode Examples
# Default script
psw --default
# Custom packages with specific versions
psw -p "uSync|17.0.0,Diplo.GodMode" -n MyBlog
# Full automation with unattended install
psw -p "uSync" -n MyProject -s MySolution \
-u --database-type SQLite \
--admin-email admin@example.com \
--admin-password "SecurePass123!" \
--auto-runTemplate Commands
psw template save <name> # Save current config as template
psw template load <name> # Load saved template
psw template list # List all templates
psw template delete <name> # Delete templateHistory Commands
psw history list # View recent scripts
psw history show <#> # Show script details
psw history rerun <#> # Re-run previous scriptRequirements
- .NET 10.0 SDK or later
- Internet connection (for package information)
Documentation
📚 Complete Documentation: CLI Tool Documentation
Quick Links
- Interactive Mode Guide - Complete walkthrough
- Templates Guide - Template system
- History Guide - History feature
- Security Guide - Security features
- CLI Reference - Full CLI documentation
Support
- Issues: GitHub Issues
- Discussions: GitHub Discussions
- Website: psw.codeshare.co.uk
Version
Current Version: 1.0.0 (Stable)
Release Notes: Release History
License
MIT License - see LICENSE file for details.
Author
Paul Seal
- Website: codeshare.co.uk
- GitHub: @prjseal
⭐ If this tool helps you, consider giving it a star! ⭐
v1.0.0-beta008
Marketplace update
v1.0.0-beta007
What's Changed
- Fix terminal output display issues in script execution by @prjseal in #158
- Relax script validation for dotnet new commands by @prjseal in #159
- Remove history show command and related code by @prjseal in #160
- Add community templates feature design document by @prjseal in #161
- Remove template show command feature by @prjseal in #162
- Remove 'history stats' command feature by @prjseal in #163
- Remove unused code from PackageCliTool by @prjseal in #164
Full Changelog: v1.0.0-beta006...v1.0.0-beta007
v1.0.0-beta006
What's Changed
- Add GitHub Actions workflow for PackageCliTool PRs by @prjseal in #142
- Fix history command to actually save generated scripts by @prjseal in #141
- Fix history feature not working in interactive mode by @prjseal in #143
- Remove unused code from PackageCliTool solution by @prjseal in #144
- Remove unused GenericCache from caching system by @prjseal in #145
- Delete pr-build-test.yml workflow by @prjseal in #146
- Fix test result parsing in website-build-and-test workflow by @prjseal in #147
- Add 'Create script from template' option to main CLI menu by @prjseal in #148
- Add Phase 1 unit tests for core models by @prjseal in #149
- Add Phase 2 unit tests for service classes by @prjseal in #150
- Add Phase 3 unit tests for advanced components by @prjseal in #151
- Add Phase 4 unit tests for configuration and API models by @prjseal in #152
- Refactor service registration to follow DI best practices by @prjseal in #153
- Add condition to PreBuild target to respect RunPreBuildEvent property by @prjseal in #154
- Add comprehensive Mermaid flow diagrams for all template commands by @prjseal in #155
- Simplify template configuration by removing --set and using standard CLI options by @prjseal in #156
- Add script generation and action options to 'history show' command by @prjseal in #157
Full Changelog: v1.0.0-beta005...v1.0.0-beta006
v1.0.0-beta005
Added Umbraco Version Table and made non interactive mode switches better.
Version Table
CLI flags
Now you can call it like this:
psw --default -p "uSync,our.umbraco.thedashboard" --auto-runwhich will use a default script and override the packages part, and run a script like this:
# Ensure we have the latest Umbraco templates
dotnet new install Umbraco.Templates --force
# Create solution/project
dotnet new sln --name "MySolution"
dotnet new umbraco --force -n "MyProject" --friendly-name "Administrator" --email "admin@example.com" --password "1234567890" --development-database-type SQLite
dotnet sln add "MyProject"
#Add starter kit
dotnet add "MyProject" package clean
#Add Packages
dotnet add "MyProject" package uSync
dotnet add "MyProject" package Our.Umbraco.TheDashboard
dotnet run --project "MyProject"
#Runningv1.0.0-beta004
Fixed templates