33
44class GithubRelease
55 def run
6+ new_prereleases = tagged_prereleases . select { |p | !github_releases . include? ( p ) }
7+
8+ if new_prereleases . empty?
9+ puts "No new pre-release tags to push."
10+ end
11+
12+ new_prereleases . each { |t | create_release ( t , true ) }
13+
614 new_releases = tagged_releases . select { |r | !github_releases . include? ( r ) }
715
816 if new_releases . empty?
917 puts "No new release tags to push."
1018 end
1119
12- new_releases . each { |t | create_release ( t ) }
20+ new_releases . each { |t | create_release ( t , false ) }
1321
1422 puts "All done!"
1523 end
@@ -52,6 +60,12 @@ def get_new_token
5260 log_val ( token )
5361 end
5462
63+ def pre_regex
64+ @pre_regex ||= `git config --get release.pre-regex` . strip
65+ @pre_regex = /^v\d +\. \d +(\. \d +)?(-rc\d +.*){1}$/ if @pre_regex . empty?
66+ log_val ( @pre_regex )
67+ end
68+
5569 def tag_regex
5670 @tag_regex ||= `git config --get release.tag-regex` . strip
5771 @tag_regex = /^v\d +\. \d +(\. \d +)?$/ if @tag_regex . empty?
@@ -63,6 +77,11 @@ def tagged_releases
6377 log_val ( @tagged_releases )
6478 end
6579
80+ def tagged_prereleases
81+ @tagged_prereleases ||= `git tag` . split ( "\n " ) . map ( &:strip ) . grep pre_regex
82+ log_val ( @tagged_prereleases )
83+ end
84+
6685 def repo_name
6786 @repo_name ||= begin
6887 case repo_url
@@ -106,7 +125,7 @@ def git_config(item, default = nil)
106125 log_val ( @config_cache [ item ] , item )
107126 end
108127
109- def create_release ( tag )
128+ def create_release ( tag , prerelease )
110129 puts "Pushing to #{ remote_name } ..."
111130 system ( "git push #{ remote_name } tag #{ tag } " )
112131
@@ -118,7 +137,7 @@ def create_release(tag)
118137 name = name . gsub ( /^#{ tag } / , '' ) . strip
119138 body = body . split ( "\n " ) . map { |l | l . sub ( /^ / , '' ) } . join ( "\n " )
120139
121- api . create_release ( repo_name , tag , :name => name , :body => body )
140+ api . create_release ( repo_name , tag , :name => name , :body => body , :prerelease => prerelease )
122141
123142 puts " done!"
124143 end
0 commit comments