# Dictator Configuration
# Decree-based structural enforcement for code quality
# Generated by: dictator occupy

[decree.supreme]
# Universal structural rules (applies to ALL files unless overridden)
trailing_whitespace = "deny"
tabs_vs_spaces = "spaces"
tab_width = 2
final_newline = "require"
line_endings = "lf"
blank_line_whitespace = "deny"
# max_line_length: opt-in per language (uncomment to enforce globally)

# Per-rule ignores (decree-level, not language-level)
# - Makefiles require tabs for recipes
# - Markdown can contain tabs inside code blocks
[decree.supreme.ignore.tab-character]
filenames = ["Makefile", "GNUmakefile", "makefile"]
extensions = ["md", "mdx"]

# Language-specific decrees (uncomment to enable)
# Remove the '#' from '[decree.LANGUAGE]' and its settings to activate

# [decree.ruby]
# # Ruby-specific structural enforcement
# max_line_length = 120
# max_lines = 300
# ignore_comments = true
# ignore_blank_lines = true
# method_visibility_order = ["public", "protected", "private"]
# comment_spacing = true
#
# # External linter integration (uncomment to enable)
# [decree.ruby.linter]
# command = "rubocop"

# [decree.typescript]
# # TypeScript/JavaScript structural enforcement
# max_line_length = 100
# max_lines = 350
# ignore_comments = true
# ignore_blank_lines = true
# import_order = ["system", "external", "internal"]
#
# # External linter integration (uncomment to enable)
# [decree.typescript.linter]
# command = "eslint"

# [decree.golang]
# # Go structural enforcement
# # Go convention: tabs, not spaces (overrides decree.supreme)
# tabs_vs_spaces = "tabs"
# max_line_length = 120
# max_lines = 450
# ignore_comments = true
# ignore_blank_lines = true
#
# # External linter integration (uncomment to enable)
# [decree.golang.linter]
# command = "gofmt"

[decree.rust]
# Rust structural enforcement
max_line_length = 100
max_lines = 400
ignore_comments = true
ignore_blank_lines = true
visibility_order = ["pub", "private"]

# External linter integration
[decree.rust.linter]
command = "clippy"

# [decree.python]
# # Python structural enforcement
# max_line_length = 88  # Black's default
# max_lines = 380
# ignore_comments = true
# ignore_blank_lines = true
# import_order = ["stdlib", "third_party", "local"]
#
# # External linter integration (uncomment to enable)
# [decree.python.linter]
# command = "ruff"

# [decree.frontmatter]
# # YAML frontmatter ordering for .md and .mdx files only
# # Does NOT handle: .astro (JS/TS frontmatter), .yml/.yaml, .toml
# order = ["title", "slug", "pubDate", "description", "tags", "draft"]
# required = ["title", "slug"]

# Custom decrees (WASM/native plugins)
# Uncomment and configure to enable custom linting rules
# [decree.kjr]
# enabled = true
# path = "path/to/dictator_kjr.wasm"
