spaarti 2.0.0 → 3.0.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: 11cb46ba9d4286d50abc75683e01d3433d060a0a5230e15af6504ad9f9c1abf8
4
- data.tar.gz: d7cf2513bbf67eb47206e6b9e5fe5e52064a86413eb06a22be4efd96c0178535
3
+ metadata.gz: '085c22477ef728b91f8f6a512fe8d0a684654d681a3b8e54cae9b5fff7b3b3dd'
4
+ data.tar.gz: 87fb4fbca2fbeda0716e2f131eb9564de2220679e9b15f470d7310f53dc43230
5
5
  SHA512:
6
- metadata.gz: fce4a9832661cd46b893214e4b4d3bf9356054faa26c73913a5c5c2cd2eb90babed048171c1e96065c1e3950f7514ab50606f20176a9635230f62b75ca61d3ee
7
- data.tar.gz: d47a0d30c6b405fda7b16928b5c2a99752d53742c70489742d6c86426d9447c9949bb46fb0a3c679491aca81128bbdbbf6db8e7c229c49954236a94882c43b65
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
@@ -1,3 +1,15 @@
1
+ # 3.0.0 / 2022-10-21
2
+
3
+ * [FEATURE] Uses formats instead of format, to support multiple paths based on repo name
4
+
5
+ # 2.0.2 / 2020-05-12
6
+
7
+ * [BUGFIX] Fix Octokit error
8
+
9
+ # 2.0.1 / 2020-05-12
10
+
11
+ * [ENHANCEMENT] Update deps
12
+
1
13
  # 2.0.0 / 2019-01-12
2
14
 
3
15
  * [FEATURE] Generate new GitHub API tokens with read:org, read:user, and repo scopes. This allows the token to enumerate and fetch repos from orgs the user is a member of. **This also grants read/write access to all repos, which increases the danger of the token**
data/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  The MIT License (MIT)
2
2
 
3
- Copyright (c) 2014 Les Aker
3
+ Copyright (c) 2022 Les Aker
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
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
- [![Build Status](https://img.shields.io/travis/com/akerl/spaarti.svg)](https://travis-ci.com/akerl/spaarti)
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[:format] % @data
11
+ @path = resolve_path(@options[:formats], @data) % @data
12
12
  end
13
13
 
14
14
  def sync!
@@ -26,12 +26,21 @@ 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
32
41
 
33
42
  def err(msg)
34
- STDERR.puts msg
43
+ warn msg
35
44
  end
36
45
 
37
46
  def run(cmd, error_msg)
data/lib/spaarti/site.rb CHANGED
@@ -12,7 +12,7 @@ module Spaarti
12
12
  auth_file: :default,
13
13
  config_file: File.expand_path('~/.spaarti.yml'),
14
14
  exclude: [],
15
- format: '%<full_name>s',
15
+ formats: [{ path: '%<full_name>s' }],
16
16
  git_config: {},
17
17
  quiet: false,
18
18
  purge: false,
@@ -58,22 +58,22 @@ module Spaarti
58
58
  end
59
59
 
60
60
  def client
61
- @client ||= Octokit::Client.new(
61
+ @client ||= Octokit::Client.new({
62
62
  access_token: auth.token,
63
63
  auto_paginate: true,
64
64
  default_media_type: 'application/vnd.github.moondragon+json',
65
65
  api_endpoint: @options[:api_endpoint]
66
- )
66
+ }.compact)
67
67
  end
68
68
 
69
69
  def auth
70
- @auth ||= Octoauth.new(
70
+ @auth ||= Octoauth.new({
71
71
  note: 'spaarti',
72
72
  scopes: %w[read:org read:user repo],
73
73
  file: @options[:auth_file],
74
74
  autosave: true,
75
75
  api_endpoint: @options[:api_endpoint]
76
- )
76
+ }.compact)
77
77
  end
78
78
 
79
79
  def repos
@@ -3,5 +3,5 @@
3
3
  ##
4
4
  # Set the version (needed for Mercenary -v)
5
5
  module Spaarti
6
- VERSION = '2.0.0'.freeze
6
+ VERSION = '3.0.0'
7
7
  end
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.date = Time.now.strftime('%Y-%m-%d')
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', '~> 1.5.5'
24
- s.add_dependency 'octokit', '~> 4.13.0'
22
+ s.add_dependency 'octoauth', '~> 2.0.0'
23
+ s.add_dependency 'octokit', '~> 5.6.1'
25
24
 
26
- s.add_development_dependency 'codecov', '~> 0.1.1'
27
- s.add_development_dependency 'fuubar', '~> 2.3.0'
28
- s.add_development_dependency 'goodcop', '~> 0.6.0'
29
- s.add_development_dependency 'rake', '~> 12.3.0'
30
- s.add_development_dependency 'rspec', '~> 3.8.0'
31
- s.add_development_dependency 'rubocop', '~> 0.62.0'
32
- s.add_development_dependency 'vcr', '~> 4.0.0'
33
- s.add_development_dependency 'webmock', '~> 3.5.1'
25
+ s.add_development_dependency 'goodcop', '~> 0.9.7'
26
+ s.add_development_dependency 'vcr', '~> 5.0.0'
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
@@ -1,4 +1 @@
1
1
  require 'spec_helper'
2
-
3
- describe Spaarti do
4
- end
@@ -1,4 +1 @@
1
1
  require 'spec_helper'
2
-
3
- describe Spaarti do
4
- end
@@ -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
@@ -1,20 +1,10 @@
1
- if ENV['CI'] == 'true'
2
- require 'simplecov'
3
- require 'codecov'
4
- SimpleCov.formatter = SimpleCov::Formatter::Codecov
5
- SimpleCov.start do
6
- add_filter '/spec/'
7
- end
8
- end
9
-
10
1
  require 'rspec'
11
2
  require 'spaarti'
12
- require 'webmock'
13
-
14
- WebMock.enable!
3
+ require 'webmock/rspec'
15
4
 
16
5
  require 'vcr'
17
6
  VCR.configure do |c|
7
+ c.configure_rspec_metadata!
18
8
  c.cassette_library_dir = 'spec/fixtures/cassettes'
19
9
  c.hook_into :webmock
20
10
  c.before_record do |i|
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: 2.0.0
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: 2019-01-12 00:00:00.000000000 Z
11
+ date: 2022-10-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: cymbal
@@ -44,140 +44,70 @@ dependencies:
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: 1.5.5
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: 1.5.5
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: 4.13.0
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: 4.13.0
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.3.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.3.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.6.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.6.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: 12.3.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: 12.3.0
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.8.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.8.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.62.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.62.0
82
+ version: 0.9.7
153
83
  - !ruby/object:Gem::Dependency
154
84
  name: vcr
155
85
  requirement: !ruby/object:Gem::Requirement
156
86
  requirements:
157
87
  - - "~>"
158
88
  - !ruby/object:Gem::Version
159
- version: 4.0.0
89
+ version: 5.0.0
160
90
  type: :development
161
91
  prerelease: false
162
92
  version_requirements: !ruby/object:Gem::Requirement
163
93
  requirements:
164
94
  - - "~>"
165
95
  - !ruby/object:Gem::Version
166
- version: 4.0.0
96
+ version: 5.0.0
167
97
  - !ruby/object:Gem::Dependency
168
98
  name: webmock
169
99
  requirement: !ruby/object:Gem::Requirement
170
100
  requirements:
171
101
  - - "~>"
172
102
  - !ruby/object:Gem::Version
173
- version: 3.5.1
103
+ version: 3.7.6
174
104
  type: :development
175
105
  prerelease: false
176
106
  version_requirements: !ruby/object:Gem::Requirement
177
107
  requirements:
178
108
  - - "~>"
179
109
  - !ruby/object:Gem::Version
180
- version: 3.5.1
110
+ version: 3.7.6
181
111
  description: Maintain local clones of repos you have access to on GitHub
182
112
  email: me@lesaker.org
183
113
  executables:
@@ -185,12 +115,10 @@ executables:
185
115
  extensions: []
186
116
  extra_rdoc_files: []
187
117
  files:
188
- - ".circle-ruby"
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: '0'
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.0.2
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
@@ -1,4 +0,0 @@
1
- 2.6.0
2
- 2.5.3
3
- 2.4.5
4
- 2.3.8
data/.prospectus DELETED
@@ -1,11 +0,0 @@
1
- my_slug = 'akerl/spaarti'
2
-
3
- Prospectus.extra_dep('file', 'prospectus_travis')
4
- Prospectus.extra_dep('file', 'prospectus_gems')
5
-
6
- item do
7
- noop
8
-
9
- extend ProspectusGems::Gemspec.new
10
- extend ProspectusTravis::Build.new(my_slug)
11
- end
data/.travis.yml DELETED
@@ -1,10 +0,0 @@
1
- dist: trusty
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=