@@ -9,7 +9,7 @@ extern crate rustwide;
9
9
10
10
11
11
use std:: env;
12
- use std:: path:: PathBuf ;
12
+ use std:: path:: { Path , PathBuf } ;
13
13
14
14
use clap:: { Arg , App , SubCommand } ;
15
15
use cratesfyi:: { DocBuilder , RustwideBuilder , DocBuilderOptions , db} ;
@@ -53,12 +53,18 @@ pub fn main() {
53
53
. about ( "Builds documentation for a crate" )
54
54
. arg ( Arg :: with_name ( "CRATE_NAME" )
55
55
. index ( 1 )
56
- . required ( true )
56
+ . required_unless ( "LOCAL" )
57
+ . requires ( "CRATE_VERSION" )
57
58
. help ( "Crate name" ) )
58
59
. arg ( Arg :: with_name ( "CRATE_VERSION" )
59
60
. 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" ) ) )
62
68
. subcommand ( SubCommand :: with_name ( "add-essential-files" )
63
69
. about ( "Adds essential files for rustc" ) )
64
70
. subcommand ( SubCommand :: with_name ( "lock" ) . about ( "Locks cratesfyi daemon to stop \
@@ -155,10 +161,12 @@ pub fn main() {
155
161
docbuilder. save_cache ( ) . expect ( "Failed to save cache" ) ;
156
162
} else if let Some ( matches) = matches. subcommand_matches ( "crate" ) {
157
163
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" ) ;
162
170
docbuilder. save_cache ( ) . expect ( "Failed to save cache" ) ;
163
171
} else if let Some ( _) = matches. subcommand_matches ( "add-essential-files" ) {
164
172
let mut builder = RustwideBuilder :: init ( ) . unwrap ( ) ;
0 commit comments