use clap::Parser;
use log::info;
use osm_transit_extractor::*;
use simple_logger::SimpleLogger;
use std::path::PathBuf;
#[derive(Parser)]
struct Args {
#[clap(long, short, help = "OSM PBF file")]
input: String,
#[clap(
long,
short = 's',
help = "Imports only stop_points and stop_areas (default is a full extraction)"
)]
import_stops_only: bool,
#[clap(long, short = 't', help = "Extract all tags from OSM objects")]
dump_all_tags: bool,
#[clap(
long,
short,
default_value = ".",
parse(from_os_str),
help = "Output directory, can be relative (default is current dir)"
)]
output: PathBuf,
}
fn main() {
SimpleLogger::new().init().unwrap();
info!("Launching the process !");
let args = Args::from_args();
let mut parsed_pbf = parse_osm_pbf(&args.input);
let osmtc_response = get_osm_tcobjects(&mut parsed_pbf, args.import_stops_only);
write_stop_points_to_csv(
&osmtc_response.stop_points,
&args.output,
args.dump_all_tags,
);
write_station_accesses_to_csv(
&osmtc_response.station_accesses,
&args.output,
args.dump_all_tags,
);
write_stop_areas_to_csv(&osmtc_response.stop_areas, &args.output, args.dump_all_tags);
write_stop_areas_stop_point_to_csv(&osmtc_response.stop_areas, &args.output);
write_stop_areas_station_accesses_to_csv(&osmtc_response.stop_areas, &args.output);
if osmtc_response.routes.is_some() {
write_routes_to_csv(
osmtc_response.routes.unwrap(),
&args.output,
args.dump_all_tags,
);
}
if osmtc_response.lines.is_some() {
write_lines_to_csv(
osmtc_response.lines.unwrap(),
&args.output,
args.dump_all_tags,
);
}
info!("end of osm-transit-extractor !")
}