4.6 KiB
4.6 KiB
Workspace Switching System (v2.0.5)
🚀 Workspace Switching Completed (2025-10-02)
A centralized workspace management system has been implemented, allowing seamless switching between multiple workspaces without manually editing configuration files. This builds upon the target-based configuration system.
Key Features
- Centralized Configuration: Single
user_config.yamlfile stores all workspace information - Simple CLI Commands: Switch workspaces with a single command
- Active Workspace Tracking: Automatic tracking of currently active workspace
- Workspace Registry: Maintain list of all known workspaces
- User Preferences: Global user settings that apply across all workspaces
- Automatic Updates: Last-used timestamps and metadata automatically managed
- Validation: Ensures workspaces have required configuration before activation
Workspace Management Commands
# List all registered workspaces
provisioning workspace list
# Show currently active workspace
provisioning workspace active
# Switch to another workspace
provisioning workspace activate <name>
provisioning workspace switch <name> # alias
# Register a new workspace
provisioning workspace register <name> <path> [--activate]
# Remove workspace from registry (does not delete files)
provisioning workspace remove <name> [--force]
# View user preferences
provisioning workspace preferences
# Set user preference
provisioning workspace set-preference <key> <value>
# Get user preference
provisioning workspace get-preference <key>
Central User Configuration
Location: ~/Library/Application Support/provisioning/user_config.yaml
Structure:
# Active workspace (current workspace in use)
active_workspace: "librecloud"
# Known workspaces (automatically managed)
workspaces:
- name: "librecloud"
path: "/Users/Akasha/project-provisioning/workspace_librecloud"
last_used: "2025-10-06T12:29:43Z"
- name: "production"
path: "/opt/workspaces/production"
last_used: "2025-10-05T10:15:30Z"
# User preferences (global settings)
preferences:
editor: "vim"
output_format: "yaml"
confirm_delete: true
confirm_deploy: true
default_log_level: "info"
preferred_provider: "upcloud"
# Metadata
metadata:
created: "2025-10-06T12:29:43Z"
last_updated: "2025-10-06T13:46:16Z"
version: "1.0.0"
Usage Example
# Start with workspace librecloud active
$ provisioning workspace active
Active Workspace:
Name: librecloud
Path: /Users/Akasha/project-provisioning/workspace_librecloud
Last used: 2025-10-06T13:46:16Z
# List all workspaces (● indicates active)
$ provisioning workspace list
Registered Workspaces:
● librecloud
Path: /Users/Akasha/project-provisioning/workspace_librecloud
Last used: 2025-10-06T13:46:16Z
production
Path: /opt/workspaces/production
Last used: 2025-10-05T10:15:30Z
# Switch to production
$ provisioning workspace switch production
✓ Workspace 'production' activated
Current workspace: production
Path: /opt/workspaces/production
ℹ All provisioning commands will now use this workspace
# All subsequent commands use production workspace
$ provisioning server list
$ provisioning taskserv create kubernetes
Integration with Config System
The workspace switching system integrates seamlessly with the configuration system:
- Active Workspace Detection: Config loader reads
active_workspacefromuser_config.yaml - Workspace Validation: Ensures workspace has required
config/provisioning.yaml - Configuration Loading: Loads workspace-specific configs automatically
- Automatic Timestamps: Updates
last_usedon workspace activation
Configuration Hierarchy (Priority: Low → High):
1. Workspace config workspace/{name}/config/provisioning.yaml
2. Provider configs workspace/{name}/config/providers/*.toml
3. Platform configs workspace/{name}/config/platform/*.toml
4. User config ~/Library/Application Support/provisioning/user_config.yaml
5. Environment variables PROVISIONING_*
Benefits
- ✅ No Manual Config Editing: Switch workspaces with single command
- ✅ Multiple Workspaces: Manage dev, staging, production simultaneously
- ✅ User Preferences: Global settings across all workspaces
- ✅ Automatic Tracking: Last-used timestamps, active workspace markers
- ✅ Safe Operations: Validation before activation, confirmation prompts
- ✅ Backward Compatible: Old
ws_{name}.yamlfiles still supported
For more detailed information, see Workspace Switching Guide.