Files
2025-09-29 00:52:08 +02:00

106 lines
3.1 KiB
Ruby
Executable File

#
# File:: p4_opened.rb
# Description::
#
# Author:: David Muir <david.muir@rockstarnorth.com>
# Date:: 15 July 2009
#
#----------------------------------------------------------------------------
# Uses
#----------------------------------------------------------------------------
require 'pipeline/config/projects'
require 'pipeline/gui/log_window'
require 'pipeline/log/log'
require 'pipeline/os/getopt'
require 'pipeline/os/path'
require 'pipeline/scm/perforce'
include Pipeline
#----------------------------------------------------------------------------
# Constants
#----------------------------------------------------------------------------
OPTIONS = [
[ '--show', '-s', OS::Getopt::BOOLEAN, 'show opened files.' ],
[ '--help', '-h', OS::Getopt::BOOLEAN, 'display usage information.' ]
]
TRAILING_DESC = { 'paths' => 'Perforce depot path to check for opened files.' }
#-----------------------------------------------------------------------------
# Entry
#-----------------------------------------------------------------------------
if ( __FILE__ == $0 ) then
#-------------------------------------------------------------------------
# Entry-Point
#-------------------------------------------------------------------------
begin
g_AppName = File::basename( __FILE__, '.rb' )
g_Config = Pipeline::Config.instance( )
#---------------------------------------------------------------------
# Parse Command Line
#---------------------------------------------------------------------
opts, trailing = OS::Getopt.getopts( OPTIONS )
if ( opts['help'] ) then
puts OS::Getopt.usage( OPTIONS, TRAILING_DESC )
exit( -1 )
end
if ( 0 == trailing.size ) then
puts 'No trailing path arguments specified. Exiting.'
puts OS::Getopt.usage( OPTIONS, TRAILING_DESC )
exit( -2 )
end
# Connect to Perforce
exitcode = 0
GUI::LogWindow::show_dialog( true, LogSystem::instance().rootlog, 'P4 Checked-Out Log' ) do
p4 = Pipeline::SCM::Perforce.new( )
p4.user = g_Config.sc_username
p4.client = g_Config.sc_workspace
p4.port = g_Config.sc_server
p4.connect( )
if ( not p4.connected? ) then
puts 'Failed to connect to Perforce server. Check installer config.'
puts OS::Getopt.usage( OPTIONS, TRAILING_DESC )
exit( -3 )
end
# Normalise user-paths
user_paths = []
trailing.each do |trailing|
user_paths << OS::Path.normalise( trailing )
end
# Fetch opened files from p4 opened command.
opened_files = []
user_paths.each do |path|
opened_files += p4.run_opened( path )
end
opened_files.each do |opened|
LogSystem::instance().rootlog.warn( "File: #{opened['depotFile']} is checked-out." )
end
if ( opened_files.size > 0 ) then
LogSystem::instance().rootlog.error( 'Files are checked-out.' )
exitcode = 1
end
# Disconnect
p4.disconnect( )
end
exit( exitcode )
rescue Exception => ex
exit( ex.status ) if ( 'exit' == ex.message )
puts "\n#{g_AppName} unhandled exception: #{ex.message}"
puts ex.backtrace.join("\n\t")
end
end
# p4_opened.rb