Skip to main content

A utility for generating templates in the most brain-dead way possible

Project description

bdtemplater

A utility for generating configurations in a brain-dead style using input from properties files.

By default, a terraform.tfvars file is used as input, which contains key-value pairs for a Terraform configuration.

By default, the tool reads a file called TEMPLATIZE.bdt

Values are substituted by a key arrangement, where the key is defined as @key@ in the template file (i.e surrounded by @ symbols).

Features

  • Parse Terraform .tfvars files
  • Generate configured output from templates
  • Support for custom post-processing functions
  • Command line interface for easy usage

Installation

Using uv (recommended)

# Install uv if you haven't already
curl -LsSf https://astral.sh/uv/install.sh | sh

uv tool install bdtemplater # This is usually what you want to do

# or install the package
uv pip install bdtemplater

# Or install in development mode with all dependencies
uv sync --group dev

Traditional pip

pip install bdtemplater

Usage

Command Line

Basic Usage

bdtemplater --help # Show help

bdtemplater # Write output to stdout using terraform.tfvars values and TEMPLATIZE.bdt template

bdtemplater NEWTEMPLATEFILE.bdt # Write output to stdout using terraform.tfvars values
bdtemplater TEMPLATIZE.bdt mytfvars.tfvars # Write output to stdout using mytfvars.tfvars values

bdtemplater --output myoutputfile.tf # Write TEMPLATIZE.bdt + terraform.tfvars output to myoutputfile.tf 

bdtemplater -k a,b,c # Use only keys a, b, c from terraform.tfvars

# Use a post-processing script. 
bdtemplater --import-module mymodule --post-process mypostprocess.py --output 

Using installed command

# Generate terraform configuration from terraform.tfvars
bdtemplater

# Or run directly with uv
uv run bdtemplater

Python API

from bdtemplater.bdtemplatize import generate_template

# Generate configuration
terraform_template = """
provider "aws" {
  region = var.region
}
"""

terraform_tfvars = """
project = "my-project"
env = "production"
bucket = "my-terraform-bucket"
region = "us-west-2"
lock_table = "my-lock-table"
databricks_version = "1.25.0"  # optional, defaults to 1.25.0
"""
result = generate_template(terraform_template, terraform_tfvars)
print(result)

Development

This project uses uv for dependency management and building.

Setup Development Environment

It is highly recommended that you use the devcontainer defined in .devcontainer for a consistent development environment.

Otherwise, you will need uv and make installed.

# Install development dependencies
uv sync --group dev

Running Tests

# Run simple tests (no dependencies required)
uv run python -m tests.simple_test_bdtemplatize

# Run full test suite
uv run --group test pytest tests/ -v

# Run tests with coverage
uv run --group test pytest tests/ --cov=src --cov-report=term-missing

# Or use make commands
make test
make test-cov

Code Quality

# Format code
uv run --group lint black src tests
uv run --group lint ruff format src tests

# Lint code
uv run --group lint ruff check src tests

# Type check
uv run --group lint mypy src

# use make commands
make format
make lint
make type-check

Building and Publishing

# Build the package
uv build

# Install locally
uv pip install .

Makefile Commands

For convenience, use the included Makefile:

make help            # Show all available commands
make dev-install     # Install with development dependencies  
make test            # Run all tests
make test-simple     # Run simple tests only
make test-script     # Test the direct bdtemplater script
make install-script  # Install bdtemplater script globally
make uninstall-script # Remove installed script
make lint            # Run code linting
make format          # Format code
make type-check      # Run type checking
make build           # Build the package
make clean           # Clean build artifacts

Configuration

The tool expects a terraform.tfvars file with the following variables:

project = "my-project"
env = "production"
bucket = "my-terraform-bucket"
region = "us-west-2"
lock_table = "my-lock-table"
databricks_version = "1.25.0"  # optional, defaults to 1.25.0

License

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

See the LICENSE file for full license text.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

bdtemplater-0.1.0.tar.gz (20.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

bdtemplater-0.1.0-py3-none-any.whl (13.6 kB view details)

Uploaded Python 3

File details

Details for the file bdtemplater-0.1.0.tar.gz.

File metadata

  • Download URL: bdtemplater-0.1.0.tar.gz
  • Upload date:
  • Size: 20.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.7.2

File hashes

Hashes for bdtemplater-0.1.0.tar.gz
Algorithm Hash digest
SHA256 a45f6619f5bb27c5de815e901359ec1831d799da1fc0c01ef27fd781bfd89fcc
MD5 f6d69e70ce9d1be9f8d7c9c6c84af72e
BLAKE2b-256 1b85d6c7f64daaa7fbf3cf87ef21350281f3f73b63cc6f93a6ffd11b3636e219

See more details on using hashes here.

File details

Details for the file bdtemplater-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for bdtemplater-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 8e52a0c1d219e66d9e44c17166372bde02f5969cc8044d6048d8687a00c7992e
MD5 fadf7e2c54076051f3edc146cb54d8c2
BLAKE2b-256 abd27b338b89f613c002376a5a5bb503d10fd0c0b9ef25958adb134064068e31

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page