[![Crates.io](https://img.shields.io/crates/v/fuga)](https://crates.io/crates/fuga) [![Crates.io](https://img.shields.io/crates/l/fuga)](https://github.com/liebe-magi/fuga/blob/main/LICENSE) [![build](https://github.com/liebe-magi/fuga/actions/workflows/build.yml/badge.svg?branch=main&event=push)](https://github.com/liebe-magi/fuga/actions/workflows/build.yml) # 📦 FUGA 📦 ![logo](/res/logo_256.jpg) A CLI tool to operate files or directories in 2 steps. ## 📦 DESCRIPTION - `fuga`はファイル操作を2ステップで行うCLIツールです。 - `mv`,`cp`,`ln`コマンドなどの代替コマンドとして開発しました。 - 操作対象のファイルやディレクトリを`fuga mark`によりマーキングし、別のディレクトリに移動した後にコピーや移動を実行できます。 ## 📦 INSTALLATION ### ビルド済みバイナリ - 以下のアーキテクチャ用のバイナリを[releases](https://github.com/liebe-magi/fuga/releases)に準備しています。 - aarch64-apple-darwin (Mac - Apple Chip) - x86_64-apple-darwin (Mac - Intel Chip) - x86_64-unknown-linux-gnu (Linux - Intel Chip) - お使いのPCにあったバイナリをパスの通ったディレクトリに配置してください。 ### Cargoによるビルド - `cargo`コマンドによりビルドすることでインストールできます。 ``` cargo install fuga ``` ### コマンドの確認 - 以下のコマンドでバージョン情報が表示されればインストール完了です。 ``` $ fuga -V fuga v0.1.1 ``` ## 📦 USAGE ``` A CLI tool to operate files or directories in 2 steps. Usage: fuga Commands: mark Set the path of the target file or directory copy Copy the marked file or directory move Move the marked file or directory link Make a symbolic link to the marked file or directory completion Generate the completion script version Show the version of the tool help Print this message or the help of the given subcommand(s) Options: -h, --help Print help -V, --version Print version ``` ### 操作対象ファイルの設定 - `fuga mark `で操作対象とするファイルやディレクトリをマーキングします。 ``` $ fuga mark target_file.txt ✅ : 📄 target_file.txt has marked. ``` - 現在マーキング中のファイルやディレクトリを確認したいときは、`fuga mark --show`で確認できます。 ``` $ fuga mark --show ℹ️ : 📄 /home/user/path/to/file/target_file.txt ``` - マーキングを解除したい場合は、`fuga mark --reset`で解除できます。 ``` $ fuga mark --reset ✅ : The marked path has reset. ``` ### ファイル操作 以下の3つのファイル操作が可能です。 #### コピー - コピー先のディレクトリに移動し、`fuga copy`でマーキング中のファイルやディレクトリをコピーできます。 ``` $ cd test_dir_copy $ fuga copy ℹ️ : Start copying 📄 target_file.txt from /home/user/path/to/file/target_file.txt ✅ : 📄 target_file.txt has copied. ``` - コピー先のディレクトリやファイル名を与えることも可能です。 ``` $ fuga copy test_dir_copy ℹ️ : Start copying 📄 test_dir_copy/target_file.txt from /home/user/path/to/file/target_file.txt ✅ : 📄 test_dir_copy/target_file.txt has copied. $ fuga copy copy.txt ℹ️ : Start copying 📄 copy.txt from /home/user/path/to/file/target_file.txt ✅ : 📄 copy.txt has copied. ``` #### 移動 - 移動先のディレクトリに移動し、`fuga move`でマーキング中のファイルやディレクトリを移動できます。 ``` $ cd test_dir_move $ fuga move ℹ️ : Start moving 📄 target_file.txt from /home/user/path/to/file/target_file.txt ✅ : 📄 target_file.txt has moved. ``` - コピー同様、移動先のディレクトリやファイル名を与えることも可能です。 ``` $ fuga move test_dir_move ℹ️ : Start copying 📄 test_dir_move/target_file.txt from /home/user/path/to/file/target_file.txt ✅ : 📄 test_dir_move/target_file.txt has moved. $ fuga move move.txt ℹ️ : Start moving 📄 move.txt from /home/user/path/to/file/target_file.txt ✅ : 📄 move.txt has moved. ``` #### シンボリックリンク - シンボリックリンクを作成したいディレクトリに移動し、`fuga link`でマーキング中のファイルやディレクトリへのシンボリックリンクを作成できます。 ``` $ cd test_dir_link $ fuga link ℹ️ : Start making symbolic link 📄 target_file.txt from /home/user/path/to/file/target_file.txt ✅ : 📄 target_file.txt has made. ``` - シンボリックリンク作成先のディレクトリやファイル名を与えることも可能です。 ``` $ fuga link test_dir_link ℹ️ : Start making symbolic link 📄 test_dir_link/target_file.txt from /home/user/path/to/file/target_file.txt ✅ : 📄 test_dir_link/target_file.txt has made. $ fuga link link.txt ℹ️ : Start making symbolic link 📄 link.txt from /home/user/path/to/file/target_file.txt ✅ : 📄 link.txt has made. ``` ### 補完スクリプトの生成 - `fuga completion `でコマンドの補完用スクリプトを標準出力します。シェルは以下の5つに対応しています。 - bash - elvish - fish - powershell - zsh ``` # fishの場合 $ fuga completion fish > ~/.config/fish/completions/fuga.fish ```