omt 0.7.5-alpha

A set of tiny tools mostly used for game development. A Texture atlas packer, a font converter, a pakfile creator.
Documentation
use std::process;

use clap::{App, Arg, SubCommand};
use omt::asset::AssetBuilder;

fn main() {
	// omt-asset build --content-directory Content --temp-directory Temp --data-directory Data --archive App/data/base.omar --paklist Data/data.paklist

	const VERSION: &str = env!("CARGO_PKG_VERSION");
	let matches = App::new("omt-asset")
		.version(VERSION)
		.author("Andreas N. <andreas@omni-mad.com>")
		.about("Handles assets")
		.subcommand(
			SubCommand::with_name("build")
				.arg(
					Arg::with_name("content-directory")
						.long("content-directory")
						.value_name("CONTENT-DIRECTORY")
						.help("Set the content directory")
						.takes_value(true),
				)
				.arg(
					Arg::with_name("data-directory")
						.long("data-directory")
						.value_name("DATA-DIRECTORY")
						.help("Set the data directory")
						.takes_value(true),
				)
				.arg(
					Arg::with_name("temp-directory")
						.long("temp-directory")
						.value_name("TEMP-DIRECTORY")
						.help("Set the temp directory")
						.takes_value(true),
				)
				.arg(
					Arg::with_name("archive")
						.long("archive")
						.value_name("archive")
						.help("Set the archive filename")
						.takes_value(true),
				)
				.arg(
					Arg::with_name("paklist")
						.long("paklist")
						.value_name("PAKLIST")
						.help("Set the pakelist name")
						.takes_value(true),
				)
				.arg(
					Arg::with_name("dry-run")
						.long("dry-run")
						.value_name("dry-run")
						.help("Enable dry run to show commands without actually running them")
						.takes_value(false),
				),
		)
		.get_matches();

	//	println!("{:?}", matches);
	//	println!("{:?}", matches.subcommand());

	if let Some(("build", sub_matches)) = matches.subcommand() {
		let content_directory = sub_matches
			.value_of("content-directory")
			.unwrap_or(".")
			.to_string();
		let data_directory = sub_matches
			.value_of("data-directory")
			.unwrap_or(".")
			.to_string();
		let temp_directory = sub_matches
			.value_of("temp-directory")
			.unwrap_or(".")
			.to_string();
		let archive = sub_matches
			.value_of("archive")
			.unwrap_or("out.omar")
			.to_string();
		let paklist = sub_matches.value_of("paklist").unwrap_or("").to_string();
		let dry_run = sub_matches.occurrences_of("dry-run") > 0;

		println!("content_directory: {:?}", content_directory);
		println!("data_directory   : {:?}", data_directory);
		println!("temp_directory   : {:?}", temp_directory);
		println!("archive          : {:?}", archive);
		println!("paklist          : {:?}", paklist);
		println!("dry_run          : {:?}", dry_run);

		let asset_builder = AssetBuilder::new(
			&content_directory,
			&data_directory,
			&temp_directory,
			&archive,
			&paklist,
			&dry_run,
		);

		match AssetBuilder::build(&asset_builder) {
			Ok(number_of_files) => {
				println!("📁 ✅ ~{:?} assets build", number_of_files);
				process::exit(0);
			},
			Err(e) => {
				println!("📁 ‼️ Error {:?}", e);
				process::exit(-1);
			},
		}
	}
}