Skip to content

Conversation

@Freewheelin
Copy link
Contributor

Add comprehensive user preferences system to streamline CLI workflows and customise output formatting.

Features

Server Creation Defaults

  • Set default values for --region, --size, --image, and other server creation parameters
  • Create servers with zero arguments once preferences are configured
  • Example: bl server create uses configured defaults while allowing command-line overrides

Output Formatting Preferences

  • Customise default columns for list commands (servers, images, domains, etc.)
  • Set once with format-servers, format-images, etc.
  • Applies automatically to all list commands while allowing per-command --format overrides

Terminal Settings

  • Configure terminal width for help text formatting
  • Set with terminal-width preference (numeric value or null for auto-detection)

Management Commands

  • bl preferences set <key> <value> - set or update a preference
  • bl preferences get [key] - view current preferences
  • bl preferences show [group] - display preferences with contextual help and available options
  • bl preferences set <key> null - reset to built-in defaults

Enhanced User Experience

  • preferences show server create displays all server creation defaults with command preview
  • Contextual help shows valid values and examples
  • Integration with existing configuration system (respects command-line > env > preferences > defaults priority)

Commands Added

  • preferences get
  • preferences set
  • preferences show
  • server create (wrapper that applies preferences to generated command)

Documentation

  • Comprehensive preferences guide in PREFERENCES.md
  • Updated README.md with preferences section and examples
  • Inline help for all preference keys

Use Case

Before:

bl server create --name web-01 --size std-min --image ubuntu-24.04 --region syd
bl server create --name web-02 --size std-min --image ubuntu-24.04 --region syd

After:

# Set once
bl preferences set default-region syd
bl preferences set default-size std-min
bl preferences set default-image ubuntu-24.04

# Use everywhere
bl server create
bl server create --name web-01

This feature reduces repetitive typing for users who frequently create servers with similar configurations or prefer customised list output formats.

Freewheelin added 8 commits October 9, 2025 16:58
Add comprehensive configuration options for user preferences including:

- Output format preferences (output-format, show-header)

- Per-command format preferences (format-images, format-servers, etc.)

- Server creation defaults (default-region, default-size, default-image, etc.)

- Terminal settings (terminal-width)
- Fix preferences_show.py to display boolean flags in --flag/--no-flag format

- Fix server_create.py to inject boolean preferences (backups, port-blocking) as CLI arguments instead of directly modifying request body

- Ensures default-port-blocking=false actually disables port blocking on new servers
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant