mcrt 1.5.0 → 1.6.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/lib/mcrt.rb +78 -21
  3. data/mcrt.gemspec +1 -1
  4. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 94b2691c7cbf7c9ef7551e5aebe739d19a6b19ec
4
- data.tar.gz: 7b3aefa1ccebe96458ba54353d474afe87ef1f8b
3
+ metadata.gz: 55fd17a5464b4a35d721afcbf9ccb7eaa15d39cd
4
+ data.tar.gz: 1125e43f1cbc28992487d570a5585e2c9acc92b8
5
5
  SHA512:
6
- metadata.gz: e2ed261e30e6dec106caf120817fd9f529f58468091905bcd428f255bc8910a29647587fd71b92fd1706e37e69e4d9f5c97bbb597e114aabc3b309fb4dbad83b
7
- data.tar.gz: 3da5614e14fb896d3cb001109ad3c46128aa46e8564e68e5296b99af969ddcf7e0ecac990102874ee1ffa3f559787554345a8fe6fc2cf85005719b6fda00a58a
6
+ metadata.gz: 3287900e87f879cfb4c77d2af967f769f632398699a4db4f546bafce97967cd5bff5e707eb8fe746e8f5f1901e5f9b393e9c6a2214f632322e677f763fddc4c2
7
+ data.tar.gz: bd0bf62b519d45fd0db706a6c9a6b91234d3ad3c7e507ca9149b3d48d28cc14b12288aceef4d923a88ea356dbad2a4f6b159e0638b527cd983e5ec9d8594d606
data/lib/mcrt.rb CHANGED
@@ -3,28 +3,85 @@ require 'net/https'
3
3
  require 'uri'
4
4
  require 'json'
5
5
 
6
- class MavenCentralPublishTool
7
- def self.buildr_release(project, profile_name, username, password)
8
- release_to_url = Buildr.repositories.release_to[:url]
9
- release_to_username = Buildr.repositories.release_to[:username]
10
- release_to_password = Buildr.repositories.release_to[:password]
6
+ class MavenCentralReleaseTool
7
+ class << self
8
+ def define_publish_tasks(options = {})
9
+ desc 'Publish release on maven central'
10
+ task 'mcrt:publish' do
11
+ project = options[:project] || Buildr.projects[0].root_project
12
+ profile_name = options[:profile_name] || (raise ':profile_name not specified when defining tasks')
13
+ username = options[:username] || (raise ':username name not specified when defining tasks')
14
+ password = options[:password] || ENV['MAVEN_CENTRAL_PASSWORD'] || (raise "Unable to locate environment variable with name 'MAVEN_CENTRAL_PASSWORD'")
15
+ MavenCentralPublishTool.buildr_release(project, profile_name, username, password)
16
+ end
11
17
 
12
- begin
13
- Buildr.repositories.release_to[:url] = 'https://oss.sonatype.org/service/local/staging/deploy/maven2'
14
- Buildr.repositories.release_to[:username] = username
15
- Buildr.repositories.release_to[:password] = password
16
-
17
- project.task(':upload').invoke
18
-
19
- r = MavenCentralPublishTool.new
20
- r.username = username
21
- r.password = password
22
- r.user_agent = "Buildr-#{Buildr::VERSION}"
23
- r.release_sole_auto_staging(profile_name)
24
- ensure
25
- Buildr.repositories.release_to[:url] = release_to_url
26
- Buildr.repositories.release_to[:username] = release_to_username
27
- Buildr.repositories.release_to[:password] = release_to_password
18
+ desc 'Publish release to maven central iff current HEAD is a tag'
19
+ task 'mcrt:publish_if_tagged' do
20
+ tag = MavenCentralPublishTool.get_head_tag_if_any
21
+ if tag.nil?
22
+ puts 'Current HEAD is not a tag. Skipping publish step.'
23
+ else
24
+ puts "Current HEAD is a tag: #{tag}"
25
+ if MavenCentralPublishTool.is_tag_on_candidate_branches?(tag, candidate_branches)
26
+ task('mcrt:publish').invoke
27
+ end
28
+ end
29
+ end
30
+ end
31
+
32
+ def get_head_tag_if_any
33
+ version = `git describe --exact-match --tags 2>&1`
34
+ if 0 == $?.exitstatus && version =~ /^v[0-9]/ && (ENV['TRAVIS_BUILD_ID'].nil? || ENV['TRAVIS_TAG'].to_s != '')
35
+ version.strip
36
+ else
37
+ nil
38
+ end
39
+ end
40
+
41
+ def is_tag_on_branch?(tag, branch)
42
+ output = `git tag --merged #{branch} 2>&1`
43
+ tags = output.split
44
+ tags.include?(tag)
45
+ end
46
+
47
+ def is_tag_on_candidate_branches?(tag, branches)
48
+ sh 'git fetch origin'
49
+ branches.each do |branch|
50
+ if is_tag_on_branch?(tag, branch)
51
+ puts "Tag #{tag} is on branch: #{branch}"
52
+ return true
53
+ elsif is_tag_on_branch?(tag, "origin/#{branch}")
54
+ puts "Tag #{tag} is on branch: origin/#{branch}"
55
+ return true
56
+ else
57
+ puts "Tag #{tag} is not on branches: #{branch} or origin/#{branch}"
58
+ end
59
+ end
60
+ false
61
+ end
62
+
63
+ def buildr_release(project, profile_name, username, password)
64
+ release_to_url = Buildr.repositories.release_to[:url]
65
+ release_to_username = Buildr.repositories.release_to[:username]
66
+ release_to_password = Buildr.repositories.release_to[:password]
67
+
68
+ begin
69
+ Buildr.repositories.release_to[:url] = 'https://oss.sonatype.org/service/local/staging/deploy/maven2'
70
+ Buildr.repositories.release_to[:username] = username
71
+ Buildr.repositories.release_to[:password] = password
72
+
73
+ project.task(':upload').invoke
74
+
75
+ r = MavenCentralPublishTool.new
76
+ r.username = username
77
+ r.password = password
78
+ r.user_agent = "Buildr-#{Buildr::VERSION}"
79
+ r.release_sole_auto_staging(profile_name)
80
+ ensure
81
+ Buildr.repositories.release_to[:url] = release_to_url
82
+ Buildr.repositories.release_to[:username] = release_to_username
83
+ Buildr.repositories.release_to[:password] = release_to_password
84
+ end
28
85
  end
29
86
  end
30
87
 
data/mcrt.gemspec CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = %q{mcrt}
5
- s.version = '1.5.0'
5
+ s.version = '1.6.0'
6
6
  s.platform = Gem::Platform::RUBY
7
7
 
8
8
  s.authors = ['Peter Donald']
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mcrt
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.5.0
4
+ version: 1.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Peter Donald
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-03-27 00:00:00.000000000 Z
11
+ date: 2018-03-28 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Maven Central Release Tool.
14
14
  email: peter@realityforge.org