spaarti 2.0.2 → 3.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/build.yml +46 -0
- data/CHANGELOG.md +4 -0
- data/LICENSE +1 -1
- data/README.md +1 -3
- data/lib/spaarti/repo.rb +10 -1
- data/lib/spaarti/site.rb +1 -1
- data/lib/spaarti/version.rb +1 -1
- data/spaarti.gemspec +5 -10
- data/spec/bin_spec.rb +0 -3
- data/spec/spaarti/repo_spec.rb +0 -3
- data/spec/spaarti/site_spec.rb +0 -63
- data/spec/spec_helper.rb +0 -9
- metadata +14 -93
- data/.circle-ruby +0 -4
- data/.prospectus +0 -11
- data/.travis.yml +0 -10
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: '085c22477ef728b91f8f6a512fe8d0a684654d681a3b8e54cae9b5fff7b3b3dd'
|
4
|
+
data.tar.gz: 87fb4fbca2fbeda0716e2f131eb9564de2220679e9b15f470d7310f53dc43230
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7f492c98572363b48982cb75f15e05713a6adaeaa5fc4a9ebea53fcb23fa108719a2cdd45eac289c64b8bc0bbbf38edd095cb5688694aa0c2d2e8168546472b7
|
7
|
+
data.tar.gz: '09c409f6ce8b8656cd3d6ec4f15588b9c177baaee655b9504736fbec87b1afda96c4a58e51dff34c9571420889ae6e841835f78189b861b4ed73d2e3fd29e0be'
|
@@ -0,0 +1,46 @@
|
|
1
|
+
name: Build
|
2
|
+
on:
|
3
|
+
pull_request:
|
4
|
+
push:
|
5
|
+
jobs:
|
6
|
+
build:
|
7
|
+
name: Build
|
8
|
+
runs-on: ubuntu-22.04
|
9
|
+
permissions:
|
10
|
+
contents: write
|
11
|
+
steps:
|
12
|
+
- name: Checkout
|
13
|
+
uses: actions/checkout@v3
|
14
|
+
with:
|
15
|
+
submodules: recursive
|
16
|
+
- uses: ruby/setup-ruby@v1
|
17
|
+
with:
|
18
|
+
ruby-version: '3.1'
|
19
|
+
bundler-cache: true
|
20
|
+
- name: Build
|
21
|
+
run: bundle exec rake
|
22
|
+
- name: Release
|
23
|
+
if: github.ref_type == 'tag'
|
24
|
+
run: bundle exec rake release
|
25
|
+
env:
|
26
|
+
GEM_HOST_API_KEY: ${{ secrets.GEM_HOST_API_KEY }}
|
27
|
+
- name: Post to a Slack channel
|
28
|
+
if: ${{ failure() }}
|
29
|
+
uses: slackapi/slack-github-action@v1.23.0
|
30
|
+
env:
|
31
|
+
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
|
32
|
+
SLACK_WEBHOOK_TYPE: INCOMING_WEBHOOK
|
33
|
+
with:
|
34
|
+
payload: |
|
35
|
+
{
|
36
|
+
"text": "*${{ github.repository }}*\nBuild failed: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}",
|
37
|
+
"blocks": [
|
38
|
+
{
|
39
|
+
"type": "section",
|
40
|
+
"text": {
|
41
|
+
"type": "mrkdwn",
|
42
|
+
"text": "*${{ github.repository }}*\nBuild failed: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}"
|
43
|
+
}
|
44
|
+
}
|
45
|
+
]
|
46
|
+
}
|
data/CHANGELOG.md
CHANGED
data/LICENSE
CHANGED
data/README.md
CHANGED
@@ -2,9 +2,7 @@ spaarti
|
|
2
2
|
=========
|
3
3
|
|
4
4
|
[![Gem Version](https://img.shields.io/gem/v/spaarti.svg)](https://rubygems.org/gems/spaarti)
|
5
|
-
[![
|
6
|
-
[![Coverage Status](https://img.shields.io/codecov/c/github/akerl/spaarti.svg)](https://codecov.io/github/akerl/spaarti)
|
7
|
-
[![Code Quality](https://img.shields.io/codacy/65bacb9d92d948f6ae637ce63ade3557.svg)](https://www.codacy.com/app/akerl/spaarti)
|
5
|
+
[![GitHub Workflow Status](https://img.shields.io/github/workflow/status/akerl/spaarti/Build)](https://github.com/akerl/spaarti/actions)
|
8
6
|
[![MIT Licensed](https://img.shields.io/badge/license-MIT-green.svg)](https://tldrlegal.com/license/mit-license)
|
9
7
|
|
10
8
|
Tool to maintain local clones of repos you have access to on GitHub
|
data/lib/spaarti/repo.rb
CHANGED
@@ -8,7 +8,7 @@ module Spaarti
|
|
8
8
|
@data = data
|
9
9
|
@client = client
|
10
10
|
@options = params
|
11
|
-
@path = @options[:
|
11
|
+
@path = resolve_path(@options[:formats], @data) % @data
|
12
12
|
end
|
13
13
|
|
14
14
|
def sync!
|
@@ -26,6 +26,15 @@ module Spaarti
|
|
26
26
|
|
27
27
|
private
|
28
28
|
|
29
|
+
def resolve_path(formats, data)
|
30
|
+
formats.each do |format|
|
31
|
+
return format[:path] if format[:match].nil?
|
32
|
+
next unless data[:full_name].include? format[:match]
|
33
|
+
return format[:path]
|
34
|
+
end
|
35
|
+
raise 'No valid path format found'
|
36
|
+
end
|
37
|
+
|
29
38
|
def log(msg)
|
30
39
|
puts msg unless @options[:quiet]
|
31
40
|
end
|
data/lib/spaarti/site.rb
CHANGED
data/lib/spaarti/version.rb
CHANGED
data/spaarti.gemspec
CHANGED
@@ -5,7 +5,7 @@ require 'spaarti/version'
|
|
5
5
|
Gem::Specification.new do |s|
|
6
6
|
s.name = 'spaarti'
|
7
7
|
s.version = Spaarti::VERSION
|
8
|
-
s.
|
8
|
+
s.required_ruby_version = '>= 2.6'
|
9
9
|
|
10
10
|
s.summary = 'Helper for cloning GitHub repos'
|
11
11
|
s.description = 'Maintain local clones of repos you have access to on GitHub'
|
@@ -15,20 +15,15 @@ Gem::Specification.new do |s|
|
|
15
15
|
s.license = 'MIT'
|
16
16
|
|
17
17
|
s.files = `git ls-files`.split
|
18
|
-
s.test_files = `git ls-files spec/*`.split
|
19
18
|
s.executables = ['spaarti']
|
20
19
|
|
21
20
|
s.add_dependency 'cymbal', '~> 2.0.0'
|
22
21
|
s.add_dependency 'mercenary', '~> 0.3.4'
|
23
|
-
s.add_dependency 'octoauth', '~>
|
24
|
-
s.add_dependency 'octokit', '~>
|
22
|
+
s.add_dependency 'octoauth', '~> 2.0.0'
|
23
|
+
s.add_dependency 'octokit', '~> 5.6.1'
|
25
24
|
|
26
|
-
s.add_development_dependency '
|
27
|
-
s.add_development_dependency 'fuubar', '~> 2.5.0'
|
28
|
-
s.add_development_dependency 'goodcop', '~> 0.8.0'
|
29
|
-
s.add_development_dependency 'rake', '~> 13.0.0'
|
30
|
-
s.add_development_dependency 'rspec', '~> 3.9.0'
|
31
|
-
s.add_development_dependency 'rubocop', '~> 0.76.0'
|
25
|
+
s.add_development_dependency 'goodcop', '~> 0.9.7'
|
32
26
|
s.add_development_dependency 'vcr', '~> 5.0.0'
|
33
27
|
s.add_development_dependency 'webmock', '~> 3.7.6'
|
28
|
+
s.metadata['rubygems_mfa_required'] = 'true'
|
34
29
|
end
|
data/spec/bin_spec.rb
CHANGED
data/spec/spaarti/repo_spec.rb
CHANGED
data/spec/spaarti/site_spec.rb
CHANGED
@@ -1,65 +1,2 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
require 'fileutils'
|
3
|
-
|
4
|
-
describe Spaarti do
|
5
|
-
describe 'Site' do
|
6
|
-
let(:path) { 'tmp/base' }
|
7
|
-
let(:config) { 'spec/examples/config.yml' }
|
8
|
-
let(:subject) { Spaarti::Site.new config_file: config }
|
9
|
-
|
10
|
-
before(:each) do
|
11
|
-
FileUtils.rm_rf path
|
12
|
-
FileUtils.mkdir_p path
|
13
|
-
end
|
14
|
-
|
15
|
-
after(:each) do
|
16
|
-
FileUtils.rm_rf path
|
17
|
-
end
|
18
|
-
|
19
|
-
describe '#sync!' do
|
20
|
-
it 'clones repo' do
|
21
|
-
expect(File.exist?("#{path}/akerl/spaarti/.git")).to be_falsey
|
22
|
-
VCR.use_cassette('repos') { subject.sync! }
|
23
|
-
expect(File.exist?("#{path}/akerl/spaarti/.git")).to be_truthy
|
24
|
-
end
|
25
|
-
|
26
|
-
context 'with purge enabled' do
|
27
|
-
it 'purges repos that are orphaned' do
|
28
|
-
FileUtils.mkdir_p "#{path}/akerl/orphan/.git"
|
29
|
-
VCR.use_cassette('repos') do
|
30
|
-
Spaarti::Site.new(purge: true, config_file: config).sync!
|
31
|
-
end
|
32
|
-
expect(File.exist?("#{path}/akerl/orphan")).to be_falsey
|
33
|
-
end
|
34
|
-
end
|
35
|
-
context 'with purge disabled' do
|
36
|
-
it 'does not purge repos that are orphaned' do
|
37
|
-
FileUtils.mkdir_p "#{path}/akerl/orphan/.git"
|
38
|
-
VCR.use_cassette('repos') do
|
39
|
-
Spaarti::Site.new(purge: false, config_file: config).sync!
|
40
|
-
end
|
41
|
-
expect(File.exist?("#{path}/akerl/orphan")).to be_truthy
|
42
|
-
end
|
43
|
-
end
|
44
|
-
|
45
|
-
it 'supports excluding repos' do
|
46
|
-
VCR.use_cassette('repos') do
|
47
|
-
Spaarti::Site.new(
|
48
|
-
exclude: { full_name: ['[ab]a'] }, config_file: config
|
49
|
-
).sync!
|
50
|
-
end
|
51
|
-
expect(File.exist?("#{path}/akerl/spaarti")).to be_falsey
|
52
|
-
end
|
53
|
-
end
|
54
|
-
|
55
|
-
describe '#purge!' do
|
56
|
-
it 'purges repos that are orphaned' do
|
57
|
-
FileUtils.mkdir_p "#{path}/akerl/orphan/.git"
|
58
|
-
VCR.use_cassette('repos') do
|
59
|
-
Spaarti::Site.new(purge: true, config_file: config).sync!
|
60
|
-
end
|
61
|
-
expect(File.exist?("#{path}/akerl/orphan")).to be_falsey
|
62
|
-
end
|
63
|
-
end
|
64
|
-
end
|
65
|
-
end
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: spaarti
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 3.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Les Aker
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-10-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: cymbal
|
@@ -44,112 +44,42 @@ dependencies:
|
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version:
|
47
|
+
version: 2.0.0
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version:
|
54
|
+
version: 2.0.0
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: octokit
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
59
|
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version:
|
61
|
+
version: 5.6.1
|
62
62
|
type: :runtime
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
66
|
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version:
|
69
|
-
- !ruby/object:Gem::Dependency
|
70
|
-
name: codecov
|
71
|
-
requirement: !ruby/object:Gem::Requirement
|
72
|
-
requirements:
|
73
|
-
- - "~>"
|
74
|
-
- !ruby/object:Gem::Version
|
75
|
-
version: 0.1.1
|
76
|
-
type: :development
|
77
|
-
prerelease: false
|
78
|
-
version_requirements: !ruby/object:Gem::Requirement
|
79
|
-
requirements:
|
80
|
-
- - "~>"
|
81
|
-
- !ruby/object:Gem::Version
|
82
|
-
version: 0.1.1
|
83
|
-
- !ruby/object:Gem::Dependency
|
84
|
-
name: fuubar
|
85
|
-
requirement: !ruby/object:Gem::Requirement
|
86
|
-
requirements:
|
87
|
-
- - "~>"
|
88
|
-
- !ruby/object:Gem::Version
|
89
|
-
version: 2.5.0
|
90
|
-
type: :development
|
91
|
-
prerelease: false
|
92
|
-
version_requirements: !ruby/object:Gem::Requirement
|
93
|
-
requirements:
|
94
|
-
- - "~>"
|
95
|
-
- !ruby/object:Gem::Version
|
96
|
-
version: 2.5.0
|
68
|
+
version: 5.6.1
|
97
69
|
- !ruby/object:Gem::Dependency
|
98
70
|
name: goodcop
|
99
71
|
requirement: !ruby/object:Gem::Requirement
|
100
72
|
requirements:
|
101
73
|
- - "~>"
|
102
74
|
- !ruby/object:Gem::Version
|
103
|
-
version: 0.
|
104
|
-
type: :development
|
105
|
-
prerelease: false
|
106
|
-
version_requirements: !ruby/object:Gem::Requirement
|
107
|
-
requirements:
|
108
|
-
- - "~>"
|
109
|
-
- !ruby/object:Gem::Version
|
110
|
-
version: 0.8.0
|
111
|
-
- !ruby/object:Gem::Dependency
|
112
|
-
name: rake
|
113
|
-
requirement: !ruby/object:Gem::Requirement
|
114
|
-
requirements:
|
115
|
-
- - "~>"
|
116
|
-
- !ruby/object:Gem::Version
|
117
|
-
version: 13.0.0
|
75
|
+
version: 0.9.7
|
118
76
|
type: :development
|
119
77
|
prerelease: false
|
120
78
|
version_requirements: !ruby/object:Gem::Requirement
|
121
79
|
requirements:
|
122
80
|
- - "~>"
|
123
81
|
- !ruby/object:Gem::Version
|
124
|
-
version:
|
125
|
-
- !ruby/object:Gem::Dependency
|
126
|
-
name: rspec
|
127
|
-
requirement: !ruby/object:Gem::Requirement
|
128
|
-
requirements:
|
129
|
-
- - "~>"
|
130
|
-
- !ruby/object:Gem::Version
|
131
|
-
version: 3.9.0
|
132
|
-
type: :development
|
133
|
-
prerelease: false
|
134
|
-
version_requirements: !ruby/object:Gem::Requirement
|
135
|
-
requirements:
|
136
|
-
- - "~>"
|
137
|
-
- !ruby/object:Gem::Version
|
138
|
-
version: 3.9.0
|
139
|
-
- !ruby/object:Gem::Dependency
|
140
|
-
name: rubocop
|
141
|
-
requirement: !ruby/object:Gem::Requirement
|
142
|
-
requirements:
|
143
|
-
- - "~>"
|
144
|
-
- !ruby/object:Gem::Version
|
145
|
-
version: 0.76.0
|
146
|
-
type: :development
|
147
|
-
prerelease: false
|
148
|
-
version_requirements: !ruby/object:Gem::Requirement
|
149
|
-
requirements:
|
150
|
-
- - "~>"
|
151
|
-
- !ruby/object:Gem::Version
|
152
|
-
version: 0.76.0
|
82
|
+
version: 0.9.7
|
153
83
|
- !ruby/object:Gem::Dependency
|
154
84
|
name: vcr
|
155
85
|
requirement: !ruby/object:Gem::Requirement
|
@@ -185,12 +115,10 @@ executables:
|
|
185
115
|
extensions: []
|
186
116
|
extra_rdoc_files: []
|
187
117
|
files:
|
188
|
-
- ".
|
118
|
+
- ".github/workflows/build.yml"
|
189
119
|
- ".gitignore"
|
190
|
-
- ".prospectus"
|
191
120
|
- ".rspec"
|
192
121
|
- ".rubocop.yml"
|
193
|
-
- ".travis.yml"
|
194
122
|
- CHANGELOG.md
|
195
123
|
- Gemfile
|
196
124
|
- LICENSE
|
@@ -213,7 +141,8 @@ files:
|
|
213
141
|
homepage: https://github.com/akerl/spaarti
|
214
142
|
licenses:
|
215
143
|
- MIT
|
216
|
-
metadata:
|
144
|
+
metadata:
|
145
|
+
rubygems_mfa_required: 'true'
|
217
146
|
post_install_message:
|
218
147
|
rdoc_options: []
|
219
148
|
require_paths:
|
@@ -222,23 +151,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
222
151
|
requirements:
|
223
152
|
- - ">="
|
224
153
|
- !ruby/object:Gem::Version
|
225
|
-
version: '
|
154
|
+
version: '2.6'
|
226
155
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
227
156
|
requirements:
|
228
157
|
- - ">="
|
229
158
|
- !ruby/object:Gem::Version
|
230
159
|
version: '0'
|
231
160
|
requirements: []
|
232
|
-
rubygems_version: 3.
|
161
|
+
rubygems_version: 3.3.7
|
233
162
|
signing_key:
|
234
163
|
specification_version: 4
|
235
164
|
summary: Helper for cloning GitHub repos
|
236
|
-
test_files:
|
237
|
-
- spec/bin_spec.rb
|
238
|
-
- spec/examples/auth.yml
|
239
|
-
- spec/examples/config.yml
|
240
|
-
- spec/fixtures/cassettes/repos.yml
|
241
|
-
- spec/spaarti/repo_spec.rb
|
242
|
-
- spec/spaarti/site_spec.rb
|
243
|
-
- spec/spaarti_spec.rb
|
244
|
-
- spec/spec_helper.rb
|
165
|
+
test_files: []
|
data/.circle-ruby
DELETED
data/.prospectus
DELETED
data/.travis.yml
DELETED
@@ -1,10 +0,0 @@
|
|
1
|
-
dist: xenial
|
2
|
-
install:
|
3
|
-
- for i in $(cat .circle-ruby) ; do rvm install $i || exit 1 ; done
|
4
|
-
- for i in $(cat .circle-ruby) ; do rvm-exec $i bundle install || exit 1 ; done
|
5
|
-
script:
|
6
|
-
- for i in $(cat .circle-ruby) ; do rvm-exec $i bundle exec rake || exit 1 ; done
|
7
|
-
notifications:
|
8
|
-
email: false
|
9
|
-
slack:
|
10
|
-
secure: F9goVE9+dDE3FpGNgzV4419xmNk/TtrExS2vPYBZsQ1BfCz+frL4TWR+BzLp9iOKk3quMAzxw8sLVXxeUV4GjEoy00UJ7gcOcPHyFyA5ku1LlMc+PMy+85rGORc/Ks00MxkWNGXhWKNCA7Cb5QpPYqNoSzgdatk9DdA2pz+X8RCRUoaTKgWpKQvqbgAXt/ErtS6fXLzCPjSVGSg2rEC0nt0I1+vVpe8ZbQ8Q/nbroHeBIKcL6mV+YFPQ/ED69teGF1ptgAkESRhQNEZEyukDHG2SzgxxBq5ez3lTvHOqqSAlHVDH4mEil+xeh7n8antmeBbwZPSw6vwJdbFMYh9v2Pds2VWnMidAowzUrftUBAgRBFVXtjP+BQiL07Y51QaK0cpZ/OkuwrdA/PxeeUJpTXyHxNiIcdYGrgN6GSaB7Va2oSSRe0s6gjegOqdbRcR15+n9E2OPKwSSApKYsYTW85y/l0Lo9X0ANsuftDlKaS2yBV1rpdOCU5h1pgyiluidIq+gh+av7FarD9EAoMF/UBzEXpD7WPF41cCJr7MdxoolzAajYpO/ssexhRTue2953Rkii2Eg5rhTl0lZCzF3q5rGZGb00mU2gf3JvJLuy808uGV2tOd0bbCsbXFBiVxyoKkE6EQ8R1zS94FjUvdFRgQL+nMcvbdS2d30DlTHxhk=
|