8 releases
0.1.4 | Sep 26, 2024 |
---|---|
0.1.3 | Sep 22, 2024 |
0.1.1 | Jul 29, 2024 |
0.0.3 | Mar 20, 2023 |
0.0.2 | Sep 6, 2022 |
#252 in Data structures
28 downloads per month
55KB
1.5K
SLoC
adflib
A Rust library and command-line tool for managing ADF (Amiga Disk File) files.
Motivation
While working on cross-development for the Amiga, I needed a way to manage ADF files. Existing libraries weren't written in Rust, which was my preferred language for tool development. Thus, I decided to create a Rust-based library for managing ADF files. The library is still in its early stages and is not yet feature-complete or extensively tested.
Features
- Read and write ADF files
- Extract disk information (filesystem type, disk name, creation date, etc.)
- List files and directories
- Extract files from ADF images
- Add files to ADF images (planned)
- Create new ADF images (planned)
Library Usage
Add this to your Cargo.toml
:
[dependencies]
adflib = "<ACTUAL VERSION>"
Basic usage example:
use adflib::ADF;
use std::io::Result;
fn main() -> Result<()> {
let adf = ADF::from_file("my_disk.adf")?;
println!("ADF file loaded successfully");
Ok(())
}
Getting disk information:
use adflib::ADF;
use std::io::Result;
fn main() -> Result<()> {
let adf = ADF::from_file("my_disk.adf")?;
let disk_info = adf.information?;
println!("ADF file loaded successfully");
Ok(())
}
Extract files from ADF image:
use adflib::ADF;
use std::io::Result;
fn main() -> Result<()> {
let adf = ADF::from_file("my_disk.adf")?;
let extracted_file = adf.extract_file("my_file.txt")?;
Ok(())
}
Read the documentation for more details.
Command-line Tool
The library comes with a command-line tool for common ADF operations.
Installation
cargo install adflib
Usage
adflib <COMMAND> [OPTIONS]
Commands:
info
Display information about an ADF file
list
List contents of an ADF file
extract
Extract files from an ADF image
create
Create a new ADF image
bitmap
Show the bitmap of an ADF image
Example:
adflib info my_disk.adf
Development Status
The library is based on the ADF File Format specification and draws inspiration from the concepts in Laurent Clevy's ADF library. However, it's a pure Rust implementation without using any C code or the original ADF library. And it's rewritten from scratch.
The project is still in active development. Contributions, bug reports, and feature requests are welcome!
License
This project is dual-licensed under MIT and Apache 2.0. See the LICENSE-MIT and LICENSE-APACHE files for details.
Acknowledgments
- ADF library by Laurent Clevy et al.
- ADF File Format specification
- Rust
Contribution
Contributions are welcome! If you'd like to contribute, please feel free to submit a pull request or open an issue for discussion. Any help in improving the library, adding features, or enhancing documentation is greatly appreciated.
Dependencies
~9MB
~154K SLoC