sleet 0.4.2 → 0.5.3

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: 54355bc21cd53356e769f7bc10c5ac14ae2c0c332203e1194ee4588c40ebe475
4
- data.tar.gz: b4d029da2f74a94712edcd0cde780f8e4029c844be8461a544d589c40072a6d9
3
+ metadata.gz: 4fac7493ce36c1bd93ce7b8adb7026bb7717472df669a91cc86b2c38aedd16aa
4
+ data.tar.gz: '0180aa81852054f6ae694198bf668dec598df6d5304f526977158ecafc50ddc7'
5
5
  SHA512:
6
- metadata.gz: 7d9c5d7d4d8ac342de5a1abc280ed46da05cb72680f4973c9351eb277f87f89756a82bac6ff6c2fdfcd070f54ea39fc8b819f49946e13ea0f7592db8c2451fb9
7
- data.tar.gz: '0190c0ffb1e5cc760fbe024920a1b892fc05185ab61a9633580829739c0308f217394a68509df8dd846474a5593ba51fd68d8e60b7c9879fb6f41c2873be891e'
6
+ metadata.gz: 96219d22089a50d8a9899291c86f3e756611f1981f37837d751ffee58f395efdd50694104a6465db64637110e5de326069fc6cc6270457d8db820f609f14c81f
7
+ data.tar.gz: 022bdbfbe371c6768109ca30132806adaef7519d6d87577a7ff7b5111d5c74b23f432cd93aea66317eaacfe37a940e282eb8174a61be8e8ade33cd9a46763a7e
data/.sleet.yml CHANGED
@@ -1 +1,4 @@
1
1
  output_file: 'spec/.rspec_example_statuses'
2
+ username: coreyja
3
+ workflows:
4
+ test: spec/.rspec_example_statuses
@@ -1,6 +1,67 @@
1
- # Change Log
1
+ # Changelog
2
+
3
+ ## [v0.5.3](https://github.com/coreyja/sleet/tree/v0.5.3) (2020-08-09)
4
+
5
+ [Full Changelog](https://github.com/coreyja/sleet/compare/v0.5.2...v0.5.3)
6
+
7
+ **Merged pull requests:**
8
+
9
+ - bug: Add support for redirects. [\#80](https://github.com/coreyja/sleet/pull/80) ([temochka](https://github.com/temochka))
10
+
11
+ ## [v0.5.2](https://github.com/coreyja/sleet/tree/v0.5.2) (2020-06-14)
12
+
13
+ [Full Changelog](https://github.com/coreyja/sleet/compare/v0.5.1...v0.5.2)
14
+
15
+ **Merged pull requests:**
16
+
17
+ - bug: Fix bug in error message when no upstream exists [\#79](https://github.com/coreyja/sleet/pull/79) ([coreyja](https://github.com/coreyja))
18
+
19
+ ## [v0.5.1](https://github.com/coreyja/sleet/tree/v0.5.1) (2020-06-14)
20
+
21
+ - This was an accidental release that contains no changes from `0.5.0`
22
+
23
+ [Full Changelog](https://github.com/coreyja/sleet/compare/v0.5.0...v0.5.1)
24
+
25
+ ## [v0.5.0](https://github.com/coreyja/sleet/tree/v0.5.0) (2020-06-14)
26
+
27
+ [Full Changelog](https://github.com/coreyja/sleet/compare/v0.4.3...v0.5.0)
28
+
29
+ **Closed issues:**
30
+
31
+ - Add Support for Forked Repos in Github [\#41](https://github.com/coreyja/sleet/issues/41)
32
+
33
+ **Merged pull requests:**
34
+
35
+ - Support PR builds from forked repos!!! ✨ [\#77](https://github.com/coreyja/sleet/pull/77) ([smudge](https://github.com/smudge))
36
+ - Update rugged requirement from \>= 0.26, \< 0.100 to \>= 0.26, \< 1.1 [\#76](https://github.com/coreyja/sleet/pull/76) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
37
+ - Update rugged requirement from \>= 0.26, \< 0.29 to \>= 0.26, \< 0.100 [\#75](https://github.com/coreyja/sleet/pull/75) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
38
+ - Update thor requirement from ~\> 0.20.0 to \>= 0.20, \< 1.1 [\#70](https://github.com/coreyja/sleet/pull/70) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
39
+
40
+ ## [v0.4.3](https://github.com/coreyja/sleet/tree/v0.4.3) (2020-03-07)
41
+
42
+ [Full Changelog](https://github.com/coreyja/sleet/compare/v0.4.2...v0.4.3)
43
+
44
+ **Closed issues:**
45
+
46
+ - s/Artifcats/Artifacts/ [\#44](https://github.com/coreyja/sleet/issues/44)
47
+
48
+ **Merged pull requests:**
49
+
50
+ - fix: Replace "artifi🐱s" with "artifacts". [\#74](https://github.com/coreyja/sleet/pull/74) ([temochka](https://github.com/temochka))
51
+ - feat: Look at 100 recent builds instead of just 30. [\#73](https://github.com/coreyja/sleet/pull/73) ([temochka](https://github.com/temochka))
52
+ - Update webmock requirement from ~\> 3.7.0 to ~\> 3.8.0 [\#72](https://github.com/coreyja/sleet/pull/72) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
53
+ - Update faraday requirement from \>= 0.13.1, \< 0.16.0 to \>= 0.13.1, \< 1.1.0 [\#71](https://github.com/coreyja/sleet/pull/71) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
54
+ - Update gem-release requirement from = 2.1.0 to = 2.1.1 [\#69](https://github.com/coreyja/sleet/pull/69) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
55
+ - Update gem-release requirement from = 2.0.4 to = 2.1.0 [\#68](https://github.com/coreyja/sleet/pull/68) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
56
+ - Update gem-release requirement from = 2.0.3 to = 2.0.4 [\#67](https://github.com/coreyja/sleet/pull/67) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
57
+ - Update rake requirement from ~\> 12.3 to ~\> 13.0 [\#64](https://github.com/coreyja/sleet/pull/64) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
58
+ - Update webmock requirement from ~\> 3.6.0 to ~\> 3.7.0 [\#63](https://github.com/coreyja/sleet/pull/63) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
59
+ - Update gem-release requirement from = 2.0.2 to = 2.0.3 [\#62](https://github.com/coreyja/sleet/pull/62) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
60
+ - Update gem-release requirement from = 2.0.1 to = 2.0.2 [\#61](https://github.com/coreyja/sleet/pull/61) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
61
+ - Update webmock requirement from ~\> 3.5.1 to ~\> 3.6.0 [\#60](https://github.com/coreyja/sleet/pull/60) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
62
+
63
+ ## [v0.4.2](https://github.com/coreyja/sleet/tree/v0.4.2) (2019-05-27)
2
64
 
3
- ## [v0.4.2](https://github.com/coreyja/sleet/tree/v0.4.2) (2019-05-26)
4
65
  [Full Changelog](https://github.com/coreyja/sleet/compare/v0.4.1...v0.4.2)
5
66
 
6
67
  **Closed issues:**
@@ -22,6 +83,7 @@
22
83
  - Update webmock requirement from ~\> 3.4.0 to ~\> 3.5.1 [\#47](https://github.com/coreyja/sleet/pull/47) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
23
84
 
24
85
  ## [v0.4.1](https://github.com/coreyja/sleet/tree/v0.4.1) (2018-11-24)
86
+
25
87
  [Full Changelog](https://github.com/coreyja/sleet/compare/v0.4.0...v0.4.1)
26
88
 
27
89
  **Merged pull requests:**
@@ -36,6 +98,7 @@
36
98
  - Update rugged requirement to \>= 0.26, \< 0.28 [\#24](https://github.com/coreyja/sleet/pull/24) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
37
99
 
38
100
  ## [v0.4.0](https://github.com/coreyja/sleet/tree/v0.4.0) (2018-03-08)
101
+
39
102
  [Full Changelog](https://github.com/coreyja/sleet/compare/v0.3.10...v0.4.0)
40
103
 
41
104
  **Closed issues:**
@@ -47,6 +110,7 @@
47
110
  - Get Token From Config File [\#21](https://github.com/coreyja/sleet/pull/21) ([coreyja](https://github.com/coreyja))
48
111
 
49
112
  ## [v0.3.10](https://github.com/coreyja/sleet/tree/v0.3.10) (2018-03-08)
113
+
50
114
  [Full Changelog](https://github.com/coreyja/sleet/compare/v0.3.9...v0.3.10)
51
115
 
52
116
  **Merged pull requests:**
@@ -55,6 +119,7 @@
55
119
  - Update rubocop requirement to ~\> 0.53.0 [\#19](https://github.com/coreyja/sleet/pull/19) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
56
120
 
57
121
  ## [v0.3.9](https://github.com/coreyja/sleet/tree/v0.3.9) (2018-03-04)
122
+
58
123
  [Full Changelog](https://github.com/coreyja/sleet/compare/v0.3.8...v0.3.9)
59
124
 
60
125
  **Closed issues:**
@@ -66,15 +131,14 @@
66
131
  - Refactor [\#18](https://github.com/coreyja/sleet/pull/18) ([coreyja](https://github.com/coreyja))
67
132
  - Update rake requirement to ~\> 12.3 [\#17](https://github.com/coreyja/sleet/pull/17) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
68
133
  - Update faraday requirement to \>= 0.13.1, \< 0.15.0 [\#16](https://github.com/coreyja/sleet/pull/16) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
134
+ - More Specs [\#15](https://github.com/coreyja/sleet/pull/15) ([coreyja](https://github.com/coreyja))
69
135
 
70
136
  ## [v0.3.8](https://github.com/coreyja/sleet/tree/v0.3.8) (2018-02-25)
71
- [Full Changelog](https://github.com/coreyja/sleet/compare/v0.3.7...v0.3.8)
72
-
73
- **Merged pull requests:**
74
137
 
75
- - More Specs [\#15](https://github.com/coreyja/sleet/pull/15) ([coreyja](https://github.com/coreyja))
138
+ [Full Changelog](https://github.com/coreyja/sleet/compare/v0.3.7...v0.3.8)
76
139
 
77
140
  ## [v0.3.7](https://github.com/coreyja/sleet/tree/v0.3.7) (2018-01-19)
141
+
78
142
  [Full Changelog](https://github.com/coreyja/sleet/compare/v0.3.6...v0.3.7)
79
143
 
80
144
  **Merged pull requests:**
@@ -82,6 +146,7 @@
82
146
  - Fix token auth and finally add a spec for it so I don't break it again [\#14](https://github.com/coreyja/sleet/pull/14) ([coreyja](https://github.com/coreyja))
83
147
 
84
148
  ## [v0.3.6](https://github.com/coreyja/sleet/tree/v0.3.6) (2018-01-18)
149
+
85
150
  [Full Changelog](https://github.com/coreyja/sleet/compare/v0.3.5...v0.3.6)
86
151
 
87
152
  **Merged pull requests:**
@@ -89,9 +154,11 @@
89
154
  - Fix Auth By Going Back to Query Params [\#13](https://github.com/coreyja/sleet/pull/13) ([coreyja](https://github.com/coreyja))
90
155
 
91
156
  ## [v0.3.5](https://github.com/coreyja/sleet/tree/v0.3.5) (2018-01-17)
157
+
92
158
  [Full Changelog](https://github.com/coreyja/sleet/compare/v0.3.4...v0.3.5)
93
159
 
94
160
  ## [v0.3.4](https://github.com/coreyja/sleet/tree/v0.3.4) (2018-01-17)
161
+
95
162
  [Full Changelog](https://github.com/coreyja/sleet/compare/v0.3.3...v0.3.4)
96
163
 
97
164
  **Merged pull requests:**
@@ -100,6 +167,7 @@
100
167
  - Fix Auth [\#11](https://github.com/coreyja/sleet/pull/11) ([coreyja](https://github.com/coreyja))
101
168
 
102
169
  ## [v0.3.3](https://github.com/coreyja/sleet/tree/v0.3.3) (2018-01-16)
170
+
103
171
  [Full Changelog](https://github.com/coreyja/sleet/compare/v0.3.2...v0.3.3)
104
172
 
105
173
  **Merged pull requests:**
@@ -107,6 +175,7 @@
107
175
  - Add `version` cmd [\#10](https://github.com/coreyja/sleet/pull/10) ([coreyja](https://github.com/coreyja))
108
176
 
109
177
  ## [v0.3.2](https://github.com/coreyja/sleet/tree/v0.3.2) (2018-01-16)
178
+
110
179
  [Full Changelog](https://github.com/coreyja/sleet/compare/v0.3.1...v0.3.2)
111
180
 
112
181
  **Merged pull requests:**
@@ -114,6 +183,7 @@
114
183
  - Update Readme and Add Descriptions to Help Menus [\#8](https://github.com/coreyja/sleet/pull/8) ([coreyja](https://github.com/coreyja))
115
184
 
116
185
  ## [v0.3.1](https://github.com/coreyja/sleet/tree/v0.3.1) (2018-01-15)
186
+
117
187
  [Full Changelog](https://github.com/coreyja/sleet/compare/v0.3.0...v0.3.1)
118
188
 
119
189
  **Merged pull requests:**
@@ -121,6 +191,7 @@
121
191
  - Add Dependency Versions [\#5](https://github.com/coreyja/sleet/pull/5) ([coreyja](https://github.com/coreyja))
122
192
 
123
193
  ## [v0.3.0](https://github.com/coreyja/sleet/tree/v0.3.0) (2018-01-15)
194
+
124
195
  [Full Changelog](https://github.com/coreyja/sleet/compare/v0.2.0...v0.3.0)
125
196
 
126
197
  **Closed issues:**
@@ -133,10 +204,13 @@
133
204
  - Error Messages [\#3](https://github.com/coreyja/sleet/pull/3) ([coreyja](https://github.com/coreyja))
134
205
 
135
206
  ## [v0.2.0](https://github.com/coreyja/sleet/tree/v0.2.0) (2018-01-14)
207
+
208
+ [Full Changelog](https://github.com/coreyja/sleet/compare/aa005fdae00ae843909f3a2d1753db3727a27c2c...v0.2.0)
209
+
136
210
  **Merged pull requests:**
137
211
 
138
212
  - Gemify [\#2](https://github.com/coreyja/sleet/pull/2) ([coreyja](https://github.com/coreyja))
139
213
 
140
214
 
141
215
 
142
- \* *This Change Log was automatically generated by [github_changelog_generator](https://github.com/skywinder/Github-Changelog-Generator)*
216
+ \* *This Changelog was automatically generated by [github_changelog_generator](https://github.com/github-changelog-generator/github-changelog-generator)*
@@ -9,7 +9,7 @@
9
9
 
10
10
  RSpec has a [feature](https://relishapp.com/rspec/rspec-core/v/3-7/docs/command-line/only-failures) that I find very useful which is the `--only-failures` option. This will re-run only that examples that failed the previous run.
11
11
 
12
- CircleCI has support for [uploading artifcats](https://circleci.com/docs/2.0/artifacts/) with your builds, which allows us to store the persistance file that powers the RSpec only failures option.
12
+ CircleCI has support for [uploading artifacts](https://circleci.com/docs/2.0/artifacts/) with your builds, which allows us to store the persistance file that powers the RSpec only failures option.
13
13
  However! CircleCI also supports and encourages parallelizing your build, which means even if you upload your rspec persistance file, you actually have a number of them each containing a subset of your test suite.
14
14
  This is where `Sleet` comes in!
15
15
 
@@ -95,31 +95,31 @@ To view your current configuration use the `sleet config` command which will giv
95
95
 
96
96
  These are the options that are currently supported
97
97
 
98
- #### `source_dir`
98
+ #### `--source_dir`
99
99
 
100
- Alias: s
100
+ Alias: `s`
101
101
 
102
102
  This is the directory of the source git repo. If a `source_dir` is NOT given we look up from the current directory for the nearest git repo.
103
103
 
104
- #### `input_file`
104
+ #### `--input_file`
105
105
 
106
- Alias: i
106
+ Alias: `i`
107
107
 
108
108
  This is the name of the Rspec Circle Persistance File in CircleCI. The default is `.rspec_example_statuses`
109
109
 
110
110
  This will match if the full path on CircleCI ends in the given name.
111
111
 
112
- #### `output_file`
112
+ #### `--output_file`
113
113
 
114
- Alias: o
114
+ Alias: `o`
115
115
 
116
116
  This is the name for the output file, on your local system. It is relative to the `source_dir`.
117
117
 
118
118
  Will be IGNORED if `workflows` is provided.
119
119
 
120
- #### `workflows`
120
+ #### `--workflows`
121
121
 
122
- Alias: w
122
+ Alias: `w`
123
123
 
124
124
  If you are using workflows in CircleCI, then this is for you! You need to tell `Sleet` which build(s) to look in, and where each output should be saved.
125
125
  The input is a hash, where the key is the build name and the value is the `output_file` for that build. Sleet supports saving the artifacts to multiple builds, meaning it can support a mono-repo setup.
@@ -128,12 +128,11 @@ Build-Test-Deploy Demo:
128
128
 
129
129
  For this example you have three jobs in your CircleCI Workflow, `build`, `test` and `deploy`, but only 1 (the `test` build) generate an Rspec persistance file
130
130
 
131
- This command will pick the `test` build and save it's artificats to the `.rspec_example_statuses` file
131
+ This command will pick the `test` build and save its artifacts to the `.rspec_example_statuses` file
132
132
 
133
133
  ```
134
134
  sleet fetch --workflows test:.rspec_example_statuses
135
135
  ```
136
-
137
136
  MonoRepo Demo:
138
137
 
139
138
  If you have a mono-repo that contains 3 sub-dirs. `foo`, `bar` and `baz`. And each one has an accompanying build. We can process all these sub-dirs at once with the following workflow command.
@@ -141,3 +140,21 @@ If you have a mono-repo that contains 3 sub-dirs. `foo`, `bar` and `baz`. And ea
141
140
  ```
142
141
  sleet fetch --workflows foo-test:foo/.rpsec_example_statuses bar-test:bar/.rspec_example_statuses baz-specs:baz/spec/examples.txt
143
142
  ```
143
+
144
+ #### `--username`
145
+
146
+ Alias: `u`
147
+
148
+ This is the GitHub username that is referenced by the CircleCI build. By default, Sleet will base this on your upstream git remote.
149
+
150
+ #### `--project`
151
+
152
+ Alias: `p`
153
+
154
+ This is the GitHub project that is referenced by the CircleCI build. By default, Sleet will base this on your upstream git remote.
155
+
156
+ #### `--branch`
157
+
158
+ Alias: `b`
159
+
160
+ This is the remote branch that is referenced by the CircleCI build. Sleet will attempt to guess this by default, but if you are pushing to a forked repo, you may need to specify a different branch name (e.g. "pull/1234").
@@ -2,6 +2,7 @@
2
2
 
3
3
  require 'colorize'
4
4
  require 'faraday'
5
+ require 'faraday_middleware'
5
6
  require 'forwardable'
6
7
  require 'json'
7
8
  require 'rspec'
@@ -25,6 +26,7 @@ require 'sleet/config'
25
26
  require 'sleet/error'
26
27
  require 'sleet/fetch_command'
27
28
  require 'sleet/job_fetcher'
29
+ require 'sleet/local_repo'
28
30
  require 'sleet/repo'
29
31
  require 'sleet/rspec_file_merger'
30
32
  require 'sleet/version'
@@ -6,14 +6,14 @@ module Sleet
6
6
  @circle_ci_token = circle_ci_token
7
7
  @github_user = github_user
8
8
  @github_repo = github_repo
9
- @branch = branch
9
+ @branch = CGI.escape(branch)
10
10
  end
11
11
 
12
12
  def builds
13
13
  @builds ||= JSON.parse(Sleet::CircleCi.get(url, circle_ci_token).body)
14
14
  end
15
15
 
16
- def builds_with_artificats
16
+ def builds_with_artifacts
17
17
  builds.select { |b| b['has_artifacts'] }
18
18
  end
19
19
 
@@ -22,7 +22,8 @@ module Sleet
22
22
  attr_reader :github_user, :github_repo, :branch, :circle_ci_token
23
23
 
24
24
  def url
25
- "https://circleci.com/api/v1.1/project/github/#{github_user}/#{github_repo}/tree/#{branch}?filter=completed"
25
+ "https://circleci.com/api/v1.1/project/github/#{github_user}/#{github_repo}/tree/#{branch}" \
26
+ '?filter=completed&limit=100'
26
27
  end
27
28
  end
28
29
  end
@@ -29,14 +29,14 @@ module Sleet
29
29
  end
30
30
 
31
31
  def chosen_build_json
32
- branch.builds_with_artificats.find do |b|
32
+ branch.builds_with_artifacts.find do |b|
33
33
  b.fetch('workflows', nil)&.fetch('job_name', nil) == job_name
34
34
  end
35
35
  end
36
36
 
37
37
  def must_find_a_build_with_artifacts!
38
38
  !chosen_build_json.nil? ||
39
- raise(Error, "No builds with artifcats found#{" for job name [#{job_name}]" if job_name}")
39
+ raise(Error, "No builds with artifacts found#{" for job name [#{job_name}]" if job_name}")
40
40
  end
41
41
 
42
42
  def chosen_build_must_have_input_file!
@@ -5,7 +5,14 @@ require 'singleton'
5
5
  module Sleet
6
6
  class CircleCi
7
7
  def self.get(url, token)
8
- Faraday.get(url, 'circle-token' => token)
8
+ connection.get(url, 'circle-token' => token)
9
+ end
10
+
11
+ def self.connection
12
+ Faraday.new do |b|
13
+ b.use FaradayMiddleware::FollowRedirects
14
+ b.adapter :net_http
15
+ end
9
16
  end
10
17
  end
11
18
  end
@@ -4,6 +4,10 @@ module Sleet
4
4
  class Cli < Thor
5
5
  default_task :fetch
6
6
 
7
+ def self.exit_on_failure?
8
+ true
9
+ end
10
+
7
11
  desc 'fetch', 'Fetch and Aggregate RSpec Persistance Files from CircleCI'
8
12
  long_desc <<~LONGDESC
9
13
  `sleet fetch` will find build(s) in CircleCI for the current branch, and
@@ -20,6 +24,15 @@ module Sleet
20
24
  option :output_file, type: :string, aliases: [:o], desc: <<~DESC
21
25
  This is the name for the output file, on your local system. It is relative to the source_dir. Will be IGNORED if workflows is provided.
22
26
  DESC
27
+ option :username, type: :string, aliases: [:u], desc: <<~DESC
28
+ This is the GitHub username that is referenced by the CircleCI build. By default, Sleet will base this on your upstream git remote.
29
+ DESC
30
+ option :project, type: :string, aliases: [:p], desc: <<~DESC
31
+ This is the GitHub project that is referenced by the CircleCI build. By default, Sleet will base this on your upstream git remote.
32
+ DESC
33
+ option :branch, type: :string, aliases: [:b], desc: <<~DESC
34
+ This is the remote branch that is referenced by the CircleCI build. Sleet will attempt to guess this by default, but if you are pushing to a forked repo, you may need to specify a different branch name (e.g. "pull/1234").
35
+ DESC
23
36
  option :workflows, type: :hash, aliases: [:w], desc: <<~DESC
24
37
  To use Sleet with CircleCI Workflows you need to tell Sleet which build(s) to look in, and where each output should be saved. The input is a hash, where the key is the build name and the value is the output_file for that build. Sleet supports saving the artifacts to multiple builds, meaning it can support a mono-repo setup.
25
38
  DESC
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Sleet
4
- class Config
4
+ class Config # rubocop:disable Metrics/ClassLength
5
5
  OPTION_FILENAME = '.sleet.yml'
6
6
  HIDDEN_UNLESS_IN_CLI_OPTIONS = %w[show_sensitive print_config].freeze
7
7
  ConfigOption = Struct.new(:value, :source)
@@ -23,6 +23,18 @@ module Sleet
23
23
  options_hash[:output_file]
24
24
  end
25
25
 
26
+ def username
27
+ options_hash[:username]
28
+ end
29
+
30
+ def project
31
+ options_hash[:project]
32
+ end
33
+
34
+ def branch
35
+ options_hash[:branch]
36
+ end
37
+
26
38
  def workflows
27
39
  options_hash[:workflows]
28
40
  end
@@ -7,7 +7,6 @@ module Sleet
7
7
  end
8
8
 
9
9
  def do!
10
- repo.validate!
11
10
  error_messages = []
12
11
  fetchers.map do |fetcher|
13
12
  begin
@@ -41,10 +41,6 @@ module Sleet
41
41
  ).files
42
42
  end
43
43
 
44
- def branch
45
- repo.branch
46
- end
47
-
48
44
  def build
49
45
  build_selector.build
50
46
  end
@@ -0,0 +1,75 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Sleet
4
+ class LocalRepo
5
+ REMOTE_BRANCH_REGEX = %r{^([^\/.]+)\/(.+)}.freeze
6
+ CURRENT_BRANCH_REGEX = %r{^refs\/heads\/}.freeze
7
+ GITHUB_MATCH_REGEX = %r{github.com[:\/](.+)\/(.+)\.git}.freeze
8
+
9
+ def initialize(source_dir:)
10
+ @source_dir = source_dir
11
+ end
12
+
13
+ def username
14
+ validate!
15
+
16
+ github_match[1]
17
+ end
18
+
19
+ def project
20
+ validate!
21
+
22
+ github_match[2]
23
+ end
24
+
25
+ def branch_name
26
+ validate!
27
+
28
+ current_branch.upstream.name.match(REMOTE_BRANCH_REGEX)[2]
29
+ end
30
+
31
+ private
32
+
33
+ attr_reader :source_dir
34
+
35
+ def current_branch_name
36
+ @current_branch_name ||= repo.head.name.sub(CURRENT_BRANCH_REGEX, '')
37
+ end
38
+
39
+ def current_branch
40
+ @current_branch ||= repo.branches[current_branch_name]
41
+ end
42
+
43
+ def github_match
44
+ @github_match ||= GITHUB_MATCH_REGEX.match(current_branch.remote.url)
45
+ end
46
+
47
+ def repo
48
+ @repo ||= Rugged::Repository.new(source_dir)
49
+ end
50
+
51
+ def validate!
52
+ return if @validated
53
+
54
+ must_be_on_branch!
55
+ must_have_an_upstream_branch!
56
+ upstream_remote_must_be_github!
57
+ @validated = true
58
+ end
59
+
60
+ def must_be_on_branch!
61
+ !current_branch.nil? ||
62
+ raise(Error, 'Not on a branch')
63
+ end
64
+
65
+ def must_have_an_upstream_branch!
66
+ !current_branch.remote.nil? ||
67
+ raise(Error, "No upstream branch set for the current branch of #{current_branch_name}")
68
+ end
69
+
70
+ def upstream_remote_must_be_github!
71
+ !github_match.nil? ||
72
+ raise(Error, 'Upstream remote is not GitHub')
73
+ end
74
+ end
75
+ end
@@ -2,87 +2,44 @@
2
2
 
3
3
  module Sleet
4
4
  class Repo
5
- REMOTE_BRANCH_REGEX = %r{^([^\/.]+)\/(.+)}.freeze
6
- CURRENT_BRANCH_REGEX = %r{^refs\/heads\/}.freeze
7
- GITHUB_MATCH_REGEX = %r{github.com[:\/](.+)\/(.+)\.git}.freeze
8
-
9
5
  def self.from_config(config)
6
+ local_repo = Sleet::LocalRepo.new(source_dir: config.source_dir)
7
+
10
8
  new(
11
- repo: Rugged::Repository.new(config.source_dir),
12
- circle_ci_token: config.circle_ci_token
9
+ circle_ci_token: config.circle_ci_token,
10
+ username: config.username || local_repo.username,
11
+ project: config.project || local_repo.project,
12
+ branch_name: config.branch || local_repo.branch_name
13
13
  )
14
14
  end
15
15
 
16
- def initialize(repo:, circle_ci_token:)
17
- @repo = repo
16
+ def initialize(circle_ci_token:, username:, project:, branch_name:)
18
17
  @circle_ci_token = circle_ci_token
18
+ @github_user = username
19
+ @github_repo = project
20
+ @branch_name = branch_name
19
21
  end
20
22
 
21
- def validate!
22
- must_be_on_branch!
23
- must_have_an_upstream_branch!
24
- upstream_remote_must_be_github!
25
- end
26
-
27
- def branch
28
- @branch ||= Sleet::Branch.new(
23
+ def build_for(build_num)
24
+ Sleet::Build.new(
29
25
  circle_ci_token: circle_ci_token,
30
26
  github_user: github_user,
31
27
  github_repo: github_repo,
32
- branch: remote_branch
28
+ build_num: build_num
33
29
  )
34
30
  end
35
31
 
36
- def build_for(build_num)
37
- Sleet::Build.new(
32
+ def branch
33
+ @branch ||= Sleet::Branch.new(
38
34
  circle_ci_token: circle_ci_token,
39
35
  github_user: github_user,
40
36
  github_repo: github_repo,
41
- build_num: build_num
37
+ branch: branch_name
42
38
  )
43
39
  end
44
40
 
45
41
  private
46
42
 
47
- attr_reader :repo, :circle_ci_token
48
-
49
- def remote_branch
50
- current_branch.upstream.name.match(REMOTE_BRANCH_REGEX)[2]
51
- end
52
-
53
- def github_user
54
- github_match[1]
55
- end
56
-
57
- def github_repo
58
- github_match[2]
59
- end
60
-
61
- def current_branch_name
62
- repo.head.name.sub(CURRENT_BRANCH_REGEX, '')
63
- end
64
-
65
- def current_branch
66
- repo.branches[current_branch_name]
67
- end
68
-
69
- def github_match
70
- @github_match ||= GITHUB_MATCH_REGEX.match(current_branch.remote.url)
71
- end
72
-
73
- def must_be_on_branch!
74
- !current_branch.nil? ||
75
- raise(Error, 'Not on a branch')
76
- end
77
-
78
- def must_have_an_upstream_branch!
79
- !current_branch.remote.nil? ||
80
- raise(Error, "No upstream branch set for the current branch of #{repo.current_branch_name}")
81
- end
82
-
83
- def upstream_remote_must_be_github!
84
- !github_match.nil? ||
85
- raise(Error, 'Upstream remote is not GitHub')
86
- end
43
+ attr_reader :circle_ci_token, :github_user, :github_repo, :branch_name
87
44
  end
88
45
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Sleet
4
- VERSION = '0.4.2'
4
+ VERSION = '0.5.3'
5
5
  end
@@ -13,7 +13,7 @@ Gem::Specification.new do |spec|
13
13
  spec.summary = 'CircleCI RSpec Status Persistance File Aggregator'
14
14
  spec.description = <<~DOC
15
15
  Sleet provides an easy way to grab the most recent Rspec persistance files from CircleCI.
16
- It also aggregates the artificats from CircleCI, since you will have 1 per build container.
16
+ It also aggregates the artifacts from CircleCI, since you will have 1 per build container.
17
17
  DOC
18
18
  spec.homepage = 'https://github.com/coreyja/sleet'
19
19
  spec.license = 'MIT'
@@ -26,16 +26,17 @@ Gem::Specification.new do |spec|
26
26
  spec.require_paths = ['lib']
27
27
 
28
28
  spec.add_dependency 'colorize', '~> 0.8.1'
29
- spec.add_dependency 'faraday', '>= 0.13.1', '< 0.16.0'
29
+ spec.add_dependency 'faraday', '>= 0.13.1', '< 1.1.0'
30
+ spec.add_dependency 'faraday_middleware'
30
31
  spec.add_dependency 'rspec', '~> 3.0'
31
- spec.add_dependency 'rugged', '>= 0.26', '< 0.29'
32
+ spec.add_dependency 'rugged', '>= 0.26', '< 1.1'
32
33
  spec.add_dependency 'terminal-table', '~> 1.8'
33
- spec.add_dependency 'thor', '~> 0.20.0'
34
+ spec.add_dependency 'thor', '>= 0.20', '< 1.1'
34
35
 
35
- spec.add_development_dependency 'gem-release', '= 2.0.1'
36
+ spec.add_development_dependency 'gem-release', '= 2.1.1'
36
37
  spec.add_development_dependency 'github_changelog_generator', '~> 1.14'
37
38
  spec.add_development_dependency 'pry', '~> 0.10'
38
- spec.add_development_dependency 'rake', '~> 12.3'
39
+ spec.add_development_dependency 'rake', '~> 13.0'
39
40
  spec.add_development_dependency 'rubocop-coreyja', '0.4.0'
40
- spec.add_development_dependency 'webmock', '~> 3.5.1'
41
+ spec.add_development_dependency 'webmock', '~> 3.8.0'
41
42
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sleet
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.2
4
+ version: 0.5.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Corey Alexander
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-05-27 00:00:00.000000000 Z
11
+ date: 2020-08-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: colorize
@@ -33,7 +33,7 @@ dependencies:
33
33
  version: 0.13.1
34
34
  - - "<"
35
35
  - !ruby/object:Gem::Version
36
- version: 0.16.0
36
+ version: 1.1.0
37
37
  type: :runtime
38
38
  prerelease: false
39
39
  version_requirements: !ruby/object:Gem::Requirement
@@ -43,7 +43,21 @@ dependencies:
43
43
  version: 0.13.1
44
44
  - - "<"
45
45
  - !ruby/object:Gem::Version
46
- version: 0.16.0
46
+ version: 1.1.0
47
+ - !ruby/object:Gem::Dependency
48
+ name: faraday_middleware
49
+ requirement: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - ">="
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ type: :runtime
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - ">="
59
+ - !ruby/object:Gem::Version
60
+ version: '0'
47
61
  - !ruby/object:Gem::Dependency
48
62
  name: rspec
49
63
  requirement: !ruby/object:Gem::Requirement
@@ -67,7 +81,7 @@ dependencies:
67
81
  version: '0.26'
68
82
  - - "<"
69
83
  - !ruby/object:Gem::Version
70
- version: '0.29'
84
+ version: '1.1'
71
85
  type: :runtime
72
86
  prerelease: false
73
87
  version_requirements: !ruby/object:Gem::Requirement
@@ -77,7 +91,7 @@ dependencies:
77
91
  version: '0.26'
78
92
  - - "<"
79
93
  - !ruby/object:Gem::Version
80
- version: '0.29'
94
+ version: '1.1'
81
95
  - !ruby/object:Gem::Dependency
82
96
  name: terminal-table
83
97
  requirement: !ruby/object:Gem::Requirement
@@ -96,30 +110,36 @@ dependencies:
96
110
  name: thor
97
111
  requirement: !ruby/object:Gem::Requirement
98
112
  requirements:
99
- - - "~>"
113
+ - - ">="
114
+ - !ruby/object:Gem::Version
115
+ version: '0.20'
116
+ - - "<"
100
117
  - !ruby/object:Gem::Version
101
- version: 0.20.0
118
+ version: '1.1'
102
119
  type: :runtime
103
120
  prerelease: false
104
121
  version_requirements: !ruby/object:Gem::Requirement
105
122
  requirements:
106
- - - "~>"
123
+ - - ">="
124
+ - !ruby/object:Gem::Version
125
+ version: '0.20'
126
+ - - "<"
107
127
  - !ruby/object:Gem::Version
108
- version: 0.20.0
128
+ version: '1.1'
109
129
  - !ruby/object:Gem::Dependency
110
130
  name: gem-release
111
131
  requirement: !ruby/object:Gem::Requirement
112
132
  requirements:
113
133
  - - '='
114
134
  - !ruby/object:Gem::Version
115
- version: 2.0.1
135
+ version: 2.1.1
116
136
  type: :development
117
137
  prerelease: false
118
138
  version_requirements: !ruby/object:Gem::Requirement
119
139
  requirements:
120
140
  - - '='
121
141
  - !ruby/object:Gem::Version
122
- version: 2.0.1
142
+ version: 2.1.1
123
143
  - !ruby/object:Gem::Dependency
124
144
  name: github_changelog_generator
125
145
  requirement: !ruby/object:Gem::Requirement
@@ -154,14 +174,14 @@ dependencies:
154
174
  requirements:
155
175
  - - "~>"
156
176
  - !ruby/object:Gem::Version
157
- version: '12.3'
177
+ version: '13.0'
158
178
  type: :development
159
179
  prerelease: false
160
180
  version_requirements: !ruby/object:Gem::Requirement
161
181
  requirements:
162
182
  - - "~>"
163
183
  - !ruby/object:Gem::Version
164
- version: '12.3'
184
+ version: '13.0'
165
185
  - !ruby/object:Gem::Dependency
166
186
  name: rubocop-coreyja
167
187
  requirement: !ruby/object:Gem::Requirement
@@ -182,17 +202,17 @@ dependencies:
182
202
  requirements:
183
203
  - - "~>"
184
204
  - !ruby/object:Gem::Version
185
- version: 3.5.1
205
+ version: 3.8.0
186
206
  type: :development
187
207
  prerelease: false
188
208
  version_requirements: !ruby/object:Gem::Requirement
189
209
  requirements:
190
210
  - - "~>"
191
211
  - !ruby/object:Gem::Version
192
- version: 3.5.1
212
+ version: 3.8.0
193
213
  description: |
194
214
  Sleet provides an easy way to grab the most recent Rspec persistance files from CircleCI.
195
- It also aggregates the artificats from CircleCI, since you will have 1 per build container.
215
+ It also aggregates the artifacts from CircleCI, since you will have 1 per build container.
196
216
  email:
197
217
  - coreyja@gmail.com
198
218
  executables:
@@ -231,6 +251,7 @@ files:
231
251
  - lib/sleet/error.rb
232
252
  - lib/sleet/fetch_command.rb
233
253
  - lib/sleet/job_fetcher.rb
254
+ - lib/sleet/local_repo.rb
234
255
  - lib/sleet/repo.rb
235
256
  - lib/sleet/rspec_file_merger.rb
236
257
  - lib/sleet/version.rb