monos 0.6.0 → 1.1.1

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
  SHA1:
3
- metadata.gz: a2b5768d1c5b1f9862099eb5d67e7c574561f256
4
- data.tar.gz: e257ffe48bab62974a02b76443e0d0c4aad563af
3
+ metadata.gz: ef0e3b6e34281f0de5814be5353282f3433ff7a2
4
+ data.tar.gz: 0adb54bd17a900418ebeb7c8cb72aff6db9c95cb
5
5
  SHA512:
6
- metadata.gz: 63f482ee7c5696cff694e57a22efc2a187a20a074e10c651bbd272acedb03104a8646464fe0386cea3bb71f0e532b7f039ebcec9301c185437ca23ac6bfffad0
7
- data.tar.gz: 4d6213f4928e6abcb3809101f7b7d299eeaf24c51edeee8424f497bdeed6b3e7406127472e3639eb6efb719d4d98f98663a93b59c77634130074b2053cfc66be
6
+ metadata.gz: 75be1cebf370650581e4600debea7b128a0f53a7661bff57fc22b6086d2b53306f09bcb4e1e481f2be003489c160440f3708fe329de4c6eede610968bf948aa0
7
+ data.tar.gz: 279c3310bb58d3272b596d5fd511fb40bc6749ea0f71087b0558f343ea46c5c4e6a7b8eca7cfe4b388cd2b8395a817432bc2fb322ac45beb48c3258ad7fa9ed8
@@ -18,3 +18,4 @@ lib/mono/version.rb
18
18
  lib/monos.rb
19
19
  test/helper.rb
20
20
  test/test_base.rb
21
+ test/test_path.rb
data/README.md CHANGED
@@ -1,8 +1,8 @@
1
1
  # monos - monorepo / mono source tree tools and (startup) scripts
2
2
 
3
3
 
4
- * home :: [github.com/rubycoco/git](https://github.com/rubycoco/git)
5
- * bugs :: [github.com/rubycoco/git/issues](https://github.com/rubycoco/git/issues)
4
+ * home :: [github.com/rubycoco/monos](https://github.com/rubycoco/monos)
5
+ * bugs :: [github.com/rubycoco/monos/issues](https://github.com/rubycoco/monos/issues)
6
6
  * gem :: [rubygems.org/gems/monos](https://rubygems.org/gems/monos)
7
7
  * rdoc :: [rubydoc.info/gems/monos](http://rubydoc.info/gems/monos)
8
8
  * forum :: [opensport](http://groups.google.com/group/opensport)
data/Rakefile CHANGED
@@ -3,12 +3,12 @@ require './lib/mono/version.rb'
3
3
 
4
4
  Hoe.spec 'monos' do
5
5
 
6
- self.version = MonoCore::VERSION
6
+ self.version = Mono::Module::Tool::VERSION
7
7
 
8
8
  self.summary = "monos - monorepo / mono source tree tools and (startup) scripts"
9
9
  self.description = summary
10
10
 
11
- self.urls = { home: 'https://github.com/rubycoco/git' }
11
+ self.urls = { home: 'https://github.com/rubycoco/monos' }
12
12
 
13
13
  self.author = 'Gerald Bauer'
14
14
  self.email = 'opensport@googlegroups.com'
@@ -20,8 +20,9 @@ Hoe.spec 'monos' do
20
20
  self.licenses = ['Public Domain']
21
21
 
22
22
  self.extra_deps = [
23
- ['gitti', '>= 0.6.1' ],
24
- ['gitti-backup', '>= 0.4.1' ],
23
+ ['monofile', '>= 0.2.2'],
24
+ ['gitti', '>= 0.6.1'],
25
+ ['gitti-backup', '>= 0.4.1'],
25
26
  ]
26
27
 
27
28
  self.spec_extras = {
@@ -1,3 +1,6 @@
1
+ require 'monofile'
2
+
3
+
1
4
  ## first add git support
2
5
  ## note: use the "modular" version WITHOUT auto-include gitti,
3
6
  ## thus, require 'gitti/base' (and NOT 'gitti')
@@ -8,11 +11,14 @@ require 'gitti/backup/base'
8
11
  module Mono
9
12
  ## note: make Git, GitProject, GitRepoSet, etc. available without Gitti::
10
13
  include Gitti
11
- end
12
14
 
15
+ class Tool
16
+ include Gitti
17
+ end
18
+
19
+ ## add more classes e.g. MonoGitProject, etc. - why? why not?
20
+ end
13
21
 
14
- ## some more stdlibs
15
- # require 'optparse'
16
22
 
17
23
 
18
24
 
@@ -31,4 +37,20 @@ require 'mono/commands/run'
31
37
  require 'mono/tool'
32
38
 
33
39
 
34
- puts MonoCore.banner # say hello
40
+
41
+ module Mono
42
+ def self.monofile
43
+ path = Monofile.find
44
+
45
+ if path
46
+ Monofile.read( path )
47
+ else
48
+ puts "!! WARN: no mono configuration file found; looking for #{Monofile::NAMES.join(', ')} in (#{Dir.getwd})"
49
+ Monofile.new ## return empty set -todo/check: return nil - why? why not?
50
+ end
51
+ end
52
+ end ## module Mono
53
+
54
+
55
+
56
+ puts Mono::Module::Tool.banner # say hello
@@ -1,73 +1,27 @@
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
- if ENV['MOPATH']
10
- ## use expand path to make (assure) absolute path - why? why not?
11
- ::File.expand_path( ENV['MOPATH'] )
12
- elsif ::Dir.exist?( 'C:/Sites' )
13
- 'C:/Sites'
14
- else
15
- '/sites'
16
- end
17
- end
18
- end
19
-
20
- def self.root=( path )
21
- ## use expand path to make (assure) absolute path - why? why not?
22
- @@root = ::File.expand_path( path )
23
- end
24
-
25
-
26
-
27
-
28
- def self.monofile
29
- path = if ::File.exist?( './monorepo.yml' )
30
- './monorepo.yml'
31
- elsif ::File.exist?( './monotree.yml' )
32
- './monotree.yml'
33
- elsif ::File.exist?( './repos.yml' )
34
- './repos.yml'
35
- else
36
- puts "!! WARN: no mono configuration file (that is, {monorepo,monotree,repos}.yml) found in >#{Dir.getwd}<"
37
- nil
38
- end
39
-
40
- if path
41
- GitRepoSet.read( path )
42
- else
43
- GitRepoSet.new( {} ) ## return empty set -todo/check: return nil - why? why not?
44
- end
45
- end
46
- end ## module Mono
47
-
48
-
49
-
50
-
51
1
  #####################
52
- # add file and repo helper
2
+ # add repo helper
53
3
 
54
- ##
55
- ## todo/fix: ALWAYS assert name format
56
- ## (rename to mononame and monopath) - why? why not?
57
4
 
58
5
  class MonoGitHub
59
- def self.clone( name )
60
- path = MonoFile.expand_path( name )
6
+ def self.clone( name, depth: nil )
7
+ ## lets you use:
8
+ ## @rubycoco/gitti or
9
+ ## gitti@rubycoco
10
+ ## => rubycoco/gitti
11
+
12
+ ## note: allow passing in (reusing) of mononames too
13
+ mononame = name.is_a?( Mononame ) ? name : Mononame.parse( name )
14
+ path = mononame.real_path
61
15
 
62
16
  org_path = File.dirname( path )
63
17
  FileUtils.mkdir_p( org_path ) unless Dir.exist?( org_path ) ## make sure path exists
64
18
 
65
19
  ### note: use a github clone url (using ssh) like:
66
20
  ## git@github.com:rubycoco/gitti.git
67
- ssh_clone_url = "git@github.com:#{name}.git"
21
+ ssh_clone_url = "git@github.com:#{mononame.to_path}.git"
68
22
 
69
23
  Dir.chdir( org_path ) do
70
- Gitti::Git.clone( ssh_clone_url )
24
+ Gitti::Git.clone( ssh_clone_url, depth: depth )
71
25
  end
72
26
  end
73
27
  end
@@ -77,61 +31,45 @@ MonoGithub = MonoGitHub ## add convenience (typo?) alias
77
31
 
78
32
  class MonoGitProject
79
33
  def self.open( name, &block )
80
- path = MonoFile.expand_path( name )
34
+ ## note: allow passing in (reusing) of mononames too
35
+ mononame = name.is_a?( Mononame ) ? name : Mononame.parse( name )
36
+ path = mononame.real_path
81
37
  Gitti::GitProject.open( path, &block )
82
38
  end
83
39
  end
84
40
 
85
41
 
86
- module Mono
87
- ## add some short cuts
88
- def self.open( name, &block ) MonoGitProject.open( name, &block ); end
89
- def self.clone( name ) MonoGitHub.clone( name ); end
90
- end
91
-
92
-
93
-
94
- class MonoFile
95
- ## e.g. openfootball/austria etc.
96
- ## expand to to "real" absolute path
97
- ##
98
- ## todo/check: assert name must be {orgname,username}/reponame
99
- def self.expand_path( path )
100
- "#{Mono.root}/#{path}"
101
- end
102
- def self.exist?( path )
103
- ::File.exist?( expand_path( path ))
104
- end
105
-
106
-
107
- ## add some aliases - why? why not?
108
- class << self
109
- alias_method :real_path, :expand_path
110
- alias_method :exists?, :exist? ## add deprecated exists? too - why? why not?
111
- end
112
-
113
42
 
114
43
 
115
- ## path always relative to Mono.root
116
- ## todo/fix: use File.expand_path( path, Mono.root ) - why? why not?
117
- ## or always enfore "absolut" path e.g. do NOT allow ../ or ./ or such
118
- def self.open( path, mode='r:utf-8', &block )
119
- full_path = "#{Mono.root}/#{path}"
120
- ## make sure path exists if we open for writing/appending - why? why not?
121
- if mode[0] == 'w' || mode[0] == 'a'
122
- ::FileUtils.mkdir_p( ::File.dirname( full_path ) ) ## make sure path exists
123
- end
124
-
125
- ::File.open( full_path, mode ) do |file|
126
- block.call( file )
44
+ module Mono
45
+ #################
46
+ ## add some short cuts
47
+ def self.open( name, &block ) MonoGitProject.open( name, &block ); end
48
+ def self.clone( name, depth: nil ) MonoGitHub.clone( name, depth: depth ); end
49
+
50
+ ######################################
51
+ ## add some more "porcelain" helpers
52
+ def self.sync( name )
53
+ ## add some options - why? why not?
54
+ ## - :readonly - auto-adds depth: 1 on clone or such - why? why not?
55
+ ## - :clone true/false - do NOT clone only fast forward or such - why? why not?
56
+ ## - :clean true/false or similar - only clone repos; no fast forward
57
+ ## others - ideas -- ??
58
+
59
+ ## note: allow passing in (reusing) of mononames too
60
+ mononame = name.is_a?( Mononame ) ? name : Mononame.parse( name )
61
+ if mononame.exist?
62
+ MonoGitProject.open( mononame ) do |proj|
63
+ if proj.changes?
64
+ puts "!! WARN - local changes in workdir; skipping fast forward (remote) sync / merge"
65
+ else
66
+ proj.fast_forward ## note: use git pull --ff-only (fast forward only - do NOT merge)
67
+ end
127
68
  end
128
- end
129
-
130
- def self.read_utf8( path )
131
- open( path, 'r:utf-8') { |file| file.read }
132
- end
133
- end ## class MonoFile
134
-
135
-
69
+ else
70
+ MonoGitHub.clone( mononame )
71
+ end
72
+ end # method self.sync
73
+ end ## module Mono
136
74
 
137
75
 
@@ -1,6 +1,7 @@
1
1
  module Mono
2
2
 
3
- ## pass along hash of repos (e.g. monorepo.yml or repos.yml )
3
+ ## pass along hash of repos (e.g. monorepo.yml or repos.yml )
4
+ class Tool
4
5
  def self.backup
5
6
  repos = Mono.monofile
6
7
 
@@ -11,5 +12,5 @@ module Mono
11
12
  ## 2) git remote update (if local backup already exists)
12
13
  backup.backup( repos )
13
14
  end # method backup
14
-
15
+ end # class Tool
15
16
  end # module Mono
@@ -1,8 +1,9 @@
1
1
  module Mono
2
2
 
3
+ class Tool
3
4
  def self.env ## check environment setup
4
5
  puts "Mono.root (MOPATH): >#{Mono.root}<"
5
- puts "MonoCore.root: >#{MonoCore.root}<"
6
+ puts "Mono::Module::Tool.root: >#{Mono::Module::Tool.root}<"
6
7
  puts
7
8
 
8
9
  ## add ruby version and path - why? why not? e.g.
@@ -19,8 +20,8 @@ module Mono
19
20
  Git.config( /user/, show_origin: true )
20
21
 
21
22
  puts
22
- puts "monorepo.yml:"
23
+ puts "monofile => (#{Monofile.find}):"
23
24
  pp Mono.monofile
24
25
  end
25
-
26
+ end # class Tool
26
27
  end # module Mono
@@ -1,5 +1,6 @@
1
1
  module Mono
2
2
  ## pass along hash of repos (e.g. monorepo.yml or repos.yml )
3
+ class Tool
3
4
  def self.fetch
4
5
  repos = Mono.monofile
5
6
 
@@ -18,8 +19,8 @@ module Mono
18
19
 
19
20
  repo = GitHubRepo.new( org, name ) ## owner, name e.g. rubylibs/webservice
20
21
 
21
- ::Dir.chdir( org_path ) do
22
- if ::Dir.exist?( repo.name )
22
+ Dir.chdir( org_path ) do
23
+ if Dir.exist?( repo.name )
23
24
  GitProject.open( repo.name ) do |proj|
24
25
  proj.fetch
25
26
  end
@@ -39,5 +40,5 @@ module Mono
39
40
  print "#{count_repos} repo(s) @ #{count_orgs} org(s)"
40
41
  print "\n"
41
42
  end # method fetch
42
-
43
+ end # class Tool
43
44
  end # module Mono
@@ -1,5 +1,6 @@
1
1
  module Mono
2
2
 
3
+ class Tool
3
4
  def self.run( *args )
4
5
  ## todo/fix: use a "standard" argument to pass along hash of repos
5
6
  ## (e.g. monorepo.yml or repos.yml ) how? - why? why not?
@@ -22,8 +23,8 @@ module Mono
22
23
 
23
24
  repo = GitHubRepo.new( org, name ) ## owner, name e.g. rubylibs/webservice
24
25
 
25
- ::Dir.chdir( org_path ) do
26
- if ::Dir.exist?( repo.name )
26
+ Dir.chdir( org_path ) do
27
+ if Dir.exist?( repo.name )
27
28
  GitProject.open( repo.name ) do |proj|
28
29
  proj.run( cmd )
29
30
  end
@@ -43,5 +44,5 @@ module Mono
43
44
  print "#{count_repos} repo(s) @ #{count_orgs} org(s)"
44
45
  print "\n"
45
46
  end # method run
46
-
47
+ end # class Tool
47
48
  end # module Mono
@@ -1,6 +1,7 @@
1
1
  module Mono
2
2
 
3
- ## pass along hash of repos (e.g. monorepo.yml or repos.yml )
3
+ ## pass along hash of repos (e.g. monorepo.yml or repos.yml )
4
+ class Tool
4
5
  def self.status
5
6
  repos = Mono.monofile
6
7
 
@@ -20,8 +21,8 @@ module Mono
20
21
 
21
22
  repo = GitHubRepo.new( org, name ) ## owner, name e.g. rubylibs/webservice
22
23
 
23
- ::Dir.chdir( org_path ) do
24
- if ::Dir.exist?( repo.name )
24
+ Dir.chdir( org_path ) do
25
+ if Dir.exist?( repo.name )
25
26
  GitProject.open( repo.name ) do |proj|
26
27
  output = proj.changes
27
28
  if output.empty?
@@ -61,5 +62,5 @@ module Mono
61
62
  end
62
63
 
63
64
  end # method status
64
-
65
+ end # class Tool
65
66
  end # module Mono
@@ -1,6 +1,7 @@
1
1
  module Mono
2
2
 
3
- ## pass along hash of repos (e.g. monorepo.yml or repos.yml )
3
+ ## pass along hash of repos (e.g. monorepo.yml or repos.yml )
4
+ class Tool
4
5
  def self.sync
5
6
  repos = Mono.monofile
6
7
 
@@ -11,15 +12,15 @@ module Mono
11
12
 
12
13
  repos.each do |org,names|
13
14
  org_path = "#{Mono.root}/#{org}"
14
- ::FileUtils.mkdir_p( org_path ) unless ::Dir.exist?( org_path ) ## make sure path exists
15
+ FileUtils.mkdir_p( org_path ) unless Dir.exist?( org_path ) ## make sure path exists
15
16
 
16
17
  names.each do |name|
17
18
  puts "[#{count_repos+1}/#{total_repos}] #{org}@#{name}..."
18
19
 
19
20
  repo = GitHubRepo.new( org, name ) ## owner, name e.g. rubylibs/webservice
20
21
 
21
- ::Dir.chdir( org_path ) do
22
- if ::Dir.exist?( repo.name )
22
+ Dir.chdir( org_path ) do
23
+ if Dir.exist?( repo.name )
23
24
  GitProject.open( repo.name ) do |proj|
24
25
  if proj.changes?
25
26
  puts "!! WARN - local changes in workdir; skipping fast forward (remote) sync / merge"
@@ -50,4 +51,5 @@ module Mono
50
51
  puts "#{count_repos} repo(s) @ #{count_orgs} org(s)"
51
52
  end # method sync
52
53
 
54
+ end # class Tool
53
55
  end # module Mono
@@ -25,15 +25,15 @@ private
25
25
 
26
26
  ## todo/check - use max_depth or max_level or such - why? why not?
27
27
  def self.walk_dir( path, repos=[], level=1, depth: nil )
28
- entries = ::Dir.entries(path)
28
+ entries = Dir.entries(path)
29
29
 
30
30
  ## filter dirs
31
31
  dirs = entries.select do |entry|
32
32
  if ['..', '.'].include?( entry ) ## first check for excludes
33
33
  false
34
34
  else
35
- full_path = ::File.join( path, entry )
36
- ::File.directory?( full_path )
35
+ full_path = File.join( path, entry )
36
+ File.directory?( full_path )
37
37
  end
38
38
  end
39
39
 
@@ -53,9 +53,9 @@ def self.walk_dir( path, repos=[], level=1, depth: nil )
53
53
  buf << ">#{path}< - level #{level}:\n"
54
54
  dirs.each do |entry|
55
55
  next if ['..', '.', '.git'].include?( entry )
56
- full_path = ::File.join( path, entry )
56
+ full_path = File.join( path, entry )
57
57
 
58
- if ::Dir.exist?( ::File.join( full_path, '.git' ))
58
+ if Dir.exist?( File.join( full_path, '.git' ))
59
59
  repos_count += 1
60
60
 
61
61
  if level == 1
@@ -69,15 +69,15 @@ def self.walk_dir( path, repos=[], level=1, depth: nil )
69
69
  end
70
70
 
71
71
  buf << " repo ##{'%-2d' % repos_count} | "
72
- buf << "#{'%-20s' % entry} @ #{::File.basename(path)} (#{path})"
72
+ buf << "#{'%-20s' % entry} @ #{File.basename(path)} (#{path})"
73
73
  buf << "\n"
74
74
  repos << full_path
75
75
 
76
76
  ## check for bare bone git repos - todo/fix: add .gitconfig or such and more - why? why not?
77
- elsif ::Dir.exist?( ::File.join( full_path, 'hooks' )) &&
78
- ::Dir.exist?( ::File.join( full_path, 'info' )) &&
79
- ::Dir.exist?( ::File.join( full_path, 'objects' )) &&
80
- ::Dir.exist?( ::File.join( full_path, 'refs' ))
77
+ elsif Dir.exist?( File.join( full_path, 'hooks' )) &&
78
+ Dir.exist?( File.join( full_path, 'info' )) &&
79
+ Dir.exist?( File.join( full_path, 'objects' )) &&
80
+ Dir.exist?( File.join( full_path, 'refs' ))
81
81
  warns_count += 1
82
82
  buf << "!! WARN - skip bare git repo >#{entry}< @ #{path}\n"
83
83
  else
@@ -94,7 +94,7 @@ def self.walk_dir( path, repos=[], level=1, depth: nil )
94
94
 
95
95
  sub_dirs.each do |entry|
96
96
  ## continue walking
97
- full_path = ::File.join( path, entry )
97
+ full_path = File.join( path, entry )
98
98
  walk_dir( full_path, repos, level+1, depth: depth )
99
99
  end
100
100
 
@@ -4,9 +4,37 @@ module Mono
4
4
  class Tool
5
5
  def self.main( args=ARGV )
6
6
 
7
- ## note: for now assume first argument is command
8
- ## add options later
7
+ options = {}
8
+ OptionParser.new do |parser|
9
+ ## note:
10
+ ## you can add many/multiple modules
11
+ ## e.g. -r gitti -r mono etc.
12
+ parser.on( '-r NAME', '--require NAME') do |name|
13
+ options[:requires] ||= []
14
+ options[:requires] << name
15
+ end
16
+ ## todo/fix:
17
+ ## add --verbose
18
+ ## add -d/--debug
19
+ end.parse!( args )
20
+
21
+
22
+ ## add check for auto-require (e.g. ./config.rb)
23
+ if options[:requires] ## use custom (auto-)requires
24
+ options[:requires].each do |path|
25
+ puts "[monofile] auto-require >#{path}<..."
26
+ require( path )
27
+ end
28
+ else ## use/try defaults
29
+ config_path = "./config.rb"
30
+ if File.exist?( config_path )
31
+ puts "[monofile] auto-require (default) >#{config_path}<..."
32
+ require( config_path )
33
+ end
34
+ end
35
+
9
36
 
37
+ ## note: for now assume first argument is command
10
38
  cmd = if args.size == 0
11
39
  'status' ## make status "default" command
12
40
  else
@@ -16,20 +44,26 @@ class Tool
16
44
  ## note: allow shortcut for commands
17
45
  case cmd.downcase
18
46
  when 'status', 'stati', 'stat', 'st', 's'
19
- Mono.status
47
+ status
20
48
  when 'sync', 'syn', 'sy', ## note: allow aliases such as install, get & up too
21
49
  'get', 'g',
22
50
  'install', 'insta', 'inst', 'ins', 'i',
23
51
  'up', 'u'
24
- Mono.sync
52
+ sync
25
53
  when 'fetch', 'f'
26
- Mono.fetch
54
+ fetch
27
55
  when 'env', 'e'
28
- Mono.env
56
+ env
29
57
  when 'backup', 'back', 'b'
30
- Mono.backup
58
+ backup
31
59
  when 'run', 'r', 'exec'
32
- Mono.run( args )
60
+ run( args )
61
+
62
+
63
+ ##################
64
+ ## for debugging / linting
65
+ when 'walk'
66
+ Mono.walk
33
67
  else
34
68
  puts "!! ERROR: unknown command >#{cmd}<"
35
69
  exit 1
@@ -1,13 +1,13 @@
1
1
  ## note: use a different module/namespace
2
2
  ## for the gem version info e.g. MonoCore vs Mono
3
3
 
4
- module MonoCore ## todo/check: rename to MonoMeta, MonoModule or such - why? why not?
4
+ module Mono
5
+ module Module
6
+ module Tool ## todo/check: rename to MonoMeta, MonoModule or such - why? why not?
5
7
 
6
- ## note: move root to its own namespace to avoid
7
- ## conflict with Mono.root!!!!
8
- MAJOR = 0 ## todo: namespace inside version or something - why? why not??
9
- MINOR = 6
10
- PATCH = 0
8
+ MAJOR = 1 ## todo: namespace inside version or something - why? why not??
9
+ MINOR = 1
10
+ PATCH = 1
11
11
  VERSION = [MAJOR,MINOR,PATCH].join('.')
12
12
 
13
13
  def self.version
@@ -18,16 +18,19 @@ module MonoCore ## todo/check: rename to MonoMeta, MonoModule or such - why? w
18
18
  "monos/#{VERSION} on Ruby #{RUBY_VERSION} (#{RUBY_RELEASE_DATE}) [#{RUBY_PLATFORM}]"
19
19
  end
20
20
 
21
+ ## note: move root to its own namespace to avoid
22
+ ## conflict with Mono.root!!!!
21
23
  def self.root
22
24
  File.expand_path( File.dirname(File.dirname(__FILE__) ))
23
25
  end
24
26
 
25
- end # module MonoCore
26
-
27
+ end # module Tool
28
+ end # module Module
29
+ end # module Mono
27
30
 
28
31
  ##################################
29
32
  # add a convenience shortcut for now - why? why not?
30
33
  module Mono
31
- VERSION = MonoCore::VERSION
34
+ VERSION = Mono::Module::Tool::VERSION
32
35
  end
33
36
 
@@ -1,5 +1,5 @@
1
1
  # note: allow require 'monos' too
2
2
  # (in addition to require 'mono')
3
3
 
4
- require_relative './mono'
4
+ require_relative './mono' ## todo/check: use just 'mono' - why? why not?
5
5
 
@@ -9,9 +9,9 @@ class TestBase < MiniTest::Test
9
9
  Git = Mono::Git
10
10
 
11
11
  def test_version
12
- puts MonoCore::VERSION
13
- puts MonoCore.banner
14
- puts MonoCore.root
12
+ puts Mono::Module::Tool::VERSION
13
+ puts Mono::Module::Tool.banner
14
+ puts Mono::Module::Tool.root
15
15
 
16
16
  puts Mono::VERSION
17
17
  end
@@ -21,7 +21,7 @@ class TestBase < MiniTest::Test
21
21
  end
22
22
 
23
23
  def test_env
24
- puts Mono.env
24
+ puts Mono::Tool.env
25
25
  end
26
26
 
27
27
 
@@ -0,0 +1,23 @@
1
+ ###
2
+ # to run use
3
+ # ruby -I ./lib -I ./test test/test_path.rb
4
+
5
+ require 'helper'
6
+
7
+ class TestPath < MiniTest::Test
8
+
9
+
10
+ def test_real_path
11
+ [
12
+ '@yorobot/stage/one',
13
+ 'one@yorobot/stage',
14
+ 'stage/one@yorobot',
15
+ ].each do |path|
16
+ puts "#{path} => >#{Monopath.parse( path )}<"
17
+
18
+ assert_equal "#{Mono.root}/yorobot/stage/one", Monopath.real_path( path )
19
+ end
20
+ end
21
+
22
+ end # class TestPath
23
+
metadata CHANGED
@@ -1,15 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: monos
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.0
4
+ version: 1.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gerald Bauer
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-10-24 00:00:00.000000000 Z
11
+ date: 2020-11-04 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: monofile
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: 0.2.2
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: 0.2.2
13
27
  - !ruby/object:Gem::Dependency
14
28
  name: gitti
15
29
  requirement: !ruby/object:Gem::Requirement
@@ -103,7 +117,8 @@ files:
103
117
  - lib/monos.rb
104
118
  - test/helper.rb
105
119
  - test/test_base.rb
106
- homepage: https://github.com/rubycoco/git
120
+ - test/test_path.rb
121
+ homepage: https://github.com/rubycoco/monos
107
122
  licenses:
108
123
  - Public Domain
109
124
  metadata: {}