[tool.poetry]
name = "terraflex"
version = "0.4.1"
description = ""
authors = ["Elran Shefer"]
readme = "README.md"
homepage = "https://github.com/IamShobe/terraflex"

[tool.poetry.dependencies]
python = "^3.12"
fastapi = { extras = ["standard"], version = "^0.112.2" }
pydantic = "^2.8.2"
pydantic-settings = "^2.4.0"
httpx = "^0.27.2"
xdg-base-dirs = "^6.0.1"
typer = "^0.12.5"
pyyaml = "^6.0.2"
requests = "^2.32.3"
rich = "^13.8.1"
questionary = "^2.0.1"
semver = "^3.0.2"

[tool.poetry.group.dev.dependencies]
ruff = "^0.6.3"
pytest = "^8.3.2"
anyio = "^4.4.0"
mkdocs-material = "^9.5.34"
mkdocs-include-dir-to-nav = "^1.2.0"
markdown-exec = {extras = ["ansi"], version = "^1.9.3"}
mkdocs-include-markdown-plugin = "^6.2.2"
mkdocstrings = {extras = ["python"], version = "^0.26.1"}
mkdocs-kroki-plugin = "^0.9.0"
pyright = "^1.1.381"

[build-system]
requires = ["poetry-core"]
build-backend = "poetry.core.masonry.api"

[tool.ruff]
line-length = 120
exclude = [
    ".bzr",
    ".direnv",
    ".eggs",
    ".git",
    ".git-rewrite",
    ".hg",
    ".ipynb_checkpoints",
    ".mypy_cache",
    ".nox",
    ".pants.d",
    ".pyenv",
    ".pytest_cache",
    ".pytype",
    ".ruff_cache",
    ".svn",
    ".tox",
    ".venv",
    ".vscode",
    "__pypackages__",
    "_build",
    "buck-out",
    "build",
    "dist",
    "node_modules",
    "site-packages",
    "venv",
]

[tool.ruff.lint]
select = [
    'F',      # Pyflakes
    'E',      # pycodestyle (Error)
    'I',      # isort
    'D',      # pydocstyle
    'UP',     # pyupgrade
    'YTT',    # flake8-2020
    'B',      # flake8-bugbear
    'T10',    # flake8-debugger
    'T20',    # flake8-print
    'C4',     # flake8-comprehensions
    'PYI006', # flake8-pyi
]
ignore = ['D105', 'D107', 'D205', 'D415', 'E501', 'B011', 'B028', 'B904', 'D100', 'D101', 'D102', 'D103']
flake8-quotes = {inline-quotes = 'single', multiline-quotes = 'double'}
isort = { known-first-party = ['pydantic', 'tests'] }
mccabe = { max-complexity = 14 }
pydocstyle = { convention = 'google' }

# Allow fix for all enabled rules (when `--fix`) is provided.
fixable = ["ALL"]
unfixable = []

# Allow unused variables when underscore-prefixed.
dummy-variable-rgx = "^(_+|(_+[a-zA-Z0-9_]*[a-zA-Z0-9]+?))$"

[tool.ruff.lint.per-file-ignores]
'terraflex/cli/*' = ['T201']

[tool.pyright]
include = ["terraflex"]
exclude = ["**/node_modules",
    "**/__pycache__",
]
strict = ["terraflex"]

executionEnvironments = [
  { root = "." }
]

[tool.poetry.scripts]
terraflex = "terraflex.cli.cli:main"

[tool.poetry.plugins."terraflex.plugins.storage_provider"]
git = "terraflex.plugins.git_storage_provider.git_storage_provider:GitStorageProvider"
local = "terraflex.plugins.local_storage_provider.local_storage_provider:LocalStorageProvider"
envvar = "terraflex.plugins.envvar_storage_provider.envvar_storage_provider:EnvVarStorageProvider"
onepassword = "terraflex.plugins.onepassword_storage_provider.onepassword_storage_provider:OnePasswordStorageProvider"

[tool.poetry.plugins."terraflex.plugins.transformer"]
encryption = "terraflex.plugins.encryption_transformation.encryption_transformation_provider:EncryptionTransformation"

[tool.poetry.plugins."terraflex.plugins.transformer.encryption"]
age = "terraflex.plugins.encryption_transformation.age.provider:AgeEncryptionProvider"

[tool.poetry.plugins."terraflex.plugins.dependencies"]
age = "terraflex.plugins.encryption_transformation.age.provider:AgeDependency"