Dual-pane terminal file manager for Artifactory
Project description
arty-mc
o o o o
<|> <|> <|\ /|>
/ \ < > / \\o o// \
o/ \o \o__ __o | o o \o/ v\ /v \o/ __o__
<|__ __|> | |> o__/_ <|> <|> _\__o__ | <\/> | /> \
/ \ / \ < > | < > < > \ / \ / \ o/
o/ \o \o/ | \o o/ \o/ \o/ <|
/v v\ | o v\ /v | | \\
/> <\ / \ <\__ <\/> / \ / \ _\o__</
/
o
__/>
arty-mc is a Python package providing a terminal file manager for JFrog Artifactory.
It provides a dual-pane interface similar to Midnight Commander, allowing you to browse, filter, copy and delete files and folders between the local filesystem and Artifactory repositories directly from the terminal.
It uses Textual for the terminal interface and dohq-artifactory for interacting with Artifactory repositories.
Why arty-mc?
Managing artifacts in Artifactory is often done through the web UI, generic tools like curl or the jf-cli.
For developers who prefer working directly in the terminal, this can be inconvenient.
Features
- Dual-pane terminal interface
- Browse/Filer local filesystem and Artifactory repositories
- Copy files between panes
- Delete artifacts
- Simple YAML configuration
Screenshot
Requirements
- Python 3.9+
- Access to an Artifactory server
- Artifactory API token
Installation
pip install arty-mc
Create Configuration File
Create a configuration file in your home directory:
~/.arty-mc.yml
Example configuration:
server: https://artifactory.company.com/artifactory
user: myuser
token: ********************************************
Configuration Fields
| Field | Description |
|---|---|
| server | Base URL of the Artifactory server |
| user | Artifactory username |
| token | Artifactory API token |
Running arty-mc
Run the tool directly:
python -m arty_mc <repository>
Example:
python -m arty_mc libs-release-local
This starts the dual-pane interface where you can browse your local filesystem and the selected repository.
Typical Workflow
- Start arty-mc with a repository
- Navigate the local filesystem in one pane
- Browse the Artifactory repository in the other pane
- Copy files between panes
- Delete artifacts if needed
⚠ Warning: Deleting artifacts from repositories may be irreversible.
Keyboard Shortcuts
| Key | Action |
|---|---|
| ↑ ↓ | Navigate |
| Enter | Open directory |
| Tab | Switch pane |
| F2 | Cancel Operation |
| F5 | Copy |
| F8 | Delete |
| F10 | Quit |
Building an Executable with Pyinstaller
You can build a binary using PyInstaller.
Install PyInstaller:
pip install pyinstaller
Build the binary:
-—onefile: slower startup caused by runtime extraction
pyinstaller --onefile --distpath dist --name arty-mc arty_mc/arty_mc.py
-—onedir: faster after initial startup
pyinstaller --onedir --distpath dist --name arty-mc arty_mc/arty_mc.py
The compiled executable will appear in:
dist/arty-mc/
You can run it without a Python environment.
Packaging and uploading the arty-mc Python library
You can also build this python package
git clone https://github.com/tino-waldner/arty-mc.git
cd arty-mc
mkdir .venv
python3 -m venv .venv
source .venv/bin/activate
pip install build twine
python -m build
twine check dist/*
twine upload dist/*
Building an Executable with Pyinstaller
mkdir .venv
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
Install PyInstaller:
pip install pyinstaller
Build the binary:
-—onefile: slower startup caused by runtime extraction
pyinstaller --onefile --distpath dist --name arty-mc arty_mc/arty_mc.py
-—onedir: faster after initial startup
pyinstaller --onedir --distpath dist --name arty-mc arty_mc/arty_mc.py
The compiled executable will appear in:
arty_mc/dist/arty-mc/
You can run it without a Python environment.
Security Notes
- Do not commit your
.arty-mc.ymlfile - Protect your API token
- Prefer API tokens instead of passwords
Demo
Disclaimer
This software is provided "as is" without warranty of any kind.
The tool may contain bugs or incomplete functionality and should be used at your own risk. The author assumes no responsibility or liability for any damage, data loss, system malfunction, or unintended modifications caused by the use of this software.
Always verify actions such as uploading, deleting, or overwriting artifacts, especially when working with production repositories.
This project is not affiliated with or endorsed by JFrog.
JFrog and Artifactory are trademarks of JFrog Ltd.
License
MIT License
Project details
Release history Release notifications | RSS feed
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 arty_mc-0.1.1.tar.gz.
File metadata
- Download URL: arty_mc-0.1.1.tar.gz
- Upload date:
- Size: 69.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ceef0b1065baa5123d0545e3111b6e544636e01364180c5a17210e3e1f9c9fce
|
|
| MD5 |
8767e4e3389347566b2b79f976842a7e
|
|
| BLAKE2b-256 |
5f3eac654dd318a506ee43791c26d87e40d589407bdb475be224b9297db12361
|
File details
Details for the file arty_mc-0.1.1-py3-none-any.whl.
File metadata
- Download URL: arty_mc-0.1.1-py3-none-any.whl
- Upload date:
- Size: 17.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5a69badf5a70cd2598291718e44cc6d16a4e024200bb3d88383e0e96a8521105
|
|
| MD5 |
7d56eda8682cbcc24dd2ae9bc4eb17e4
|
|
| BLAKE2b-256 |
8cd269a3f327957b92d5292ec881875c44fa994255fc9d6c634e1a746b477e25
|