Quarto Fetch
A command-line tool for managing multiple Quarto paper repositories in a research project. It automatically fetches, updates, and organizes Quarto paper repositories while maintaining their build caches.
Features
- 📦 Manage multiple Quarto paper repositories in a single project
- 🔄 Automatically fetch and update papers from Git repositories
- 🏗️ Support for both manuscript and default Quarto project types
- ❄️ Smart handling of Quarto freeze directories
- 📋 Detailed logging with progress tracking
- ⚡ Efficient updates by tracking commit hashes
- 🛡️ Built-in validation and error handling
Installation
We recommend using uv for installation. First, install uv if you haven't already:
curl -LsSf https://astral.sh/uv/install.sh | sh
Quick Run (Recommended)
Use uvx to run quartofetch directly without installation:
uvx quartofetch
Permanent Installation
If you prefer to install the tool permanently:
uv tool install quartofetch
Development Installation
For development work:
git clone https://github.com/MitchellAcoustics/quartofetch
cd quartofetch
uv sync
Quick Start
- Create a configuration file
research/_paper_sources.yml:
papers:
- repo_url: "https://github.com/username/paper1"
target_folder: "paper1"
branch: "main" # optional
- repo_url: "https://github.com/username/paper2"
target_folder: "paper2"
commit: "abc123" # optional, pin to specific commit
- Run the fetcher:
# Using uvx (recommended)
uvx quartofetch
# Or with specific options
uvx quartofetch --config path/to/config.yml --force --log-level DEBUG
# If permanently installed
quartofetch --config path/to/config.yml
Project Structure
The tool expects and creates the following directory structure:
your-research-project/
├── research/
│ ├── _paper_sources.yml
│ └── papers/
│ ├── paper1/
│ │ ├── _quarto.yml
│ │ ├── paper.qmd
│ │ └── ...
│ └── paper2/
│ ├── _quarto.yml
│ ├── manuscript.qmd
│ └── ...
└── _freeze/
└── research/
└── papers/
├── paper1/
│ └── ...
└── paper2/
└── ...
Configuration
Paper Sources (_paper_sources.yml)
| Field | Description | Required |
|---|---|---|
repo_url |
Git repository URL | Yes |
target_folder |
Local folder name | Yes |
branch |
Git branch to use | No |
commit |
Specific commit hash | No |
Command Line Options
| Option | Description | Default |
|---|---|---|
--config |
Path to configuration file | research/_paper_sources.yml |
--force |
Force update all papers | False |
--log-level |
Set logging level | SUCCESS |
--debug |
Enable debug logging | False |
--log-file |
Path to log file | None |
Error Handling
The tool includes comprehensive error handling for:
- Git operation failures
- Network timeouts
- Authentication issues
- Invalid configurations
- File system operations
Development
Requirements
- Python 3.12+
- Git
Testing
# Install development dependencies
uv sync # or pip install ".[dev]"
# Run tests
pytest
Contributing
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
License
This project is licensed under the MIT License - see the LICENSE file for details.
Metadata
Release files for quartofetch 0.1.4
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| quartofetch-0.1.4.tar.gz | 21.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| quartofetch-0.1.4-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 35.1 kB
Release files / quartofetch-0.1.4.tar.gz
| Download URL | quartofetch-0.1.4.tar.gz |
|---|---|
| Size | 21.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
8c2cc197fda30f3ba9b76ef64cd56b0b1d735bb830405e4b144a127249bf1035
|
|
BLAKE2b-256 checksum How to use checksums |
8b25ef4e8ec3aafd5b5141e8097bd94d111463289e9d2a50dd2d20831b64631e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/5.1.1 CPython/3.12.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Nov 7, 2024.
Transparency logRelease files / quartofetch-0.1.4-py3-none-any.whl
| Download URL | quartofetch-0.1.4-py3-none-any.whl |
|---|---|
| Size | 13.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
80f8e54befbd933bd4a7205b71a90b6e5259ad3f47ba8a1215e3a31efa0b9dc2
|
|
BLAKE2b-256 checksum How to use checksums |
3967041772b419dbaae5193b594024e91dd36d6bff8ee03fb4affe4a191c7153
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/5.1.1 CPython/3.12.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Nov 7, 2024.
Transparency log