PackageScriptWriter.Cli
1.0.0-beta006
dotnet tool install --global PackageScriptWriter.Cli --version 1.0.0-beta006
dotnet new tool-manifest
dotnet tool install --local PackageScriptWriter.Cli --version 1.0.0-beta006
#tool dotnet:?package=PackageScriptWriter.Cli&version=1.0.0-beta006&prerelease
nuke :add-package PackageScriptWriter.Cli --version 1.0.0-beta006
Package Script Writer CLI (psw)
An interactive command-line tool for generating Umbraco installation scripts, built with .NET 10.0 and Spectre.Console.
Features
- 🎨 Beautiful CLI Interface - Built with Spectre.Console for a rich terminal experience
- 🚀 Dual Mode Operation - Interactive mode OR command-line flags for automation
- 🎯 Template Selection - Choose from Umbraco official templates and community templates with version selection
- 📦 Package Selection - Browse and search from 150+ Umbraco Marketplace packages or add custom ones
- 🔢 Version Selection - Choose specific versions for each selected package
- ⚡ Progress Indicators - Spinners and progress displays during data fetching
- 📄 Script Generation - Generate complete installation scripts locally with all options
- 💾 Export Scripts - Save generated scripts to files
- ⚙️ Complete Configuration - All options from the website's Options tab:
- Template and project settings
- Solution file creation
- Starter kit selection (9 different starter kits)
- Docker integration (Dockerfile & Docker Compose)
- Unattended install with database configuration
- Admin user credentials (with secure password input)
- Output formatting (one-liner, comment removal)
- 📊 Configuration Summary - Review all settings before generating script
- 🔒 Secure Input - Password fields are hidden during input
- ✅ Confirmation Prompts - Prevent accidental operations
- 🤖 Automation Ready - Use CLI flags for CI/CD pipelines and scripts
- 🔄 Resilient HTTP Client - Automatic retry logic with exponential backoff using Polly
- 📝 Advanced Logging - Comprehensive logging with Serilog (file and console output)
- 🐛 Verbose Mode - Enable detailed logging with
--verboseflag orPSW_VERBOSE=1environment variable
Requirements
- .NET 10.0 SDK or later
- Internet connection (to fetch package information from the Umbraco Marketplace API)
Installation
Option 1: Install as .NET Global Tool (Recommended)
Once published to NuGet, install globally:
Install Beta Version:
dotnet tool install --global PackageScriptWriter.Cli --prerelease
Install Stable Version (when available):
dotnet tool install --global PackageScriptWriter.Cli
Then run from anywhere:
psw
Update the tool:
# Update to latest beta
dotnet tool update --global PackageScriptWriter.Cli --prerelease
# Update to latest stable
dotnet tool update --global PackageScriptWriter.Cli
Uninstall the tool:
dotnet tool uninstall --global PackageScriptWriter.Cli
Option 2: Install from Local Build
Navigate to the src directory:
cd srcPack the project:
dotnet pack PackageCliTool -c ReleaseInstall from the local package:
dotnet tool install --global --add-source ./PackageCliTool/bin/Release PackageScriptWriter.CliRun from anywhere:
psw
Option 3: Build and Run from Source
Navigate to the src directory:
cd srcRun the CLI tool:
dotnet run --project PackageCliTool
Option 4: Open in Visual Studio
- Open
src/PackageCliTool.slnin Visual Studio - Press F5 to build and run
Usage
The CLI tool supports two modes of operation:
- Interactive Mode - Step-by-step prompts (no flags)
- CLI Mode - Command-line flags for automation
Command-Line Flags
Quick Reference
# Show help
psw --help
psw -h
# Show version
psw --version
psw -v
# Display Umbraco versions table
psw versions
# Generate default script
psw --default
psw -d
# Generate custom script with packages (latest versions)
psw -p "uSync,Umbraco.Forms" -n MyProject
# Generate script with specific package versions
psw -p "uSync|17.0.0,clean|7.0.1" -n MyProject
# Use custom template package
psw --template-package Umbraco.Community.Templates.Clean -t 14.3.0 -n MyProject
# Full automation example
psw -p "uSync|17.0.0" -n MyProject -s MySolution \
-u --database-type SQLite --admin-email admin@test.com \
--admin-password "MySecurePass123!" --auto-run
Available Flags
General Options:
-h, --help- Display help information with all available flags-v, --version- Display the tool version-d, --default- Generate a default script with minimal configuration
Script Configuration:
-p, --packages <packages>- Comma-separated list of packages with optional versions- Format:
"Package1|Version1,Package2|Version2"(e.g.,"uSync|17.0.0,clean|7.0.1") - Or just package names:
"uSync,Umbraco.Forms"(automatically uses latest version) - Mix both formats:
"uSync|17.0.0,Umbraco.Forms"(first uses specific version, second uses latest)
- Format:
--template-package <name>- Template package name (optional, skips template install if not specified)- Examples: "Umbraco.Templates", "Umbraco.Community.Templates.Clean"
- If omitted, no template installation command will be generated
-t, --template-package <templatePackage>- Template package name with optional version- Format:
"PackageName|Version1"(e.g.,"Umbraco.Templates|17.0.2") - Or just package names:
"uSync,Umbraco.Forms"(automatically uses latest version)
- Format:
-n, --project-name <name>- Project name (default: MyProject)-s, --solution<name>` - Solution name
Starter Kit:
-k, --starter-kit <package>- Starter kit package name (e.g., "clean", "Articulate") with optional version- Format:
"Package|Version"(e.g.,"clean|7.0.3") - Or just package name:
"clean"(automatically uses latest version)
- Format:
Docker:
--dockerfile- Include Dockerfile--docker-compose- Include Docker Compose file
Unattended Install:
-u, --unattended-defaults- Use unattended install default values--database-type <type>- Database type (SQLite, LocalDb, SQLServer, SQLAzure, SQLCE)--connection-string <string>- Connection string (for SQLServer/SQLAzure)--admin-name <name>- Admin user friendly name--admin-email <email>- Admin email address--admin-password <password>- Admin password (min 10 characters)
Output Options:
-o, --oneliner- Output as one-liner-r, --remove-comments- Remove comments from script--include-prerelease- Include prerelease package versions
Execution:
--auto-run- Automatically run the generated script--run-dir <directory>- Directory to run script in
Debugging:
--verbose- Enable verbose logging mode (detailed diagnostic output)
CLI Examples
Example 1: Default Script
psw --default
Example 2: Simple Custom Script (Latest Versions)
psw -p "uSync,Diplo.GodMode" -n MyBlog
Example 3: Script with Specific Package Versions
psw -p "uSync|17.0.0,clean|7.0.1" -n MyProject
Example 4: Mixed Package Versions (Some Specific, Some Latest)
psw -p "uSync|17.0.0,Umbraco.Forms,Diplo.GodMode|3.0.3" -n MyProject
Example 5: Custom Template Package
psw -t Umbraco.Community.Templates.Clean|7.0.3 -n MyCleanProject
Example 6: Script with Solution
psw -p "uSync|17.0.0" -n MyProject -s MySolution
Example 7: Full Automation with Unattended Install
psw -p "uSync|17.0.0,Umbraco.Forms|14.2.0" \
-n MyUmbracoSite \
-t "14.3.0" \
-s MyUmbracoSolution \
--database-type SQLite \
--admin-name "Site Administrator" \
--admin-email "admin@mysite.com" \
--admin-password "SecurePassword123!"
Example 8: Docker-enabled Setup
psw -p "uSync|17.0.0" -n MyDockerProject \
--dockerfile --docker-compose \
--auto-run --run-dir ./projects/docker-site
Example 9: One-liner Output
psw -p "uSync|17.0.0" -n QuickSite -o -r
Interactive Mode Workflow
Start the CLI:
If installed as a global tool:
pswOr if running from source:
dotnet run --project PackageCliToolSelect Packages:
- Use arrow keys to navigate through 150+ Umbraco Marketplace packages
- Press
Spaceto select/deselect packages - Press
Enterto confirm selection - You can also select "Add custom package..." to enter a package name manually
Select Package Versions:
- For each selected package, choose a version from the list
- The tool fetches versions from the API in real-time
Select Template:
- Choose from Umbraco official templates or community templates:
- Umbraco.Templates (official)
- Umbraco.Community.Templates.Clean
- Umbraco.Community.Templates.UmBootstrap
- Choose from Umbraco official templates or community templates:
Select Template Version:
- Choose "Latest Stable", "Pre-release", or a specific version number
- The tool fetches available versions from the API
Review Selection:
- View your selected packages and versions in a formatted table
Configure Project Options: The CLI will guide you through all configuration options:
Template & Project Settings:
- Template version (Latest Stable, Latest LTS, or specific version)
- Project name
- Create solution file (yes/no)
- Solution name (if creating solution)
Starter Kit Options:
- Include starter kit (yes/no)
- Select starter kit type (clean, Articulate, Portfolio, etc.)
Docker Options:
- Include Dockerfile (yes/no)
- Include Docker Compose (yes/no)
Unattended Install Options:
- Use unattended install defaults (yes/no)
- Database type (SQLite, LocalDb, SQL Server, SQL Azure, SQLCE)
- Connection string (for SQL Server/Azure)
- Admin user friendly name
- Admin email
- Admin password (hidden input)
Output Format Options:
- Output as one-liner (yes/no)
- Remove comments (yes/no)
Review Configuration Summary:
- View all your settings in a formatted table
- Confirm to proceed or cancel
Generate and Save:
- Script is generated locally by the CLI tool
- View the generated script in a formatted panel
- Optionally save it to a file
- Optionally auto-run the script
Example Session
____ _ ____ _ ___ _____ _
| _ \ __ _ ___| | ____ _ __ _ ___ / ___| | |_ _| |_ _|__ ___ | |
| |_) / _` |/ __| |/ / _` |/ _` |/ _ \ | | | | | | | |/ _ \ / _ \| |
| __/ (_| | (__| < (_| | (_| | __/ | |___| |___ | | | | (_) | (_) | |
|_| \__,_|\___|_|\_\__,_|\__, |\___| \____|_____|___| |_|\___/ \___/|_|
|___/
Package Script Writer - Interactive CLI
Step 1: Select Template
Step 2: Select Template Version
Step 3: Select Packages
Select one or more packages (use Space to select, Enter to confirm):
[ ] Umbraco.Community.BlockPreview
[X] Diplo.GodMode
[X] uSync
[ ] Umbraco.Community.Contentment
...
Step 4: Select Versions
⠋ Fetching versions for Diplo.GodMode...
✓ Selected Diplo.GodMode version 3.0.3
✓ Selected uSync version 12.0.0
Step 5: Final Selection
┌───────────────────────────┬──────────────────┐
│ Package Name │ Selected Version │
├───────────────────────────┼──────────────────┤
│ Diplo.GodMode │ 3.0.3 │
│ uSync │ 12.0.0 │
└───────────────────────────┴──────────────────┘
Would you like to generate a complete installation script? (y/n): y
Step 6: Configure Project Options
Template & Project Settings
Select Umbraco template version:
> Latest LTS
Latest Stable
14.3.0
...
Enter project name [MyProject]: MyBlog
Create a solution file? (y/n): y
Enter solution name [MyBlog]: MyBlog
Starter Kit Options
Include a starter kit? (y/n): n
Docker Options
Include Dockerfile? (y/n): n
Include Docker Compose? (y/n): n
Unattended Install Options
Use unattended install defaults? (y/n): y
Select database type:
> SQLite
LocalDb
SQL Server
...
Enter admin user friendly name [Administrator]: Site Admin
Enter admin email [admin@example.com]: admin@myblog.com
Enter admin password (min 10 characters): **********
Output Format Options
Output as one-liner? (y/n): n
Remove comments from script? (y/n): n
Configuration Summary
┌─────────────────────┬──────────────────────────┐
│ Setting │ Value │
├─────────────────────┼──────────────────────────┤
│ Template │ Umbraco.Templates @ LTS │
│ Project Name │ MyBlog │
│ Solution Name │ MyBlog │
│ Packages │ 2 package(s) selected │
│ Unattended Install │ Enabled │
│ Database Type │ SQLite │
│ Admin User │ Site Admin │
│ Admin Email │ admin@myblog.com │
└─────────────────────┴──────────────────────────┘
Generate script with these settings? (y/n): y
⭐ Generating installation script...
╔═══════════════════════════════════════════╗
║ Generated Installation Script ║
╠═══════════════════════════════════════════╣
║ ║
║ # Install Umbraco templates ║
║ dotnet new install Umbraco.Templates... ║
║ ... ║
║ ║
╚═══════════════════════════════════════════╝
Would you like to save this script to a file? (y/n): y
Enter file name [install-script.sh]: setup.sh
✓ Script saved to setup.sh
✓ Process completed successfully!
Project Structure
src/
├── PackageCliTool.sln # Solution file
└── PackageCliTool/
├── Configuration/ # Application configuration
│ └── ApiConfiguration.cs
├── Exceptions/ # Custom exception types
│ └── PswException.cs
├── Logging/ # Logging setup and error handling
│ ├── ErrorHandler.cs
│ └── LoggerSetup.cs
├── Models/ # Data models and DTOs
│ ├── Api/ # API request/response models
│ ├── CommandLineOptions.cs
│ ├── PackageCategory.cs
│ └── PagedPackagesPackage.cs
├── Services/ # Business logic and API communication
│ ├── ApiClient.cs
│ ├── PackageSelector.cs
│ ├── ResilientHttpClient.cs
│ └── ScriptExecutor.cs
├── UI/ # User interface components
│ ├── ConfigurationDisplay.cs
│ ├── ConsoleDisplay.cs
│ └── InteractivePrompts.cs
├── Validation/ # Input validation
│ └── InputValidator.cs
├── Workflows/ # Orchestration logic
│ ├── CliModeWorkflow.cs
│ └── InteractiveModeWorkflow.cs
├── PackageCliTool.csproj # Project file (.NET 10.0)
├── Program.cs # Main entry point
├── icon.png # NuGet package icon
└── README.md # This file
Code Structure
The CLI tool is built with a clean, modular architecture following separation of concerns:
1. Entry Point & Orchestration
Program.cs - Main application entry point
- Initializes logging (Serilog with file and console output)
- Parses command-line arguments
- Determines execution mode (CLI vs Interactive)
- Orchestrates workflows and services
- Handles global exception handling
2. Workflows (Orchestration Layer)
InteractiveModeWorkflow.cs - Interactive mode orchestration
- Displays welcome banner
- Populates packages from marketplace API
- Guides user through step-by-step prompts
- Generates default or custom scripts
- Handles file saving and script execution
CliModeWorkflow.cs - CLI mode orchestration
- Parses command-line options
- Validates input parameters
- Generates scripts locally using ScriptGeneratorService
- Executes auto-run if requested
3. Services (Business Logic Layer)
ApiClient.cs - API communication with resilience
GetPackageVersionsAsync()- Fetches package versions from NuGet via APIGetAllPackagesAsync()- Retrieves all Umbraco Marketplace packages via API- Uses ResilientHttpClient for automatic retries
ScriptGeneratorService.cs - Local script generation
GenerateScript()- Generates installation scripts locally without API calls- Handles all script formatting and command generation
ResilientHttpClient.cs - HTTP resilience with Polly
- Automatic retry logic with exponential backoff
- Handles transient failures gracefully
- Configurable retry policies (default: 3 retries)
- Comprehensive logging of retry attempts
PackageSelector.cs - Package and template selection logic
PopulateAllPackagesAsync()- Fetches and caches marketplace packagesSelectPackagesAsync()- Multi-select package prompt with searchSelectVersionsForPackagesAsync()- Version selection for each packageSelectTemplateAsync()- Template selection promptSelectTemplateVersionAsync()- Template version selection
ScriptExecutor.cs - Script execution logic
- Saves scripts to files
- Executes scripts automatically if requested
- Handles cross-platform script execution
4. UI Layer (User Interface Components)
ConsoleDisplay.cs - Static UI displays
DisplayWelcomeBanner()- ASCII art bannerDisplayHelp()- Comprehensive help textDisplayVersion()- Version information
ConfigurationDisplay.cs - Configuration display
DisplayFinalSelection()- Shows selected packages in tableDisplayConfigurationSummary()- Shows full configuration before generation
InteractivePrompts.cs - Interactive user prompts
- Project configuration prompts
- Starter kit selection
- Docker options
- Unattended install configuration
- Output format options
5. Models (Data Transfer Objects)
CommandLineOptions.cs - CLI argument parser
Parse()- Parses command-line argumentsHasAnyOptions()- Checks if any options are set- Properties for all CLI flags (25+ options including template package name)
API Models (Models/Api/)
ScriptModel.cs- Complete script configurationScriptRequest/Response.cs- Script generation DTOsPackageVersionRequest/Response.cs- Package version DTOs
Domain Models
PagedPackagesPackage.cs- Marketplace package modelPackageCategory.cs- Package category enumeration
6. Infrastructure
Logging/ - Logging infrastructure
LoggerSetup.cs- Serilog configuration (file + console)ErrorHandler.cs- Centralized error handling with user-friendly messages
Configuration/
ApiConfiguration.cs- API base URL and settings
Exceptions/
PswException.cs- Custom exception types with user guidance
Validation/
InputValidator.cs- Input validation and sanitization
Key Features in Code
Async/Await Pattern
Package data fetching uses async/await for non-blocking operations:
var versions = await apiClient.GetPackageVersionsAsync(package, includePrerelease: false);
Resilience with Polly
Automatic retry logic with exponential backoff for HTTP requests:
var retryPolicy = Policy
.Handle<HttpRequestException>()
.WaitAndRetryAsync(
retryCount: 3,
sleepDurationProvider: retryAttempt =>
TimeSpan.FromSeconds(Math.Pow(2, retryAttempt))
);
Structured Logging with Serilog
Comprehensive logging to file and console:
logger.LogInformation("Fetching package versions for {PackageId}", packageId);
logger.LogDebug("Received response with length {Length}", responseContent.Length);
logger.LogError(ex, "Failed to fetch package versions");
Log files are saved to: logs/psw-cli-{Date}.log
Enable verbose mode with:
--verboseflagPSW_VERBOSE=1environment variable
Spectre.Console Integration
- MultiSelectionPrompt - For selecting multiple packages
- SelectionPrompt - For selecting single options (versions, database types, starter kits, templates, etc.)
- TextPrompt with Secret - For secure password input
- Confirm - For yes/no prompts
- Status/Spinner - For showing progress during data fetching and script generation
- Table - For displaying package selections and configuration summary
- Panel - For showing generated scripts
- FigletText - For ASCII art banner
Error Handling
Centralized error handling with custom exceptions and user guidance:
try
{
// API operations
}
catch (ApiException ex)
{
ErrorHandler.Handle(ex, logger, showStackTrace: verboseMode);
}
Custom exceptions include:
- ApiException - API communication errors with user-friendly messages
- PswException - General CLI errors with guidance
API Integration
The tool connects to the Package Script Writer API for package information:
- Base URL:
https://psw.codeshare.co.uk - Endpoints:
POST /api/scriptgeneratorapi/getpackageversions- Get package versions from NuGetGET /api/scriptgeneratorapi/getallpackages- Get all Umbraco Marketplace packages
Note: Script generation is performed locally by the CLI tool itself, not via the API. The tool only uses the API to fetch package information and versions from the Umbraco Marketplace.
Configuration
API Configuration
The API base URL is configured in Configuration/ApiConfiguration.cs:
public static class ApiConfiguration
{
public const string ApiBaseUrl = "https://psw.codeshare.co.uk";
}
HTTP Client Settings
Configured in Services/ApiClient.cs:
- Timeout: 90 seconds (for large package lists)
- Retry Policy: 3 retries with exponential backoff (via Polly)
- Base Address: From ApiConfiguration
Logging Configuration
Configured in Logging/LoggerSetup.cs:
- Console Logging: Always enabled (Info level by default, Debug in verbose mode)
- File Logging: Optional (saved to
logs/psw-cli-{Date}.log) - Verbose Mode: Enable with
--verboseorPSW_VERBOSE=1
Troubleshooting
Package Not Found
If a package cannot be found:
- Verify the package name is correct
- Check if the package exists on NuGet.org or Umbraco Marketplace
- Ensure you have internet connectivity
- Enable verbose mode to see detailed API calls:
psw --verbose
API Connection Issues
If you cannot fetch package information:
- Check your internet connection
- The API is used only for fetching package data from the Umbraco Marketplace
- Script generation is performed locally and does not require API connectivity
- Verify the API is accessible: https://psw.codeshare.co.uk/api/docs
- Check firewall settings
- The tool automatically retries failed requests 3 times with exponential backoff
- Check log files in
logs/directory for detailed error information
Enable Verbose Logging
For detailed diagnostic output:
Option 1: Command-line flag
psw --verbose
Option 2: Environment variable
export PSW_VERBOSE=1 # Linux/macOS
set PSW_VERBOSE=1 # Windows CMD
$env:PSW_VERBOSE=1 # Windows PowerShell
psw
Log file location: logs/psw-cli-{Date}.log
Verbose mode shows:
- Detailed API request/response information
- HTTP retry attempts
- Package fetching progress
- Internal workflow steps
- Full exception stack traces
Slow Package Loading
If package loading is slow:
- The tool fetches 150+ packages from the marketplace on first run
- Subsequent selections use cached data
- Retry logic may add 5-10 seconds for failed requests
- Check your internet connection speed
.NET Version Issues
Ensure you have .NET 10.0 SDK installed:
dotnet --version
If not, download from: https://dotnet.microsoft.com/download
Log Files
Log files are automatically created in the logs/ directory:
- Format:
psw-cli-YYYYMMDD.log - Rolling: One file per day
- Retention: Logs are kept indefinitely (manually clean up old logs)
- Location:
./logs/in the current working directory
To view recent logs:
# Linux/macOS
tail -f logs/psw-cli-$(date +%Y%m%d).log
# Windows PowerShell
Get-Content logs\psw-cli-$(Get-Date -Format 'yyyyMMdd').log -Wait -Tail 50
Development
Adding New Features
The code is modularized for easy extension:
- Add new UI prompts - Use Spectre.Console prompts
- Add new API endpoints - Extend
ApiClientclass - Customize display - Modify display methods
Code Comments
The code includes extensive comments explaining:
- Method purposes
- Parameter descriptions
- Key logic decisions
- API interactions
Publishing to NuGet
To publish this tool to NuGet.org:
Build and pack the project:
cd src dotnet pack PackageCliTool -c ReleaseGet your NuGet API key from https://www.nuget.org/account/apikeys
Push to NuGet:
dotnet nuget push PackageCliTool/bin/Release/PackageScriptWriter.Cli.1.0.0-beta.nupkg \ --api-key YOUR_API_KEY \ --source https://api.nuget.org/v3/index.jsonVerify publication at https://www.nuget.org/packages/PackageScriptWriter.Cli
Version Management
Beta/Pre-release versions:
- Format:
1.0.0-beta,1.0.0-beta.1,1.0.0-rc1,1.0.0-alpha - Edit
<Version>inPackageCliTool.csproj - Users must use
--prereleaseflag to install
Stable versions:
- Format:
1.0.0,1.1.0,2.0.0 - Remove the suffix (e.g., change
1.0.0-betato1.0.0) - Users can install without
--prereleaseflag
Version progression example:
1.0.0-alpha- Early testing1.0.0-beta- Feature complete, testing1.0.0-beta.2- Beta updates1.0.0-rc1- Release candidate1.0.0- Stable release1.0.1- Patch release1.1.0- Minor version with new features2.0.0- Major version with breaking changes
Dependencies
Spectre.Console (v0.49.1) - Terminal UI framework
- Rich formatting and colors
- Interactive prompts
- Progress indicators
- Tables and panels
Serilog (v4.2.0) - Structured logging framework
Serilog.Extensions.Logging(v8.0.0) - Microsoft.Extensions.Logging integrationSerilog.Sinks.Console(v6.0.0) - Console outputSerilog.Sinks.File(v6.0.0) - File output with rolling logs
Polly (v8.5.0) - Resilience and transient fault handling
Polly.Extensions.Http(v3.0.0) - HTTP retry policies
Microsoft.Extensions.Logging (v9.0.0) - Logging abstractions
Microsoft.Extensions.Logging.Console(v9.0.0) - Console logging
Microsoft.SourceLink.GitHub (v8.0.0) - Source debugging support
License
This project is part of the Package Script Writer application.
Links
- Main Repository: https://github.com/prjseal/Package-Script-Writer
- API Documentation: https://github.com/prjseal/Package-Script-Writer/blob/main/.github/api-reference.md
- Swagger UI: https://psw.codeshare.co.uk/api/docs
Support
For issues or questions:
- Check the API documentation
- Review the Swagger UI for endpoint details
- Open an issue on the main repository
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
This package has no dependencies.
| Version | Downloads | Last Updated |
|---|---|---|
| 1.0.0-beta006 | 40 | 12/15/2025 |
| 1.0.0-beta005 | 69 | 12/12/2025 |
| 1.0.0-beta004 | 376 | 12/10/2025 |
| 1.0.0-beta003 | 372 | 12/10/2025 |
| 1.0.0-beta002 | 379 | 12/9/2025 |
| 1.0.0-beta001 | 376 | 12/9/2025 |