2019-10-23 07:45:13 +00:00
/*
* meli - bin . rs
*
* Copyright 2019 Manos Pitsidianakis
*
* This file is part of meli .
*
* meli is free software : you can redistribute it and / or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation , either version 3 of the License , or
* ( at your option ) any later version .
*
* meli is distributed in the hope that it will be useful ,
* but WITHOUT ANY WARRANTY ; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
* GNU General Public License for more details .
*
* You should have received a copy of the GNU General Public License
* along with meli . If not , see < http ://www.gnu.org/licenses/>.
* /
use std ::fs ::File ;
use std ::io ::prelude ::* ;
use std ::io ::BufWriter ;
use std ::path ::PathBuf ;
use std ::process ::Command ;
fn main ( ) -> Result < ( ) , std ::io ::Error > {
if let Err ( e ) = std ::fs ::create_dir ( " src/manuals " ) {
if e . kind ( ) ! = std ::io ::ErrorKind ::AlreadyExists {
Err ( e ) ? ;
}
}
2019-10-24 09:18:56 +00:00
let mut build_flag = false ;
2019-10-23 07:45:13 +00:00
let meli_1_metadata = std ::fs ::metadata ( " meli.1 " ) ? ;
if let Ok ( metadata ) = std ::fs ::metadata ( " src/manuals/meli.txt " ) {
if metadata . modified ( ) ? < meli_1_metadata . modified ( ) ? {
2019-10-24 09:18:56 +00:00
build_flag = true ;
2019-10-23 07:45:13 +00:00
}
2019-10-24 09:18:56 +00:00
} else {
/* Doesn't exist */
build_flag = true ;
2019-10-23 07:45:13 +00:00
}
2019-10-24 09:18:56 +00:00
if build_flag {
let output = if let Ok ( output ) = Command ::new ( " mandoc " ) . args ( & [ " meli.1 " ] ) . output ( ) {
output . stdout
} else {
b " mandoc was not found on your system. It's required in order to compile the manual pages into plain text for use with the --*manual command line flags. " . to_vec ( )
} ;
let man_path = PathBuf ::from ( " src/manuals/meli.txt " ) ;
let file = File ::create ( & man_path ) ? ;
BufWriter ::new ( file ) . write_all ( & output ) ? ;
}
let mut build_flag = false ;
2019-10-23 07:45:13 +00:00
let meli_conf_5_metadata = std ::fs ::metadata ( " meli.conf.5 " ) ? ;
if let Ok ( metadata ) = std ::fs ::metadata ( " src/manuals/meli_conf.txt " ) {
if metadata . modified ( ) ? < meli_conf_5_metadata . modified ( ) ? {
2019-10-24 09:18:56 +00:00
build_flag = true ;
2019-10-23 07:45:13 +00:00
}
2019-10-24 09:18:56 +00:00
} else {
/* Doesn't exist */
build_flag = true ;
}
if build_flag {
let output = if let Ok ( output ) = Command ::new ( " mandoc " ) . args ( & [ " meli.conf.5 " ] ) . output ( ) {
output . stdout
} else {
b " mandoc was not found on your system. It's required in order to compile the manual pages into plain text for use with the --*manual command line flags. " . to_vec ( )
} ;
let man_path = PathBuf ::from ( " src/manuals/meli_conf.txt " ) ;
let file = File ::create ( & man_path ) ? ;
BufWriter ::new ( file ) . write_all ( & output ) ? ;
2019-10-23 07:45:13 +00:00
}
Ok ( ( ) )
}