Media Management Command Line Interface
Summary
An intuitive command line interface that wraps boto3 to search and manage media assets
Installing mgmt & Supported Versions
mgmt is available on PyPI:
uv tool install mgmt
Media Management Command Line Interface officially supports Python 3.9, 3.10, 3.11, 3.12, 3.13, and 3.14.
Quick Start
- setup global config file
~/.config/mgmt/config
mgmt config
fill out prompts
mgmt config
check configs are correct
mgmt ls
Supported Features & Usage
For help, run:
➜ mgmt --help
Usage: mgmt [OPTIONS] COMMAND [ARGS]...
╭─ Options ───────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ --version Show the version and exit. │
│ --help Show this message and exit. │
╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
╭─ Commands ──────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ config Configures the application │
│ delete Deletes the specified file from S3; requires confirmation │
│ download Downloads the specified file from S3 │
│ ls Lists the files in the specified location │
│ search Searches for files that contain the specified keyword in their names │
│ status Retrieves and prints the metadata of the specified file │
│ upload Uploads the specified file to S3 │
╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
Why not use awscli?
You can, and I do, in tandem with mgmt -- the purpose is to create an additional interface that minimized the lookup/copy/paste process I found myself frequently going through
Development
To contribute to this tool, first checkout the code:
git clone https://github.com/will-wright-eng/media-mgmt-cli.git
cd media-mgmt-cli
Prerequisites
This project uses uv for fast and reliable dependency management. Install uv if you haven't already:
# Install uv (recommended)
curl -LsSf https://astral.sh/uv/install.sh | sh
# Or via pip
pip install uv
Development Setup
The project includes a comprehensive Makefile for development tasks:
# Complete project setup (installs dependencies and pre-commit hooks)
make setup
# Or manually:
uv sync --extra test --extra dev
uv run pre-commit install
Available Development Commands
# Run tests
make test
# Run linting and formatting
make lint
# Fix linting issues
make lint-fix
# Show CLI help
make cli
# Clean up build artifacts
make clean
# Show project status
make status
Code Quality
The project uses modern Python tooling for code quality:
- Ruff: Fast linting and formatting
- ty: Type checking
- Pre-commit: Automated quality checks
- Codespell: Spelling checks
All quality checks run automatically on commit via pre-commit hooks.
Why uv?
This project uses uv for dependency management because it offers:
- 🚀 Speed: 10-100x faster than pip for dependency resolution
- 🔒 Reliability: Deterministic builds with lock files
- 🛠️ Modern tooling: Built-in support for virtual environments, project management, and publishing
- 📦 Better dependency resolution: More reliable conflict resolution than traditional tools
- 🔄 Drop-in replacement: Compatible with existing pip workflows
Project Status
This project follows modern Python development practices:
- ✅ Modern dependency management with
uv - ✅ Comprehensive CI/CD with GitHub Actions
- ✅ Automated code quality with Ruff, ty, and pre-commit
- ✅ Type safety with comprehensive type hints
- ✅ Testing with pytest and coverage reporting
- ✅ Documentation with automated quality checks
Modern Python Development
This project showcases modern Python development practices:
uvfor fast dependency management and project tooling- Ruff for lightning-fast linting and formatting
- ty for static type checking
- Pre-commit for automated quality gates
- GitHub Actions for CI/CD automation
- Hatchling for modern Python packaging
References
- PyPI Package
- uv Documentation
- Based on cookiecutter template will-wright-eng/click-app
- Rewrite of original project will-wright-eng/media_mgmt_cli
Release files for mgmt 0.11.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| mgmt-0.11.0.tar.gz | 80.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| mgmt-0.11.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 110.0 kB
Release files / mgmt-0.11.0.tar.gz
| Download URL | mgmt-0.11.0.tar.gz |
|---|---|
| Size | 80.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
e43b3837af90b3dc532f87b801d10f3d7c0aad03198e598d5e92ad9b1d51d48c
|
|
BLAKE2b-256 checksum How to use checksums |
c5adc984b6650881af01d8fc8791f847908dcfcae300d1aff3980212e52e998a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Release files / mgmt-0.11.0-py3-none-any.whl
| Download URL | mgmt-0.11.0-py3-none-any.whl |
|---|---|
| Size | 29.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
4afd4266d8948300ac9bcf978204243fd2eb792e7f319032536ddcf970f21e40
|
|
BLAKE2b-256 checksum How to use checksums |
f829e4317437dbdcfdca0410385375d09092f21b6f3fdd33a84c360bc1aaf58e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|