| Path: | defaultclient.rb |
| Last Update: | Fri Nov 19 17:20:25 GMT 2004 |
This script ensures that the default client view offered to users
for new client workspaces is based on a template client specified
in the trigger definition.
defaultclient.rb <templatename> <clientname> <formfile>
Using a trigger spec like this:
defaultclient out client "defaultclient.rb baseclient %formname% %formfile%"
would make the default client view offered to any user based on
the view defined in the client called 'baseclient'. Changing that
client spec would change the default view.
Check whether or not a client already exists.
# File defaultclient.rb, line 59
59: def client_exists?( p4, name )
60: p4.run_clients.each do
61: |c|
62: if( c[ "client" ] == name )
63: return true
64: end
65: end
66: return false
67: end
Show a message explaining correct usage of this script and exit.
# File defaultclient.rb, line 34
34: def croakusage()
35: puts "\nUsage: defaultclient.rb <templatename> <clientname> <formfile>\n\nWhere:\n <templatename> - the name of an existing client workspace \n on which all future client workspaces \n should be based (by default).\n\n <clientname> - The name of the client spec the user's \n asking for\n\n <formfile> - The name of the temporary file in which the\n current client spec is stored\n\n"
36: exit( 1 )
37: end
Load the skeleton spec from the formfile
# File defaultclient.rb, line 72
72: def load_spec( formfile )
73: f = File.open( formfile, "r" )
74: buf = f.read
75: f.close
76: buf
77: end
Update the existing formfile with a new spec. Since the comments that appear at the top of a spec file are quite useful to the users, we preserve them and only update the end of the file with the new spec.
# File defaultclient.rb, line 85
85: def write_spec( spec, formfile )
86: comments = ""
87: File.open( formfile, "r" ) do
88: |f|
89: f.each_line do
90: |line|
91: if( line[0...1] != '#' )
92: break
93: end
94: comments += line
95: end
96: end
97: comments += "\n"
98:
99: File.open( formfile, "w" ) do
100: |f|
101: f.write( comments )
102: f.write( spec )
103: end
104: end