Skip to content

a Rust library to handle ADF files for the Amiga

License

Unknown, MIT licenses found

Licenses found

Unknown
LICENSE-APACHE
MIT
LICENSE-MIT
Notifications You must be signed in to change notification settings

vschwaberow/adflib

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

70 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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 command-line tool provides a simple interface for managing ADF files. It's still in early development and doesn't yet support all features. You will find it under https://github.com/vschwaberow/adflib-cli.

Installation

cargo install adflib

Usage

adflib <COMMAND> [OPTIONS]

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.