rufio 0.30.0 → 0.32.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +109 -12
- data/README.md +76 -3
- data/README_EN.md +30 -2
- data/bin/rufio +80 -9
- data/docs/CHANGELOG_v0.31.0.md +125 -0
- data/docs/CHANGELOG_v0.32.0.md +288 -0
- data/{CHANGELOG_v0.4.0.md → docs/CHANGELOG_v0.4.0.md} +2 -2
- data/{CHANGELOG_v0.5.0.md → docs/CHANGELOG_v0.5.0.md} +3 -0
- data/{CHANGELOG_v0.7.0.md → docs/CHANGELOG_v0.7.0.md} +1 -1
- data/{CHANGELOG_v0.8.0.md → docs/CHANGELOG_v0.8.0.md} +1 -1
- data/{CHANGELOG_v0.9.0.md → docs/CHANGELOG_v0.9.0.md} +1 -1
- data/lib/rufio/command_completion.rb +101 -0
- data/lib/rufio/command_history.rb +109 -0
- data/lib/rufio/command_mode.rb +35 -0
- data/lib/rufio/command_mode_ui.rb +48 -15
- data/lib/rufio/config_loader.rb +9 -0
- data/lib/rufio/plugins/hello.rb +30 -0
- data/lib/rufio/shell_command_completion.rb +120 -0
- data/lib/rufio/terminal_ui.rb +89 -4
- data/lib/rufio/version.rb +1 -1
- data/lib/rufio.rb +6 -0
- data/retag.sh +55 -0
- metadata +23 -16
- data/docs/PLUGIN_GUIDE.md +0 -431
- data/docs/plugin_example.rb +0 -119
- data/rufio.gemspec +0 -40
- /data/{CHANGELOG_v0.10.0.md → docs/CHANGELOG_v0.10.0.md} +0 -0
- /data/{CHANGELOG_v0.20.0.md → docs/CHANGELOG_v0.20.0.md} +0 -0
- /data/{CHANGELOG_v0.21.0.md → docs/CHANGELOG_v0.21.0.md} +0 -0
- /data/{CHANGELOG_v0.30.0.md → docs/CHANGELOG_v0.30.0.md} +0 -0
- /data/{CHANGELOG_v0.6.0.md → docs/CHANGELOG_v0.6.0.md} +0 -0
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: aff3f0a1c50ec0a854769b6cd89a559872db6edd9618fe000e80a89160018887
|
|
4
|
+
data.tar.gz: 244a77b3555472fccecfe13638ae53f72bc971f6cbc3649ded6bd09a127b4004
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 59dbee8f1030310696f3f113c85ebc9f6ed236e7ce24ca0fc834a174f3614b2f609dc7c5471efd905d113b8d61d490779da8222c7984c3827c095d1ff0c14d67
|
|
7
|
+
data.tar.gz: a75e8048e9b6ddaf81d32d7fc772a6231462a9e81e221147329c8726ef59d65e63ecd115397f80dbd8274ced4b3a5b14d3d3d2a5c3cd247b36d8d1275518595c
|
data/CHANGELOG.md
CHANGED
|
@@ -7,7 +7,86 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
-
## [0.
|
|
10
|
+
## [0.32.0] - 2026-01-02
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
- **🎯 Shell Command Execution**: Execute shell commands with `!` prefix (e.g., `:!ls`, `:!git status`)
|
|
14
|
+
- **📜 Command History**: Navigate command history with arrow keys, persistent storage
|
|
15
|
+
- **⌨️ Intelligent Tab Completion**: Smart completion with candidate list display
|
|
16
|
+
- **🔌 Hello Plugin**: Example Ruby plugin demonstrating command implementation
|
|
17
|
+
- **⚙️ Command History Configuration**: Configurable history size (default: 1000)
|
|
18
|
+
|
|
19
|
+
### Changed
|
|
20
|
+
- Command mode UI improvements: cleaner interface, better visual feedback
|
|
21
|
+
- Tab completion now shows candidate list when multiple matches exist
|
|
22
|
+
- Plugin system now auto-loads from `lib/rufio/plugins/`
|
|
23
|
+
|
|
24
|
+
### Fixed
|
|
25
|
+
- Tab completion not working for shell commands
|
|
26
|
+
- Command input display showing candidates unnecessarily
|
|
27
|
+
|
|
28
|
+
For detailed information, see [CHANGELOG_v0.32.0.md](./docs/CHANGELOG_v0.32.0.md)
|
|
29
|
+
|
|
30
|
+
## [0.31.0] - 2026-01-01
|
|
31
|
+
|
|
32
|
+
### Added
|
|
33
|
+
- **🚀 Experimental Native Scanner**: High-performance directory scanning with Rust/Go implementations
|
|
34
|
+
- **Rust implementation** (`lib_rust/scanner/`): Fastest, memory-safe implementation
|
|
35
|
+
- **Go implementation** (`lib_go/scanner/`): Fast with excellent concurrency
|
|
36
|
+
- **NativeScanner abstraction layer**: Unified interface with automatic fallback to Ruby
|
|
37
|
+
- **Launch options**: `--native`, `--native=rust`, `--native=go` for performance optimization
|
|
38
|
+
- **Environment variable**: `RUFIO_NATIVE` for configuration
|
|
39
|
+
|
|
40
|
+
### Changed
|
|
41
|
+
- Default scanner remains Ruby implementation for stability
|
|
42
|
+
- Auto-detection priority: Rust > Go > Ruby
|
|
43
|
+
|
|
44
|
+
For detailed information, see [CHANGELOG_v0.31.0.md](./docs/CHANGELOG_v0.31.0.md)
|
|
45
|
+
|
|
46
|
+
## [0.30.0] - 2025-12-30
|
|
47
|
+
|
|
48
|
+
### Added
|
|
49
|
+
- **📚 Help System Overhaul**: Full-screen help mode with Markdown documentation
|
|
50
|
+
- **Preview Pane Scrolling**: `Enter` on files focuses preview pane, `j/k` for scrolling
|
|
51
|
+
- **Help documentation**: `info/welcome.md`, `info/help.md`, `info/keybindings.md`
|
|
52
|
+
- **Enhanced file preview**: `.docx`, `.xlsx`, `.pptx` preview support via `pandoc`
|
|
53
|
+
|
|
54
|
+
### Changed
|
|
55
|
+
- All help documentation converted to English and Markdown format
|
|
56
|
+
- Help mode uses full file manager UI for browsing
|
|
57
|
+
- Preview pane shows `[PREVIEW MODE]` indicator when focused
|
|
58
|
+
|
|
59
|
+
For detailed information, see [CHANGELOG_v0.30.0.md](./docs/CHANGELOG_v0.30.0.md)
|
|
60
|
+
|
|
61
|
+
## [0.21.0] - 2025-12-29
|
|
62
|
+
|
|
63
|
+
### Added
|
|
64
|
+
- **📋 Copy Feature**: `c` key to copy selected files with floating dialog UI
|
|
65
|
+
- **Cross-directory selection**: Select files in one directory and copy/move to another
|
|
66
|
+
- **Multiple selection delete**: Enhanced `x` key for deleting multiple files
|
|
67
|
+
- **Code refactoring**: Extracted dialog confirmation logic to shared methods
|
|
68
|
+
|
|
69
|
+
### Changed
|
|
70
|
+
- Improved SelectionManager with source directory tracking
|
|
71
|
+
- Unified confirmation dialog UI across copy/move/delete operations
|
|
72
|
+
|
|
73
|
+
For detailed information, see [CHANGELOG_v0.21.0.md](./docs/CHANGELOG_v0.21.0.md)
|
|
74
|
+
|
|
75
|
+
## [0.20.0] - 2025-12-28
|
|
76
|
+
|
|
77
|
+
### Added
|
|
78
|
+
- **🎯 Project Mode UI Unification**: Consistent UI between normal and project modes
|
|
79
|
+
- **Script directory support**: Execute custom Ruby scripts from `~/.config/rufio/scripts`
|
|
80
|
+
- **Bookmark rename feature**: `r` key in project mode to rename bookmarks
|
|
81
|
+
- **Enhanced command mode**: `:` command with script execution
|
|
82
|
+
|
|
83
|
+
### Changed
|
|
84
|
+
- Project mode shows bookmark list with consistent UI
|
|
85
|
+
- Improved bookmark management with rename capability
|
|
86
|
+
|
|
87
|
+
For detailed information, see [CHANGELOG_v0.20.0.md](./docs/CHANGELOG_v0.20.0.md)
|
|
88
|
+
|
|
89
|
+
## [0.10.0] - 2025-12-21
|
|
11
90
|
|
|
12
91
|
### 🎨 Enhanced - Bookmark UI Overhaul
|
|
13
92
|
- **Floating input dialogs**: All bookmark operations now use modern floating window interface
|
|
@@ -31,9 +110,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
31
110
|
- New input dialog system with multi-byte character support
|
|
32
111
|
- Enhanced BookmarkManager with private helper methods for dialogs
|
|
33
112
|
- Improved cursor positioning calculations
|
|
34
|
-
- **Detailed changelog**: [CHANGELOG_v0.10.0.md](./CHANGELOG_v0.10.0.md)
|
|
113
|
+
- **Detailed changelog**: [CHANGELOG_v0.10.0.md](./docs/CHANGELOG_v0.10.0.md)
|
|
35
114
|
|
|
36
|
-
## [0.9.0] - 2025-
|
|
115
|
+
## [0.9.0] - 2025-12-13
|
|
37
116
|
|
|
38
117
|
### Added
|
|
39
118
|
- **Escape key support for file/directory creation**: Press `Esc` to cancel file (`a`) or directory (`A`) creation prompts and return to the main view
|
|
@@ -47,8 +126,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
47
126
|
- New `read_line_with_escape` method for cancelable input handling
|
|
48
127
|
- Comprehensive test suite for escape key functionality
|
|
49
128
|
- Support for multi-byte characters (Japanese, etc.) in filename/directory input
|
|
129
|
+
- **Detailed changelog**: [CHANGELOG_v0.9.0.md](./docs/CHANGELOG_v0.9.0.md)
|
|
130
|
+
|
|
131
|
+
## [0.8.0] - 2025-12-06
|
|
50
132
|
|
|
51
|
-
|
|
133
|
+
For detailed information, see [CHANGELOG_v0.8.0.md](./docs/CHANGELOG_v0.8.0.md)
|
|
134
|
+
|
|
135
|
+
## [0.7.0] - 2025-11-29
|
|
52
136
|
|
|
53
137
|
### Added
|
|
54
138
|
- **🔌 Plugin System**: Complete extensible plugin architecture for rufio
|
|
@@ -70,9 +154,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
70
154
|
- New `PluginConfig` for configuration file handling
|
|
71
155
|
- Plugin directory structure: `lib/rufio/plugins/` and `~/.rufio/plugins/`
|
|
72
156
|
- Case-insensitive plugin name matching in configuration
|
|
73
|
-
- **Detailed changelog**: [CHANGELOG_v0.7.0.md](./CHANGELOG_v0.7.0.md)
|
|
157
|
+
- **Detailed changelog**: [CHANGELOG_v0.7.0.md](./docs/CHANGELOG_v0.7.0.md)
|
|
74
158
|
|
|
75
|
-
## [0.6.0] - 2025-
|
|
159
|
+
## [0.6.0] - 2025-09-28
|
|
76
160
|
|
|
77
161
|
### Added
|
|
78
162
|
- **🚀 zoxide Integration**: Complete zoxide directory history navigation functionality
|
|
@@ -95,7 +179,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
95
179
|
- Extended `HealthChecker` with zoxide version checking
|
|
96
180
|
- Comprehensive test suite for zoxide functionality
|
|
97
181
|
- Safe path escaping using Ruby's Shellwords module
|
|
98
|
-
- **Detailed changelog**: [CHANGELOG_v0.6.0.md](./CHANGELOG_v0.6.0.md)
|
|
182
|
+
- **Detailed changelog**: [CHANGELOG_v0.6.0.md](./docs/CHANGELOG_v0.6.0.md)
|
|
99
183
|
|
|
100
184
|
## [0.5.0] - 2025-09-20
|
|
101
185
|
|
|
@@ -120,7 +204,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
120
204
|
- Maximum 9 bookmarks with automatic sorting
|
|
121
205
|
- Floating window system for bookmark management
|
|
122
206
|
- Integration with existing terminal UI components
|
|
123
|
-
- **Detailed changelog**: [CHANGELOG_v0.5.0.md](./CHANGELOG_v0.5.0.md)
|
|
207
|
+
- **Detailed changelog**: [CHANGELOG_v0.5.0.md](./docs/CHANGELOG_v0.5.0.md)
|
|
124
208
|
|
|
125
209
|
## [0.4.0] - 2025-09-13
|
|
126
210
|
|
|
@@ -153,7 +237,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
153
237
|
- **Enhanced error handling** patterns throughout codebase
|
|
154
238
|
- **Improved file system safety** checks and validation
|
|
155
239
|
|
|
156
|
-
For detailed information, see [CHANGELOG_v0.4.0.md](./CHANGELOG_v0.4.0.md)
|
|
240
|
+
For detailed information, see [CHANGELOG_v0.4.0.md](./docs/CHANGELOG_v0.4.0.md)
|
|
157
241
|
|
|
158
242
|
## [0.3.0] - 2025-09-06
|
|
159
243
|
|
|
@@ -189,9 +273,22 @@ For detailed information, see [CHANGELOG_v0.4.0.md](./CHANGELOG_v0.4.0.md)
|
|
|
189
273
|
|
|
190
274
|
## Release Links
|
|
191
275
|
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
- [v0.
|
|
276
|
+
### Detailed Release Notes
|
|
277
|
+
|
|
278
|
+
- [v0.31.0](./docs/CHANGELOG_v0.31.0.md) - Experimental Native Scanner Implementation
|
|
279
|
+
- [v0.30.0](./docs/CHANGELOG_v0.30.0.md) - Help System Overhaul
|
|
280
|
+
- [v0.21.0](./docs/CHANGELOG_v0.21.0.md) - Copy Feature & Code Refactoring
|
|
281
|
+
- [v0.20.0](./docs/CHANGELOG_v0.20.0.md) - Project Mode Enhancement & UI Unification
|
|
282
|
+
- [v0.10.0](./docs/CHANGELOG_v0.10.0.md) - Bookmark UI Overhaul
|
|
283
|
+
- [v0.9.0](./docs/CHANGELOG_v0.9.0.md) - Escape Key Support & Input Improvements
|
|
284
|
+
- [v0.8.0](./docs/CHANGELOG_v0.8.0.md) - Additional Features
|
|
285
|
+
- [v0.7.0](./docs/CHANGELOG_v0.7.0.md) - Plugin System
|
|
286
|
+
- [v0.6.0](./docs/CHANGELOG_v0.6.0.md) - zoxide Integration
|
|
287
|
+
- [v0.5.0](./docs/CHANGELOG_v0.5.0.md) - Bookmark System Implementation
|
|
288
|
+
- [v0.4.0](./docs/CHANGELOG_v0.4.0.md) - Floating Dialog System & English Interface
|
|
289
|
+
|
|
290
|
+
### External Links
|
|
291
|
+
|
|
195
292
|
- [GitHub Releases](https://github.com/masisz/rufio/releases) - Download releases and view release history
|
|
196
293
|
- [Installation Guide](./README.md#installation) - How to install rufio
|
|
197
294
|
- [Usage Documentation](./README.md#usage) - Complete usage guide
|
data/README.md
CHANGED
|
@@ -13,7 +13,11 @@ rufioは、Yaziにインスパイアされたターミナル上で動作する
|
|
|
13
13
|
- **軽量でシンプル**: Rubyで書かれた軽量なファイルマネージャー
|
|
14
14
|
- **直感的な操作**: Vimライクなキーバインド
|
|
15
15
|
- **プラグインシステム**: 拡張可能なプラグインアーキテクチャ
|
|
16
|
-
-
|
|
16
|
+
- **強力なコマンドモード** (v0.32.0):
|
|
17
|
+
- シェルコマンド実行 (`!ls`, `!git status` など)
|
|
18
|
+
- コマンド履歴(上下矢印キーでナビゲーション)
|
|
19
|
+
- インテリジェントなTab補完(候補リスト表示)
|
|
20
|
+
- Rubyプラグインによる拡張可能なコマンド
|
|
17
21
|
- **ファイルプレビュー**: テキストファイルの内容をその場で確認
|
|
18
22
|
- **ファイル選択・操作**: 複数ファイルの選択、移動、コピー、削除が可能
|
|
19
23
|
- **リアルタイムフィルター**: sキーでファイル名の絞り込み表示
|
|
@@ -46,6 +50,61 @@ rufio # カレントディレクトリで起動
|
|
|
46
50
|
rufio /path/to # 指定したディレクトリで起動
|
|
47
51
|
```
|
|
48
52
|
|
|
53
|
+
### ネイティブスキャナー(実験的機能)
|
|
54
|
+
|
|
55
|
+
rufio v0.31.0以降では、高速なディレクトリスキャンのためのネイティブ実装(Rust/Go)をサポートしています。デフォルトは安定したRuby実装を使用し、オプションでネイティブ実装に切り替え可能です。
|
|
56
|
+
|
|
57
|
+
#### 起動オプション
|
|
58
|
+
|
|
59
|
+
```bash
|
|
60
|
+
# デフォルト(Ruby実装 - 安定)
|
|
61
|
+
rufio
|
|
62
|
+
|
|
63
|
+
# ネイティブ実装を有効化(自動検出: Rust > Go > Ruby)
|
|
64
|
+
rufio --native
|
|
65
|
+
rufio --native=auto
|
|
66
|
+
|
|
67
|
+
# Rust実装を強制使用
|
|
68
|
+
rufio --native=rust
|
|
69
|
+
rufio --native rust /path/to/dir
|
|
70
|
+
|
|
71
|
+
# Go実装を強制使用
|
|
72
|
+
rufio --native=go
|
|
73
|
+
rufio --native go /path/to/dir
|
|
74
|
+
|
|
75
|
+
# 環境変数でも制御可能
|
|
76
|
+
RUFIO_NATIVE=rust rufio
|
|
77
|
+
RUFIO_NATIVE=go rufio /path/to/dir
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
#### ネイティブ実装について
|
|
81
|
+
|
|
82
|
+
- **Rust実装**: 最も高速でメモリ安全。推奨。
|
|
83
|
+
- **Go実装**: 高速で並行処理に優れる。
|
|
84
|
+
- **Ruby実装** (デフォルト): 依存なし、安定動作保証。
|
|
85
|
+
|
|
86
|
+
#### ビルド方法
|
|
87
|
+
|
|
88
|
+
ネイティブ実装を使用するには、事前にビルドが必要です:
|
|
89
|
+
|
|
90
|
+
```bash
|
|
91
|
+
# Rust実装のビルド
|
|
92
|
+
cd lib_rust/scanner
|
|
93
|
+
cargo build --release
|
|
94
|
+
make install
|
|
95
|
+
|
|
96
|
+
# Go実装のビルド
|
|
97
|
+
cd lib_go/scanner
|
|
98
|
+
make install
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
#### 注意事項
|
|
102
|
+
|
|
103
|
+
- ネイティブ実装は実験的機能です
|
|
104
|
+
- デフォルトではRuby実装を使用(`--native`オプションなし)
|
|
105
|
+
- ネイティブライブラリがない場合、自動的にRuby実装にフォールバック
|
|
106
|
+
- gemインストール時はネイティブライブラリが含まれます(ビルド不要)
|
|
107
|
+
|
|
49
108
|
### ヘルスチェック
|
|
50
109
|
|
|
51
110
|
```bash
|
|
@@ -125,15 +184,29 @@ rufio --help # ヘルプメッセージを表示
|
|
|
125
184
|
| ---- | ---------------------------------- |
|
|
126
185
|
| `z` | zoxide履歴からディレクトリを選択移動 |
|
|
127
186
|
|
|
128
|
-
#### コマンドモード
|
|
187
|
+
#### コマンドモード (v0.32.0 強化版)
|
|
129
188
|
|
|
130
189
|
| キー | 機能 |
|
|
131
190
|
| ------ | ---------------------------------------- |
|
|
132
191
|
| `:` | コマンドモードを起動 |
|
|
133
|
-
| `Tab` |
|
|
192
|
+
| `Tab` | コマンド補完・候補リスト表示(コマンドモード中)|
|
|
193
|
+
| `↑` | 前のコマンドを表示(コマンドモード中) |
|
|
194
|
+
| `↓` | 次のコマンドを表示(コマンドモード中) |
|
|
134
195
|
| `Enter`| コマンドを実行(コマンドモード中) |
|
|
135
196
|
| `ESC` | コマンドモードをキャンセル(コマンドモード中) |
|
|
136
197
|
|
|
198
|
+
**シェルコマンド実行** (v0.32.0):
|
|
199
|
+
```
|
|
200
|
+
:!ls -la # ファイル一覧を表示
|
|
201
|
+
:!git status # Gitステータスを確認
|
|
202
|
+
:!pwd # 現在のディレクトリを表示
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
**Rubyコマンド** (v0.32.0):
|
|
206
|
+
```
|
|
207
|
+
:hello # Hello プラグインを実行
|
|
208
|
+
```
|
|
209
|
+
|
|
137
210
|
#### ヘルプ
|
|
138
211
|
|
|
139
212
|
| キー | 機能 |
|
data/README_EN.md
CHANGED
|
@@ -13,9 +13,14 @@ rufio is a terminal-based file manager inspired by Yazi. It's implemented in Rub
|
|
|
13
13
|
- **Lightweight & Simple**: A lightweight file manager written in Ruby
|
|
14
14
|
- **Intuitive Operation**: Vim-like key bindings
|
|
15
15
|
- **Plugin System**: Extensible plugin architecture
|
|
16
|
+
- **Powerful Command Mode** (v0.32.0):
|
|
17
|
+
- Shell command execution (`!ls`, `!git status`, etc.)
|
|
18
|
+
- Command history (navigate with arrow keys)
|
|
19
|
+
- Intelligent Tab completion (with candidate list display)
|
|
20
|
+
- Extensible commands via Ruby plugins
|
|
16
21
|
- **File Preview**: View text file contents on the fly
|
|
17
|
-
- **File Selection & Operations**: Select multiple files, move, and delete
|
|
18
|
-
- **Real-time Filter**: Filter files by name using
|
|
22
|
+
- **File Selection & Operations**: Select multiple files, move, copy, and delete
|
|
23
|
+
- **Real-time Filter**: Filter files by name using f key
|
|
19
24
|
- **Advanced Search**: Powerful search using fzf and rga
|
|
20
25
|
- **Multi-platform**: Runs on macOS, Linux, and Windows
|
|
21
26
|
- **External Editor Integration**: Open files with your favorite editor
|
|
@@ -118,6 +123,29 @@ rufio --help # Show help message
|
|
|
118
123
|
| --- | ---------------------------------- |
|
|
119
124
|
| `z` | Select directory from zoxide history |
|
|
120
125
|
|
|
126
|
+
#### Command Mode (v0.32.0 Enhanced)
|
|
127
|
+
|
|
128
|
+
| Key | Function |
|
|
129
|
+
| ------- | ----------------------------------------- |
|
|
130
|
+
| `:` | Activate command mode |
|
|
131
|
+
| `Tab` | Command completion / Show candidate list |
|
|
132
|
+
| `↑` | Previous command (in command mode) |
|
|
133
|
+
| `↓` | Next command (in command mode) |
|
|
134
|
+
| `Enter` | Execute command (in command mode) |
|
|
135
|
+
| `ESC` | Cancel command mode (in command mode) |
|
|
136
|
+
|
|
137
|
+
**Shell Command Execution** (v0.32.0):
|
|
138
|
+
```
|
|
139
|
+
:!ls -la # List files with details
|
|
140
|
+
:!git status # Check git status
|
|
141
|
+
:!pwd # Print working directory
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
**Ruby Commands** (v0.32.0):
|
|
145
|
+
```
|
|
146
|
+
:hello # Execute Hello plugin
|
|
147
|
+
```
|
|
148
|
+
|
|
121
149
|
#### System Operations
|
|
122
150
|
|
|
123
151
|
| Key | Function |
|
data/bin/rufio
CHANGED
|
@@ -6,27 +6,98 @@ require_relative '../lib/rufio'
|
|
|
6
6
|
# プラグインを読み込む
|
|
7
7
|
Rufio::PluginManager.load_all
|
|
8
8
|
|
|
9
|
-
#
|
|
9
|
+
# コマンドライン引数のパース
|
|
10
|
+
native_mode = nil
|
|
11
|
+
start_directory = nil
|
|
12
|
+
skip_next = false
|
|
13
|
+
|
|
14
|
+
ARGV.each_with_index do |arg, idx|
|
|
15
|
+
if skip_next
|
|
16
|
+
skip_next = false
|
|
17
|
+
next
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
case arg
|
|
21
|
+
when '--native'
|
|
22
|
+
# 次の引数がモード指定かチェック
|
|
23
|
+
if idx + 1 < ARGV.length && !ARGV[idx + 1].start_with?('--') && !ARGV[idx + 1].start_with?('/')
|
|
24
|
+
next_arg = ARGV[idx + 1]
|
|
25
|
+
if %w[rust go auto ruby].include?(next_arg)
|
|
26
|
+
native_mode = next_arg
|
|
27
|
+
skip_next = true
|
|
28
|
+
else
|
|
29
|
+
native_mode = 'auto'
|
|
30
|
+
end
|
|
31
|
+
else
|
|
32
|
+
native_mode = 'auto'
|
|
33
|
+
end
|
|
34
|
+
when /^--native=(rust|go|auto|ruby)$/
|
|
35
|
+
native_mode = $1
|
|
36
|
+
when '-c', '--check-health', '--help', '-h'
|
|
37
|
+
# これらは後で処理
|
|
38
|
+
when /^--/
|
|
39
|
+
# 未知のオプションは無視
|
|
40
|
+
else
|
|
41
|
+
# 最初の非オプション引数をディレクトリとして扱う
|
|
42
|
+
start_directory ||= arg
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
# ネイティブスキャナーモードを設定(native_scannerが存在する場合のみ)
|
|
47
|
+
if native_mode && defined?(Rufio::NativeScanner)
|
|
48
|
+
Rufio::NativeScanner.mode = native_mode
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
# 環境変数でも制御可能
|
|
52
|
+
if ENV['RUFIO_NATIVE'] && defined?(Rufio::NativeScanner)
|
|
53
|
+
Rufio::NativeScanner.mode = ENV['RUFIO_NATIVE']
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
# コマンド処理
|
|
10
57
|
if ARGV.include?('--check-health') || ARGV.include?('-c')
|
|
11
58
|
# ヘルスチェック実行
|
|
12
59
|
health_checker = Rufio::HealthChecker.new
|
|
13
60
|
success = health_checker.run_check
|
|
14
61
|
exit(success ? 0 : 1)
|
|
15
|
-
elsif ARGV.include?('--help')
|
|
62
|
+
elsif ARGV.include?('--help') || ARGV.include?('-h')
|
|
16
63
|
puts "rufio - Terminal-based file manager"
|
|
17
64
|
puts ""
|
|
18
65
|
puts "Usage:"
|
|
19
|
-
puts " rufio [DIRECTORY]
|
|
20
|
-
puts "
|
|
21
|
-
puts "
|
|
66
|
+
puts " rufio [OPTIONS] [DIRECTORY]"
|
|
67
|
+
puts ""
|
|
68
|
+
puts "Options:"
|
|
69
|
+
puts " -c, --check-health Check system dependencies"
|
|
70
|
+
puts " -h, --help Show this help message"
|
|
71
|
+
if defined?(Rufio::NativeScanner)
|
|
72
|
+
puts " --native[=MODE] Enable native scanner (experimental)"
|
|
73
|
+
puts " MODE: auto|rust|go (default: auto)"
|
|
74
|
+
puts ""
|
|
75
|
+
puts "Native Scanner:"
|
|
76
|
+
puts " By default, rufio uses Ruby implementation for stability."
|
|
77
|
+
puts " Native scanners (Rust/Go) are experimental and can be enabled with --native."
|
|
78
|
+
puts ""
|
|
79
|
+
puts " --native Auto-detect (Rust > Go > Ruby)"
|
|
80
|
+
puts " --native=rust Use Rust implementation"
|
|
81
|
+
puts " --native=go Use Go implementation"
|
|
82
|
+
puts " --native=auto Same as --native"
|
|
83
|
+
puts " --native=ruby Use Ruby implementation (default)"
|
|
84
|
+
puts ""
|
|
85
|
+
puts " Environment variable: RUFIO_NATIVE=rust|go|auto"
|
|
86
|
+
end
|
|
22
87
|
puts ""
|
|
23
88
|
puts "Examples:"
|
|
24
|
-
puts " rufio
|
|
25
|
-
puts " rufio /path/to/dir
|
|
26
|
-
|
|
89
|
+
puts " rufio # Start in current directory"
|
|
90
|
+
puts " rufio /path/to/dir # Start in specific directory"
|
|
91
|
+
if defined?(Rufio::NativeScanner)
|
|
92
|
+
puts " rufio --native # Use native scanner (auto-detect)"
|
|
93
|
+
puts " rufio --native=rust # Use Rust scanner"
|
|
94
|
+
puts " rufio --native rust /tmp # Use Rust scanner in /tmp"
|
|
95
|
+
puts " RUFIO_NATIVE=rust rufio # Use Rust via environment variable"
|
|
96
|
+
end
|
|
97
|
+
puts " rufio -c # Check dependencies"
|
|
27
98
|
exit(0)
|
|
28
99
|
else
|
|
29
|
-
start_directory
|
|
100
|
+
start_directory ||= Dir.pwd
|
|
30
101
|
|
|
31
102
|
# アプリケーション開始
|
|
32
103
|
app = Rufio::Application.new(start_directory)
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
# Changelog - v0.31.0
|
|
2
|
+
|
|
3
|
+
## 🚀 New Features
|
|
4
|
+
|
|
5
|
+
### Experimental Native Scanner Implementation
|
|
6
|
+
|
|
7
|
+
Added high-performance directory scanning with Rust/Go implementations. By default, uses stable Ruby implementation with optional native implementations available via command-line options.
|
|
8
|
+
|
|
9
|
+
#### Implementation Languages
|
|
10
|
+
- **Rust implementation** (`lib_rust/scanner/`): Fastest, memory-safe
|
|
11
|
+
- **Go implementation** (`lib_go/scanner/`): Fast, excellent concurrency
|
|
12
|
+
- **Ruby implementation** (default): Stable, no dependencies
|
|
13
|
+
|
|
14
|
+
#### NativeScanner Abstraction Layer
|
|
15
|
+
- `lib/rufio/native_scanner.rb`: Unified interface independent of implementation
|
|
16
|
+
- Automatic fallback (falls back to Ruby if native implementation unavailable)
|
|
17
|
+
|
|
18
|
+
#### Launch Options
|
|
19
|
+
```bash
|
|
20
|
+
# Default (Ruby implementation)
|
|
21
|
+
rufio
|
|
22
|
+
|
|
23
|
+
# Enable native implementation (auto-detect: Rust > Go > Ruby)
|
|
24
|
+
rufio --native
|
|
25
|
+
rufio --native=auto
|
|
26
|
+
|
|
27
|
+
# Force Rust implementation
|
|
28
|
+
rufio --native=rust
|
|
29
|
+
|
|
30
|
+
# Force Go implementation
|
|
31
|
+
rufio --native=go
|
|
32
|
+
|
|
33
|
+
# Environment variable control
|
|
34
|
+
RUFIO_NATIVE=rust rufio
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
#### Priority
|
|
38
|
+
- **Default**: Ruby (stability focused)
|
|
39
|
+
- **`--native=auto`**: Rust > Go > Ruby
|
|
40
|
+
- **`--native=rust`**: Rust (fallback to Ruby if unavailable)
|
|
41
|
+
- **`--native=go`**: Go (fallback to Ruby if unavailable)
|
|
42
|
+
|
|
43
|
+
## 🔧 Improvements
|
|
44
|
+
|
|
45
|
+
### GitHub Actions CI/CD
|
|
46
|
+
- **Build**: Automatically build native libraries on 3 OSes (Linux, macOS, Windows)
|
|
47
|
+
- **Test**: Run tests on all platforms (both Ruby fallback and native implementations)
|
|
48
|
+
- **Release**: Auto-build and publish gem on tag push, attach binaries
|
|
49
|
+
|
|
50
|
+
### Development Environment
|
|
51
|
+
- `.gitignore`: Ignore build artifacts (`target/`, `*.dylib`, `*.so`, `*.dll`, etc.)
|
|
52
|
+
- gemspec: Configure to include native libraries in gem (optional)
|
|
53
|
+
|
|
54
|
+
### Command-Line Argument Processing
|
|
55
|
+
- Added `--native` option
|
|
56
|
+
- Improved argument parser (accurate path and option discrimination)
|
|
57
|
+
- Added native scanner description to `--help`
|
|
58
|
+
|
|
59
|
+
## 📦 Dependencies
|
|
60
|
+
|
|
61
|
+
### Ruby Dependencies (unchanged)
|
|
62
|
+
- io-console ~> 0.6
|
|
63
|
+
- pastel ~> 0.8
|
|
64
|
+
- tty-cursor ~> 0.7
|
|
65
|
+
- tty-screen ~> 0.8
|
|
66
|
+
- ffi (only when using native scanner)
|
|
67
|
+
|
|
68
|
+
### Build-time Dependencies (optional)
|
|
69
|
+
- **Rust**: cargo, rustc (to build Rust implementation)
|
|
70
|
+
- **Go**: go 1.21+ (to build Go implementation)
|
|
71
|
+
|
|
72
|
+
## 🧪 Tests
|
|
73
|
+
|
|
74
|
+
Added new tests:
|
|
75
|
+
- `test/test_rust_scanner.rb`: Rust scanner tests
|
|
76
|
+
- `test/test_go_scanner.rb`: Go scanner tests
|
|
77
|
+
- `test/test_native_scanner.rb`: NativeScanner abstraction layer tests
|
|
78
|
+
- Verify default mode is Ruby
|
|
79
|
+
- Mode switching tests
|
|
80
|
+
- Auto-detection tests
|
|
81
|
+
- Fallback behavior tests
|
|
82
|
+
|
|
83
|
+
All tests passing: 279+ runs, 1299+ assertions, 0 failures, 0 errors
|
|
84
|
+
|
|
85
|
+
## 📝 Documentation
|
|
86
|
+
|
|
87
|
+
- README.md: Added launch options documentation
|
|
88
|
+
- Help message: Detailed `--native` option description
|
|
89
|
+
|
|
90
|
+
## 🔒 Compatibility
|
|
91
|
+
|
|
92
|
+
- **Backward compatibility**: Fully maintained (default is Ruby implementation)
|
|
93
|
+
- **Native libraries**: Optional (works without them)
|
|
94
|
+
- **Platforms**: Linux, macOS, Windows supported
|
|
95
|
+
|
|
96
|
+
## 📌 Notes
|
|
97
|
+
|
|
98
|
+
### Experimental Feature
|
|
99
|
+
Rust/Go implementations are experimental:
|
|
100
|
+
- Not used by default (requires `--native` option)
|
|
101
|
+
- Thorough testing recommended for production use
|
|
102
|
+
- Use default Ruby implementation if issues occur
|
|
103
|
+
|
|
104
|
+
### Build Instructions
|
|
105
|
+
|
|
106
|
+
#### Rust Implementation
|
|
107
|
+
```bash
|
|
108
|
+
cd lib_rust/scanner
|
|
109
|
+
cargo build --release
|
|
110
|
+
make install
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
#### Go Implementation
|
|
114
|
+
```bash
|
|
115
|
+
cd lib_go/scanner
|
|
116
|
+
make install
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
## 🙏 Acknowledgments
|
|
120
|
+
|
|
121
|
+
Native Rust/Go implementations enable faster scanning of large directories. We welcome your feedback.
|
|
122
|
+
|
|
123
|
+
---
|
|
124
|
+
|
|
125
|
+
Release Date: 2026-01-01
|