Skip to main content

A CLI tool to duplicate and sync file content with advanced transformations.

Project description

Ties 🔗

PyPI version Python versions License: MIT Code style: black Imports: isort Linting: Ruff

A powerful CLI tool to duplicate and sync file content with advanced transformations. Keep your repository files in sync automatically with intelligent content synchronization.

✨ Features

  • File Synchronization: Automatically keep multiple files in sync across your repository
  • Advanced Transformations: Apply custom transformations during file copying
  • Pre-commit Integration: Enforce file consistency as part of your development workflow
  • Configuration-Driven: Simple TOML-based configuration
  • Environment Variable Support: Embed environment variables in target files
  • Cross-Platform: Works on Windows, macOS, and Linux

🚀 Quick Start

Installation

# Install from PyPI
pip install ties

# Or install with YAML support
pip install ties[yaml]

# Or install from source
git clone https://github.com/AlonKellner/ties.git
cd ties
pip install -e .

Basic Usage

  1. Create a configuration in your pyproject.toml:
[tool.ties]
[[tool.ties.tie]]
name = "gitignore sync"
source = ".gitignore"
target = "examples/.gitignore"
  1. Check for discrepancies:
ties check
  1. Fix discrepancies automatically:
ties fix

Advanced Configuration

[tool.ties]
[[tool.ties.tie]]
name = "Environment Config"
source = ".ties/config.template"
targets = [".env.local", ".env.production"]
transform = "ties:embed_environ"

[[tool.ties.tie]]
name = "Documentation Sync"
source = "README.md"
target = "docs/README.md"
transform = "transform:markdown_cleanup"

📖 Documentation

🤝 Contributing

We welcome contributions! Please see our Contributing Guide for details.

Development Setup

# Clone the repository
git clone https://github.com/AlonKellner/ties.git
cd ties

# Create virtual environment
uv venv
source .venv/bin/activate  # On Windows: .venv\Scripts\activate

# Install dependencies
uv pip install -e ".[dev]"

# Install pre-commit hooks
pre-commit install

# Run tests
pytest

📝 License

This project is licensed under the MIT License - see the LICENSE file for details.

🙏 Acknowledgments

  • Built with modern Python tooling (uv, ruff, pytest)
  • CI/CD powered by GitHub Actions
  • Security scanning with Trivy

📊 Project Status

  • Development Status: Alpha (3)
  • Python Support: 3.10+
  • License: MIT
  • Maintainer: Alon Kellner

Made with ❤️ by the Ties community

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

ties-0.0.0a6.tar.gz (43.9 kB view details)

Uploaded Source

Built Distribution

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

ties-0.0.0a6-py3-none-any.whl (9.4 kB view details)

Uploaded Python 3

File details

Details for the file ties-0.0.0a6.tar.gz.

File metadata

  • Download URL: ties-0.0.0a6.tar.gz
  • Upload date:
  • Size: 43.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for ties-0.0.0a6.tar.gz
Algorithm Hash digest
SHA256 c73cbec49fb43ebe7a25b8c4759910d84a86cd522d1d978e9ea37d34b3ba7948
MD5 dc49c7e3b46b6a48c436cb6717f9c54a
BLAKE2b-256 5fd9d76c62cb7de6344cd30dcf1ab1d43f3b13d01185c76061a79cc0e8c944d0

See more details on using hashes here.

Provenance

The following attestation bundles were made for ties-0.0.0a6.tar.gz:

Publisher: publish.yml on AlonKellner/ties

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ties-0.0.0a6-py3-none-any.whl.

File metadata

  • Download URL: ties-0.0.0a6-py3-none-any.whl
  • Upload date:
  • Size: 9.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for ties-0.0.0a6-py3-none-any.whl
Algorithm Hash digest
SHA256 31da44b37faa8467a8acab474278eeecf09bd2efdd653db1d18b6477542f913f
MD5 161ef04d5e5f8575f00bec8529739328
BLAKE2b-256 77614cb37d0b641cab314ba11730ba4eb35b251b3197443e9705dc0e0370d01e

See more details on using hashes here.

Provenance

The following attestation bundles were made for ties-0.0.0a6-py3-none-any.whl:

Publisher: publish.yml on AlonKellner/ties

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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