gitbulk 0.0.2.134741

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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 8a7bb2ee8c9dd947e3887a78ac5e3921d3899787cd1877cef5800746ebae0426
4
+ data.tar.gz: 572f89c47b6e4a135c20b9003ced7ed2be87bfded951c2ff15dcb120a5706044
5
+ SHA512:
6
+ metadata.gz: e57a8d23cb854dfbd065a266388a6db030a79b73c142638e3d3e28d4e1dfdf5d34ca739b1c58035d76d57f31f1d392375552b796fcfbc576759ab396d96309e9
7
+ data.tar.gz: 26acdcd253c305eb7a333092b1daba8977a0f17bb08d77ab495206e43226e07f2a9f272c5ff6ff6e6432fac15950ec9376534141d529d9c2ac045bebe0a42356
data/Gemfile ADDED
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ source 'https://rubygems.org'
4
+
5
+ # Specify your gem's dependencies in gitbulk.gemspec
6
+ gemspec
7
+
8
+
data/Gemfile.lock ADDED
@@ -0,0 +1,113 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ gitbulk (0.0.2.134741)
5
+ activesupport (~> 6.0)
6
+ colorize
7
+ fileutils
8
+ json
9
+ thor
10
+ uri
11
+ yaml
12
+
13
+ GEM
14
+ remote: https://rubygems.org/
15
+ specs:
16
+ activesupport (6.1.7.3)
17
+ concurrent-ruby (~> 1.0, >= 1.0.2)
18
+ i18n (>= 1.6, < 2)
19
+ minitest (>= 5.1)
20
+ tzinfo (~> 2.0)
21
+ zeitwerk (~> 2.3)
22
+ addressable (2.8.1)
23
+ public_suffix (>= 2.0.2, < 6.0)
24
+ ansi (1.5.0)
25
+ ast (2.4.2)
26
+ colorize (0.8.1)
27
+ concurrent-ruby (1.2.2)
28
+ crack (0.4.5)
29
+ rexml
30
+ diff-lcs (1.5.0)
31
+ docile (1.4.0)
32
+ fileutils (1.7.1)
33
+ hashdiff (1.0.1)
34
+ i18n (1.12.0)
35
+ concurrent-ruby (~> 1.0)
36
+ json (2.6.3)
37
+ minitest (5.18.0)
38
+ parallel (1.22.1)
39
+ parser (3.2.1.1)
40
+ ast (~> 2.4.1)
41
+ public_suffix (5.0.1)
42
+ rainbow (3.1.1)
43
+ rake (13.0.6)
44
+ regexp_parser (2.7.0)
45
+ rexml (3.2.5)
46
+ rspec (3.12.0)
47
+ rspec-core (~> 3.12.0)
48
+ rspec-expectations (~> 3.12.0)
49
+ rspec-mocks (~> 3.12.0)
50
+ rspec-core (3.12.1)
51
+ rspec-support (~> 3.12.0)
52
+ rspec-expectations (3.12.2)
53
+ diff-lcs (>= 1.2.0, < 2.0)
54
+ rspec-support (~> 3.12.0)
55
+ rspec-mocks (3.12.4)
56
+ diff-lcs (>= 1.2.0, < 2.0)
57
+ rspec-support (~> 3.12.0)
58
+ rspec-support (3.12.0)
59
+ rspec_junit_formatter (0.6.0)
60
+ rspec-core (>= 2, < 4, != 2.12.0)
61
+ rubocop (1.48.1)
62
+ json (~> 2.3)
63
+ parallel (~> 1.10)
64
+ parser (>= 3.2.0.0)
65
+ rainbow (>= 2.2.2, < 4.0)
66
+ regexp_parser (>= 1.8, < 3.0)
67
+ rexml (>= 3.2.5, < 4.0)
68
+ rubocop-ast (>= 1.26.0, < 2.0)
69
+ ruby-progressbar (~> 1.7)
70
+ unicode-display_width (>= 2.4.0, < 3.0)
71
+ rubocop-ast (1.28.0)
72
+ parser (>= 3.2.1.0)
73
+ ruby-progressbar (1.13.0)
74
+ simplecov (0.22.0)
75
+ docile (~> 1.1)
76
+ simplecov-html (~> 0.11)
77
+ simplecov_json_formatter (~> 0.1)
78
+ simplecov-console (0.9.1)
79
+ ansi
80
+ simplecov
81
+ terminal-table
82
+ simplecov-html (0.12.3)
83
+ simplecov_json_formatter (0.1.4)
84
+ terminal-table (3.0.2)
85
+ unicode-display_width (>= 1.1.1, < 3)
86
+ thor (1.2.1)
87
+ tzinfo (2.0.6)
88
+ concurrent-ruby (~> 1.0)
89
+ unicode-display_width (2.4.2)
90
+ uri (0.12.1)
91
+ webmock (3.18.1)
92
+ addressable (>= 2.8.0)
93
+ crack (>= 0.3.2)
94
+ hashdiff (>= 0.4.0, < 2.0.0)
95
+ yaml (0.2.1)
96
+ zeitwerk (2.6.7)
97
+
98
+ PLATFORMS
99
+ x86_64-linux
100
+
101
+ DEPENDENCIES
102
+ bundler (~> 2.2, >= 2.2.1)
103
+ gitbulk!
104
+ rake
105
+ rspec
106
+ rspec_junit_formatter
107
+ rubocop
108
+ simplecov
109
+ simplecov-console
110
+ webmock
111
+
112
+ BUNDLED WITH
113
+ 2.2.33
data/LICENSE ADDED
@@ -0,0 +1,19 @@
1
+ Copyright (c) 2014-2022 Рнд Софт
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining a copy
4
+ of this software and associated documentation files (the "Software"), to deal
5
+ in the Software without restriction, including without limitation the rights
6
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7
+ copies of the Software, and to permit persons to whom the Software is
8
+ furnished to do so, subject to the following conditions:
9
+
10
+ The above copyright notice and this permission notice shall be included in all
11
+ copies or substantial portions of the Software.
12
+
13
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
19
+ SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,45 @@
1
+ # Gitbulk
2
+
3
+ Консольная утилита для зеркалирования git-репозиториев.
4
+
5
+ ## Usage
6
+
7
+ ```bash
8
+ $ gitbulk --help
9
+
10
+ Usage: gitbulk [options]
11
+ --config=./gitbulk.yml ENV[GITBULK_CONFIG] Path to configuration file
12
+ --dryrun ENV[GITBULK_DRYRUN] Dry Run
13
+ --debug ENV[LOG_LEVEL] Verbose logs. ENV values: debug, info, warn, error
14
+ ```
15
+
16
+ ### Configuration
17
+
18
+ ```yaml
19
+ workdir: repositories
20
+ repositories:
21
+ - git: git@br.rnds.pro:ruby/lusnoc.git
22
+ mirrors:
23
+ - git@gitflic.ru:rndsoft/lusnoc.git
24
+ - git@github.com:RND-SOFT/lusnoc.git
25
+ ```
26
+
27
+ ## Installation
28
+
29
+ ```ruby
30
+ gem 'gitbulk'
31
+ ```
32
+
33
+ And then execute:
34
+
35
+ ```bash
36
+ $ bundle install
37
+ ```
38
+
39
+ Or install it yourself as:
40
+
41
+ ```bash
42
+ $ gem install gitbulk
43
+ ```
44
+
45
+
data/bin/console ADDED
@@ -0,0 +1,16 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
4
+ require 'bundler/setup'
5
+ require 'retag'
6
+
7
+ # You can add fixtures and/or initialization code here to make experimenting
8
+ # with your gem easier. You can also use a different console, if you like.
9
+
10
+ # (If you use this, don't forget to add pry to your Gemfile!)
11
+ # require "pry"
12
+ # Pry.start
13
+
14
+ require 'irb'
15
+ IRB.start(__FILE__)
16
+
data/bin/gitbulk ADDED
@@ -0,0 +1,88 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ # cwd = __dir__
4
+ # $root = "#{cwd}/"
5
+ # $: << $root
6
+
7
+ # lib = File.expand_path('lib', __dir__)
8
+ # $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
9
+
10
+
11
+ # require 'rubygems'
12
+ # require 'bundler'
13
+ # require 'bundler/setup'
14
+ # Bundler.require(:default)
15
+
16
+ require 'optparse'
17
+ require 'yaml'
18
+ require 'fileutils'
19
+
20
+ require 'gitbulk'
21
+
22
+ UTIL = File.basename(__FILE__)
23
+
24
+ Gitbulk::Util.setup
25
+
26
+ @opts = {
27
+ dryrun: ENV.fetch('GITBULK_DRYRUN', 'false').to_bool,
28
+ config: ENV.fetch('GITBULK_CONFIG', './gitbulk.yml'),
29
+ log_level: ENV.fetch('LOG_LEVEL', ::Logger::INFO)
30
+ }
31
+
32
+ parser = OptionParser.new do |o|
33
+ o.banner = "Usage: #{UTIL} [options] "
34
+
35
+ o.on("--config=#{@opts[:config]}",
36
+ 'ENV[GITBULK_CONFIG]'.ljust(25) + 'Path to configuration file') do |path|
37
+ @opts[:config] = File.expand_path(path.strip)
38
+ end
39
+
40
+ o.on('--dryrun',
41
+ 'ENV[GITBULK_DRYRUN]'.ljust(25) + 'Dry Run') do
42
+ @opts[:dryrun] = true
43
+ end
44
+
45
+ o.on('--debug',
46
+ 'ENV[LOG_LEVEL]'.ljust(25) + 'Verbose logs. ENV values: debug, info, warn, error') do
47
+ @opts[:log_level] = ::Logger::DEBUG
48
+ end
49
+ end
50
+ parser.parse!
51
+
52
+ Gitbulk::Util.logger.level = @opts[:log_level]
53
+
54
+ Gitbulk::Util.logger.debug do
55
+ "Config: #{JSON.pretty_generate(@opts)}"
56
+ end
57
+
58
+ config = YAML.load_file(@opts[:config])
59
+ logger = Gitbulk::Util.logger
60
+
61
+ FileUtils.mkdir_p(File.expand_path(config['workdir']))
62
+
63
+ Dir.chdir(config['workdir']) do |_dir|
64
+ config['repositories'].shuffle.each do |repo|
65
+ git = repo['git']
66
+
67
+ logger.info "Mirroring: #{git.inspect}".colorize(:green)
68
+
69
+
70
+ Gitbulk::Util.within_repo(git, logger: logger) do |_name|
71
+ repo['mirrors'].shuffle.each do |mirror|
72
+ logger.info "Pushing to #{mirror}".colorize(:blue)
73
+
74
+ #cmd = "git push --mirror #{mirror}"
75
+ cmd = "git push --all #{mirror}"
76
+ if @opts[:dryrun]
77
+ logger.tagged("DRYRUN") { logger.info cmd }
78
+ else
79
+ Gitbulk::Util.cmd!(cmd)
80
+ end
81
+ end
82
+ end
83
+
84
+ rescue StandardError => e
85
+ logger.error "Exception: #{e.inspect}".colorize(:light_red)
86
+ end
87
+ end
88
+
data/bin/setup ADDED
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+ set -vx
5
+
6
+ bundle install
7
+
8
+ # Do any other automated setup that you need to do here
data/gitbulk.gemspec ADDED
@@ -0,0 +1,41 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'lib/gitbulk/version'
4
+
5
+ Gem::Specification.new 'gitbulk' do |spec|
6
+ spec.version = ENV['BUILDVERSION'].to_i > 0 ? "#{Gitbulk::VERSION}.#{ENV['BUILDVERSION'].to_i}" : Gitbulk::VERSION
7
+ spec.authors = ['Samoilenko Yuri']
8
+ spec.email = ['kinnalru@gmail.com']
9
+ spec.description = spec.summary = 'Gitbulk is cli for mirroring many git repositories at once'
10
+ spec.homepage = 'https://github.com/RnD-Soft/gitbulk'
11
+ spec.license = 'MIT'
12
+
13
+ spec.required_ruby_version = '>= 2.5.0'
14
+ spec.metadata['homepage_uri'] = spec.homepage
15
+ spec.metadata['source_code_uri'] = 'https://github.com/RnD-Soft/gitbulk'
16
+
17
+ spec.files = Dir['bin/**/*', 'lib/**/*', 'sig/**/*', 'Gemfile*', 'LICENSE', 'README.md', '*.gemspec']
18
+
19
+ spec.bindir = 'bin'
20
+ spec.executables = spec.files.grep(%r{^bin/gitbulk}) {|f| File.basename(f) }
21
+ spec.require_paths = ['lib']
22
+
23
+ spec.add_development_dependency 'bundler', '~> 2.2', '>= 2.2.1'
24
+ spec.add_development_dependency 'rake'
25
+ spec.add_development_dependency 'rspec'
26
+ spec.add_development_dependency 'rspec_junit_formatter'
27
+ spec.add_development_dependency 'rubocop'
28
+ spec.add_development_dependency 'simplecov'
29
+ spec.add_development_dependency 'simplecov-console'
30
+ spec.add_development_dependency 'webmock'
31
+
32
+ spec.add_runtime_dependency 'activesupport', '~> 6.0'
33
+ spec.add_runtime_dependency 'colorize'
34
+ spec.add_runtime_dependency 'json'
35
+ spec.add_runtime_dependency 'thor'
36
+ spec.add_runtime_dependency 'uri'
37
+ spec.add_runtime_dependency 'yaml'
38
+ spec.add_runtime_dependency 'fileutils'
39
+
40
+ end
41
+
@@ -0,0 +1,98 @@
1
+ require 'logger'
2
+ require 'colorize'
3
+ require 'open3'
4
+ require 'active_support/all'
5
+
6
+ module Gitbulk
7
+ class Util
8
+
9
+ class << self
10
+
11
+ def logger
12
+ $logger ||= ActiveSupport::TaggedLogging.new(Logger.new(STDOUT)).tap do |logger|
13
+ logger.level = ENV.fetch('LOG_LEVEL', Logger::INFO)
14
+ formatter = Logger::Formatter.new
15
+ formatter.extend ActiveSupport::TaggedLogging::Formatter
16
+ logger.formatter = formatter
17
+ end
18
+ end
19
+
20
+ def setup
21
+ STDOUT.sync = true
22
+ STDERR.sync = true
23
+
24
+ String.class_eval do
25
+ def to_bool
26
+ return true if self == true || self =~ (/(true|t|yes|y|1)$/i)
27
+ return false if self == false || self.blank? || self =~ (/(false|f|no|n|0)$/i)
28
+
29
+ raise ArgumentError.new("invalid value for Boolean: \"#{self}\"")
30
+ end
31
+ end
32
+ end
33
+
34
+ def within_repo(git, logger: $logger)
35
+ _host, name = git.split(':')
36
+
37
+ logger.tagged(name) do
38
+ if File.exist?(name)
39
+ Dir.chdir(name) do |_dir|
40
+ cmd!('git fetch --prune', logger: logger)
41
+ yield(name)
42
+ end
43
+ else
44
+ cmd!("git clone --mirror #{git} #{name}", logger: logger)
45
+ Dir.chdir(name) do |_dir|
46
+ yield(name)
47
+ end
48
+ end
49
+ end
50
+ end
51
+
52
+ def cmd!(cmd, capture: false, logger: $logger)
53
+ $cmdnum ||= 0
54
+ $cmdnum += 1
55
+ tag = $cmdnum.to_s.rjust(3, '0')
56
+ output = ''
57
+
58
+ logger.tagged("CMD#{tag}".colorize(:light_black)) do
59
+ logger.debug cmd.colorize(:light_black)
60
+ end
61
+
62
+ code = Open3.popen3(cmd) do |stdin, stdout, stderr, thr|
63
+ stdin.close_write
64
+ files = [stdout, stderr]
65
+
66
+ until files.empty?
67
+ ready = IO.select(files)
68
+ readable = ready[0]
69
+
70
+ readable.each do |f|
71
+ begin
72
+ line = f.readline
73
+ if f == stderr
74
+ logger.tagged("ERR#{tag}") { logger.error(line.strip) }
75
+ else
76
+ output += line
77
+ logger.tagged("OUT#{tag}") { logger.info(line.strip) } unless capture
78
+ end
79
+ rescue EOFError => e
80
+ files.delete f
81
+ end
82
+ end
83
+ end
84
+
85
+ thr.value
86
+ end
87
+
88
+ raise "Execution failed #{code}: #{cmd}" unless code.success?
89
+
90
+ output
91
+ end
92
+
93
+
94
+ end
95
+
96
+ end
97
+ end
98
+
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Gitbulk
4
+
5
+ VERSION = '0.0.2'
6
+
7
+ end
8
+
data/lib/gitbulk.rb ADDED
@@ -0,0 +1,10 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'active_support'
4
+ require_relative 'gitbulk/version'
5
+ require_relative 'gitbulk/utils'
6
+
7
+ module Gitbulk
8
+ class Error < StandardError; end
9
+ end
10
+
metadata ADDED
@@ -0,0 +1,273 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: gitbulk
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.2.134741
5
+ platform: ruby
6
+ authors:
7
+ - Samoilenko Yuri
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2023-04-04 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '2.2'
20
+ - - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: 2.2.1
23
+ type: :development
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - "~>"
28
+ - !ruby/object:Gem::Version
29
+ version: '2.2'
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: 2.2.1
33
+ - !ruby/object:Gem::Dependency
34
+ name: rake
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - ">="
38
+ - !ruby/object:Gem::Version
39
+ version: '0'
40
+ type: :development
41
+ prerelease: false
42
+ version_requirements: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - ">="
45
+ - !ruby/object:Gem::Version
46
+ version: '0'
47
+ - !ruby/object:Gem::Dependency
48
+ name: rspec
49
+ requirement: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - ">="
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ type: :development
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - ">="
59
+ - !ruby/object:Gem::Version
60
+ version: '0'
61
+ - !ruby/object:Gem::Dependency
62
+ name: rspec_junit_formatter
63
+ requirement: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - ">="
66
+ - !ruby/object:Gem::Version
67
+ version: '0'
68
+ type: :development
69
+ prerelease: false
70
+ version_requirements: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - ">="
73
+ - !ruby/object:Gem::Version
74
+ version: '0'
75
+ - !ruby/object:Gem::Dependency
76
+ name: rubocop
77
+ requirement: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - ">="
80
+ - !ruby/object:Gem::Version
81
+ version: '0'
82
+ type: :development
83
+ prerelease: false
84
+ version_requirements: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - ">="
87
+ - !ruby/object:Gem::Version
88
+ version: '0'
89
+ - !ruby/object:Gem::Dependency
90
+ name: simplecov
91
+ requirement: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - ">="
94
+ - !ruby/object:Gem::Version
95
+ version: '0'
96
+ type: :development
97
+ prerelease: false
98
+ version_requirements: !ruby/object:Gem::Requirement
99
+ requirements:
100
+ - - ">="
101
+ - !ruby/object:Gem::Version
102
+ version: '0'
103
+ - !ruby/object:Gem::Dependency
104
+ name: simplecov-console
105
+ requirement: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - ">="
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
110
+ type: :development
111
+ prerelease: false
112
+ version_requirements: !ruby/object:Gem::Requirement
113
+ requirements:
114
+ - - ">="
115
+ - !ruby/object:Gem::Version
116
+ version: '0'
117
+ - !ruby/object:Gem::Dependency
118
+ name: webmock
119
+ requirement: !ruby/object:Gem::Requirement
120
+ requirements:
121
+ - - ">="
122
+ - !ruby/object:Gem::Version
123
+ version: '0'
124
+ type: :development
125
+ prerelease: false
126
+ version_requirements: !ruby/object:Gem::Requirement
127
+ requirements:
128
+ - - ">="
129
+ - !ruby/object:Gem::Version
130
+ version: '0'
131
+ - !ruby/object:Gem::Dependency
132
+ name: activesupport
133
+ requirement: !ruby/object:Gem::Requirement
134
+ requirements:
135
+ - - "~>"
136
+ - !ruby/object:Gem::Version
137
+ version: '6.0'
138
+ type: :runtime
139
+ prerelease: false
140
+ version_requirements: !ruby/object:Gem::Requirement
141
+ requirements:
142
+ - - "~>"
143
+ - !ruby/object:Gem::Version
144
+ version: '6.0'
145
+ - !ruby/object:Gem::Dependency
146
+ name: colorize
147
+ requirement: !ruby/object:Gem::Requirement
148
+ requirements:
149
+ - - ">="
150
+ - !ruby/object:Gem::Version
151
+ version: '0'
152
+ type: :runtime
153
+ prerelease: false
154
+ version_requirements: !ruby/object:Gem::Requirement
155
+ requirements:
156
+ - - ">="
157
+ - !ruby/object:Gem::Version
158
+ version: '0'
159
+ - !ruby/object:Gem::Dependency
160
+ name: json
161
+ requirement: !ruby/object:Gem::Requirement
162
+ requirements:
163
+ - - ">="
164
+ - !ruby/object:Gem::Version
165
+ version: '0'
166
+ type: :runtime
167
+ prerelease: false
168
+ version_requirements: !ruby/object:Gem::Requirement
169
+ requirements:
170
+ - - ">="
171
+ - !ruby/object:Gem::Version
172
+ version: '0'
173
+ - !ruby/object:Gem::Dependency
174
+ name: thor
175
+ requirement: !ruby/object:Gem::Requirement
176
+ requirements:
177
+ - - ">="
178
+ - !ruby/object:Gem::Version
179
+ version: '0'
180
+ type: :runtime
181
+ prerelease: false
182
+ version_requirements: !ruby/object:Gem::Requirement
183
+ requirements:
184
+ - - ">="
185
+ - !ruby/object:Gem::Version
186
+ version: '0'
187
+ - !ruby/object:Gem::Dependency
188
+ name: uri
189
+ requirement: !ruby/object:Gem::Requirement
190
+ requirements:
191
+ - - ">="
192
+ - !ruby/object:Gem::Version
193
+ version: '0'
194
+ type: :runtime
195
+ prerelease: false
196
+ version_requirements: !ruby/object:Gem::Requirement
197
+ requirements:
198
+ - - ">="
199
+ - !ruby/object:Gem::Version
200
+ version: '0'
201
+ - !ruby/object:Gem::Dependency
202
+ name: yaml
203
+ requirement: !ruby/object:Gem::Requirement
204
+ requirements:
205
+ - - ">="
206
+ - !ruby/object:Gem::Version
207
+ version: '0'
208
+ type: :runtime
209
+ prerelease: false
210
+ version_requirements: !ruby/object:Gem::Requirement
211
+ requirements:
212
+ - - ">="
213
+ - !ruby/object:Gem::Version
214
+ version: '0'
215
+ - !ruby/object:Gem::Dependency
216
+ name: fileutils
217
+ requirement: !ruby/object:Gem::Requirement
218
+ requirements:
219
+ - - ">="
220
+ - !ruby/object:Gem::Version
221
+ version: '0'
222
+ type: :runtime
223
+ prerelease: false
224
+ version_requirements: !ruby/object:Gem::Requirement
225
+ requirements:
226
+ - - ">="
227
+ - !ruby/object:Gem::Version
228
+ version: '0'
229
+ description: Gitbulk is cli for mirroring many git repositories at once
230
+ email:
231
+ - kinnalru@gmail.com
232
+ executables:
233
+ - gitbulk
234
+ extensions: []
235
+ extra_rdoc_files: []
236
+ files:
237
+ - Gemfile
238
+ - Gemfile.lock
239
+ - LICENSE
240
+ - README.md
241
+ - bin/console
242
+ - bin/gitbulk
243
+ - bin/setup
244
+ - gitbulk.gemspec
245
+ - lib/gitbulk.rb
246
+ - lib/gitbulk/utils.rb
247
+ - lib/gitbulk/version.rb
248
+ homepage: https://github.com/RnD-Soft/gitbulk
249
+ licenses:
250
+ - MIT
251
+ metadata:
252
+ homepage_uri: https://github.com/RnD-Soft/gitbulk
253
+ source_code_uri: https://github.com/RnD-Soft/gitbulk
254
+ post_install_message:
255
+ rdoc_options: []
256
+ require_paths:
257
+ - lib
258
+ required_ruby_version: !ruby/object:Gem::Requirement
259
+ requirements:
260
+ - - ">="
261
+ - !ruby/object:Gem::Version
262
+ version: 2.5.0
263
+ required_rubygems_version: !ruby/object:Gem::Requirement
264
+ requirements:
265
+ - - ">="
266
+ - !ruby/object:Gem::Version
267
+ version: '0'
268
+ requirements: []
269
+ rubygems_version: 3.4.10
270
+ signing_key:
271
+ specification_version: 4
272
+ summary: Gitbulk is cli for mirroring many git repositories at once
273
+ test_files: []