p4tools 0.1.1 → 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/Gemfile.lock +14 -14
- data/lib/commands/move.rb +28 -19
- data/lib/commands/revert.rb +9 -4
- data/lib/p4_tools.rb +0 -3
- data/lib/p4tools/utils/validators/shelve_validator.rb +5 -7
- data/p4tools.gemspec +1 -1
- metadata +3 -4
- data/lib/p4tools/utils/window_manager.rb +0 -18
data/Gemfile.lock
CHANGED
@@ -1,14 +1,14 @@
|
|
1
|
-
GEM
|
2
|
-
remote: https://rubygems.org/
|
3
|
-
specs:
|
4
|
-
P4Ruby-mingwx86 (2014.1)
|
5
|
-
ffi (1.9.0-x86-mingw32)
|
6
|
-
rautomation (0.14.1)
|
7
|
-
ffi (= 1.9.0)
|
8
|
-
|
9
|
-
PLATFORMS
|
10
|
-
x86-mingw32
|
11
|
-
|
12
|
-
DEPENDENCIES
|
13
|
-
P4Ruby-mingwx86 (~> 2014.1)
|
14
|
-
rautomation (= 0.14.1)
|
1
|
+
GEM
|
2
|
+
remote: https://rubygems.org/
|
3
|
+
specs:
|
4
|
+
P4Ruby-mingwx86 (2014.1)
|
5
|
+
ffi (1.9.0-x86-mingw32)
|
6
|
+
rautomation (0.14.1)
|
7
|
+
ffi (= 1.9.0)
|
8
|
+
|
9
|
+
PLATFORMS
|
10
|
+
x86-mingw32
|
11
|
+
|
12
|
+
DEPENDENCIES
|
13
|
+
P4Ruby-mingwx86 (~> 2014.1)
|
14
|
+
rautomation (= 0.14.1)
|
data/lib/commands/move.rb
CHANGED
@@ -15,7 +15,7 @@ module P4Tools
|
|
15
15
|
help ''
|
16
16
|
arg :workspace, "Name of the new workspace. If 'switch' option provided, this will be ignored.", :short => '-w', :type => :string
|
17
17
|
arg :switch, 'Switch between workspaces, only 2 workspace name allowed.', :short => '-i', :type => :strings
|
18
|
-
arg :
|
18
|
+
arg :changelists, 'Changelist numbers to move.', :short => '-c', :type => :ints, :required => true
|
19
19
|
arg :revert, 'Revert before move.', :short => '-r'
|
20
20
|
arg :shelve, 'Shelve before move.', :short => '-s'
|
21
21
|
end
|
@@ -25,17 +25,27 @@ module P4Tools
|
|
25
25
|
def initialize(args)
|
26
26
|
@args = args
|
27
27
|
@p4 = P4Tools.connection
|
28
|
-
|
29
|
-
|
28
|
+
workspaces = @args[:switch]
|
29
|
+
|
30
|
+
if workspaces
|
31
|
+
validate_workspaces(workspaces)
|
32
|
+
|
33
|
+
@workspaces = Hash[workspaces.permutation.to_a]
|
34
|
+
end
|
30
35
|
end
|
31
36
|
|
32
37
|
def run
|
33
|
-
|
34
|
-
|
38
|
+
@args[:changelists].each do |changelist|
|
39
|
+
@changelist = changelist
|
40
|
+
@is_not_empty = !empty_changelist?(@changelist)
|
35
41
|
|
36
|
-
|
37
|
-
|
38
|
-
|
42
|
+
shelve
|
43
|
+
revert
|
44
|
+
|
45
|
+
changelist_spec = @p4.fetch_change(@changelist)
|
46
|
+
changelist_spec['Client'] = get_workspace(changelist_spec)
|
47
|
+
@p4.save_change(changelist_spec)
|
48
|
+
end
|
39
49
|
end
|
40
50
|
|
41
51
|
|
@@ -54,26 +64,25 @@ module P4Tools
|
|
54
64
|
end
|
55
65
|
|
56
66
|
def get_workspace(changelist_spec)
|
57
|
-
if @
|
67
|
+
if @workspaces
|
58
68
|
current = changelist_spec['Client']
|
59
|
-
|
60
|
-
|
61
|
-
validate_workspaces(workspaces, current)
|
69
|
+
validate_current(current)
|
62
70
|
|
63
|
-
workspaces
|
64
|
-
workspaces.first
|
71
|
+
@workspaces[current]
|
65
72
|
else
|
66
73
|
@args[:workspace]
|
67
74
|
end
|
68
75
|
end
|
69
76
|
|
70
|
-
def
|
71
|
-
|
72
|
-
raise(ArgumentError,
|
77
|
+
def validate_current(current_workspace)
|
78
|
+
unless @workspaces.include?(current_workspace)
|
79
|
+
raise(ArgumentError, "The switch parameter does not contains the currently active workspace: #{current_workspace}!")
|
73
80
|
end
|
81
|
+
end
|
74
82
|
|
75
|
-
|
76
|
-
|
83
|
+
def validate_workspaces(workspaces)
|
84
|
+
if workspaces.length != 2
|
85
|
+
raise(ArgumentError, 'The switch parameter need to contains 2 workspace names exactly!')
|
77
86
|
end
|
78
87
|
end
|
79
88
|
end
|
data/lib/commands/revert.rb
CHANGED
@@ -5,13 +5,18 @@ module P4Tools
|
|
5
5
|
parameters = []
|
6
6
|
parameters.push('-w') if arguments[:delete_added_files]
|
7
7
|
|
8
|
-
if arguments[:
|
9
|
-
parameters.push('-c').push(
|
8
|
+
if arguments[:changelists]
|
9
|
+
parameters.push('-c').push('').push('//...')
|
10
|
+
|
11
|
+
arguments[:changelists].each do |changelist|
|
12
|
+
parameters[-2] = changelist
|
13
|
+
p4.run_revert(parameters)
|
14
|
+
end
|
10
15
|
else
|
11
16
|
parameters.push(*arguments[:files])
|
17
|
+
p4.run_revert(parameters)
|
12
18
|
end
|
13
19
|
|
14
|
-
p4.run_revert(parameters)
|
15
20
|
end
|
16
21
|
|
17
22
|
def self.set_options(opts)
|
@@ -21,7 +26,7 @@ module P4Tools
|
|
21
26
|
help 'Options:'
|
22
27
|
help ''
|
23
28
|
arg :delete_added_files, 'Delete added files.', :short => '-d'
|
24
|
-
arg :
|
29
|
+
arg :changelists, 'Changelist numbers.', :short => '-c', :type => :ints
|
25
30
|
arg :files, 'The absolute path of the files to delete.', :short => '-f', :type => :strings
|
26
31
|
end
|
27
32
|
end
|
data/lib/p4_tools.rb
CHANGED
@@ -3,7 +3,6 @@ require_relative 'p4tools/environment'
|
|
3
3
|
require_relative 'p4tools/p4_delegate'
|
4
4
|
require_relative 'p4tools/utils/utils'
|
5
5
|
require_relative 'p4tools/utils/command_utils'
|
6
|
-
require_relative 'p4tools/utils/window_manager'
|
7
6
|
require_relative 'p4tools/parsers/command_parser'
|
8
7
|
require_relative 'p4tools/parsers/trollop_custom'
|
9
8
|
require_relative 'p4tools/parsers/command_options'
|
@@ -22,7 +21,6 @@ module P4Tools
|
|
22
21
|
|
23
22
|
begin
|
24
23
|
run_commands(entries)
|
25
|
-
WindowManager.refresh if global_arguments[:refresh]
|
26
24
|
ensure
|
27
25
|
@p4.disconnect
|
28
26
|
end
|
@@ -39,7 +37,6 @@ module P4Tools
|
|
39
37
|
help ''
|
40
38
|
help 'Global options:'
|
41
39
|
help ''
|
42
|
-
arg :refresh, 'Send a refresh keystroke(F5) to the Visual Client.', :short => '-r'
|
43
40
|
arg :p4config, 'Absolute path of the P4CONFIG file.', :short => '-p', :type => :string
|
44
41
|
end
|
45
42
|
end
|
@@ -24,16 +24,14 @@ module P4Tools
|
|
24
24
|
|
25
25
|
# @return [Boolean]
|
26
26
|
def files_are_identical?
|
27
|
-
|
28
|
-
intersection = @shelved_files & @opened_files
|
27
|
+
identical = true
|
29
28
|
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
end
|
29
|
+
if @check_diff
|
30
|
+
shelve_revisions = @opened_files.map { |file| file + "@=#{@changelist}" }
|
31
|
+
identical = @p4.run_diff('-Od', *shelve_revisions).empty?
|
34
32
|
end
|
35
33
|
|
36
|
-
|
34
|
+
identical
|
37
35
|
end
|
38
36
|
end
|
39
37
|
end
|
data/p4tools.gemspec
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: p4tools
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2014-04-
|
12
|
+
date: 2014-04-23 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: P4Ruby-mingwx86
|
@@ -51,7 +51,6 @@ files:
|
|
51
51
|
- lib/p4tools/utils/command_utils.rb
|
52
52
|
- lib/p4tools/utils/utils.rb
|
53
53
|
- lib/p4tools/utils/validators/shelve_validator.rb
|
54
|
-
- lib/p4tools/utils/window_manager.rb
|
55
54
|
- p4tools.gemspec
|
56
55
|
homepage: https://github.com/ncsibra/P4Tools
|
57
56
|
licenses: []
|
@@ -73,7 +72,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
73
72
|
version: '0'
|
74
73
|
requirements: []
|
75
74
|
rubyforge_project:
|
76
|
-
rubygems_version: 1.8.
|
75
|
+
rubygems_version: 1.8.23
|
77
76
|
signing_key:
|
78
77
|
specification_version: 3
|
79
78
|
summary: Simple command line tool to run custom perforce commands.
|
@@ -1,18 +0,0 @@
|
|
1
|
-
module P4Tools
|
2
|
-
module WindowManager
|
3
|
-
def self.refresh
|
4
|
-
try_require
|
5
|
-
|
6
|
-
window = RAutomation::Window.new(:title => /Perforce P4V/i)
|
7
|
-
window.send_keys(:f5) if window.exist?
|
8
|
-
end
|
9
|
-
|
10
|
-
def self.try_require
|
11
|
-
begin
|
12
|
-
require 'rautomation'
|
13
|
-
rescue
|
14
|
-
raise(LoadError, "To use this module please install the 'rautomation' gem, version '0.14.1'. It might not work with other versions. Use command: 'gem install rautomation -v 0.14.1'")
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|