All pastes #278275 Raw Edit

Stuff

public text v1 · immutable
·published 2006-12-13 23:15 UTC
rendered paste body
#!/usr/bin/expect
#
# Mon Nov 27 2006  OMITTED ORIG. AUTHOR - 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 120

# 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\] <package_to_be_signed>

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 SIGNING: spawn rpm --resign ... failed.\n"
                    incr rc 32
                    exec kill $pid
                    expect eof break
                  }
                }
              }
              timeout {
                send_user "extras-push: extras-signer.ex: TIMEOUT PASSWORD: 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