groundskeeper-bitcore 0.3.6 → 0.3.7

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: bfa9db5c1fbd2ad3662d2bd6b124054088a1ea063fc4269f9aead572a54c13ac
4
- data.tar.gz: 2a547f643b13a57ee1cdc5ca4034fb45a4dadd959021b4ea28abcc50c7d601d4
3
+ metadata.gz: 809d12859add61d5a82c2e9f55d773b9ed88e42aa7440a4e8b95bc42758b32cc
4
+ data.tar.gz: ca191ff7c1db6a185ead9b4c1e643627437d150286f9f0f71c013c31752e8a32
5
5
  SHA512:
6
- metadata.gz: 20dfdd3fb15cfdf7f42a150b662111f7bd30aabbb7ceda8205ddbba4b45adaa77f2f96ba103bc0b80bdd0303b8cfaf454e2baa65211481340b4d0ede444272e3
7
- data.tar.gz: e5ff1669be37cf936cfc74eed4520dc6c61191dc1755a6432cb5f30958aa5157c947b791096a907f803e08a62a91da3c6411305bf094e391601d3e36003692c1
6
+ metadata.gz: fca0e0631f1a3db3f0117acd1b274a01c68ed2a36cdf9f63bc472133b9d09c65e79d077fb14c64b2ca95291aa097ca4f2ac1279ac4e63883263a98ea70fbb84e
7
+ data.tar.gz: 2911246a9f12b19160946351a03c4ed28882c6b79546200e5f16cdbd67ef7287e8fa865ae673d6b74efef48717398e821966e1837a6ba7bea83e629c50a18d74
data/.travis.yml CHANGED
@@ -2,4 +2,6 @@ sudo: false
2
2
  language: ruby
3
3
  rvm:
4
4
  - 2.3.4
5
- before_install: gem install bundler -v 1.15.1
5
+ before_install:
6
+ - curl -sL https://sentry.io/get-cli/ | bash
7
+ - gem install bundler -v 1.15.1
data/README.md CHANGED
@@ -23,14 +23,6 @@ export JIRA_PASSWORD="my-password"
23
23
  export JIRA_SITE="https://cbit123.atlassian.net"
24
24
  ```
25
25
 
26
- You also need to add a GitHub API Token with `repo` scope to your `bash_profile`.
27
- You can create one [here](https://github.com/settings/tokens) if you don't have
28
- one already.
29
-
30
- ```bash
31
- export GITHUB_API_TOKEN="my-github-api-token"
32
- ```
33
-
34
26
  For integration with Sentry, find or create your auth token
35
27
  [from here](https://sentry.io/settings/account/api/auth-tokens/) with the scopes `event:admin, event:read, member:read, org:read, project:read, project:releases, team:read`:
36
28
 
@@ -31,7 +31,7 @@ Gem::Specification.new do |spec|
31
31
  spec.executables = "ground"
32
32
  spec.require_paths = %w[lib config]
33
33
 
34
- spec.add_dependency "jira-ruby", "~> 1.3"
34
+ spec.add_dependency "jira-ruby", "~> 1.6"
35
35
  spec.add_dependency "mina", "~> 1.2"
36
36
  spec.add_dependency "mina-whenever", "~> 1.0.1"
37
37
  spec.add_dependency "thor", "~> 0.19"
data/lib/groundskeeper.rb CHANGED
@@ -6,7 +6,6 @@ require "groundskeeper/commands"
6
6
  require "groundskeeper/document"
7
7
  require "groundskeeper/executable"
8
8
  require "groundskeeper/git"
9
- require "groundskeeper/git_hub"
10
9
  require "groundskeeper/jira"
11
10
  require "groundskeeper/project"
12
11
  require "groundskeeper/rails_version"
@@ -25,10 +25,6 @@ module Groundskeeper
25
25
  project = Project.build(repository.name)
26
26
  deploy_url = "https://#{project.full_dns(stage)}"
27
27
  website = Website.new(deploy_url)
28
- git_hub = GitHub.build(
29
- username: project.source_control_username,
30
- repository_name: repository.name
31
- )
32
28
  sentry = Sentry.build(
33
29
  project_name: project.sentry_project,
34
30
  version_prefix: repository.name
@@ -38,7 +34,6 @@ module Groundskeeper
38
34
  changelog: Changelog.build,
39
35
  console: console,
40
36
  git: Git.build,
41
- git_hub: git_hub,
42
37
  jira: Jira.build(project.jira_prefix),
43
38
  project: project,
44
39
  repository: repository,
@@ -59,7 +54,6 @@ module Groundskeeper
59
54
  changelog: nil,
60
55
  console:,
61
56
  git: nil,
62
- git_hub: nil,
63
57
  jira: nil,
64
58
  project: nil,
65
59
  repository: nil,
@@ -71,7 +65,6 @@ module Groundskeeper
71
65
  @changelog = changelog
72
66
  @console = console
73
67
  @git = git
74
- @git_hub = git_hub
75
68
  @jira = jira
76
69
  @project = project
77
70
  @repository = repository
@@ -107,12 +100,10 @@ module Groundskeeper
107
100
  # rubocop:enable Metrics/AbcSize
108
101
 
109
102
  # rubocop:disable Metrics/AbcSize, Metrics/CyclomaticComplexity
110
- # rubocop:disable Metrics/PerceivedComplexity
111
103
  def release(options = {})
112
104
  is_initial_release = !version_file.exists?
113
105
 
114
106
  return missing_jira_credentials unless jira.credentials?
115
- return missing_github_credentials unless git_hub.credentials?
116
107
  return unless check_groundskeeper_version
117
108
  return unrecognized_version unless version_file.rails?
118
109
 
@@ -129,10 +120,9 @@ module Groundskeeper
129
120
  ask_create_jira_version
130
121
  ask_push_with_tags
131
122
  ask_add_version_to_jira_issues unless is_initial_release
132
- open_pull_request_page
133
123
  end
134
124
  # rubocop:enable Metrics/AbcSize, Metrics/CyclomaticComplexity
135
- # rubocop:enable Metrics/MethodLength, Metrics/PerceivedComplexity
125
+ # rubocop:enable Metrics/MethodLength
136
126
 
137
127
  # :nocov:
138
128
  def predeploy(options = {})
@@ -171,7 +161,7 @@ module Groundskeeper
171
161
  private
172
162
 
173
163
  # collaborators
174
- attr_reader :changelog, :console, :git, :git_hub, :jira, :project,
164
+ attr_reader :changelog, :console, :git, :jira, :project,
175
165
  :repository, :rubygems, :sentry, :version_file, :website
176
166
  # state
177
167
  attr_reader :current_step, :did_checkout_branch, :did_push_to_remote,
@@ -344,19 +334,6 @@ module Groundskeeper
344
334
  )
345
335
  end
346
336
 
347
- def missing_github_credentials
348
- console.say(
349
- "Please configure your GitHub environment variables.",
350
- :red
351
- )
352
- end
353
-
354
- def open_pull_request_page
355
- return unless did_checkout_branch && did_push_to_remote
356
-
357
- git_hub.open_pull_request_page(new_branch_name)
358
- end
359
-
360
337
  def new_branch_name
361
338
  "v#{next_version}"
362
339
  end
@@ -16,6 +16,10 @@ module Groundskeeper
16
16
  end
17
17
 
18
18
  def initialize(command)
19
+ if `which #{command}`.empty?
20
+ raise "#{command} not found, is it installed on your PATH?"
21
+ end
22
+
19
23
  @command = command
20
24
  end
21
25
 
@@ -9,6 +9,7 @@ module Groundskeeper
9
9
  FETCH_WITH_TAGS = "fetch --tags"
10
10
  VERSION = "--version"
11
11
  TAGS_ASC = "tag -l --sort=v:refname"
12
+ TAGS_DESC = "tag -l --sort=-v:refname"
12
13
  LATEST_TAG_COMMIT = "#{COMMAND} rev-list --tags --max-count=1"
13
14
  LATEST_TAG_NAME =
14
15
  format("describe --tags $(%<commit>s)", commit: LATEST_TAG_COMMIT)
@@ -23,6 +24,7 @@ module Groundskeeper
23
24
  PUSH_HEAD_WITH_TAGS = "push origin head --tags"
24
25
  PULL = "-C #{Dir.home}/%s pull"
25
26
  REMOTE_URL = "-C #{Dir.home}/%s config --get remote.origin.url"
27
+ ORIGIN_URL = "config --get remote.origin.url"
26
28
 
27
29
  attr_reader :git
28
30
 
@@ -52,6 +54,11 @@ module Groundskeeper
52
54
  git.execute(TAGS_ASC)
53
55
  end
54
56
 
57
+ def fetch_and_list_tags
58
+ git.execute(FETCH_WITH_TAGS)
59
+ git.execute(TAGS_DESC).split("\n")
60
+ end
61
+
55
62
  def latest_tag_name_across_branches
56
63
  git.execute(LATEST_TAG_NAME).chop
57
64
  end
@@ -97,5 +104,9 @@ module Groundskeeper
97
104
  def remote_url(name)
98
105
  git.execute(format(REMOTE_URL, name))
99
106
  end
107
+
108
+ def origin_url
109
+ git.execute(ORIGIN_URL).strip
110
+ end
100
111
  end
101
112
  end
@@ -6,13 +6,12 @@ require "json"
6
6
  module Groundskeeper
7
7
  # Accesses project details stored in the home directory.
8
8
  class Project
9
- attr_reader :details, :servers, :repo_name
9
+ attr_reader :details, :servers, :repo_name, :git
10
10
 
11
11
  DETAILS_PATH = "~/.project_details/projects.yml"
12
12
  SERVERS_PATH = "~/.project_details/servers.yml"
13
13
  JIRA_PREFIX_KEY = "jira_prefix"
14
14
  PROJECT_NAME_KEY = "name"
15
- SOURCE_CONTROL_USERNAME_KEY = "scm_username"
16
15
  FULL_DNS_KEY = "full_dns"
17
16
  RVM_RUBY_VERSION_KEY = "ruby_version"
18
17
  DB_ENV_VARIABLES_KEY = "db_env_variables"
@@ -27,7 +26,8 @@ module Groundskeeper
27
26
  new(
28
27
  projects_yaml: Document.new(DETAILS_PATH).read,
29
28
  servers_yaml: Document.new(SERVERS_PATH).read,
30
- repository_name: repository_name
29
+ repository_name: repository_name,
30
+ git: Git.build
31
31
  )
32
32
  end
33
33
 
@@ -39,11 +39,12 @@ module Groundskeeper
39
39
  end
40
40
  # :nocov:
41
41
 
42
- def initialize(projects_yaml:, servers_yaml:, repository_name:)
42
+ def initialize(projects_yaml:, servers_yaml:, repository_name:, git: nil)
43
43
  projects = YAML.safe_load(projects_yaml) || {}
44
44
  @details = projects[repository_name] || {}
45
45
  @servers = YAML.safe_load(servers_yaml) || {}
46
46
  @repo_name = repository_name
47
+ @git = git
47
48
  end
48
49
 
49
50
  def project_name
@@ -54,10 +55,6 @@ module Groundskeeper
54
55
  details[JIRA_PREFIX_KEY] || ""
55
56
  end
56
57
 
57
- def source_control_username
58
- details[SOURCE_CONTROL_USERNAME_KEY] || ""
59
- end
60
-
61
58
  def full_dns(stage)
62
59
  details.dig(FULL_DNS_KEY, stage.to_s) || ""
63
60
  end
@@ -116,7 +113,7 @@ module Groundskeeper
116
113
 
117
114
  # :nocov:
118
115
  def repo_url
119
- "git@github.com:#{source_control_username}/#{repo_name}.git"
116
+ git.origin_url
120
117
  end
121
118
  # :nocov:
122
119
 
@@ -128,16 +125,7 @@ module Groundskeeper
128
125
 
129
126
  # :nocov:
130
127
  def tags
131
- api_url = "https://api.github.com/repos/" \
132
- "#{source_control_username}/#{repo_name}/tags"
133
- authorization_header = "Authorization: token #{ENV['GITHUB_API_TOKEN']}"
134
- response = JSON.parse(`curl -s -H "#{authorization_header}" #{api_url}`)
135
- unless response.is_a?(Array)
136
- message = response["message"]
137
- puts "Failed to obtain response: #{message}"
138
- return []
139
- end
140
- response.map { |h| h["name"] }
128
+ git.fetch_and_list_tags
141
129
  end
142
130
  # :nocov:
143
131
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Groundskeeper
4
- VERSION = "0.3.6"
4
+ VERSION = "0.3.7"
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: groundskeeper-bitcore
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.6
4
+ version: 0.3.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - BIT Core
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain:
11
11
  - certs/ericcf.pem
12
- date: 2019-03-04 00:00:00.000000000 Z
12
+ date: 2019-04-15 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: jira-ruby
@@ -17,14 +17,14 @@ dependencies:
17
17
  requirements:
18
18
  - - "~>"
19
19
  - !ruby/object:Gem::Version
20
- version: '1.3'
20
+ version: '1.6'
21
21
  type: :runtime
22
22
  prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
25
  - - "~>"
26
26
  - !ruby/object:Gem::Version
27
- version: '1.3'
27
+ version: '1.6'
28
28
  - !ruby/object:Gem::Dependency
29
29
  name: mina
30
30
  requirement: !ruby/object:Gem::Requirement
@@ -175,7 +175,6 @@ files:
175
175
  - lib/groundskeeper/document.rb
176
176
  - lib/groundskeeper/executable.rb
177
177
  - lib/groundskeeper/git.rb
178
- - lib/groundskeeper/git_hub.rb
179
178
  - lib/groundskeeper/jira.rb
180
179
  - lib/groundskeeper/project.rb
181
180
  - lib/groundskeeper/rails_version.rb
@@ -207,7 +206,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
207
206
  - !ruby/object:Gem::Version
208
207
  version: '0'
209
208
  requirements: []
210
- rubygems_version: 3.0.2
209
+ rubyforge_project:
210
+ rubygems_version: 2.7.7
211
211
  signing_key:
212
212
  specification_version: 4
213
213
  summary: A gem for managing releases and deployments.
@@ -1,37 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Groundskeeper
4
- # Wraps an interface to GitHub.
5
- class GitHub
6
- attr_reader :opener, :username, :repository_name
7
-
8
- GITHUB_API_TOKEN = "GITHUB_API_TOKEN"
9
- COMMAND = "open"
10
- URL_BASE = "https://github.com/"
11
-
12
- def self.build(username:, repository_name:)
13
- new(
14
- opener: Executable.new(COMMAND),
15
- username: username,
16
- repository_name: repository_name
17
- )
18
- end
19
-
20
- def initialize(opener:, username:, repository_name:)
21
- @opener = opener
22
- @username = username
23
- @repository_name = repository_name
24
- end
25
-
26
- def open_pull_request_page(branch_name)
27
- url = "#{URL_BASE}#{username}/#{repository_name}/compare/" \
28
- "#{branch_name}?expand=1"
29
-
30
- opener.execute(url)
31
- end
32
-
33
- def credentials?
34
- ENV[GITHUB_API_TOKEN].present?
35
- end
36
- end
37
- end