#!/usr/bin/expect # # Mon Nov 27 2006 Joseph S. Todaro - 0.5 # # Verify that expect is current. exp_version -exit 5.0 # Script version. set version 0.5 set rc 0 set test 0 set timeout 30 # Guard against any user interrupts. trap exit SIGINT # Usage function. proc usage {} { send_user "Decription This Tcl/Expect script will GPG sign the specified package. Usage extras-signer.ex \[-h\] \[-V\] Flags -h Displays this help message -V Displays version information -t Test to see if package actually exist\n" exit } # Capture list of package names passed in. if {$argc == 0} { usage } else { while { $argc } { set option [lindex $argv 0] switch -- $option \ "-h" { usage } "-V" { send_user "$version\n" exit } "-t" { set test [lindex $argv 0] send_user "Test mode has been enabled.\n" set argv [lrange $argv 1 end] incr argc -1 } default { set pkg [lindex $argv 0] # Sign this package if it exists. if [file exists $pkg] { if { $test == 0 } { send_user "\n\n" set pid [spawn rpm --resign --with sig_main $pkg] expect { -re "(E|e)nter (P|p)ass (P|p)hrase:" { send "\r\n" expect "failed" { send_user "extras-push: extras-signer.ex: ERROR: spawn rpm --resign ... failed.\n" incr rc 16 exec kill $pid expect eof break } } timeout { send_user "extras-push: extras-signer.ex: TIMEOUT: spawn rpm --resign ... failed.\n" incr rc 8 exec kill $pid expect eof break } } } else { send_user "extras-push: extras-signer.ex: FOUND: $pkg\n" } } else { send_user "extras-push: extras-signer.ex: NOT FOUND: $pkg\n" incr rc +1 } set argv [lrange $argv 1 end] incr argc -1 } } } exit $rc