libparted 0.1.5

Rust wrappers for libparted
Documentation
extern crate libparted;

use libparted::*;
use std::env::args;
use std::process::exit;

fn main() {
    let args = args().collect::<Vec<String>>();
    if !(args.len() == 2 || args.len() == 4) {
        eprintln!(
            "usage: {0} <device>\n       {0} <device> <start> <length>",
            args[0]
        );
        exit(1);
    }

    let dev = match Device::new(&args[1]) {
        Ok(dev) => dev,
        Err(why) => {
            eprintln!("cannot create/open device {}: {}", args[1], why);
            exit(1);
        }
    };

    let geom = match Geometry::new(&dev, 0, dev.length() as i64) {
        Ok(geom) => geom,
        Err(why) => {
            eprintln!("cannot create geometry: {}", why);
            exit(1);
        }
    };

    let mut fs = match FileSystem::open(&geom) {
        Some(fs) => fs,
        None => {
            eprintln!("cannot read file system");
            exit(1);
        }
    };

    match fs.resize(&geom, None) {
        Ok(()) => println!("filesystem resized"),
        Err(why) => {
            eprintln!("cannot resize file system: {}", why);
            exit(1);
        }
    }
}