Skip to main content

Config Service

Configuration service for managing project and global settings

Overview

Provides TOML-based configuration management with backup/restore capabilities.

Classes

ConfigService

Abstract interface for configuration management

Inherits from: ABC

Abstract class

Methods

backup_config
backup_config(self, project_path: pathlib.Path) -> pathlib.Path

Create backup of project configuration

Parameters:

  • project_path (Path, required)

Returns: Path

expand_branch_name
expand_branch_name(self, pattern: str, context: Dict[str, str]) -> str

Expand branch name pattern with context variables

Parameters:

  • pattern (str, required)
  • context (Dict, required)

Returns: str

expand_special_placeholders
expand_special_placeholders(self, pattern: str) -> str

Expand special placeholders like \{number-3\}, \{date\}, \{datetime\}

Parameters:

  • pattern (str, required)

Returns: str

generate_branch_name
generate_branch_name(self, pattern: str, context: Dict[str, str], validation_rules: List[str]) -> Tuple[str, bool, Optional[str]]

Generate and validate a branch name from pattern and context

Parameters:

  • pattern (str, required)
  • context (Dict, required)
  • validation_rules (List, required)

Returns: Tuple

get_merged_config
get_merged_config(self, project_path: pathlib.Path) -> specify_cli.models.config.ProjectConfig

Get merged configuration (global defaults + project overrides)

Parameters:

  • project_path (Path, required)

Returns: ProjectConfig

load_global_config
load_global_config(self) -> Optional[specify_cli.models.config.ProjectConfig]

Load global configuration from ~/.specify/config.toml

Returns: Optional

load_project_config
load_project_config(self, project_path: pathlib.Path) -> Optional[specify_cli.models.config.ProjectConfig]

Load project configuration from .specify/config.toml

Parameters:

  • project_path (Path, required)

Returns: Optional

load_project_config_cross_platform
load_project_config_cross_platform(self, project_path: pathlib.Path, platform_name: str) -> Optional[specify_cli.models.config.ProjectConfig]

Load project configuration with cross-platform compatibility

Parameters:

  • project_path (Path, required)
  • platform_name (str, required)

Returns: Optional

restore_config
restore_config(self, project_path: pathlib.Path, backup_path: pathlib.Path) -> bool

Restore configuration from backup

Parameters:

  • project_path (Path, required)
  • backup_path (Path, required)

Returns: bool

save_global_config
save_global_config(self, config: specify_cli.models.config.ProjectConfig) -> bool

Save global configuration to ~/.specify/config.toml

Parameters:

  • config (ProjectConfig, required)

Returns: bool

save_project_config
save_project_config(self, project_path: pathlib.Path, config: specify_cli.models.config.ProjectConfig) -> bool

Save project configuration to .specify/config.toml

Parameters:

  • project_path (Path, required)
  • config (ProjectConfig, required)

Returns: bool

save_project_config_cross_platform
save_project_config_cross_platform(self, project_path: pathlib.Path, config: specify_cli.models.config.ProjectConfig, platform_name: str) -> bool

Save project configuration with cross-platform compatibility

Parameters:

  • project_path (Path, required)
  • config (ProjectConfig, required)
  • platform_name (str, required)

Returns: bool

validate_branch_name_against_rules
validate_branch_name_against_rules(self, branch_name: str, validation_rules: List[str]) -> Tuple[bool, Optional[str]]

Validate a generated branch name against validation rules

Parameters:

  • branch_name (str, required)
  • validation_rules (List, required)

Returns: Tuple

validate_branch_name_matches_pattern
validate_branch_name_matches_pattern(self, branch_name: str, pattern: str) -> Tuple[bool, Optional[str]]

Validate if a branch name matches a given pattern

Parameters:

  • branch_name (str, required)
  • pattern (str, required)

Returns: Tuple

validate_branch_naming_config
validate_branch_naming_config(self, config: 'BranchNamingConfig') -> Tuple[bool, Optional[str]]

Validate a complete BranchNamingConfig object

Parameters:

  • config (BranchNamingConfig, required)

Returns: Tuple

validate_branch_pattern
validate_branch_pattern(self, pattern: str) -> Tuple[bool, Optional[str]]

Validate branch naming pattern

Parameters:

  • pattern (str, required)

Returns: Tuple

TomlConfigService

TOML-based configuration service implementation

Inherits from: ConfigService

Methods

backup_config
backup_config(self, project_path: pathlib.Path) -> pathlib.Path

Create backup of project configuration

Parameters:

  • project_path (Path, required)

Returns: Path

ensure_project_config
ensure_project_config(self, project_path: pathlib.Path, ai_assistant: str, branch_naming_config: Optional[ForwardRef('BranchNamingConfig')] = None) -> specify_cli.models.config.ProjectConfig

Ensure project has valid configuration, creating defaults if needed

Parameters:

  • project_path (Path, required)
  • ai_assistant (str, required)
  • branch_naming_config (Optional, optional)

Returns: ProjectConfig

expand_branch_name
expand_branch_name(self, pattern: str, context: Dict[str, str]) -> str

Expand branch name pattern with context variables

Parameters:

  • pattern (str, required)
  • context (Dict, required)

Returns: str

expand_special_placeholders
expand_special_placeholders(self, pattern: str) -> str

Expand special placeholders like \{number-3\}, \{date\}, \{datetime\}

Parameters:

  • pattern (str, required)

Returns: str

generate_branch_name
generate_branch_name(self, pattern: str, context: Dict[str, str], validation_rules: List[str]) -> Tuple[str, bool, Optional[str]]

Generate and validate a branch name from pattern and context

Parameters:

  • pattern (str, required)
  • context (Dict, required)
  • validation_rules (List, required)

Returns: Tuple

get_merged_config
get_merged_config(self, project_path: pathlib.Path) -> specify_cli.models.config.ProjectConfig

Get merged configuration (global defaults + project overrides)

Parameters:

  • project_path (Path, required)

Returns: ProjectConfig

load_global_config
load_global_config(self) -> Optional[specify_cli.models.config.ProjectConfig]

Load global configuration from ~/.specify/config.toml

Returns: Optional

load_project_config
load_project_config(self, project_path: pathlib.Path) -> Optional[specify_cli.models.config.ProjectConfig]

Load project configuration from .specify/config.toml

Parameters:

  • project_path (Path, required)

Returns: Optional

load_project_config_cross_platform
load_project_config_cross_platform(self, project_path: pathlib.Path, platform_name: str) -> Optional[specify_cli.models.config.ProjectConfig]

Load project configuration with cross-platform compatibility.

Parameters:

  • project_path (Path, required) - Path to the project directory
  • platform_name (str, required) - Name of the platform (windows, macos, linux)

Returns: Optional

restore_config
restore_config(self, project_path: pathlib.Path, backup_path: pathlib.Path) -> bool

Restore configuration from backup

Parameters:

  • project_path (Path, required)
  • backup_path (Path, required)

Returns: bool

save_global_config
save_global_config(self, config: specify_cli.models.config.ProjectConfig) -> bool

Save global configuration to ~/.specify/config.toml

Parameters:

  • config (ProjectConfig, required)

Returns: bool

save_project_config
save_project_config(self, project_path: pathlib.Path, config: specify_cli.models.config.ProjectConfig) -> bool

Save project configuration to .specify/config.toml

Parameters:

  • project_path (Path, required)
  • config (ProjectConfig, required)

Returns: bool

save_project_config_cross_platform
save_project_config_cross_platform(self, project_path: pathlib.Path, config: specify_cli.models.config.ProjectConfig, platform_name: str) -> bool

Save project configuration with cross-platform compatibility.

Parameters:

  • project_path (Path, required) - Path to the project directory
  • config (ProjectConfig, required) - Project configuration to save
  • platform_name (str, required) - Name of the platform (windows, macos, linux)

Returns: bool

validate_branch_name_against_rules
validate_branch_name_against_rules(self, branch_name: str, validation_rules: List[str]) -> Tuple[bool, Optional[str]]

Validate a generated branch name against validation rules

Parameters:

  • branch_name (str, required)
  • validation_rules (List, required)

Returns: Tuple

validate_branch_name_matches_pattern
validate_branch_name_matches_pattern(self, branch_name: str, pattern: str) -> Tuple[bool, Optional[str]]

Validate if a branch name matches a given pattern

Parameters:

  • branch_name (str, required)
  • pattern (str, required)

Returns: Tuple

validate_branch_naming_config
validate_branch_naming_config(self, config: 'BranchNamingConfig') -> Tuple[bool, Optional[str]]

Validate a complete BranchNamingConfig object

Parameters:

  • config (BranchNamingConfig, required)

Returns: Tuple

validate_branch_pattern
validate_branch_pattern(self, pattern: str) -> Tuple[bool, Optional[str]]

Validate branch naming pattern

Parameters:

  • pattern (str, required)

Returns: Tuple

Constants

  • TYPE_CHECKING (bool) = False