furl-cli 0.1.0

A fast, multithreaded CLI downloader built in Rust.
Documentation

furl-cli

A fast, multithreaded CLI downloader built in Rust.

[!NOTE] ⚠️ WORK IN PROGRESS: This project is currently in early development. The core multithreaded engine is functional, but features like advanced authentication and complex retry logic are still being implemented.

furl is a high-performance command-line tool designed to download files faster by utilizing multiple threads to fetch chunks of data concurrently. Inspired by the simplicity of curl and the robustness of wget.

✨ Features

  • Parallel Downloads: Automatically splits large files into chunks and downloads them across multiple threads.
  • Modern Async: Built on top of tokio and reqwest for maximum efficiency.
  • Visual Progress: Beautiful, real-time progress bars using indicatif.
  • Rust Powered: Memory-safe and "fearless" concurrency.

🚀 Installation

From Crates.io (Recommended)

cargo install furl-cli

From Source

git clone https://github.com/ghimiresdp/furl-cli.git
cd furl
cargo build --release

🛠 Usage

furl [URL] -o [FILENAME] -t [THREADS]

Example:

furl https://example.com/large-file.iso -o my-file.iso -t 8

🗺 Roadmap

  • Multithreaded chunk downloading
  • Basic CLI argument parsing (clap)
  • Real-time progress bars
  • Resume interrupted downloads (Checkpoints)
  • Support for Proxy and Basic Auth
  • Config file support (furl.toml)

🤝 Contributing

Contributions are welcome! Since this is a WIP, please open an issue first to discuss the changes you'd like to make.

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')`
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

📄 License

This project is licensed under the Apache License 2.0. See the LICENSE file for details.

Third-Party Licenses

This software uses several open-source components. You can view the full list of dependencies and their licenses using cargo-license: