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

MIT/Apache

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

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