@@ -115,6 +115,24 @@ fn run_filter(args: Vec<String>) -> josh::JoshResult<i32> {
115115 . short ( "b" )
116116 . takes_value ( true ) ,
117117 )
118+ . arg (
119+ clap:: Arg :: with_name ( "acl" )
120+ . long ( "acl" )
121+ . short ( "a" )
122+ . takes_value ( true ) ,
123+ )
124+ . arg (
125+ clap:: Arg :: with_name ( "user" )
126+ . long ( "user" )
127+ . short ( "u" )
128+ . takes_value ( true ) ,
129+ )
130+ . arg (
131+ clap:: Arg :: with_name ( "repo" )
132+ . long ( "repo" )
133+ . short ( "r" )
134+ . takes_value ( true ) ,
135+ )
118136 . arg ( clap:: Arg :: with_name ( "version" ) . long ( "version" ) . short ( "v" ) )
119137 . get_matches_from ( args) ;
120138
@@ -222,14 +240,25 @@ fn run_filter(args: Vec<String>) -> josh::JoshResult<i32> {
222240 let check_permissions = args. is_present ( "check-permission" ) ;
223241 let mut permissions_filter = josh:: filter:: empty ( ) ;
224242 if check_permissions {
225- let whitelist = match args. value_of ( "whitelist" ) {
226- Some ( s) => josh:: filter:: parse ( s) ?,
227- _ => josh:: filter:: nop ( ) ,
228- } ;
229- let blacklist = match args. value_of ( "blacklist" ) {
230- Some ( s) => josh:: filter:: parse ( s) ?,
231- _ => josh:: filter:: empty ( ) ,
232- } ;
243+ let whitelist;
244+ let blacklist;
245+ if args. is_present ( "acl" ) && args. is_present ( "user" ) && args. is_present ( "repo" ) {
246+ let acl = args. value_of ( "acl" ) . unwrap ( ) ;
247+ let user = args. value_of ( "user" ) . unwrap ( ) ;
248+ let repo = args. value_of ( "repo" ) . unwrap ( ) ;
249+
250+ whitelist = josh:: get_whitelist ( acl, user, repo) ?;
251+ blacklist = josh:: get_blacklist ( acl, user, repo) ?;
252+ } else {
253+ whitelist = match args. value_of ( "whitelist" ) {
254+ Some ( s) => josh:: filter:: parse ( s) ?,
255+ _ => josh:: filter:: nop ( ) ,
256+ } ;
257+ blacklist = match args. value_of ( "blacklist" ) {
258+ Some ( s) => josh:: filter:: parse ( s) ?,
259+ _ => josh:: filter:: empty ( ) ,
260+ } ;
261+ }
233262 permissions_filter = josh:: filter:: make_permissions_filter ( filterobj, whitelist, blacklist)
234263 }
235264
0 commit comments