Automated routine workflow runner for repository hygiene, backups, and dumps orchestration.
Project description
Routine Workflow
Production-grade automation for repository hygiene: code reformatting, cache cleaning, backups and dumps orchestration.
PyPI Version • Tests Coverage
Table of Contents
- Overview
- Key Features
- Installation
- Quick Start
- CLI Reference
- Configuration
- Workflow Steps
- Logging & Locking
- Testing & CI
- Development
- Troubleshooting
- Contributing
- License
Overview
routine_workflow is a small, robust Python package designed to automate routine repository maintenance tasks in production — including cleaning caches, running code formatting tools, creating backups, and producing code dumps via an external tool (formerly code-dump, now create-dump).
It is written for reliability in CI and on developer machines and intended to be easy to integrate into cronjobs, CI pipelines, or run interactively.
This repository follows a src/ layout and provides a CLI entrypoint, a dataclass-based configuration object, and a well-tested runner orchestration.
Key Features
- Deterministic, configurable workflow orchestration
- Safe locking to prevent concurrent runs
- Dry-run mode for previewing operations
- Pluggable external dump tool integration (
create-dump) - Parallelizable tasks (autoimport / formatting) with configurable worker count
- Thorough test coverage and CI-friendly behavior
Installation
Recommended: install inside a virtual environment.
# From PyPI (if published)
pip install routine-workflow
# From local source (editable)
git clone git@github.com:dhruv13x/routine-workflow.git
cd routine-workflow
python -m venv .venv
source .venv/bin/activate
pip install -e .
---
Quick Start
Run the workflow with defaults (uses sensible local defaults for logging, lock dir, and the create-dump helper script):
routine-workflow
# OR if running the package directly
python -m src.routine_workflow
Dry-run to preview actions without executing commands:
routine-workflow --dry-run
Run with increased verbosity (logs written to configured log_dir):
routine-workflow --project-root /path/to/project --log-dir /var/log/routine-workflow
---
CLI Reference
Run routine-workflow --help or refer to src/routine_workflow/cli.py for the most up-to-date options. Highlights:
--project-root PATH Project root (default: $PROJECT_ROOT or current dir)
--log-dir PATH Directory for rotating logs (default: /sdcard/tools/logs)
--log-file PATH Explicit log file path
--lock-dir PATH Directory used for locking (default: /tmp/routine_workflow.lock)
--clean-script PATH Path to clean helper script (default: /sdcard/tools/clean.py)
--backup-script PATH Path to backup helper script (default: /sdcard/tools/create_backup.py)
--create-dump-script PATH Path to external create-dump script (default: /sdcard/tools/run_create_dump.sh)
--create-dump-run-cmd ... Override base run command for the create-dump tool
--fail-on-backup Exit with error if backup fails
--yes Auto-confirm prompts
--dry-run Show actions without executing
--workers INT Parallel workers (default: min(8, CPU))
--workflow-timeout INT Overall timeout in seconds (0 = disabled)
--exclude-patterns PATTERN ... File discovery exclude patterns
---
Configuration
Runtime configuration is encapsulated in WorkflowConfig (src/routine_workflow/config.py).
You can supply configuration via CLI flags or environment variables.
Defaults:
LOG_DIR: /sdcard/tools/logs
LOCK_DIR: /tmp/routine_workflow.lock
CREATE_DUMP_SCRIPT: /sdcard/tools/run_create_dump.sh
WORKFLOW_TIMEOUT: 0 (disabled)
Config exposes:
create_dump_script: Path
create_dump_clean_cmd: List[str]
create_dump_run_cmd: List[str]
fail_on_backup: bool
auto_yes: bool
dry_run: bool
max_workers: int
workflow_timeout: int
exclude_patterns: List[str]
---
Workflow Steps
The workflow orchestrates these steps (under src/routine_workflow/steps):
1. delete_old_dumps — prune old dumps
2. reformat_code — run autoformatter / autoimport helpers
3. clean_caches — remove temporary caches and artifacts
4. backup_project — create a backup of the project
5. generate_dumps — call create-dump tool to produce project dumps
Each step is idempotent and resilient to failures; fail_on_backup controls whether workflow aborts on backup failure.
---
Logging & Locking
Logging uses a RotatingFileHandler (5MB, 5 backups) plus console output.
Runner enforces directory-based lock (config.lock_dir) to prevent concurrent runs, validated by PID file contents.
---
Testing & CI
Run the tests locally:
pip install -r requirements-dev.txt
pytest -q
Example coverage:
81 passed
coverage: 96.73%
CI suggestions:
Run tests on every PR
Run linting (black, flake8)
Publish coverage reports
---
Development
Recommended workflow for contributors:
# create feature branch
git checkout -b feat/your-change
# run tests & fix
pytest -q
# commit and push; open PR
git commit -am "Describe change"
git push origin feat/your-change
Maintain a clean src/ layout and keep WorkflowConfig stable for backward compatibility.
---
Troubleshooting
Q: Why does it ask for credentials when pushing?
A: Use SSH remotes (git@github.com:...) or store a PAT for HTTPS remotes.
Q: .pyc or .coverage files appear after tests.
A: Add .gitignore with __pycache__/, *.pyc, .coverage, .bak.
Q: External create-dump tool not found.
A: Ensure create-dump is installed or specify --create-dump-script.
---
Contributing
Contributions welcome.
1. Open an issue for major changes
2. Fork the repo and submit PRs against main
3. Keep changes small, tested, and documented
Add a CONTRIBUTING.md for release/versioning and commit conventions.
---
Release & Versioning
Uses semantic versioning.
Tag releases with:
git tag -a v2.0.0 -m "Rename code-dump → create-dump (stable release)"
git push origin v2.0.0
---
License
MIT License — see LICENSE file.
---
Maintainers / Contact
dhruv13x — primary maintainer
---
Thank you for using routine_workflow.
Optional: I can generate CONTRIBUTING.md, CHANGELOG.md, and .github/workflows/ci.yml for CI automation.
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file routine_workflow-3.2.0.tar.gz.
File metadata
- Download URL: routine_workflow-3.2.0.tar.gz
- Upload date:
- Size: 22.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
812ef7a483d9d778db37219c96cd6bcde2d4830cc4035081639dd75e78cb9911
|
|
| MD5 |
22f744d36b7d7b2c140526c3d3b4bd7b
|
|
| BLAKE2b-256 |
a7c4f9cec0107809daceadbd46ea507020d7acfb17a86ac84eccd26612823464
|
Provenance
The following attestation bundles were made for routine_workflow-3.2.0.tar.gz:
Publisher:
publish.yml on dhruv13x/routine-workflow
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
routine_workflow-3.2.0.tar.gz -
Subject digest:
812ef7a483d9d778db37219c96cd6bcde2d4830cc4035081639dd75e78cb9911 - Sigstore transparency entry: 661106559
- Sigstore integration time:
-
Permalink:
dhruv13x/routine-workflow@ce133e638af61d4d6a34a2da8e73a143ef0ab401 -
Branch / Tag:
refs/tags/v3.2.0 - Owner: https://github.com/dhruv13x
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@ce133e638af61d4d6a34a2da8e73a143ef0ab401 -
Trigger Event:
push
-
Statement type:
File details
Details for the file routine_workflow-3.2.0-py3-none-any.whl.
File metadata
- Download URL: routine_workflow-3.2.0-py3-none-any.whl
- Upload date:
- Size: 16.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
957346d6552544e5fbc33be80fb751d1adb59aa866dedb950856e90f7df02dd7
|
|
| MD5 |
902d897ab03e34f0c1819d62479b40fc
|
|
| BLAKE2b-256 |
c5017d7bdb1f8b696415e726c0dc2a189424d6a628f2bd254fd9cf18edd438fd
|
Provenance
The following attestation bundles were made for routine_workflow-3.2.0-py3-none-any.whl:
Publisher:
publish.yml on dhruv13x/routine-workflow
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
routine_workflow-3.2.0-py3-none-any.whl -
Subject digest:
957346d6552544e5fbc33be80fb751d1adb59aa866dedb950856e90f7df02dd7 - Sigstore transparency entry: 661106562
- Sigstore integration time:
-
Permalink:
dhruv13x/routine-workflow@ce133e638af61d4d6a34a2da8e73a143ef0ab401 -
Branch / Tag:
refs/tags/v3.2.0 - Owner: https://github.com/dhruv13x
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@ce133e638af61d4d6a34a2da8e73a143ef0ab401 -
Trigger Event:
push
-
Statement type: