atlassian-stash 0.1.6 → 0.1.8

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 CHANGED
@@ -6,6 +6,7 @@ source "http://rubygems.org"
6
6
  gem "git"
7
7
  gem "json"
8
8
  gem "commander"
9
+ gem "launchy"
9
10
 
10
11
  # Add dependencies to develop your gem here.
11
12
  # Include everything needed to run rake, tests, features, etc.
@@ -14,5 +15,6 @@ group :development do
14
15
  gem "rdoc", "~> 3.12"
15
16
  gem "bundler", ">= 1.2.0"
16
17
  gem "jeweler", "~> 1.8.4"
17
- gem "rcov", ">= 0"
18
+ gem "rcov", ">= 0", :platforms => :ruby_18
19
+ gem "simplecov", ">= 0", :platforms => :ruby_19, :require => "false"
18
20
  end
data/README.md CHANGED
@@ -37,6 +37,6 @@ Thanks! Please [fork this project](https://bitbucket.org/atlassian/stash-command
37
37
  Building this gem is easy. To get started, run the following commands:
38
38
 
39
39
  $> gem install bundler
40
- $> bundler install
40
+ $> bundle install
41
41
 
42
42
  Now start hacking, and run the stash command by invoking `./bin/stash command`
data/Rakefile CHANGED
@@ -33,15 +33,30 @@ Rake::TestTask.new(:test) do |test|
33
33
  test.verbose = true
34
34
  end
35
35
 
36
- require 'rcov/rcovtask'
37
- Rcov::RcovTask.new do |test|
38
- test.libs << 'test'
39
- test.pattern = 'test/**/test_*.rb'
40
- test.verbose = true
41
- test.rcov_opts << '--exclude "gems/*"'
36
+ task :default => :test
37
+
38
+ begin
39
+ require 'rcov/rcovtask'
40
+
41
+ Rcov::RcovTask.new do |test|
42
+ test.libs << 'test'
43
+ test.pattern = 'test/**/test_*.rb'
44
+ test.verbose = true
45
+ test.rcov_opts << '--exclude "gems/*"'
46
+ end
47
+ rescue LoadError => e
42
48
  end
43
49
 
44
- task :default => :test
50
+ begin
51
+ require "simplecov"
52
+
53
+ desc "Execute tests with coverage report"
54
+ task :simplecov do
55
+ ENV["COVERAGE"]="true"
56
+ Rake::Task["test"].execute
57
+ end
58
+ rescue LoadError
59
+ end
45
60
 
46
61
  require 'rdoc/task'
47
62
  Rake::RDocTask.new do |rdoc|
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.6
1
+ 0.1.8
data/bin/stash CHANGED
@@ -58,8 +58,9 @@ command 'pull-request' do |c|
58
58
  }.compact
59
59
  end
60
60
 
61
- c.syntax = 'pull-request [sourceBranch] targetBranch [@reviewer1 @reviewer2]'
61
+ c.syntax = 'pull-request [sourceBranch] targetBranch [@reviewer1 @reviewer2] [options]'
62
62
  c.description = 'Create a pull request in Stash'
63
+ c.option '-o', '--open', 'Open the created pull request page in a web browser'
63
64
  c.example 'stash pull-request topicBranch master @michael', "Create a pull request from branch 'topicBranch' into 'master' with 'michael' added as a reviewer"
64
65
  c.example 'stash pull-request master', "Create a pull request from the current git branch into 'master'"
65
66
  c.action do |args, options|
@@ -80,7 +81,7 @@ command 'pull-request' do |c|
80
81
 
81
82
  ensure_within_git! do
82
83
  cpr = CreatePullRequest.new(load_config)
83
- cpr.create_pull_request source, target, reviewers
84
+ cpr.create_pull_request source, target, reviewers, options
84
85
  end
85
86
  end
86
87
  end
@@ -2,6 +2,9 @@ require 'json'
2
2
  require 'net/https'
3
3
  require 'uri'
4
4
  require 'git'
5
+ require 'launchy'
6
+
7
+ include Atlassian::Util::TextUtil
5
8
 
6
9
  module Atlassian
7
10
  module Stash
@@ -25,11 +28,12 @@ module Atlassian
25
28
  }
26
29
  @resource = {
27
30
  'title' => title,
31
+ 'description' => description,
28
32
  'fromRef' => fromRef,
29
33
  'toRef' => toRef
30
34
  }
31
35
 
32
- @resource["reviewers"] = reviewers.collect { |r|
36
+ @resource["reviewers"] = reviewers.collect { |r|
33
37
  {
34
38
  'user' => {
35
39
  'name' => r
@@ -48,44 +52,41 @@ module Atlassian
48
52
  end
49
53
 
50
54
  def extract_repository_info (url = get_remote_url)
51
- if m = url.match(/\/([a-zA-Z][a-zA-Z0-9_]*)\/([[:alnum:]][\w\-\.]*).git$/)
55
+ if m = url.match(/\/([a-zA-Z~][a-zA-Z0-9_]*)\/([[:alnum:]][\w\-\.]*).git$/)
52
56
  return RepoInfo.new(m[1], m[2])
53
57
  end
54
58
  raise "Repository does not seem to be hosted in Stash"
55
59
  end
56
60
 
57
- def generate_pull_request_title(source, target)
58
- output = %x(git log --reverse --format=%s #{target}..#{source}).split(/\n/).first
59
- output || 'Merge \'%s\' into \'%s\'' % [source, target]
60
- end
61
-
62
-
63
- def create_pull_request(source, target, reviewers)
61
+ def create_pull_request(source, target, reviewers, options)
64
62
  Process.exit if not target or not source
65
63
 
64
+ @source = source
65
+ @target = target
66
+
66
67
  repoInfo = extract_repository_info
67
- title = generate_pull_request_title source, target
68
- description = ''
69
68
 
70
- resource = CreatePullRequestResource.new(repoInfo.projectKey, repoInfo.slug, title, description, reviewers, source, target).resource
69
+ resource = CreatePullRequestResource.new(repoInfo.projectKey, repoInfo.slug, title, description, reviewers, @source, @target).resource
71
70
 
72
71
  username = @config["username"]
73
72
  password = @config["password"]
73
+ proxy_addr, proxy_port = parse_proxy(@config["proxy"])
74
74
 
75
75
  username = ask("Username: ") unless @config["username"]
76
76
  password = ask("Password: ") { |q| q.echo = '*' } unless @config["password"]
77
77
 
78
- uri = URI.parse(@config["stash_url"].downcase)
78
+ uri = URI.parse(@config["stash_url"])
79
79
  prPath = uri.path + '/projects/' + repoInfo.projectKey + '/repos/' + repoInfo.slug + '/pull-requests'
80
+ prPath = uri.query.nil? ? "#{prPath}" : "#{prPath}?#{uri.query}"
80
81
 
81
- req = Net::HTTP::Post.new(prPath, initheader = {'Content-Type' => 'application/json', 'Accept' => 'application/json'})
82
+ req = Net::HTTP::Post.new(prPath, {'Content-Type' => 'application/json', 'Accept' => 'application/json'})
82
83
  req.basic_auth username, password
83
84
  req.body = resource.to_json
84
- http = Net::HTTP.new(uri.host, uri.port)
85
+ http = Net::HTTP.new(uri.host, uri.port, proxy_addr, proxy_port)
85
86
  http.verify_mode = OpenSSL::SSL::VERIFY_NONE
86
87
  http.use_ssl = uri.scheme.eql?("https")
87
88
 
88
- response = http.start {|http| http.request(req) }
89
+ response = http.start {|conn| conn.request(req) }
89
90
 
90
91
  if not response.is_a? Net::HTTPCreated
91
92
  responseBody = JSON.parse(response.body)
@@ -110,8 +111,37 @@ module Atlassian
110
111
  prUri = uri.clone
111
112
  prUri.path = prPath + '/' + responseBody['id'].to_s
112
113
  puts prUri.to_s
114
+
115
+ if @config["open"] || options.open
116
+ Launchy.open prUri.to_s
117
+ end
113
118
  end
119
+ end
120
+
121
+ private
114
122
 
123
+ def title
124
+ convert_branch_name_to_sentence(@source) || "Merge '#{@source}' into '#{@target}'"
125
+ end
126
+
127
+ def description
128
+ git_commit_messages
129
+ end
130
+
131
+ def git_commit_messages
132
+ @commit_messages ||= `git log --reverse --format=%s #{@target}..#{@source}`
133
+ end
134
+
135
+ def parse_proxy(conf)
136
+ return nil, nil unless conf
137
+
138
+ addr, port = conf.split(":")
139
+ if port =~ /\d+/
140
+ port = port.to_i
141
+ else
142
+ port = nil
143
+ end
144
+ [addr, port]
115
145
  end
116
146
  end
117
147
  end
@@ -0,0 +1,31 @@
1
+
2
+ module Atlassian
3
+ module Util
4
+ module TextUtil
5
+ def convert_branch_name_to_sentence(branch_name)
6
+ return '' if branch_name.nil?
7
+
8
+ branch_name = branch_name.to_s
9
+ return '' if branch_name.empty?
10
+
11
+ issue_key_regex = /([A-Z]{1,10}-\d+)/
12
+ branch_components = branch_name.split(issue_key_regex);
13
+
14
+ parts = branch_components.each_with_index.map { |value, index|
15
+ (index % 2 === 0) ? value.gsub(/[\-_]/, ' ') : value
16
+ }
17
+
18
+ to_sentence_case(parts.join(''))
19
+ end
20
+
21
+ def to_sentence_case(str)
22
+ return '' if str.nil?
23
+
24
+ str = str.to_s
25
+ return '' if str.empty?
26
+
27
+ str[0].upcase + str.slice(1, str.length)
28
+ end
29
+ end
30
+ end
31
+ end
data/lib/stash_cli.rb CHANGED
@@ -1,2 +1,3 @@
1
1
 
2
+ Dir[File.join(File.dirname(__FILE__), "atlassian", "util", "*.rb")].sort.each {|f| require f}
2
3
  Dir[File.join(File.dirname(__FILE__), "atlassian", "stash", "*.rb")].sort.each {|f| require f}
data/test/helper.rb CHANGED
@@ -1,5 +1,13 @@
1
1
  require 'rubygems'
2
2
  require 'bundler'
3
+
4
+ if ENV["COVERAGE"]
5
+ require "simplecov"
6
+ SimpleCov.start :test_frameworks do
7
+ add_filter "/vendor/"
8
+ end
9
+ end
10
+
3
11
  begin
4
12
  Bundler.setup(:default, :development)
5
13
  rescue Bundler::BundlerError => e
@@ -4,27 +4,64 @@ include Atlassian::Stash
4
4
  include Atlassian::Stash::Git
5
5
 
6
6
  class TestStashCreatePullRequest < Test::Unit::TestCase
7
-
8
- should "extract project key and repo slug from Stash remote" do
9
- remote = "https://sruiz@stash-dev.atlassian.com/scm/STASH/stash.git"
10
- cpr = CreatePullRequest.new nil
11
- ri = cpr.extract_repository_info remote
12
- assert_equal 'STASH', ri.projectKey
13
- assert_equal 'stash', ri.slug
14
- end
15
-
16
- should "extracting project key and repo slug from non stash url raises exception" do
17
- remote = "git@bitbucket.org:sebr/atlassian-stash-rubygem.git"
18
- cpr = CreatePullRequest.new nil
19
- assert_raise(RuntimeError) { cpr.extract_repository_info remote }
20
- end
21
-
22
-
23
- should "repo with hyphes" do
24
- remote = "https://sruiz@stash-dev.atlassian.com/scm/s745h/stash-repository.git"
25
- cpr = CreatePullRequest.new nil
26
- ri = cpr.extract_repository_info remote
27
- assert_equal 's745h', ri.projectKey
28
- assert_equal 'stash-repository', ri.slug
29
- end
30
- end
7
+
8
+ context "Extract repository info" do
9
+ should "extract project key and repo slug from Stash remote" do
10
+ remote = "https://sruiz@stash-dev.atlassian.com/scm/STASH/stash.git"
11
+ cpr = CreatePullRequest.new nil
12
+ ri = cpr.extract_repository_info remote
13
+ assert_equal 'STASH', ri.projectKey
14
+ assert_equal 'stash', ri.slug
15
+ end
16
+
17
+ should "extracting project key and repo slug from non stash url raises exception" do
18
+ remote = "git@bitbucket.org:sebr/atlassian-stash-rubygem.git"
19
+ cpr = CreatePullRequest.new nil
20
+ assert_raise(RuntimeError) { cpr.extract_repository_info remote }
21
+ end
22
+
23
+ should "repo with hyphes" do
24
+ remote = "https://sruiz@stash-dev.atlassian.com/scm/s745h/stash-repository.git"
25
+ cpr = CreatePullRequest.new nil
26
+ ri = cpr.extract_repository_info remote
27
+ assert_equal 's745h', ri.projectKey
28
+ assert_equal 'stash-repository', ri.slug
29
+ end
30
+ end
31
+
32
+ context "#parse_proxy" do
33
+ setup do
34
+ @cpr = CreatePullRequest.new nil
35
+ end
36
+
37
+ context 'when proxy_conf is nil' do
38
+ should 'returns [nil, nil]' do
39
+ assert_equal [nil, nil], @cpr.send(:parse_proxy, nil)
40
+ end
41
+ end
42
+
43
+ context 'when proxy_conf is blank' do
44
+ should 'returns [nil, nil]' do
45
+ assert_equal [nil, nil], @cpr.send(:parse_proxy, "")
46
+ end
47
+ end
48
+
49
+ context 'when proxy_conf is "proxy.example.com"' do
50
+ should 'returns ["proxy.example.com", nil]' do
51
+ assert_equal ["proxy.example.com", nil], @cpr.send(:parse_proxy, "proxy.example.com")
52
+ end
53
+ end
54
+
55
+ context 'when proxy_conf is "proxy.example.com:8080"' do
56
+ should 'returns ["proxy.example.com", 8080]' do
57
+ assert_equal ["proxy.example.com", 8080], @cpr.send(:parse_proxy, "proxy.example.com:8080")
58
+ end
59
+ end
60
+
61
+ context 'when proxy_conf is "proxy.example.com:foo"' do
62
+ should 'returns ["proxy.example.com", nil]' do
63
+ assert_equal ["proxy.example.com", nil], @cpr.send(:parse_proxy, "proxy.example.com:foo")
64
+ end
65
+ end
66
+ end
67
+ end
@@ -0,0 +1,103 @@
1
+
2
+ include Atlassian::Util::TextUtil
3
+
4
+ class TextUtilTest < Test::Unit::TestCase
5
+
6
+ context "to_sentence_case" do
7
+ should "work with an empty string" do
8
+ assert_equal "", to_sentence_case("")
9
+ end
10
+
11
+ should "work with a single letter" do
12
+ assert_equal "A", to_sentence_case("a")
13
+ end
14
+
15
+ should "work with a single number" do
16
+ assert_equal "1", to_sentence_case("1")
17
+ end
18
+
19
+ should "work with multichar" do
20
+ assert_equal "Abc def", to_sentence_case("abc def")
21
+ end
22
+
23
+ should "coerce boolean false" do
24
+ assert_equal "False", to_sentence_case(false)
25
+ end
26
+
27
+ should "coerce boolean true" do
28
+ assert_equal "True", to_sentence_case(true)
29
+ end
30
+
31
+ should "coerce nil" do
32
+ assert_equal "", to_sentence_case(nil)
33
+ end
34
+
35
+ should "coerce 0" do
36
+ assert_equal "0", to_sentence_case(0)
37
+ end
38
+
39
+ should "coerce 1" do
40
+ assert_equal "1", to_sentence_case(1)
41
+ end
42
+ end
43
+
44
+ context "convert_branch_name_to_sentence" do
45
+
46
+ should "work with branch name with leading issue key" do
47
+ assert_equal "STASHDEV-1234 branch name", convert_branch_name_to_sentence("STASHDEV-1234-branch-name")
48
+ end
49
+
50
+ should "work with branch name with trailing issue key" do
51
+ assert_equal "Branch name STASHDEV-1234", convert_branch_name_to_sentence("branch-name-STASHDEV-1234")
52
+ end
53
+
54
+ should "work with branch name with issue key in middle" do
55
+ assert_equal "Branch STASHDEV-1234 name", convert_branch_name_to_sentence("branch-STASHDEV-1234-name")
56
+ end
57
+
58
+ should "work with branch name with multiple adjacent issue keys" do
59
+ assert_equal "Branch name STASHDEV-1234 STASHDEV-1234", convert_branch_name_to_sentence("branch-name-STASHDEV-1234-STASHDEV-1234")
60
+ end
61
+
62
+ should "work with branch name with no issue keys" do
63
+ assert_equal "Tests branch name", convert_branch_name_to_sentence("tests-branch-name")
64
+ end
65
+
66
+ should "work with branch name with underscore delimiter" do
67
+ assert_equal "Tests branch name", convert_branch_name_to_sentence("tests_branch_name")
68
+ end
69
+
70
+ should "work with branch name with mixed delimiter" do
71
+ assert_equal "Tests branch name", convert_branch_name_to_sentence("tests-branch_name")
72
+ end
73
+
74
+ should "work with single word branch name" do
75
+ assert_equal "Branchname", convert_branch_name_to_sentence("branchname")
76
+ end
77
+
78
+ should "work with slash delimited branch name" do
79
+ assert_equal "Feature/tests/STASHDEV-1234 branch name", convert_branch_name_to_sentence("feature/tests/STASHDEV-1234-branch-name")
80
+ end
81
+
82
+ should "work with slash delimited branch name with issue key component" do
83
+ assert_equal "Feature/STASHDEV-1234/branch name", convert_branch_name_to_sentence("feature/STASHDEV-1234/branch-name")
84
+ end
85
+
86
+ should "work with branch name with invalid issue key (punctuation)" do
87
+ assert_equal "STASHDEV! 1234 branch name", convert_branch_name_to_sentence("STASHDEV!-1234-branch-name")
88
+ end
89
+
90
+ should "work with branch name with invalid issue key (lowercase)" do
91
+ assert_equal "Stashdev 1234 branch name", convert_branch_name_to_sentence("stashdev-1234-branch-name")
92
+ end
93
+
94
+ should "work with branch name with invalid issue key (numbers in project key)" do
95
+ assert_equal "STASHDEV1 1234 branch name", convert_branch_name_to_sentence("STASHDEV1-1234-branch-name")
96
+ end
97
+
98
+ should "work with empty branch name" do
99
+ assert_equal "", convert_branch_name_to_sentence("")
100
+ end
101
+ end
102
+
103
+ end
metadata CHANGED
@@ -1,133 +1,186 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: atlassian-stash
3
- version: !ruby/object:Gem::Version
4
- prerelease: false
5
- segments:
6
- - 0
7
- - 1
8
- - 6
9
- version: 0.1.6
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.8
5
+ prerelease:
10
6
  platform: ruby
11
- authors:
7
+ authors:
12
8
  - Seb Ruiz
13
9
  autorequire:
14
10
  bindir: bin
15
11
  cert_chain: []
16
-
17
- date: 2012-11-07 00:00:00 +11:00
18
- default_executable: stash
19
- dependencies:
20
- - !ruby/object:Gem::Dependency
12
+ date: 2013-11-13 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: git
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :runtime
21
23
  prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
30
+ - !ruby/object:Gem::Dependency
31
+ name: json
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
22
38
  type: :runtime
23
- name: git
24
- version_requirements: &id001 !ruby/object:Gem::Requirement
25
- requirements:
26
- - - ">="
27
- - !ruby/object:Gem::Version
28
- segments:
29
- - 0
30
- version: "0"
31
- requirement: *id001
32
- - !ruby/object:Gem::Dependency
33
39
  prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
46
+ - !ruby/object:Gem::Dependency
47
+ name: commander
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
34
54
  type: :runtime
35
- name: json
36
- version_requirements: &id002 !ruby/object:Gem::Requirement
37
- requirements:
38
- - - ">="
39
- - !ruby/object:Gem::Version
40
- segments:
41
- - 0
42
- version: "0"
43
- requirement: *id002
44
- - !ruby/object:Gem::Dependency
45
55
  prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ - !ruby/object:Gem::Dependency
63
+ name: launchy
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ! '>='
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
46
70
  type: :runtime
47
- name: commander
48
- version_requirements: &id003 !ruby/object:Gem::Requirement
49
- requirements:
50
- - - ">="
51
- - !ruby/object:Gem::Version
52
- segments:
53
- - 0
54
- version: "0"
55
- requirement: *id003
56
- - !ruby/object:Gem::Dependency
57
71
  prerelease: false
58
- type: :development
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
78
+ - !ruby/object:Gem::Dependency
59
79
  name: shoulda
60
- version_requirements: &id004 !ruby/object:Gem::Requirement
61
- requirements:
62
- - - ">="
63
- - !ruby/object:Gem::Version
64
- segments:
65
- - 0
66
- version: "0"
67
- requirement: *id004
68
- - !ruby/object:Gem::Dependency
69
- prerelease: false
80
+ requirement: !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - ! '>='
84
+ - !ruby/object:Gem::Version
85
+ version: '0'
70
86
  type: :development
87
+ prerelease: false
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ! '>='
92
+ - !ruby/object:Gem::Version
93
+ version: '0'
94
+ - !ruby/object:Gem::Dependency
71
95
  name: rdoc
72
- version_requirements: &id005 !ruby/object:Gem::Requirement
73
- requirements:
96
+ requirement: !ruby/object:Gem::Requirement
97
+ none: false
98
+ requirements:
74
99
  - - ~>
75
- - !ruby/object:Gem::Version
76
- segments:
77
- - 3
78
- - 12
79
- version: "3.12"
80
- requirement: *id005
81
- - !ruby/object:Gem::Dependency
82
- prerelease: false
100
+ - !ruby/object:Gem::Version
101
+ version: '3.12'
83
102
  type: :development
103
+ prerelease: false
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ~>
108
+ - !ruby/object:Gem::Version
109
+ version: '3.12'
110
+ - !ruby/object:Gem::Dependency
84
111
  name: bundler
85
- version_requirements: &id006 !ruby/object:Gem::Requirement
86
- requirements:
87
- - - ">="
88
- - !ruby/object:Gem::Version
89
- segments:
90
- - 1
91
- - 2
92
- - 0
112
+ requirement: !ruby/object:Gem::Requirement
113
+ none: false
114
+ requirements:
115
+ - - ! '>='
116
+ - !ruby/object:Gem::Version
93
117
  version: 1.2.0
94
- requirement: *id006
95
- - !ruby/object:Gem::Dependency
96
- prerelease: false
97
118
  type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ none: false
122
+ requirements:
123
+ - - ! '>='
124
+ - !ruby/object:Gem::Version
125
+ version: 1.2.0
126
+ - !ruby/object:Gem::Dependency
98
127
  name: jeweler
99
- version_requirements: &id007 !ruby/object:Gem::Requirement
100
- requirements:
128
+ requirement: !ruby/object:Gem::Requirement
129
+ none: false
130
+ requirements:
101
131
  - - ~>
102
- - !ruby/object:Gem::Version
103
- segments:
104
- - 1
105
- - 8
106
- - 4
132
+ - !ruby/object:Gem::Version
107
133
  version: 1.8.4
108
- requirement: *id007
109
- - !ruby/object:Gem::Dependency
110
- prerelease: false
111
134
  type: :development
135
+ prerelease: false
136
+ version_requirements: !ruby/object:Gem::Requirement
137
+ none: false
138
+ requirements:
139
+ - - ~>
140
+ - !ruby/object:Gem::Version
141
+ version: 1.8.4
142
+ - !ruby/object:Gem::Dependency
112
143
  name: rcov
113
- version_requirements: &id008 !ruby/object:Gem::Requirement
114
- requirements:
115
- - - ">="
116
- - !ruby/object:Gem::Version
117
- segments:
118
- - 0
119
- version: "0"
120
- requirement: *id008
121
- description: Provides convenient functions for interacting with Atlassian Stash through the command line
144
+ requirement: !ruby/object:Gem::Requirement
145
+ none: false
146
+ requirements:
147
+ - - ! '>='
148
+ - !ruby/object:Gem::Version
149
+ version: '0'
150
+ type: :development
151
+ prerelease: false
152
+ version_requirements: !ruby/object:Gem::Requirement
153
+ none: false
154
+ requirements:
155
+ - - ! '>='
156
+ - !ruby/object:Gem::Version
157
+ version: '0'
158
+ - !ruby/object:Gem::Dependency
159
+ name: simplecov
160
+ requirement: !ruby/object:Gem::Requirement
161
+ none: false
162
+ requirements:
163
+ - - ! '>='
164
+ - !ruby/object:Gem::Version
165
+ version: '0'
166
+ type: :development
167
+ prerelease: false
168
+ version_requirements: !ruby/object:Gem::Requirement
169
+ none: false
170
+ requirements:
171
+ - - ! '>='
172
+ - !ruby/object:Gem::Version
173
+ version: '0'
174
+ description: Provides convenient functions for interacting with Atlassian Stash through
175
+ the command line
122
176
  email: sruiz@atlassian.com
123
- executables:
177
+ executables:
124
178
  - stash
125
179
  extensions: []
126
-
127
- extra_rdoc_files:
180
+ extra_rdoc_files:
128
181
  - LICENSE.txt
129
182
  - README.md
130
- files:
183
+ files:
131
184
  - .document
132
185
  - Gemfile
133
186
  - LICENSE.txt
@@ -138,39 +191,38 @@ files:
138
191
  - lib/atlassian/stash/git.rb
139
192
  - lib/atlassian/stash/pullrequest.rb
140
193
  - lib/atlassian/stash/version.rb
194
+ - lib/atlassian/util/text_util.rb
141
195
  - lib/stash_cli.rb
142
196
  - test/helper.rb
143
197
  - test/test_stash-create-pull-request.rb
144
198
  - test/test_stash-git.rb
145
- has_rdoc: true
199
+ - test/test_text-util.rb
146
200
  homepage: https://bitbucket.org/atlassian/stash-command-line-tools
147
- licenses:
201
+ licenses:
148
202
  - MIT
149
203
  post_install_message:
150
204
  rdoc_options: []
151
-
152
- require_paths:
205
+ require_paths:
153
206
  - lib
154
- required_ruby_version: !ruby/object:Gem::Requirement
155
- requirements:
156
- - - ">="
157
- - !ruby/object:Gem::Version
158
- segments:
159
- - 0
160
- version: "0"
161
- required_rubygems_version: !ruby/object:Gem::Requirement
162
- requirements:
163
- - - ">="
164
- - !ruby/object:Gem::Version
165
- segments:
207
+ required_ruby_version: !ruby/object:Gem::Requirement
208
+ none: false
209
+ requirements:
210
+ - - ! '>='
211
+ - !ruby/object:Gem::Version
212
+ version: '0'
213
+ segments:
166
214
  - 0
167
- version: "0"
215
+ hash: 4305375427045807658
216
+ required_rubygems_version: !ruby/object:Gem::Requirement
217
+ none: false
218
+ requirements:
219
+ - - ! '>='
220
+ - !ruby/object:Gem::Version
221
+ version: '0'
168
222
  requirements: []
169
-
170
223
  rubyforge_project:
171
- rubygems_version: 1.3.6
224
+ rubygems_version: 1.8.25
172
225
  signing_key:
173
226
  specification_version: 3
174
227
  summary: Command line tools for Atlassian Stash
175
228
  test_files: []
176
-