@@ -9,7 +9,7 @@ extern crate rustwide;
99
1010
1111use std:: env;
12- use std:: path:: PathBuf ;
12+ use std:: path:: { Path , PathBuf } ;
1313
1414use clap:: { Arg , App , SubCommand } ;
1515use cratesfyi:: { DocBuilder , RustwideBuilder , DocBuilderOptions , db} ;
@@ -53,12 +53,18 @@ pub fn main() {
5353 . about ( "Builds documentation for a crate" )
5454 . arg ( Arg :: with_name ( "CRATE_NAME" )
5555 . index ( 1 )
56- . required ( true )
56+ . required_unless ( "LOCAL" )
57+ . requires ( "CRATE_VERSION" )
5758 . help ( "Crate name" ) )
5859 . arg ( Arg :: with_name ( "CRATE_VERSION" )
5960 . index ( 2 )
60- . required ( true )
61- . help ( "Version of crate" ) ) )
61+ . help ( "Version of crate" ) )
62+ . arg ( Arg :: with_name ( "LOCAL" )
63+ . short ( "-l" )
64+ . long ( "--local" )
65+ . takes_value ( true )
66+ . conflicts_with_all ( & [ "CRATE_NAME" , "CRATE_VERSION" ] )
67+ . help ( "Build a crate at a specific path" ) ) )
6268 . subcommand ( SubCommand :: with_name ( "add-essential-files" )
6369 . about ( "Adds essential files for rustc" ) )
6470 . subcommand ( SubCommand :: with_name ( "lock" ) . about ( "Locks cratesfyi daemon to stop \
@@ -155,10 +161,12 @@ pub fn main() {
155161 docbuilder. save_cache ( ) . expect ( "Failed to save cache" ) ;
156162 } else if let Some ( matches) = matches. subcommand_matches ( "crate" ) {
157163 docbuilder. load_cache ( ) . expect ( "Failed to load cache" ) ;
158- let mut builder = RustwideBuilder :: init ( ) . unwrap ( ) ;
159- builder. build_package ( & mut docbuilder, matches. value_of ( "CRATE_NAME" ) . unwrap ( ) ,
160- matches. value_of ( "CRATE_VERSION" ) . unwrap ( ) )
161- . expect ( "Building documentation failed" ) ;
164+ let mut builder = RustwideBuilder :: init ( ) . expect ( "failed to initialize rustwide" ) ;
165+ match matches. value_of ( "LOCAL" ) {
166+ Some ( path) => builder. build_local_package ( & mut docbuilder, Path :: new ( path) ) ,
167+ None => builder. build_package ( & mut docbuilder,
168+ matches. value_of ( "CRATE_NAME" ) . unwrap ( ) , matches. value_of ( "CRATE_VERSION" ) . unwrap ( ) , None ) ,
169+ } . expect ( "Building documentation failed" ) ;
162170 docbuilder. save_cache ( ) . expect ( "Failed to save cache" ) ;
163171 } else if let Some ( _) = matches. subcommand_matches ( "add-essential-files" ) {
164172 let mut builder = RustwideBuilder :: init ( ) . unwrap ( ) ;
0 commit comments