Class: GithubReleaseParty

Inherits:
Object
  • Object
show all
Defined in:
lib/github-release-party.rb,
lib/github-release-party/version.rb

Defined Under Namespace

Classes: GitHub, HTTPResponse

Constant Summary collapse

VERSION =
"0.4.5"

Class Method Summary collapse

Class Method Details

.check_env!Object



60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
# File 'lib/github-release-party.rb', line 60

def self.check_env!
  unless ENV["GITHUB_RELEASE_TOKEN"]
    abort "Configure GITHUB_RELEASE_TOKEN to create GitHub releases. See https://github.com/stefansundin/github-release-party#setup"
  end
  unless repo
    abort "Can't find the GitHub repository. Please use the remote 'origin'."
  end
  r = GitHub.get("/user")
  if r.success?
    puts "Creating GitHub release with user #{r.json["login"]}."
  else
    puts "Error authenticating with GitHub. Your token may have expired."
    puts r.body
    abort
  end
end

.create(tag_name, message) ⇒ Object



36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
# File 'lib/github-release-party.rb', line 36

def self.create(tag_name, message)
  body = {
    tag_name: tag_name,
    name: tag_name,
    body: message,
  }

  r = GitHub.post("/repos/#{repo}/releases", body.to_json)
  if r.success?
    puts "GitHub release #{tag_name} created!"
  else
    puts error(r)
    puts
    puts "Body sent: #{body.to_json}"
    puts
    puts "Failed to create a GitHub release!"
    puts "Create it manually here: https://github.com/#{repo}/releases/new?tag=#{tag_name}"
    puts "Tag version: #{tag_name}"
    puts "Release title: #{tag_name}"
    puts "Message:"
    puts message
  end
end

.error(r) ⇒ Object



83
84
85
# File 'lib/github-release-party.rb', line 83

def self.error(r)
  "#{r.request_uri}: #{r.code}: #{r.body}\nHeaders: #{r.headers.to_json}"
end

.releasesObject



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# File 'lib/github-release-party.rb', line 6

def self.releases
  releases = []
  page = 1
  while true
    r = GitHub.get("/repos/#{repo}/releases?page=#{page}")
    unless r.success?
      puts "Error occurred when fetching releases:"
      puts error(r)
      abort
    end
    break if r.json.length == 0
    releases = releases + r.json
    page += 1
  end
  return releases
end

.repoObject



77
78
79
# File 'lib/github-release-party.rb', line 77

def self.repo
  @repo ||= `git remote -v`.scan(/^origin\t.*github\.com[:\/](.+)\.git /).uniq.flatten.first
end

.update(release_id, name, message) ⇒ Object



23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/github-release-party.rb', line 23

def self.update(release_id, name, message)
  r = GitHub.patch("/repos/#{repo}/releases/#{release_id}", {
    name: name,
    body: message,
  }.to_json)
  if r.success?
    puts "GitHub release #{name} updated!"
  else
    puts "Failed to update GitHub release #{name}!"
    puts error(r)
  end
end