opencv-binding-generator 0.23.0

Binding generator for opencv crate
Documentation
use std::{
	env,
	path::PathBuf,
};

use clang::Clang;

use opencv_binding_generator::{
	Generator,
	writer::RustNativeBindingWriter,
};

fn main() {
	let mut args = env::args_os().skip(1);
	let opencv_header_dir = PathBuf::from(args.next().expect("1st argument must be OpenCV header dir"));
	let src_cpp_dir = PathBuf::from(args.next().expect("2nd argument must be dir with custom cpp"));
	let out_dir = PathBuf::from(args.next().expect("3rd argument must be output dir"));
	let module = args.next().expect("4th argument must be module name");
	let module = module.to_str().expect("Not a valid module name");
	let version = args.next().expect("5th argument must be OpenCV version");
	let version = version.to_str().expect("Not a valid version");
	let clang_stdlib_include_dir = args.next().expect("6th argument must be standard clang include dir override");
	let clang_stdlib_include_dir = clang_stdlib_include_dir.to_str()
		.filter(|&s| !s.is_empty() && s != "None")
		.map(PathBuf::from);
	let debug = args.next().map_or(false, |x| x == "1");
	let clang = Clang::new().expect("Cannot initialize clang");
	let bindings_writer = RustNativeBindingWriter::new(&src_cpp_dir, &out_dir, module, version, debug);
	Generator::new(clang_stdlib_include_dir.as_deref(), &opencv_header_dir, &src_cpp_dir, clang)
		.process_opencv_module(&module, bindings_writer);
}