p4_web_api 2014.2.0.pre2 → 2014.2.0.pre4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/bin/p4_web_api +8 -2
- data/lib/p4_web_api.rb +27 -670
- data/lib/p4_web_api/app/changes.rb +73 -0
- data/lib/p4_web_api/app/commands.rb +58 -0
- data/lib/p4_web_api/app/files.rb +166 -0
- data/lib/p4_web_api/app/protections.rb +33 -0
- data/lib/p4_web_api/app/sessions.rb +45 -0
- data/lib/p4_web_api/app/specs.rb +114 -0
- data/lib/p4_web_api/app/streams.rb +76 -0
- data/lib/p4_web_api/app/triggers.rb +31 -0
- data/lib/p4_web_api/app/users.rb +78 -0
- data/lib/p4_web_api/auth.rb +3 -3
- data/lib/p4_web_api/change_helper.rb +149 -0
- data/lib/p4_web_api/helpers.rb +84 -0
- data/lib/p4_web_api/p4_util.rb +90 -1
- data/lib/p4_web_api/version.rb +1 -1
- metadata +13 -2
data/lib/p4_web_api/p4_util.rb
CHANGED
@@ -71,6 +71,37 @@ module P4WebAPI
|
|
71
71
|
.match(str)
|
72
72
|
end
|
73
73
|
|
74
|
+
def self.init_changelist(p4, description)
|
75
|
+
change_spec = p4.fetch_change
|
76
|
+
change_spec._description = description
|
77
|
+
results = p4.save_change(change_spec)
|
78
|
+
results[0].gsub(/^Change (\d+) created./, '\1')
|
79
|
+
end
|
80
|
+
|
81
|
+
def self.save_content(root, depot_path, content)
|
82
|
+
local_file = local_path(depot_path, root)
|
83
|
+
dir = File.dirname(local_file)
|
84
|
+
FileUtils.mkpath(dir) unless Dir.exist?(dir)
|
85
|
+
|
86
|
+
IO.write(local_file, content)
|
87
|
+
end
|
88
|
+
|
89
|
+
def self.existing_path?(existing_results, depot_path)
|
90
|
+
existing_results.any? do |result|
|
91
|
+
result['depotFile'] == depot_path
|
92
|
+
end
|
93
|
+
end
|
94
|
+
|
95
|
+
def self.mark_change(type, p4, change_id, root, depot_path)
|
96
|
+
local_file = local_path(depot_path, root)
|
97
|
+
p4.run(type, '-c', change_id, local_file)
|
98
|
+
end
|
99
|
+
|
100
|
+
def self.local_path(depot_path, root)
|
101
|
+
stripped = depot_path.gsub(/^\/+/, '')
|
102
|
+
File.join(root, stripped)
|
103
|
+
end
|
104
|
+
|
74
105
|
def self.singular(plural)
|
75
106
|
matches = {
|
76
107
|
branches: 'branch',
|
@@ -110,7 +141,6 @@ module P4WebAPI
|
|
110
141
|
'changeType' => 'Type',
|
111
142
|
'desc' => 'Description'
|
112
143
|
}
|
113
|
-
DESCRIBES_MAP = CHANGES_MAP
|
114
144
|
CHANGES_DATES = ['Date']
|
115
145
|
|
116
146
|
CLIENTS_MAP = {
|
@@ -127,6 +157,11 @@ module P4WebAPI
|
|
127
157
|
}
|
128
158
|
DEPOTS_DATES = ['Date']
|
129
159
|
|
160
|
+
# Note that individual files are handled differently, since the keys are
|
161
|
+
# prefixed
|
162
|
+
DESCRIBE_MAP = CHANGES_MAP
|
163
|
+
DESCRIBE_DATES = CHANGES_DATES
|
164
|
+
|
130
165
|
DIRS_MAP = {
|
131
166
|
'dir' => 'Dir'
|
132
167
|
}
|
@@ -199,6 +234,14 @@ module P4WebAPI
|
|
199
234
|
make_normalizer(CLIENTS_MAP, offset, CLIENTS_DATES)
|
200
235
|
when 'depots'
|
201
236
|
make_normalizer(DEPOTS_MAP, offset, DEPOTS_DATES)
|
237
|
+
when 'describe'
|
238
|
+
# This only affects 'base' fields, not fields related to each file
|
239
|
+
base_normalize = make_normalizer(DESCRIBE_MAP, offset, DESCRIBE_DATES)
|
240
|
+
lambda do |results|
|
241
|
+
results = base_normalize.call(results)
|
242
|
+
P4Util.normalize_describe_files(results)
|
243
|
+
results
|
244
|
+
end
|
202
245
|
when 'dirs'
|
203
246
|
make_normalizer(DIRS_MAP, offset)
|
204
247
|
when 'files'
|
@@ -292,6 +335,52 @@ module P4WebAPI
|
|
292
335
|
end
|
293
336
|
end
|
294
337
|
|
338
|
+
FILE_KEYS = %w(depotFile action type rev digest fileSize)
|
339
|
+
|
340
|
+
# Each file entry in the base describe tagged output contains several
|
341
|
+
# fields, suffixed with an index value.
|
342
|
+
#
|
343
|
+
# P4 Ruby returns the individual 'index fields' already collated by the
|
344
|
+
# key type.
|
345
|
+
def self.normalize_describe_files(results)
|
346
|
+
results.each do |r|
|
347
|
+
# We have to collect each index we discover as we iterate over the keys
|
348
|
+
idx_2_file = {}
|
349
|
+
|
350
|
+
FILE_KEYS.each do |key|
|
351
|
+
if r.key?(key)
|
352
|
+
r[key].each_index do |idx|
|
353
|
+
mapped_key = P4Util.map_describe_file_key(key)
|
354
|
+
|
355
|
+
idx_2_file[idx] = {} unless idx_2_file.key?(idx)
|
356
|
+
idx_2_file[idx][mapped_key] = r[key][idx]
|
357
|
+
end
|
358
|
+
r.delete(key)
|
359
|
+
end
|
360
|
+
end
|
361
|
+
|
362
|
+
r['Files'] = idx_2_file.values
|
363
|
+
end
|
364
|
+
results
|
365
|
+
end
|
366
|
+
|
367
|
+
def self.map_describe_file_key(key)
|
368
|
+
case key
|
369
|
+
when /^depotFile$/
|
370
|
+
return 'DepotFile'
|
371
|
+
when /^action$/
|
372
|
+
return 'Action'
|
373
|
+
when /^type$/
|
374
|
+
return 'Type'
|
375
|
+
when /^rev$/
|
376
|
+
return 'Revision'
|
377
|
+
when /^fileSize$/
|
378
|
+
return 'FileSize'
|
379
|
+
when /^digest$/
|
380
|
+
return 'Digest'
|
381
|
+
end
|
382
|
+
end
|
383
|
+
|
295
384
|
# Returns true if .to_i will actually convert this string to an integer
|
296
385
|
def self.i?(str)
|
297
386
|
(str =~ /\A[-+]?\d+\z/)
|
data/lib/p4_web_api/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: p4_web_api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2014.2.0.
|
4
|
+
version: 2014.2.0.pre4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Perforce Software, Inc.
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-12-
|
11
|
+
date: 2014-12-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -218,7 +218,18 @@ extra_rdoc_files: []
|
|
218
218
|
files:
|
219
219
|
- bin/p4_web_api
|
220
220
|
- lib/p4_web_api.rb
|
221
|
+
- lib/p4_web_api/app/changes.rb
|
222
|
+
- lib/p4_web_api/app/commands.rb
|
223
|
+
- lib/p4_web_api/app/files.rb
|
224
|
+
- lib/p4_web_api/app/protections.rb
|
225
|
+
- lib/p4_web_api/app/sessions.rb
|
226
|
+
- lib/p4_web_api/app/specs.rb
|
227
|
+
- lib/p4_web_api/app/streams.rb
|
228
|
+
- lib/p4_web_api/app/triggers.rb
|
229
|
+
- lib/p4_web_api/app/users.rb
|
221
230
|
- lib/p4_web_api/auth.rb
|
231
|
+
- lib/p4_web_api/change_helper.rb
|
232
|
+
- lib/p4_web_api/helpers.rb
|
222
233
|
- lib/p4_web_api/p4_error.rb
|
223
234
|
- lib/p4_web_api/p4_util.rb
|
224
235
|
- lib/p4_web_api/version.rb
|