monos 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 576b842ecee3e88c176654fdf0851b26c85b6e46
4
+ data.tar.gz: a6d79f70f3deb662cbb60e2d38a558a44a7e9716
5
+ SHA512:
6
+ metadata.gz: 0bb43687058126a85c6fdbf3e8755c9c28f186686b2132a7a029522af5e65d3d671351cd1ea593fde3f2fe10df86f19893f01a6510d88eb5ecf2ccb531e9bf3b
7
+ data.tar.gz: 0dc9a08488c235d9df1d269b12a34243df3a7dec2ec6385b22268c692080824b03ea1c32dc9b44b0bd5caa68b63e3f07526cdbb35291127c2c9eb7ec1ee51be2
@@ -0,0 +1,3 @@
1
+ ### 0.0.1 / 2020-08-30
2
+
3
+ * Everything is new. First release.
@@ -0,0 +1,18 @@
1
+ CHANGELOG.md
2
+ Manifest.txt
3
+ README.md
4
+ Rakefile
5
+ bin/mo
6
+ bin/moget
7
+ bin/mono
8
+ lib/mono.rb
9
+ lib/mono/base.rb
10
+ lib/mono/git/base.rb
11
+ lib/mono/git/status.rb
12
+ lib/mono/git/sync.rb
13
+ lib/mono/git/tool.rb
14
+ lib/mono/sportdb.rb
15
+ lib/mono/version.rb
16
+ lib/monos.rb
17
+ test/helper.rb
18
+ test/test_base.rb
@@ -0,0 +1,26 @@
1
+ # monos - tools and (startup) scripts for mono source trees / monorepos
2
+
3
+
4
+ * home :: [github.com/sportdb/sport.db](https://github.com/sportdb/sport.db)
5
+ * bugs :: [github.com/sportdb/sport.db/issues](https://github.com/sportdb/sport.db/issues)
6
+ * gem :: [rubygems.org/gems/monos](https://rubygems.org/gems/monos)
7
+ * rdoc :: [rubydoc.info/gems/monos](http://rubydoc.info/gems/monos)
8
+ * forum :: [opensport](http://groups.google.com/group/opensport)
9
+
10
+
11
+
12
+ ## Usage
13
+
14
+ To be done
15
+
16
+ ## License
17
+
18
+ The `monos` scripts are dedicated to the public domain.
19
+ Use it as you please with no restrictions whatsoever.
20
+
21
+
22
+ ## Questions? Comments?
23
+
24
+ Send them along to the
25
+ [Open Sports & Friends Forum/Mailing List](http://groups.google.com/group/opensport).
26
+ Thanks!
@@ -0,0 +1,27 @@
1
+ require 'hoe'
2
+ require './lib/mono/version.rb'
3
+
4
+ Hoe.spec 'monos' do
5
+
6
+ self.version = Mono::Module::VERSION
7
+
8
+ self.summary = "monos - tools and (startup) scripts for mono source trees / monorepos"
9
+ self.description = summary
10
+
11
+ self.urls = ['https://github.com/sportdb/sport.db']
12
+
13
+ self.author = 'Gerald Bauer'
14
+ self.email = 'opensport@googlegroups.com'
15
+
16
+ # switch extension to .markdown for gihub formatting
17
+ self.readme_file = 'README.md'
18
+ self.history_file = 'CHANGELOG.md'
19
+
20
+ self.licenses = ['Public Domain']
21
+
22
+ self.extra_deps = []
23
+
24
+ self.spec_extras = {
25
+ required_ruby_version: '>= 2.2.2'
26
+ }
27
+ end
data/bin/mo ADDED
@@ -0,0 +1,17 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ ###################
4
+ # DEV TIPS:
5
+ #
6
+ # For local testing run like:
7
+ #
8
+ # ruby -Ilib bin/mo
9
+ #
10
+ # Set the executable bit in Linux. Example:
11
+ #
12
+ # % chmod a+x bin/mo
13
+ #
14
+
15
+ require 'mono'
16
+
17
+ Mono::Tool.main
@@ -0,0 +1,17 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ ###################
4
+ # DEV TIPS:
5
+ #
6
+ # For local testing run like:
7
+ #
8
+ # ruby -Ilib bin/moget
9
+ #
10
+ # Set the executable bit in Linux. Example:
11
+ #
12
+ # % chmod a+x bin/moget
13
+ #
14
+
15
+ require 'mono'
16
+
17
+ Mono::Tool.main( ['sync'] )
@@ -0,0 +1,17 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ ###################
4
+ # DEV TIPS:
5
+ #
6
+ # For local testing run like:
7
+ #
8
+ # ruby -Ilib bin/mono
9
+ #
10
+ # Set the executable bit in Linux. Example:
11
+ #
12
+ # % chmod a+x bin/mono
13
+ #
14
+
15
+ require 'mono'
16
+
17
+ Mono::Tool.main
@@ -0,0 +1,20 @@
1
+ require 'pp'
2
+ require 'time'
3
+ require 'date'
4
+ require 'yaml'
5
+ require 'open3'
6
+ require 'fileutils'
7
+ require 'optparse'
8
+
9
+
10
+ ###
11
+ # our own code
12
+ require 'mono/version' # let version always go first
13
+ require 'mono/base'
14
+ require 'mono/git/base'
15
+ require 'mono/git/sync'
16
+ require 'mono/git/status'
17
+ require 'mono/git/tool'
18
+
19
+
20
+ puts Mono::Module.banner # say hello
@@ -0,0 +1,15 @@
1
+
2
+ module Mono
3
+
4
+ def self.root ## root of single (monorepo) source tree
5
+ @@root ||= begin
6
+ ## todo/fix:
7
+ ## check if windows - otherwise use /sites
8
+ ## check if root directory exists?
9
+ 'C:/Sites'
10
+ end
11
+ end
12
+
13
+ end ## module Mono
14
+
15
+
@@ -0,0 +1,174 @@
1
+
2
+ class GitError < StandardError
3
+ end
4
+
5
+ class Git ## make Git a module - why? why not?
6
+
7
+ ###
8
+ ## todo/fix: change opts=nil to *args or such - why? why not?
9
+
10
+
11
+ ###############
12
+ ## "setup" starter git commands
13
+
14
+ def self.clone( repo, name=nil )
15
+ cmd = "git clone #{repo}"
16
+ cmd << " #{name}" unless name.nil? || name.empty?
17
+ Shell.run( cmd )
18
+ end
19
+
20
+ def self.mirror( repo )
21
+ cmd = "git clone --mirror #{repo}"
22
+ Shell.run( cmd )
23
+ end
24
+
25
+
26
+ #################
27
+ ## standard git commands
28
+
29
+ def self.version
30
+ cmd = 'git --version'
31
+ Shell.run( cmd )
32
+ end
33
+
34
+ def self.status( short: false )
35
+ cmd = 'git status'
36
+ cmd << " --short" if short
37
+ Shell.run( cmd )
38
+ end
39
+
40
+ def self.changes ## same as git status --short - keep shortcut / alias - why? why not?
41
+ ## returns changed files - one per line or empty if no changes
42
+ cmd = 'git status --short'
43
+ Shell.run( cmd )
44
+ end
45
+
46
+ #####################
47
+ ## status helpers
48
+
49
+ ## git status --short returns empty stdout/list
50
+ def self.clean?() changes.empty?; end
51
+
52
+ def self.changes?() clean? == false; end ## reverse of clean?
53
+ class << self
54
+ alias_method :dirty?, :changes? ## add alias
55
+ end
56
+
57
+
58
+ #######
59
+ ## more (major) git commands
60
+
61
+ def self.pull
62
+ cmd = 'git pull'
63
+ Shell.run( cmd )
64
+ end
65
+
66
+ def self.fast_forward
67
+ cmd = 'git pull --ff-only'
68
+ Shell.run( cmd )
69
+ end
70
+ class << self
71
+ alias_method :ff, :fast_forward ## add alias
72
+ end
73
+
74
+
75
+ def self.push
76
+ cmd = 'git push'
77
+ Shell.run( cmd )
78
+ end
79
+
80
+ def self.add( pathspec=nil ) ## e.g. git add . or git add *.rb or such
81
+ cmd = 'git add'
82
+ cmd << " #{pathspec}" unless pathspec.nil? || pathspec.empty?
83
+ Shell.run( cmd )
84
+ end
85
+
86
+ def self.add_all
87
+ cmd = 'git add --all'
88
+ Shell.run( cmd )
89
+ end
90
+
91
+ def self.commit( message: )
92
+ cmd = 'git commit'
93
+ cmd << %Q{ -m "#{message}"} unless message.nil? || message.empty?
94
+ Shell.run( cmd )
95
+ end
96
+
97
+
98
+ ###
99
+ # use nested class for "base" for running commands - why? why not?
100
+ class Shell
101
+ def self.run( cmd )
102
+ print "cmd exec >#{cmd}<..."
103
+ stdout, stderr, status = Open3.capture3( cmd )
104
+
105
+ if status.success?
106
+ print " OK"
107
+ print "\n"
108
+ else
109
+ print " FAIL (#{status.exitstatus})"
110
+ print "\n"
111
+ end
112
+
113
+ unless stdout.empty?
114
+ puts stdout
115
+ end
116
+
117
+ unless stderr.empty?
118
+ ## todo/check: or use >2: or &2: or such
119
+ ## stderr output not always an error (that is, exit status might be 0)
120
+ puts "STDERR:"
121
+ puts stderr
122
+ end
123
+
124
+ if status.success?
125
+ stdout # return stdout string
126
+ else
127
+ puts "!! ERROR: cmd exec >#{cmd}< failed with exit status #{status.exitstatus}:"
128
+ puts stderr
129
+ raise GitError, "git cmd exec >#{cmd}< failed with exit status #{status.exitstatus}<: #{stderr}"
130
+ end
131
+ end
132
+ end # class Shell
133
+
134
+ end # class Git
135
+
136
+
137
+
138
+ class GitRepo
139
+ def self.open( path, &blk )
140
+ new( path ).open( &blk )
141
+ end
142
+
143
+ def initialize( path )
144
+ raise ArgumentError, "dir >#{path}< not found; dir MUST already exist for GitRepo class - sorry" unless Dir.exist?( path )
145
+ @path = path
146
+ end
147
+
148
+ def open( &blk )
149
+ ## puts "Dir.getwd: #{Dir.getwd}"
150
+ Dir.chdir( @path ) do
151
+ blk.call( self )
152
+ end
153
+ ## puts "Dir.getwd: #{Dir.getwd}"
154
+ end
155
+
156
+
157
+ def status( short: false ) Git.status( short: short ); end
158
+ def changes() Git.changes; end
159
+ def clean?() Git.clean?; end
160
+ def changes?() Git.changes?; end
161
+ alias_method :dirty?, :changes?
162
+
163
+ def pull() Git.pull; end
164
+ def fast_forward() Git.fast_forward; end
165
+ alias_method :ff, :fast_forward
166
+
167
+ def push() Git.push; end
168
+
169
+ def add( pathspec ) Git.add( pathspec ); end
170
+ def add_all() Git.add_all; end
171
+ def commit( message: ) Git.commit( message: message ); end
172
+
173
+
174
+ end # class GitRepo
@@ -0,0 +1,73 @@
1
+
2
+
3
+ module Mono
4
+
5
+ ## pass along hash of repos (e.g. monorepo.yml or repos.yml )
6
+ def self.status( h=Mono.monofile )
7
+ changes = [] ## track changes
8
+
9
+ count_orgs = 0
10
+ count_repos = 0
11
+
12
+ ## sum up total number of repos
13
+ total_repos = h.reduce(0) {|sum,(_,names)| sum+= names.size; sum }
14
+
15
+
16
+ h.each do |org_with_counter,names|
17
+
18
+ ## remove optional number from key e.g.
19
+ ## mrhydescripts (3) => mrhydescripts
20
+ ## footballjs (4) => footballjs
21
+ ## etc.
22
+ org = org_with_counter.sub( /\([0-9]+\)/, '' ).strip
23
+
24
+ org_path = "#{Mono.root}/#{org}"
25
+
26
+ names.each do |name|
27
+ puts "[#{count_repos+1}/#{total_repos}] #{org}@#{name}..."
28
+
29
+ repo = GitHubRepo.new( org, name ) ## owner, name e.g. rubylibs/webservice
30
+
31
+ Dir.chdir( org_path ) do
32
+ if Dir.exist?( repo.name )
33
+ GitRepo.open( repo.name ) do |git|
34
+ output = git.changes
35
+ if output.empty?
36
+ puts " - no changes -"
37
+ else
38
+ changes << ["#{org}@#{name}", :CHANGES, output]
39
+ end
40
+ end
41
+ else
42
+ puts "!! repo not found / missing"
43
+ changes << ["#{org}@#{name}", :NOT_FOUND]
44
+ end
45
+ end
46
+
47
+ count_repos += 1
48
+ end
49
+ count_orgs += 1
50
+ end
51
+
52
+
53
+ ## print stats & changes summary
54
+ puts
55
+ print "#{changes.size} change(s) in "
56
+ print "#{count_repos} repo(s) @ #{count_orgs} org(s)"
57
+ print "\n"
58
+
59
+ changes.each do |item|
60
+ puts
61
+ print "== #{item[0]} - #{item[1]}"
62
+ case item[1]
63
+ when :CHANGES
64
+ print ":\n"
65
+ print item[2]
66
+ when :NOT_FOUND
67
+ print "\n"
68
+ end
69
+ end
70
+
71
+ end # method status
72
+
73
+ end # module Mono
@@ -0,0 +1,98 @@
1
+
2
+
3
+ class GitHubRepo ## todo: change to GitHubRepoRef or such - why? why not?
4
+ attr_reader :owner, :name
5
+
6
+ def initialize( owner, name )
7
+ @owner = owner ## use/rename to login or something - why? why not??
8
+ @name = name # e.g. "rubylibs/webservice"
9
+ end
10
+
11
+ def ssh_clone_url
12
+ ## check: use https: as default? for github - http:// still supported? or redirected?
13
+ ## "http://github.com/#{@owner}/#{@name}"
14
+ "git@github.com:#{@owner}/#{@name}.git"
15
+ end
16
+ end ## class GitHubRepo
17
+
18
+
19
+
20
+ module Mono
21
+
22
+ def self.monofile
23
+ path = if File.exist?( './monorepo.yml' )
24
+ './monorepo.yml'
25
+ elsif File.exist?( './monotree.yml' )
26
+ './monotree.yml'
27
+ elsif File.exist?( './repos.yml' )
28
+ './repos.yml'
29
+ else
30
+ puts "!! WARN: no mo|moget|mono configuration file (that is, monorepo|monotree|repos.yml) found in >#{Dir.getwd}<"
31
+ nil
32
+ end
33
+
34
+ if path
35
+ YAML.load_file( path )
36
+ else
37
+ {}
38
+ end
39
+ end
40
+
41
+
42
+ ## pass along hash of repos (e.g. monorepo.yml or repos.yml )
43
+ def self.sync( h=Mono.monofile )
44
+ count_orgs = 0
45
+ count_repos = 0
46
+
47
+ ## sum up total number of repos
48
+ total_repos = h.reduce(0) {|sum,(_,names)| sum+= names.size; sum }
49
+
50
+ h.each do |org_with_counter,names|
51
+
52
+ ## remove optional number from key e.g.
53
+ ## mrhydescripts (3) => mrhydescripts
54
+ ## footballjs (4) => footballjs
55
+ ## etc.
56
+ org = org_with_counter.sub( /\([0-9]+\)/, '' ).strip
57
+
58
+ org_path = "#{Mono.root}/#{org}"
59
+ FileUtils.mkdir_p( org_path ) unless Dir.exist?( org_path ) ## make sure path exists
60
+
61
+ names.each do |name|
62
+ puts "[#{count_repos+1}/#{total_repos}] #{org}@#{name}..."
63
+
64
+ repo = GitHubRepo.new( org, name ) ## owner, name e.g. rubylibs/webservice
65
+
66
+ Dir.chdir( org_path ) do
67
+ if Dir.exist?( repo.name )
68
+ GitRepo.open( repo.name ) do |git|
69
+ if git.changes?
70
+ puts "!! WARN - local changes in workdir; skipping fast forward (remote) sync / merge"
71
+ else
72
+ git.fast_forward ## note: use git pull --ff-only (fast forward only - do NOT merge)
73
+ end
74
+ end
75
+ else
76
+ Git.clone( repo.ssh_clone_url )
77
+ end
78
+ end
79
+
80
+ #
81
+ # todo/fix: add (back) error log !!!!!!!!!!!!
82
+ # rescue GitError => ex
83
+ # puts "!! ERROR: #{ex.message}"
84
+ #
85
+ # File.open( './errors.log', 'a' ) do |f|
86
+ # f.write "#{Time.now} -- repo #{org}/#{name} - #{ex.message}\n"
87
+ # end
88
+
89
+ count_repos += 1
90
+ end
91
+ count_orgs += 1
92
+ end
93
+
94
+ ## print stats
95
+ puts "#{count_repos} repo(s) @ #{count_orgs} org(s)"
96
+ end # method sync
97
+
98
+ end # module Mono
@@ -0,0 +1,33 @@
1
+ module Mono
2
+
3
+
4
+ class Tool
5
+ def self.main( args=ARGV )
6
+
7
+ ## note: for now assume first argument is command
8
+ ## add options later
9
+
10
+ cmd = if args.size == 0
11
+ 'status' ## make status "default" command
12
+ else
13
+ args.shift ## remove first (head) element
14
+ end
15
+
16
+ ## note: allow shortcut for commands
17
+ case cmd.downcase
18
+ when 'status', 'stati', 'stat', 's'
19
+ Mono.status
20
+ when 'sync', 'syn', 'sy', ## note: allow aliases such as install, get & up too
21
+ 'get', 'g',
22
+ 'install', 'insta', 'inst', 'ins', 'i',
23
+ 'up', 'u'
24
+ Mono.sync
25
+ else
26
+ puts "!! ERROR: unknown command >#{cmd}<"
27
+ exit 1
28
+ end
29
+
30
+ end # method self.main
31
+ end # class Tool
32
+
33
+ end # module Mono
@@ -0,0 +1,61 @@
1
+ ##########
2
+ # setup load path
3
+ # lets you use environments
4
+ # e.g. dev/development or production
5
+
6
+
7
+ ## todo/fix: move later app/gem-family/-specific configs
8
+ ## to its own gem e.g. mono-sportdb or such - why? why not?
9
+
10
+
11
+
12
+ require_relative '../mono'
13
+
14
+
15
+ ## convenience pre-configured/pre-built shortcut - lets you use
16
+ ## require 'mono/sportdb'
17
+ ## Mono.setup
18
+
19
+
20
+ module Mono
21
+ def self.setup ## setup load path
22
+ ### note: for now always assume dev/development
23
+ ### add ENV check later or pass in as args or such
24
+
25
+ puts "Mono.root: >#{root}<"
26
+
27
+ $LOAD_PATH.unshift( "#{root}/yorobot/sport.db.more/sportdb-exporters/lib" )
28
+ $LOAD_PATH.unshift( "#{root}/yorobot/sport.db.more/sportdb-writers/lib" )
29
+ $LOAD_PATH.unshift( "#{root}/yorobot/sport.db.more/sportdb-linters/lib" )
30
+
31
+ $LOAD_PATH.unshift( "#{root}/sportdb/sport.db/sports/lib" )
32
+
33
+ $LOAD_PATH.unshift( "#{root}/sportdb/sport.db/sportdb-importers/lib" )
34
+ ## todo - add readers, models, sync, etc.
35
+
36
+ $LOAD_PATH.unshift( "#{root}/sportdb/sport.db/sportdb-catalogs/lib" )
37
+ $LOAD_PATH.unshift( "#{root}/sportdb/sport.db/sportdb-formats/lib" )
38
+ $LOAD_PATH.unshift( "#{root}/sportdb/sport.db/sportdb-structs/lib" )
39
+ $LOAD_PATH.unshift( "#{root}/sportdb/sport.db/sportdb-langs/lib" )
40
+ $LOAD_PATH.unshift( "#{root}/sportdb/sport.db/score-formats/lib" )
41
+ $LOAD_PATH.unshift( "#{root}/sportdb/sport.db/date-formats/lib" )
42
+
43
+
44
+ pp $: # print load path
45
+ end
46
+ end # module Mono
47
+
48
+
49
+ ## todo/fix:
50
+ ## use
51
+ ## module Starter
52
+ ## module SportDb
53
+ ## def setup ...
54
+ ## end
55
+ ## end
56
+ ##
57
+ ## or such? and use Mono.extend - why? why not?
58
+ ## module Mono
59
+ ## extend Starter::SportDb
60
+ ## end
61
+
@@ -0,0 +1,25 @@
1
+ ## note: use a different module/namespace
2
+ ## for the gem version info e.g. Mono::Module vs Mono
3
+
4
+ module Mono
5
+ module Module
6
+
7
+ MAJOR = 0 ## todo: namespace inside version or something - why? why not??
8
+ MINOR = 1
9
+ PATCH = 0
10
+ VERSION = [MAJOR,MINOR,PATCH].join('.')
11
+
12
+ def self.version
13
+ VERSION
14
+ end
15
+
16
+ def self.banner
17
+ "monos/#{VERSION} on Ruby #{RUBY_VERSION} (#{RUBY_RELEASE_DATE}) [#{RUBY_PLATFORM}]"
18
+ end
19
+
20
+ def self.root
21
+ File.expand_path( File.dirname(File.dirname(__FILE__) ))
22
+ end
23
+
24
+ end # module Module
25
+ end # module Mono
@@ -0,0 +1,5 @@
1
+ # note: allow require 'monos' too
2
+ # (in addition to require 'mono')
3
+
4
+ require_relative './mono'
5
+
@@ -0,0 +1,7 @@
1
+ ## minitest setup
2
+ require 'minitest/autorun'
3
+
4
+
5
+ ## our own code
6
+ require 'mono'
7
+
@@ -0,0 +1,20 @@
1
+ ###
2
+ # to run use
3
+ # ruby -I ./lib -I ./test test/test_base.rb
4
+
5
+ require 'helper'
6
+
7
+ class TestBase < MiniTest::Test
8
+
9
+ def test_version
10
+ puts Mono::Module::VERSION
11
+ puts Mono::Module.banner
12
+ puts Mono::Module.root
13
+ end
14
+
15
+ def test_root
16
+ puts Mono.root
17
+ end
18
+
19
+ end # class TestBase
20
+
metadata ADDED
@@ -0,0 +1,97 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: monos
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Gerald Bauer
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2020-09-01 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rdoc
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '4.0'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '4.0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: hoe
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '3.16'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '3.16'
41
+ description: monos - tools and (startup) scripts for mono source trees / monorepos
42
+ email: opensport@googlegroups.com
43
+ executables:
44
+ - mo
45
+ - moget
46
+ - mono
47
+ extensions: []
48
+ extra_rdoc_files:
49
+ - CHANGELOG.md
50
+ - Manifest.txt
51
+ - README.md
52
+ files:
53
+ - CHANGELOG.md
54
+ - Manifest.txt
55
+ - README.md
56
+ - Rakefile
57
+ - bin/mo
58
+ - bin/moget
59
+ - bin/mono
60
+ - lib/mono.rb
61
+ - lib/mono/base.rb
62
+ - lib/mono/git/base.rb
63
+ - lib/mono/git/status.rb
64
+ - lib/mono/git/sync.rb
65
+ - lib/mono/git/tool.rb
66
+ - lib/mono/sportdb.rb
67
+ - lib/mono/version.rb
68
+ - lib/monos.rb
69
+ - test/helper.rb
70
+ - test/test_base.rb
71
+ homepage: https://github.com/sportdb/sport.db
72
+ licenses:
73
+ - Public Domain
74
+ metadata: {}
75
+ post_install_message:
76
+ rdoc_options:
77
+ - "--main"
78
+ - README.md
79
+ require_paths:
80
+ - lib
81
+ required_ruby_version: !ruby/object:Gem::Requirement
82
+ requirements:
83
+ - - ">="
84
+ - !ruby/object:Gem::Version
85
+ version: 2.2.2
86
+ required_rubygems_version: !ruby/object:Gem::Requirement
87
+ requirements:
88
+ - - ">="
89
+ - !ruby/object:Gem::Version
90
+ version: '0'
91
+ requirements: []
92
+ rubyforge_project:
93
+ rubygems_version: 2.5.2
94
+ signing_key:
95
+ specification_version: 4
96
+ summary: monos - tools and (startup) scripts for mono source trees / monorepos
97
+ test_files: []