Skip to main content

Dual-pane terminal file manager for Artifactory

Project description

arty-mc

Python License Platform Status

         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

arty-mc_screenshot


Requirements

  • Python 3.9+
  • Access to an Artifactory server
  • Artifactory API token

Installation

1. Clone the Repository

git clone https://github.com/tino-waldner/arty-mc.git
cd arty-mc

2. Python Package

mkdir .venv
python3 -m venv .venv
source .venv/bin/activate
pip install .

3. 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

  1. Start arty-mc with a repository
  2. Navigate the local filesystem in one pane
  3. Browse the Artifactory repository in the other pane
  4. Copy files between panes
  5. 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.yml file
  • Protect your API token
  • Prefer API tokens instead of passwords

Demo

Demo Cast


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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

arty_mc-0.1.0.tar.gz (69.2 kB view details)

Uploaded Source

Built Distribution

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

arty_mc-0.1.0-py3-none-any.whl (17.9 kB view details)

Uploaded Python 3

File details

Details for the file arty_mc-0.1.0.tar.gz.

File metadata

  • Download URL: arty_mc-0.1.0.tar.gz
  • Upload date:
  • Size: 69.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.1

File hashes

Hashes for arty_mc-0.1.0.tar.gz
Algorithm Hash digest
SHA256 313711748a375061b8ae95f28734a7afcf3f0bba55596a4787de93423df3dc55
MD5 7d3b35c0a5e42067f66d05b1972a8da5
BLAKE2b-256 45034914b61602cfe6a5f2757eb081c6a58af3f6b790b3c166db88b974b3b05c

See more details on using hashes here.

File details

Details for the file arty_mc-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: arty_mc-0.1.0-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

Hashes for arty_mc-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 1d1d0296b15ab400c817dd7f01bd65aea5a9600336077989d9c4242a071c0030
MD5 886b509a1afea5704bf18a5d9eda3bd7
BLAKE2b-256 044914b6e86056544e39289ad59557225bb82da0a82beb582564ed06a80c6fde

See more details on using hashes here.

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