@@ -115,6 +115,24 @@ fn run_filter(args: Vec<String>) -> josh::JoshResult<i32> {
115
115
. short ( "b" )
116
116
. takes_value ( true ) ,
117
117
)
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
+ )
118
136
. arg ( clap:: Arg :: with_name ( "version" ) . long ( "version" ) . short ( "v" ) )
119
137
. get_matches_from ( args) ;
120
138
@@ -222,14 +240,25 @@ fn run_filter(args: Vec<String>) -> josh::JoshResult<i32> {
222
240
let check_permissions = args. is_present ( "check-permission" ) ;
223
241
let mut permissions_filter = josh:: filter:: empty ( ) ;
224
242
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
+ }
233
262
permissions_filter = josh:: filter:: make_permissions_filter ( filterobj, whitelist, blacklist)
234
263
}
235
264
0 commit comments