mirror of
https://github.com/Grace-Solutions/PSMinIO.git
synced 2026-07-26 14:58:13 +00:00
90c64d3237
- Reorganized project structure with proper directory separation: * All scripts moved to scripts/ directory (including examples) * All documentation moved to docs/ directory (except README.md) * Centralized version management in Version.ps1 - Implemented centralized version management system: * Version.ps1 provides single source of truth for version information * Automatic yyyy.MM.dd.HHmm versioning based on build time * scripts/Update-Version.ps1 updates all version references * src/Properties/AssemblyInfo.cs for assembly version information - Enhanced build system: * scripts/Build.ps1 - Full build with validation and packaging * scripts/Quick-Build.ps1 - Fast build handling file locking issues * Removed automatic copy from project file to avoid locking * Integrated version updates into build process - Updated PowerShell Gallery publishing: * scripts/Publish-PSMinIOToGallery.ps1 updated for new structure * docs/POWERSHELL-GALLERY-RELEASE.md comprehensive publishing guide * Module manifest updated with proper metadata and release notes - Updated all documentation and examples: * README.md updated with PowerShell Gallery installation * All example scripts updated with correct import paths * scripts/examples/README.md updated for new location * docs/PROJECT-STRUCTURE.md documents new organization - Version updated to 2025.07.11.1151 with centralized management - All import paths corrected for new structure - Professional project organization following PowerShell best practices
6.5 KiB
6.5 KiB
PSMinIO Project Structure
This document describes the reorganized project structure and centralized version management system.
Directory Structure
PSMinIO/
├── README.md # Main project documentation
├── LICENSE # Project license
├── PSMinIO.csproj # Main project file
├── Version.ps1 # Centralized version configuration
│
├── src/ # Source code
│ ├── Properties/
│ │ └── AssemblyInfo.cs # Assembly version information
│ ├── Cmdlets/ # PowerShell cmdlet implementations
│ ├── Models/ # Data models and result objects
│ └── Utils/ # Utility classes and helpers
│
├── Module/ # Built module directory
│ └── PSMinIO/
│ ├── PSMinIO.psd1 # Module manifest
│ ├── bin/ # Compiled assemblies
│ └── types/ # PowerShell type and format files
│
├── scripts/ # All PowerShell scripts
│ ├── Build.ps1 # Main build script
│ ├── Quick-Build.ps1 # Quick build without file locking issues
│ ├── Update-Version.ps1 # Version update script
│ ├── Publish-PSMinIOToGallery.ps1 # PowerShell Gallery publishing
│ └── examples/ # Usage examples
│ ├── README.md # Examples documentation
│ ├── 01-Basic-Operations.ps1
│ ├── 02-Advanced-Object-Listing.ps1
│ ├── 03-Directory-Management.ps1
│ ├── 04-Chunked-Operations.ps1
│ ├── 05-Bulk-Operations.ps1
│ └── 06-Enterprise-Automation.ps1
│
├── docs/ # Documentation
│ ├── USAGE.md # Comprehensive usage guide
│ ├── RELEASE-NOTES.md # Release notes
│ ├── POWERSHELL-GALLERY-RELEASE.md # Gallery release guide
│ └── PROJECT-STRUCTURE.md # This file
│
├── Artifacts/ # Build artifacts
├── Publish/ # Publishing staging area
└── bin/ # Build output
Version Management System
Centralized Version Configuration
The project uses a centralized version management system based on Version.ps1:
- Version Format:
yyyy.MM.dd.HHmm(e.g.,2025.07.11.1151) - Automatic Generation: Version is generated based on current date/time
- Centralized Updates: Single script updates all version references
Version Files
- Version.ps1 - Master version configuration
- src/Properties/AssemblyInfo.cs - Assembly version information
- Module/PSMinIO/PSMinIO.psd1 - PowerShell module manifest
Version Update Process
# Update all version information
.\scripts\Update-Version.ps1
# Build with updated version
.\scripts\Quick-Build.ps1
Build System
Build Scripts
- scripts/Build.ps1 - Full build with validation and packaging
- scripts/Quick-Build.ps1 - Fast build for development (handles file locking)
- scripts/Update-Version.ps1 - Version management
Build Process
- Update version information across all files
- Clean previous build artifacts
- Compile .NET project
- Copy assemblies to module directory
- Validate module manifest
- Optional: Run tests and create packages
Handling File Locking
The Quick-Build script handles PowerShell file locking issues:
- Removes automatic copy from project file
- Manual copy with retry logic
- Graceful handling of locked files
Scripts Organization
Location
All scripts are now in the scripts/ directory:
- Build and deployment scripts in
scripts/ - Usage examples in
scripts/examples/
Import Paths
Example scripts use relative imports:
Import-Module ..\..\Module\PSMinIO\PSMinIO.psd1
Documentation Structure
Location
All documentation is in the docs/ directory except README.md:
README.md- Main project overview (root directory)docs/USAGE.md- Comprehensive usage guidedocs/RELEASE-NOTES.md- Version history and changesdocs/POWERSHELL-GALLERY-RELEASE.md- Publishing guidedocs/PROJECT-STRUCTURE.md- This structure guide
Content Organization
- README.md: Overview, installation, quick start
- USAGE.md: Detailed usage patterns and examples
- Examples: Practical scripts for common scenarios
- Release Notes: Version history and changes
Development Workflow
1. Making Changes
# Make code changes in src/
# Update documentation if needed
2. Building
# Quick build for testing
.\scripts\Quick-Build.ps1
# Full build with validation
.\scripts\Build.ps1
3. Testing
# Import and test module
Import-Module .\Module\PSMinIO\PSMinIO.psd1
# Run example scripts
.\scripts\examples\01-Basic-Operations.ps1
4. Committing
# Version is automatically updated during build
git add .
git commit -m "Description of changes"
git push
5. Publishing
# Publish to PowerShell Gallery
.\scripts\Publish-PSMinIOToGallery.ps1
Key Benefits
Centralized Version Management
- Single source of truth for version information
- Automatic timestamp-based versioning
- Consistent version across all files
Organized Structure
- Clear separation of concerns
- All scripts in dedicated directory
- Documentation properly organized
Improved Build Process
- Handles file locking issues
- Automatic version updates
- Validation and testing integration
Professional Documentation
- Comprehensive usage examples
- Clear project structure
- Publishing guidelines
Migration Notes
From Previous Structure
- Examples moved from
examples/toscripts/examples/ - Documentation moved to
docs/(except README.md) - Version management centralized in
Version.ps1 - Build process improved with Quick-Build option
Import Path Updates
All example scripts updated to use:
Import-Module ..\..\Module\PSMinIO\PSMinIO.psd1
Version Format Change
- Previous: Manual semantic versioning
- Current: Automatic date-based versioning (yyyy.MM.dd.HHmm)
- PowerShell Gallery: Uses semantic version for compatibility
This structure provides a professional, maintainable, and scalable foundation for the PSMinIO project.