TaskValidator.Config (TaskValidator v0.8.1)

View Source

Configuration module for TaskValidator.

Provides a centralized way to access and validate configuration options for the TaskValidator library. All configuration is read from the Application environment under the :task_validator key.

Configuration Options

Validation Rules

  • :valid_statuses - List of valid task statuses. Default: ["Planned", "In Progress", "Review", "Completed", "Blocked"]

  • :valid_priorities - List of valid task priorities. Default: ["Critical", "High", "Medium", "Low"]

  • :id_regex - Regular expression for validating task IDs. Default: ~r/^[A-Z]{2,4}\d{3,4}(-\d+|[a-z])?$/

  • :rating_regex - Regular expression for validating review ratings. Default: ~r/^([1-5](\.)?) *((partial))?$/

Code Quality KPIs

  • :max_functions_per_module - Maximum allowed functions per module. Default: 5

  • :max_lines_per_function - Maximum allowed lines per function. Default: 15

  • :max_call_depth - Maximum allowed call depth. Default: 2

Task Categories

  • :category_ranges - Map of category names to number ranges. Default:
    %{
      "core" => {1, 99},
      "features" => {100, 199},
      "documentation" => {200, 299},
      "testing" => {300, 399}
    }

Example Configuration

# config/config.exs
config :task_validator,
  valid_statuses: ["Planning", "Active", "Done", "Paused"],
  max_functions_per_module: 7,
  category_ranges: %{
    "infrastructure" => {1, 50},
    "business_logic" => {51, 150},
    "ui" => {151, 250},
    "testing" => {251, 350}
  }

Summary

Functions

Gets a configuration value with validation.

Gets all configuration as a map.

Validates a configuration value.

Functions

get(key)

@spec get(atom()) :: any()

Gets a configuration value with validation.

Returns the configured value or the default if not set. Validates the configuration value matches expected type and constraints.

Examples

iex> TaskValidator.Config.get(:valid_statuses)
["Planned", "In Progress", "Review", "Completed", "Blocked"]

iex> TaskValidator.Config.get(:max_functions_per_module)
5

get_all()

@spec get_all() :: map()

Gets all configuration as a map.

Returns a map with all configuration values, using defaults for any unconfigured options.

validate_config_value(key, value)

@spec validate_config_value(atom(), any()) :: :ok | {:error, String.t()}

Validates a configuration value.

Returns :ok if valid, or {:error, reason} if invalid.