#!/usr/bin/ruby #------------------------------------------------------------------------------- # # Name : checkjob.rb # # Author : Tony Smith # # Description : Example trigger to ensure that all changelists being # submitted have at least one job associated. # # Requires : Ruby # P4Ruby # P4Triggers module # # Example 'triggers' section: # # Triggers: # checkjob //... "ruby whatever/checkjob.rb %changelist%" # # For triggers I recommend you use a P4CONFIG file rather than hard coding # username/password in the script itself. This script assumes you've taken # that advice. # #------------------------------------------------------------------------------- $:.unshift( File.dirname( __FILE__ ) ) require "P4" require "P4Triggers" # # The trigger class itself. The main method in here is validate() which # is invoked from the super-class' parse_change() method. # class JobTrigger < P4Trigger # # The error message we give to the user # @@USER_MESSAGE = "\n\n" + "Your submission has been rejected because there are no jobs\n" + "associated with this change. Please associate a job with this \n" + "changelist and try again\n\n" # Do the enforcement. def validate() if ( change.jobs.length() == 0 ) message( @@USER_MESSAGE ) return false end return true end end #-- #------------------------------------------------------------------------------- # Start of main script execution #------------------------------------------------------------------------------- #++ # By this stage it's pretty simple. Even argument validation is handled by # the P4Trigger class so we don't even need to check that we were passed # a changelist number. jt = JobTrigger.new exit( jt.parse_change( ARGV.shift ) )