github-release-party 0.3.6 → 0.4.0

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8b275fe65a8b6ac130be289ac5f7b1af6f53f48c4ebbafb784cbb14386659c24
4
- data.tar.gz: cd19b786aff568234d157f5eae7e81902a97272ccd0976deb4a89fa9dbdde7bf
3
+ metadata.gz: d5daa687ea156f731f143bce3dc98a1fcc4a07464a793eb475f1b8d7ba55acc6
4
+ data.tar.gz: c75ed78a66ceff740603553d0ef81a2d6874d17ffefa63faf60ea7351f223b9c
5
5
  SHA512:
6
- metadata.gz: bebba1d515b12e752576732795caee7d364bacfc8df7528db2e808109ca5c9cef08de9f8d224b5640c598aa5196e14b17648e8607690ba9ce3cc7add9cf9c56d
7
- data.tar.gz: 24eb66e7bdd380085a67655356d6db00ab8ffcf3b4eb8119a3c3922b6f76d2f4cd3ab4a5f5efdd59b4ea26e73c274377cae393dbd2e893bf384b6c99c7ddc142
6
+ metadata.gz: 641bd4382b4c0e3974e12b218dd75099afc3bb2b8bfb651d750c4ce6f486060f9c6c8aae8570435209431766340f8d282660e8d7c9a0e46429f7202528bc1c65
7
+ data.tar.gz: edcd80c9993c93c0f0f95ae6fedfb2b33cfefa67e4fbe8a5233dfcab12e5473066a54312414624ec7bb7b3b9e705819fd016a78d7f9d2a2bd21d32007e628e85
checksums.yaml.gz.sig CHANGED
@@ -1 +1,2 @@
1
- s�%��)��D ��ΰwҰ*�%�M��ڋ^��HP:��,Pt����L3���>�N�!kD|b;`P2EY����R���?��|�
1
+ �0C�ԝ�J�˽ �zm}E�C�rInW�O��0i�%/��CA)Hp�\�#'v���@� ӹ���sϣ�'S�|�*Q<h}}�C�›p?ȇ 8*�q�ܝ��wIoV�@����SG�퀘.H۪�������f����&�y���r�\�=��z�)��u��y��c&Z�ZE�/��y��z޺
2
+ kuI��X��V� ����{����� /�fR. ~%i�ש��P���O�i��&�W�B��+��8!
@@ -0,0 +1,129 @@
1
+ require "open3"
2
+ require "shellwords"
3
+ require "github-release-party"
4
+
5
+ def fly_deploy(args=[])
6
+ # grab the new version number from the "fly deploy" output
7
+ cmd = %w[fly deploy] + args
8
+ ver = Open3.popen2e(*cmd) do |stdin, output, thread|
9
+ v = nil
10
+ output.each do |line|
11
+ puts line
12
+ if /--> release (v\d+) created/ =~ line
13
+ v = $~[1]
14
+ end
15
+ end
16
+ v
17
+ end
18
+ return ver
19
+ end
20
+
21
+ def github_tag(hash, ver)
22
+ # build tag message
23
+ repo = GithubReleaseParty.repo
24
+ tag_name = "fly/#{ver}"
25
+ last_tag = `git describe --tags --abbrev=0 --match 'fly/v*' 2> /dev/null`.strip
26
+ if last_tag.empty?
27
+ # first deploy, use root hash
28
+ last_tag = `git rev-list --max-parents=0 HEAD`.strip[0..6]
29
+ first_deploy = true
30
+ end
31
+ commits = `git log #{last_tag}..#{hash} --reverse --first-parent --pretty=format:"- [%s](https://github.com/#{repo}/commit/%H)"`
32
+ message = "Deploy #{hash[0..6]}\n\nDiff: https://github.com/#{repo}/compare/#{last_tag}...#{tag_name}\n#{commits}"
33
+
34
+ if first_deploy
35
+ message = "#{message.strip}\n"+`git show #{last_tag} -s --pretty=format:"- [%s](https://github.com/#{repo}/commit/%H)"`
36
+ end
37
+
38
+ # tag and push new tag
39
+ puts
40
+ puts "Tagging #{tag_name}."
41
+ success = system "git tag -a -m #{Shellwords.shellescape(message)} #{tag_name} #{hash}"
42
+ abort if not success
43
+ puts
44
+ success = system "git push origin #{tag_name}"
45
+ abort if not success
46
+
47
+ # create GitHub release
48
+ puts
49
+ puts "Waiting 3 seconds to let GitHub process the new tag."
50
+ sleep(3)
51
+ GithubReleaseParty.create(tag_name, message)
52
+ end
53
+
54
+
55
+ desc "Deploy a new version to Fly"
56
+ task :deploy do
57
+ GithubReleaseParty.check_env!
58
+ ver = fly_deploy() or abort("Deploy failed.")
59
+ hash = `git rev-parse HEAD`.strip
60
+ github_tag(hash, ver)
61
+ end
62
+
63
+ namespace :deploy do
64
+ desc "Tag last release"
65
+ task :tag do
66
+ GithubReleaseParty.check_env!
67
+
68
+ # get fly version number
69
+ begin
70
+ fly_releases = JSON.parse(`fly releases --json`)
71
+ ver = fly_releases[0]["Version"]
72
+ hash = `git rev-parse HEAD`.strip
73
+ rescue
74
+ abort "There was a problem getting the release number. Have you logged in with flyctl? Try again with 'rake deploy:tag'."
75
+ end
76
+
77
+ github_tag(hash, ver)
78
+ end
79
+
80
+ desc "Rebuild all the release tags"
81
+ task :retag do
82
+ GithubReleaseParty.check_env!
83
+ releases = GithubReleaseParty.releases
84
+ repo = GithubReleaseParty.repo
85
+
86
+ tags = `git tag -l fly/v* --sort=version:refname`.split("\n")
87
+ puts "Found #{tags.length} tags."
88
+ tags.each_with_index do |tag_name, i|
89
+ puts
90
+ last_tag = if i == 0
91
+ `git rev-list --max-parents=0 HEAD`.strip
92
+ else
93
+ tags[i-1]
94
+ end
95
+
96
+ hash = `git rev-list --max-count=1 #{tag_name}`.strip
97
+ date = `git show --pretty="format:%ai" -s --no-color #{tag_name} | tail -1`.strip
98
+ commits = `git log #{last_tag}..#{tag_name} --reverse --pretty=format:"- [%s](https://github.com/#{repo}/commit/%H)"`
99
+ message = "Deploy #{hash[0..6]}\n\nDiff: https://github.com/#{repo}/compare/#{last_tag}...#{tag_name}\n#{commits}"
100
+
101
+ if i == 0
102
+ message += "\n"+`git show #{last_tag} -s --pretty=format:"- [%s](https://github.com/#{repo}/commit/%H)"`
103
+ end
104
+
105
+ success = system "GIT_COMMITTER_DATE='#{date}' git tag -f -a -m #{Shellwords.shellescape(message)} #{tag_name} #{tag_name}^{}"
106
+ abort if not success
107
+ success = system "git push -f origin #{tag_name}"
108
+ abort if not success
109
+
110
+ # update or create GitHub release
111
+ release = releases.find { |rel| rel["tag_name"] == tag_name }
112
+ if release
113
+ GithubReleaseParty.update(release["id"], tag_name, message)
114
+ else
115
+ GithubReleaseParty.create(tag_name, message)
116
+ end
117
+ end
118
+
119
+ puts
120
+ puts "Done"
121
+ end
122
+
123
+ desc "List the new commits since last deploy (you might want to pull first to ensure you have the latest tag)"
124
+ task :changes do
125
+ last_tag = `git describe --tags --abbrev=0 --match 'fly/v*' 2> /dev/null`.strip
126
+ last_tag = `git rev-list --max-parents=0 HEAD`.strip[0..6] if last_tag.empty?
127
+ system "git log --oneline --no-decorate --reverse #{last_tag}..HEAD"
128
+ end
129
+ end
@@ -48,7 +48,7 @@ def github_tag(hash, ver)
48
48
  puts
49
49
  puts "Waiting 3 seconds to let GitHub process the new tag."
50
50
  sleep(3)
51
- GithubReleaseParty.create(tag_name, ver, message)
51
+ GithubReleaseParty.create(tag_name, message)
52
52
  end
53
53
 
54
54
 
@@ -95,7 +95,6 @@ namespace :deploy do
95
95
  puts "Found #{tags.length} tags."
96
96
  tags.each_with_index do |tag_name, i|
97
97
  puts
98
- ver = tag_name[/v(\d+)/]
99
98
  last_tag = if i == 0
100
99
  `git rev-list --max-parents=0 HEAD`.strip
101
100
  else
@@ -119,9 +118,9 @@ namespace :deploy do
119
118
  # update or create GitHub release
120
119
  release = releases.find { |rel| rel["tag_name"] == tag_name }
121
120
  if release
122
- GithubReleaseParty.update(release["id"], ver, message)
121
+ GithubReleaseParty.update(release["id"], tag_name, message)
123
122
  else
124
- GithubReleaseParty.create(tag_name, ver, message)
123
+ GithubReleaseParty.create(tag_name, message)
125
124
  end
126
125
  end
127
126
 
@@ -1,3 +1,3 @@
1
1
  class GithubReleaseParty
2
- VERSION = "0.3.6"
2
+ VERSION = "0.4.0"
3
3
  end
@@ -20,8 +20,8 @@ class GithubReleaseParty
20
20
  return releases
21
21
  end
22
22
 
23
- def self.update(id, name, message)
24
- r = GitHub.patch("/repos/#{repo}/releases/#{id}", {
23
+ def self.update(release_id, name, message)
24
+ r = GitHub.patch("/repos/#{repo}/releases/#{release_id}", {
25
25
  name: name,
26
26
  body: message,
27
27
  }.to_json)
@@ -33,10 +33,10 @@ class GithubReleaseParty
33
33
  end
34
34
  end
35
35
 
36
- def self.create(tag_name, name, message)
36
+ def self.create(tag_name, message)
37
37
  body = {
38
38
  tag_name: tag_name,
39
- name: name,
39
+ name: tag_name,
40
40
  body: message,
41
41
  }
42
42
 
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: github-release-party
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.6
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stefan Sundin
@@ -31,7 +31,7 @@ cert_chain:
31
31
  E04BZKo2WzOTzSDymo97Yu4YFgyc98umMyeaCvPk4YmdNzqSanAXpY2bnsyu0CF5
32
32
  Td0=
33
33
  -----END CERTIFICATE-----
34
- date: 2021-04-09 00:00:00.000000000 Z
34
+ date: 2022-11-26 00:00:00.000000000 Z
35
35
  dependencies:
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: rake
@@ -47,8 +47,8 @@ dependencies:
47
47
  - - ">="
48
48
  - !ruby/object:Gem::Version
49
49
  version: '12'
50
- description: I use this gem to automatically create GitHub releases when I deploy
51
- to Heroku. See the GitHub page for usage.
50
+ description: I use this gem to automatically create GitHub releases when I deploy.
51
+ See the GitHub page for usage.
52
52
  email:
53
53
  - rubygems@stefansundin.com
54
54
  executables: []
@@ -56,6 +56,7 @@ extensions: []
56
56
  extra_rdoc_files: []
57
57
  files:
58
58
  - lib/github-release-party.rb
59
+ - lib/github-release-party/tasks/fly.rb
59
60
  - lib/github-release-party/tasks/heroku.rb
60
61
  - lib/github-release-party/version.rb
61
62
  homepage: https://github.com/stefansundin/github-release-party
@@ -77,7 +78,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
77
78
  - !ruby/object:Gem::Version
78
79
  version: 1.3.6
79
80
  requirements: []
80
- rubygems_version: 3.2.3
81
+ rubygems_version: 3.3.11
81
82
  signing_key:
82
83
  specification_version: 4
83
84
  summary: Easily create GitHub releases.
metadata.gz.sig CHANGED
Binary file