Skip to content

Commit 8796190

Browse files
jdechardxdelaruelle
authored andcommitted
Add --group/--user option to module-{hide,forbid,tag}
Add --group and --user options to module-hide, module-forbid and module-tag modulefile commands. When set, restriction or tag specifically applies to the list of user and/or to the list of group defined. Fixes #520
1 parent 7e149f4 commit 8796190

File tree

1 file changed

+14
-4
lines changed

1 file changed

+14
-4
lines changed

tcl/mfcmd.tcl

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -277,11 +277,11 @@ proc parseApplicationCriteriaArgs {aftbef nearsec args} {
277277
set nextargisdatetime [string trimleft $arg -]
278278
}
279279
}
280-
--not-group - --not-user {
280+
--not-group - --not-user - --group - --user {
281281
if {[getState is_win]} {
282282
knerror "Option '$arg' not supported on Windows platform"
283283
} else {
284-
set nextargisval not[string range $arg 6 end]list
284+
set nextargisval [string map {- {}} $arg]list
285285
}
286286
}
287287
default {
@@ -296,6 +296,11 @@ proc parseApplicationCriteriaArgs {aftbef nearsec args} {
296296
knerror "Missing value for '$prevarg' option"
297297
}
298298

299+
set user [expr {[info exists userlist] && [getState username] in\
300+
$userlist}]
301+
set group [expr {[info exists grouplist] && [isIntBetweenList\
302+
$grouplist [getState usergroups]]}]
303+
299304
# does it apply to current user?
300305
set notuser [expr {[info exists notuserlist] && [getState username] in\
301306
$notuserlist}]
@@ -309,16 +314,21 @@ proc parseApplicationCriteriaArgs {aftbef nearsec args} {
309314
$after}]
310315

311316

317+
set user_or_group_target_defined [expr {[info exists userlist] || [info\
318+
exists grouplist]}]
319+
set user_or_group_targeted [expr {$user || $group}]
312320
set user_or_group_excluded [expr {$notuser || $notgroup}]
313321
set time_frame_defined [expr {[info exists before] || [info exists after]}]
314322
set in_time_frame [expr {!$time_frame_defined || $isbefore || $isafter}]
315323
set in_near_time_frame [expr {[info exists after] && !$isafter &&\
316324
[getState clock_seconds] >= ($after - $nearsec)}]
317325

318-
set apply [expr {$in_time_frame && !$user_or_group_excluded}]
326+
set apply [expr {$in_time_frame && ($user_or_group_targeted ||\
327+
(!$user_or_group_target_defined && !$user_or_group_excluded))}]
319328

320329
# is end limit near ?
321-
set isnearly [expr {!$apply && !$user_or_group_excluded &&\
330+
set isnearly [expr {!$apply && ($user_or_group_targeted ||\
331+
(!$user_or_group_target_defined && !$user_or_group_excluded)) &&\
322332
$in_near_time_frame}]
323333
if {![info exists afterraw]} {
324334
set afterraw {}

0 commit comments

Comments
 (0)