Author: shadzik
Date: Fri Sep 26 17:29:02 2008
New Revision: 9876

Modified:
   toys/stbr/stbr.tcl
Log:
- version 0.8 (RC2)
- add maintenance mode
- add Titanium functionality


Modified: toys/stbr/stbr.tcl
==============================================================================
--- toys/stbr/stbr.tcl  (original)
+++ toys/stbr/stbr.tcl  Fri Sep 26 17:29:02 2008
@@ -1,31 +1,32 @@
 # Send To Builder Request TCL by [EMAIL PROTECTED]
 
-set reqbook "./scripts/requesters.txt"
+set cmdbook "./scripts/cmdbook.txt"
 set logfile "/home/users/stbr/db/stbrlog.db"
-set file "./scripts/cvslog.sh"
+set script "./scripts/cvslog.sh"
 set makereq "./pld-builder.new/client/make-request.sh"
 set back &
 set cntr 0
 set cvsroot ":pserver:[EMAIL PROTECTED]:/cvsroot"
-set usage "Usage: !stbr \[help\] \[url\] \[no\]upgrade spec1\[:BRANCH\] 
spec2\[:BRANCH\] ..."
+set usage "Usage: !stbr \[help\] \[url\] th\|ti \[command \<valid builder 
command\>\] \[no\]upgrade spec1\[:BRANCH\] spec2\[:BRANCH\] ..."
 set nickpass "stbr-bot"
+set cmdtxt "./scripts/cmd.txt"
+set maintenance "./scripts/maintenance.txt"
 
 bind notc - "*This nickname is owned by someone else*" identify
 bind dcc n identify man_identify 
 
 proc man_identify { hand idx mask } {
-       global nickpass
+global nickpass
        putserv "PRIVMSG NickServ :identify $nickpass"
        putlog "Sending Identify to NickServ"
 }
 
 proc identify { nick uhost hand text } {
-       global nickpass
+global nickpass
        putserv "PRIVMSG NickServ :identify $nickpass"
        putlog "Sending Identify to NickServ"
 }
 
-
 proc help {nick} {
        global usage
        putserv "privmsg $nick :$usage"
@@ -44,9 +45,8 @@
        putserv "privmsg $nick :Visit http://stbr.pld-linux.org/ to see the 
status of your request."
 }
 
-proc random {} {
-       global reqbook
-       set file [open $reqbook r]
+proc random {book} {
+       set file [open $book r]
        gets $file hands
        set range [llength $hands]
        close $file
@@ -54,19 +54,28 @@
        return [lindex $hands $whichone]
 }
 
-proc sendto {spec branch} {
-       global cvsroot reqbook
-       if {([string match HEAD $branch])} {set cmd "-N"} {set cmd "-r$branch"}
-       if {[catch {exec cvs -d $cvsroot log $cmd SPECS/$spec | awk {/author/{a 
= $6; sub(/;/, "", a); if (!seen[a]) print a; seen[a] = 1}}} results]} {return 
0}
-       set file [open $reqbook r]
-       gets $file lista
-       close $file
-       foreach devil $results {
-               foreach requester $lista {
-                       if {([string match $requester $devil])} {return $devil}
+proc sendto {dist spec branch} {
+global cvsroot
+if {([string match ti $dist])} {
+       set reqbook "./scripts/requesters-ti.txt"
+} {
+       set reqbook "./scripts/requesters.txt"
 }
+if {([string match HEAD $branch])} {set cmd "-N"} {set cmd "-r$branch"}
+if {[catch {exec cvs -d $cvsroot log $cmd SPECS/$spec | awk {/author/{a = $5; 
sub(/;/, "", a); if (!seen[a]) print a; seen[a] = 1}}} results]} {return 0}
+set file [open $reqbook r]
+gets $file lista
+close $file
+foreach devil $results {
+       foreach requester $lista {
+               if {([string match $requester $devil])} {return $devil}
+       }
 }
-random
+random $reqbook
+}
+
+proc command {exe} {
+if {[catch {exec which $exe} results]} {return 0}
 }
 
 bind pub * !stbr pub:stbr
@@ -74,35 +83,52 @@
 bind pub * stbr, pub:stbr
 
 proc pub:stbr {nick host hand chan arg} {
-       global file back cntr logfile usage makereq
-       putcmdlog "#$hand# Noticed Send To Build Request Mail command";
-       set first [lindex $arg 0]
-       if {([string match help $first])} {help $nick; return 0}
-       if {([string match url $first])} {url $nick; return 0}
-       set second [lindex $arg 1]
-       set specs ""; append specs $second; append specs " "; append specs 
[lrange $arg 2 end]
-       set rspecs ""
-       set tspecs ""
-       if {!([string match th-ready $first] || [string match th-test $first] 
|| [string match noupgrade $first] || [string match upgrade $first])} {putserv 
"privmsg $chan :$nick: $usage"; return 0}
-       if {([string length $second]<2)} {putserv "privmsg $chan :$nick: 
$usage"; return 0}
-       if {$cntr<1} {incr cntr} {utimer 30 "set cntr 0"; putserv "privmsg 
$chan :$nick: I reached my STBR time limit (30sec). Please try later."; return 
0}
-       if {([string match th-test $first] || [string match noupgrade $first])} 
{set first "test-build"}
-       if {([string match th-ready $first])} {set first "upgrade"}
-       set time [clock seconds]
-       set date [clock format $time -format "%Y-%m-%d %H:%M:%S"]
-       foreach spec $specs {
-               if {([string match *:* $spec])} {set splited [split $spec 
":"];set spec [lindex $splited 0]; set branch [lindex $splited 1]} {set branch 
"HEAD"}
-               if {!([string match *.spec $spec])} { append spec ".spec"}
-               set towho [sendto $spec $branch]
-               if {($towho == 0)} {putserv "privmsg $chan :$nick: There is no 
such spec ($spec) on branch $branch in PLD's repository."; return 0}
-               lappend rspecs $spec; append rspecs ":$branch (to $towho)"
-               lappend tspecs $spec; append tspecs ":$branch"
-               if {([string match test-build $first])} {
-                       if {[utimer 5 "exec $makereq -t $spec:$branch"]==0} 
{putserv "privmsg $chan :$nick: An error occured. Couldn't send test-build 
request for $spec to builders."; return 1}
-                       exec sqlite $logfile "INSERT INTO application 
VALUES('$date','$spec','$branch','stbr','$first');"
+global script back cntr logfile usage makereq cmdbook cmdtxt maintenance
+if {([file exists $maintenance]) && (![matchattr $hand n|m])} {
+       set plik [open $maintenance r]
+       gets $plik reason
+       close $plik
+       putcmdlog "Maintenance mode active"
+       putserv "privmsg $chan :$nick: I'm now in maintenance mode (reason: 
$reason). Only owners may perform real actions."
+       return 0
+}
+putcmdlog "#$hand# Noticed Send To Build Request Mail command";
+set time [clock seconds]
+set date [clock format $time -format "%Y-%m-%d %H:%M:%S"]
+set first [lindex $arg 0]
+if {([string match help $first])} {help $nick; return 0}
+if {([string match url $first])} {url $nick; return 0}
+if {!([string match th $first] || [string match ti $first])} {
+       putserv "privmsg $chan :$nick: $usage"; return 0
+}
+set dist $first
+set second [lindex $arg 1]
+set third [lindex $arg 2]
+if {([string match command $second])} {
+       putserv "privmsg $chan :$nick: command not implemented yet."; return 0
+}
+set specs ""; append specs $third; append specs " "; append specs [lrange $arg 
3 end]
+set rspecs ""
+set tspecs ""
+if {!([string match noupgrade $second] || [string match upgrade $second])} {
+       putserv "privmsg $chan :$nick: $usage"; return 0
+}
+if {([string length $third]<2)} {putserv "privmsg $chan :$nick: $usage"; 
return 0}
+if {$cntr<1} {incr cntr} {utimer 30 "set cntr 0"; putserv "privmsg $chan 
:$nick: I reached my STBR time limit (30sec). Please try later."; return 0}
+if {([string match noupgrade $second])} {set second "test-build"}
+foreach spec $specs {
+if {([string match *:* $spec])} {set splited [split $spec ":"];set spec 
[lindex $splited 0]; set branch [lindex $splited 1]} {set branch "HEAD"}
+if {!([string match *.spec $spec])} { append spec ".spec"}
+set towho [sendto $dist $spec $branch]
+if {($towho == 0)} {putserv "privmsg $chan :$nick: There is no such spec 
($spec) on branch $branch in PLD's repository."; return 0}
+lappend rspecs $spec; append rspecs ":$branch (to $towho)"
+lappend tspecs $spec; append tspecs ":$branch"
+if {([string match test-build $second])} {
+       if {[utimer 5 "exec $makereq -d $dist -t $spec:$branch >/dev/null 
2>&1"]==0} {putserv "privmsg $chan :$nick: An error occured. Couldn't send 
test-build request for $spec to builders."; return 1}
+       exec sqlite $logfile "INSERT INTO application 
VALUES('$date','$spec','$branch','stbr','$second','$dist');"
 } {
-       if {[exec $file $nick $first $spec $branch $towho]==0} {putserv 
"privmsg $chan :$nick: An error occured. Couldn't send STBR Mail for $spec to 
$towho."; return 1}
-       exec sqlite $logfile "INSERT INTO application 
VALUES('$date','$spec','$branch','$towho','$first');"
+       if {[exec $script $dist $nick $second $spec $branch $towho]==0} 
{putserv "privmsg $chan :$nick: An error occured. Couldn't send STBR Mail for 
$spec to $towho."; return 1}
+       exec sqlite $logfile "INSERT INTO application 
VALUES('$date','$spec','$branch','$towho','$second','$dist');"
 }
 }
 exec sqlite $logfile "INSERT INTO stbr VALUES('$date','$nick');"
@@ -110,12 +136,12 @@
 set day  [lindex $date 0]
 set hour [lindex $date 1]
 set space "%20"
-if {([string match test-build $first])} {
-       putserv "privmsg $chan :$nick: Sent $first request for $tspecs directly 
to builders. Visit http://stbr.pld-linux.org/?show=$nick&date=$day$space$hour 
to track your request."
+if {([string match test-build $second])} {
+       putserv "privmsg $chan :$nick: Sent $second request for $tspecs 
directly to PLD-$dist builders. Visit 
http://stbr.pld-linux.org/?show=$nick&date=$day$space$hour to track your 
request."
 } {
-       putserv "privmsg $chan :$nick: Sent STBR Mail for $rspecs. An $first 
will be performed. Visit 
http://stbr.pld-linux.org/?show=$nick&date=$day$space$hour to track your 
request."
+       putserv "privmsg $chan :$nick: Sent STBR Mail for $rspecs. An $second 
will be performed on PLD-$dist line. Visit 
http://stbr.pld-linux.org/?show=$nick&date=$day$space$hour to track your 
request."
 }
 if {$cntr<1} {incr cntr} {utimer 30 "set cntr 0"; return 1}
 }
 
-putlog "Send To Builder Request TCL v0.6 by shadzik loaded."
+putlog "Send To Builder Request TCL v0.8 by shadzik loaded."
_______________________________________________
pld-cvs-commit mailing list
[email protected]
http://lists.pld-linux.org/mailman/listinfo/pld-cvs-commit

Reply via email to