monos 1.0.2 → 1.1.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
  SHA1:
3
- metadata.gz: 9c0413c2258822899cb73e090438d21f3ea82fc5
4
- data.tar.gz: a9cd0ddc80ea90a8c7cdbafc7a917eeabadb5b8f
3
+ metadata.gz: 4962b6373c3d482ef91c0e9657e169217a96ffb7
4
+ data.tar.gz: 98eb5aa97ffed451336eb0b27402a2de03b45ffb
5
5
  SHA512:
6
- metadata.gz: bc5c4b2083a234faded31cc4bdad78068709c8d7f6aa0e4a21fa1eb0c276f9ba6d6b34fe77b3fcafac9f6024701536337563b5b9d1b7d7b1fa026f045592c3ac
7
- data.tar.gz: db404f05b726c7d233996dca624e6e3bc9cfb204d721ca9ee43be701ea2f658d4a0f03233524aa1d4e7b70c218052ea05cf67f347185063cdb5d53b9e106ddb9
6
+ metadata.gz: b98911c5622bc280477824a78f28fa3da0e556ac5b3284d27a8e37dcd2c00b3162be3c13c1dbdc3118d4156fc4ef9eb769e48ff21b29695906607a426845dcac
7
+ data.tar.gz: 6a0cb4ef8100b218f1ef322b2fa352f4e20f3b6838249f8504ba35fd1ed106e2cc3b3a4ab1a47527301b3443aa62250624fa75e547e6990991a67ff04ba6126d
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')
@@ -11,9 +14,6 @@ module Mono
11
14
  end
12
15
 
13
16
 
14
- ## some more stdlibs
15
- # require 'optparse'
16
-
17
17
 
18
18
 
19
19
  ###
@@ -31,4 +31,20 @@ require 'mono/commands/run'
31
31
  require 'mono/tool'
32
32
 
33
33
 
34
- puts MonoCore.banner # say hello
34
+
35
+ module Mono
36
+ def self.monofile
37
+ path = Monofile.find
38
+
39
+ if path
40
+ Monofile.read( path )
41
+ else
42
+ puts "!! WARN: no mono configuration file found; looking for #{Monofile::NAMES.join(', ')} in (#{Dir.getwd})"
43
+ Monofile.new ## return empty set -todo/check: return nil - why? why not?
44
+ end
45
+ end
46
+ end ## module Mono
47
+
48
+
49
+
50
+ puts Mono::Module::Tool.banner # say hello
@@ -1,57 +1,5 @@
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
- MONOFILES = ['monorepo.yml', 'monotree.yml', 'repos.yml']
29
-
30
- def self.find_monofile
31
- MONOFILES.each do |name|
32
- return "./#{name}" if File.exist?( "./#{name}")
33
- end
34
-
35
- nil ## no monofile found; return nil
36
- end
37
-
38
- def self.monofile
39
- path = find_monofile
40
-
41
- if path
42
- GitRepoSet.read( path )
43
- else
44
- puts "!! WARN: no mono configuration file found; looking for #{MONOFILES.join(', ')} in (#{Dir.getwd})"
45
- GitRepoSet.new( {} ) ## return empty set -todo/check: return nil - why? why not?
46
- end
47
- end
48
- end ## module Mono
49
-
50
-
51
-
52
-
53
1
  #####################
54
- # add file and repo helper
2
+ # add repo helper
55
3
 
56
4
  ##
57
5
  ## todo/fix: ALWAYS assert name format
@@ -63,15 +11,15 @@ class MonoGitHub
63
11
  ## @rubycoco/gitti or
64
12
  ## gitti@rubycoco
65
13
  ## => rubycoco/gitti
66
- norm_name = MonoFile.norm_name( name )
67
- path = "#{Mono.root}/#{norm_name}"
14
+ mononame = Mononame.parse( name )
15
+ path = mononame.real_path
68
16
 
69
17
  org_path = File.dirname( path )
70
18
  FileUtils.mkdir_p( org_path ) unless Dir.exist?( org_path ) ## make sure path exists
71
19
 
72
20
  ### note: use a github clone url (using ssh) like:
73
21
  ## git@github.com:rubycoco/gitti.git
74
- ssh_clone_url = "git@github.com:#{norm_name}.git"
22
+ ssh_clone_url = "git@github.com:#{mononame.to_path}.git"
75
23
 
76
24
  Dir.chdir( org_path ) do
77
25
  Gitti::Git.clone( ssh_clone_url, depth: depth )
@@ -84,77 +32,19 @@ MonoGithub = MonoGitHub ## add convenience (typo?) alias
84
32
 
85
33
  class MonoGitProject
86
34
  def self.open( name, &block )
87
- path = MonoFile.real_path( name )
35
+ mononame = Mononame.parse( name )
36
+ path = mononame.real_path
88
37
  Gitti::GitProject.open( path, &block )
89
38
  end
90
39
  end
91
40
 
92
41
 
93
42
 
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.real_path( path )
100
- "#{Mono.root}/#{norm_name( path )}"
101
- end
102
-
103
- def self.norm_name( path )
104
- # turn
105
- # - @yorobot/stage/one
106
- # - one@yorobot/stage
107
- # - stage/one@yorobot
108
- # => into
109
- # - yorobot/stage/one
110
-
111
-
112
- parts = path.split( '@' )
113
- raise ArgumentError, "no (required) @ found in name; got >#{path}<" if parts.size == 1
114
- raise ArgumentError, "too many @ found (#{parts.size-1}) in name; got >#{path}<" if parts.size > 2
115
-
116
- norm_name = String.new('')
117
- norm_name << parts[1] ## add orgs path first
118
- if parts[0].length > 0 ## has leading repo name (w/ optional path)
119
- norm_name << '/'
120
- norm_name << parts[0]
121
- end
122
- norm_name
123
- end
124
-
125
- def self.exist?( path )
126
- File.exist?( real_path( path ))
127
- end
128
-
129
-
130
- ## path always relative to Mono.root
131
- ## todo/fix: use File.expand_path( path, Mono.root ) - why? why not?
132
- ## or always enfore "absolut" path e.g. do NOT allow ../ or ./ or such
133
- def self.open( path, mode='r:utf-8', &block )
134
- full_path = real_path( path )
135
- ## make sure path exists if we open for writing/appending - why? why not?
136
- if mode[0] == 'w' || mode[0] == 'a'
137
- FileUtils.mkdir_p( File.dirname( full_path ) ) ## make sure path exists
138
- end
139
-
140
- File.open( full_path, mode ) do |file|
141
- block.call( file )
142
- end
143
- end
144
-
145
- def self.read_utf8( path )
146
- open( path, 'r:utf-8') { |file| file.read }
147
- end
148
- end ## class MonoFile
149
-
150
-
151
-
152
43
  module Mono
153
44
  #################
154
45
  ## add some short cuts
155
46
  def self.open( name, &block ) MonoGitProject.open( name, &block ); end
156
47
  def self.clone( name, depth: nil ) MonoGitHub.clone( name, depth: depth ); end
157
- def self.real_path( name ) MonoFile.real_path( name ); end
158
48
  end ## module Mono
159
49
 
160
50
 
@@ -2,7 +2,7 @@ module Mono
2
2
 
3
3
  def self.env ## check environment setup
4
4
  puts "Mono.root (MOPATH): >#{Mono.root}<"
5
- puts "MonoCore.root: >#{MonoCore.root}<"
5
+ puts "Mono::Module::Tool.root: >#{Mono::Module::Tool.root}<"
6
6
  puts
7
7
 
8
8
  ## add ruby version and path - why? why not? e.g.
@@ -19,7 +19,7 @@ module Mono
19
19
  Git.config( /user/, show_origin: true )
20
20
 
21
21
  puts
22
- puts "monorepo.yml:"
22
+ puts "monofile => (#{Monofile.find}):"
23
23
  pp Mono.monofile
24
24
  end
25
25
 
@@ -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
9
35
 
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
@@ -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
8
  MAJOR = 1 ## todo: namespace inside version or something - why? why not??
9
- MINOR = 0
10
- PATCH = 2
9
+ MINOR = 1
10
+ PATCH = 0
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
@@ -12,10 +12,10 @@ def test_real_path
12
12
  '@yorobot/stage/one',
13
13
  'one@yorobot/stage',
14
14
  'stage/one@yorobot',
15
- ].each do |name|
16
- puts "#{name} => >#{MonoFile.norm_name( name )}<"
15
+ ].each do |path|
16
+ puts "#{path} => >#{Monopath.parse( path )}<"
17
17
 
18
- assert_equal "#{Mono.root}/yorobot/stage/one", Mono.real_path( name )
18
+ assert_equal "#{Mono.root}/yorobot/stage/one", Monopath.real_path( path )
19
19
  end
20
20
  end
21
21
 
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: 1.0.2
4
+ version: 1.1.0
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-27 00:00:00.000000000 Z
11
+ date: 2020-11-02 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
@@ -104,7 +118,7 @@ files:
104
118
  - test/helper.rb
105
119
  - test/test_base.rb
106
120
  - test/test_path.rb
107
- homepage: https://github.com/rubycoco/git
121
+ homepage: https://github.com/rubycoco/monos
108
122
  licenses:
109
123
  - Public Domain
110
124
  metadata: {}