raykit 0.0.148 → 0.0.149

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: 29921842da719171d3ba2a9a7531f8c24ba80b65e454eb85250e2e528980e55f
4
- data.tar.gz: 3b9e86b0f71d52f8b643c05eac2c56c34dd7af1c3a82e3ee20a7bd6418eedd1a
3
+ metadata.gz: 5502db43e43e11e3c9e9edfcd939423023f5e11e3a30a6ac46b6dba11725beec
4
+ data.tar.gz: 26a22d5ca68c00d8eed582c84fee269e4164b72b7f576812db9db67f1c100f0a
5
5
  SHA512:
6
- metadata.gz: 26a040593d07ce79f18dbf598ccb3c966cd3c3d0cf59bd68196043b1502fe8afdb6bdbcfbf0ddf26af6a72159627d68e28789f5db4caccdb18695c4d725ff5cc
7
- data.tar.gz: fbc0a87e7ac8e95d58e1a4076603d6b1a8fb50ad2596faca47c9b7ce9869c813c6be62a89629d7033be588c688da6673e4ca9042b3079553765b0fbb0537493c
6
+ metadata.gz: f0cb1eb4bdc472028ca62a65f8e2dd0e6821da63bb54e6d83aa714be2629acbb22d7f5083439538aa5fa1e674834afc9262c4cf06472e752613b9aad61e7eb98
7
+ data.tar.gz: 6d35aec01b7ae8f85978091d82bc3123a67b24234613ace61a76acc9a2bdaa75d095b613e7dbc6475cd0697f0296cd815d7a0ef3df7765959703d10c682059c7
data/README.md CHANGED
@@ -1,3 +1,5 @@
1
1
  # raykit
2
2
 
3
- ruby gem supporting rake ci/cd tasks
3
+ ruby gem supporting rake ci/cd tasks
4
+
5
+ ## raykit console application
@@ -8,18 +8,7 @@ module Raykit
8
8
  attr_accessor :opts
9
9
  def initialize
10
10
  @opts = Slop.parse do |o|
11
- o.bool '-s','--show','show names'
12
- o.string '-r', '--remote', 'remote name or substring', default: ''
13
11
  o.string '-t','--task','rake task', default: 'default'
14
- o.string '-l','--level','log level (debug,info,warn,error)', default: 'warn'
15
- o.bool '-i','--import','import remotes from work directory'
16
- o.bool '-p','--pull','pull work directory'
17
- o.bool '-w','--work','rake work directory'
18
- o.bool '-m','--make','make latest commit'
19
- o.bool '-q','--quiet','enable quiet mode'
20
-
21
- o.bool '-c','--clean','clean work directories'
22
- o.bool '-d','--delete','delete remote name'
23
12
  end
24
13
 
25
14
  if(opts.verbose?)
@@ -29,102 +18,33 @@ module Raykit
29
18
  end
30
19
 
31
20
  def run
32
- if(ARGV.length == 0)
21
+ verb = "usage"
22
+ verb = @opts.arguments[0] if(@opts.arguments.length > 0)
23
+ case verb
24
+ when "usage"
33
25
  usage
34
- #puts @opts
35
- #0
26
+ when "add"
27
+ add
28
+ when "remove"
29
+ remove
30
+ when "show"
31
+ show
32
+ when "work"
33
+ work
34
+ when "import"
35
+ import
36
+ when "clean"
37
+ clean
38
+ when "sync_version"
39
+ sync_version
40
+ when "copy"
41
+ copy
42
+ when "pull"
43
+ pull
36
44
  else
37
- verb = ARGV[0]
38
- if(verb == "sync_version")
39
- source = ARGV[1]
40
- dest = ARGV[2]
41
- Raykit::Version::sync_file_versions(source,dest)
42
- version = Raykit::Version::detect(source,false)
43
- puts "version #{version} detected in #{source}, updating #{dest} to match."
44
- elsif(verb == "copy")
45
- source = ARGV[1]
46
- dest=ARGV[2]
47
- FileUtils.cp(source,dest)
48
- puts "copied #{source} to #{dest}"
49
- else
50
- # align log level with @opts[:level]
51
- LOG.set_severity_as_string(@opts[:level])
52
- if(LOG.severity == Logger::Severity::DEBUG ||
53
- LOG.severity == Logger::Severity::INFO)
54
- puts '--remote = ' + @opts[:remote]
55
- puts '--task = ' + @opts[:task]
56
- puts '--level = ' + @opts[:level]
57
- selected_repositories = REPOSITORIES.select{|r| r.include?(@opts[:remote])}
58
- if(selected_repositories.length == 0)
59
- puts "no matching remotes"
60
- return
61
- else
62
- puts "matching remotes:"
63
- selected_repositories.each{|r| puts r}
64
- end
65
- end
66
-
67
- if(@opts.import?)
68
- puts Rainbow('import').yellow.bright
69
- if(REPOSITORIES.is_remote_url(@opts[:remote]))
70
- puts "importing #{@opts[:remote]}"
71
- else
72
- puts "scanning #{REPOSITORIES.work_dir} for .git directories"
73
- end
74
- imported=REPOSITORIES.import(@opts[:remote])
75
- puts "imported #{imported.length} remotes"
76
- return 0
77
- end
78
- REPOSITORIES.select{|r| r.include?(@opts[:remote])}.each{|remote|
79
- repo=Raykit::Git::Repository.new(remote)
80
- work=Raykit::Git::Directory.new(repo.get_dev_dir('work'))
81
- make=Raykit::Git::Directory.new(repo.get_dev_dir('make'))
82
-
83
- puts Rainbow(remote).green.bright
84
- if(@opts.pull?)
85
- # do not pull if the working directory does not already exist.
86
- if(Dir.exists?(repo.get_dev_dir('work')))
87
- work.pull
88
- end
89
- end
90
- if(@opts.work?)
91
- if(!Dir.exist?(work.directory))
92
- puts "work directory #{work.directory} does not exist, cloning" if(@opts.verbose?)
93
- puts `git clone #{remote} #{work.directory}`
94
- end
95
- puts "rake #{@opts[:task]} in #{work.directory}" if(@opts.verbose?)
96
- work.rake(@opts[:task])
97
- end
98
- if(@opts.make?)
99
- if(!Dir.exist?(make.directory))
100
- puts `git clone #{remote} #{make.directory}`
101
- end
102
- make.rake(@opts[:task])
103
- end
104
- if(@opts.clean?)
105
- if(Dir.exist?(work.directory))
106
- puts 'removing ' + Rainbow(work.directory).yellow
107
- FileUtils.remove_dir(work.directory)
108
- end
109
- end
110
- if(@opts.delete?)
111
- if(Dir.exist?(work.directory))
112
- puts 'removing ' + Rainbow(work.directory).yellow
113
- FileUtils.remove_dir(work.directory)
114
- end
115
- if(Dir.exist?(make.directory))
116
- puts 'removing ' + Rainbow(work.directory).yellow
117
- FileUtils.remove_dir(work.directory)
118
- end
119
- if(REPOSITORIES.include?(remote))
120
- puts 'removing remote ' + Rainbow(remote).yellow
121
- REPOSITORIES.remove(remote)
122
- end
123
- end
124
- }
125
- end
45
+ puts 'unrecognized command ' + verb
46
+ return 1
126
47
  end
127
- 0
128
48
  end
129
49
 
130
50
  def verbs
@@ -137,23 +57,80 @@ module Raykit
137
57
  0
138
58
  end
139
59
 
140
- def list(hash)
60
+ def add
61
+ if(@opts.arguments.length < 2)
62
+ puts 'add requires a url'
63
+ return 1
64
+ end
65
+ url=@opts.arguments[1]
66
+ if(REPOSITORIES.include?(url))
67
+ puts 'url ' + url + ' already exists.'
68
+ else
69
+ REPOSITORIES << url
70
+ REPOSITORIES.save(REPOSITORIES.filename)
71
+ puts 'url ' + url + ' added.'
72
+ end
73
+ end
74
+
75
+ def remove
76
+ if(@opts.arguments.length < 2)
77
+ puts 'remove requires a url or pattern'
78
+ return 1
79
+ end
141
80
  pattern=''
142
- if(hash.include?(:pattern))
143
- pattern=hash["pattern"]
81
+ pattern=@opts.arguments[1] if(@opts.arguments.length > 1)
82
+ remove_urls = REPOSITORIES.matches(pattern)
83
+ if(remove_urls.length == 0)
84
+ puts 'no matching urls found.'
85
+
86
+ else
87
+ remove_urls.each{|url|
88
+ REPOSITORIES.delete(url)
89
+ puts 'url ' + url + ' removed.'
90
+ }
91
+ REPOSITORIES.save(REPOSITORIES.filename)
144
92
  end
145
- pattern='' if(pattern.nil?)
93
+ end
94
+
95
+ def show
96
+ pattern=''
97
+ pattern=@opts.arguments[1] if(@opts.arguments.length > 1)
98
+ REPOSITORIES.matches(pattern).each{|url|
99
+ puts url
100
+ }
101
+ end
146
102
 
147
- REPOSITORIES.each{|url|
148
- if(url.include?(pattern))
149
- puts Rainbow(url).yellow.bright
103
+ def work
104
+ pattern=''
105
+ pattern=@opts.arguments[1] if(@opts.arguments.length > 1)
106
+ REPOSITORIES.matches(pattern).each{|url|
107
+ repo=Raykit::Git::Repository.new(url)
108
+ work=Raykit::Git::Directory.new(repo.get_dev_dir('work'))
109
+ if(!Dir.exist?(work.directory))
110
+ PROJECT.run("git clone #{url} #{work.directory}")
111
+ end
112
+ if(Dir.exist?(work.directory))
113
+ work.rake(@opts[:task])
150
114
  end
151
115
  }
152
116
  end
153
117
 
154
- def import(hash)
118
+ def pull
155
119
  pattern=''
156
- pattern=hash["pattern"] if(hash.include?("pattern"))
120
+ pattern=@opts.arguments[1] if(@opts.arguments.length > 1)
121
+ REPOSITORIES.matches(pattern).each{|url|
122
+ repo=Raykit::Git::Repository.new(url)
123
+ work=Raykit::Git::Directory.new(repo.get_dev_dir('work'))
124
+ if(Dir.exist?(work.directory))
125
+ puts url
126
+ work.pull
127
+ end
128
+ }
129
+ end
130
+
131
+ def import
132
+ pattern=''
133
+ pattern=@opts.arguments[1] if(@opts.arguments.length > 1)
157
134
  puts 'scanning...'
158
135
  count=REPOSITORIES.length
159
136
  REPOSITORIES.import(pattern)
@@ -161,6 +138,46 @@ module Raykit
161
138
  puts "imported #{new_count} git repositories"
162
139
  end
163
140
 
141
+ def clean
142
+ pattern=''
143
+ pattern=@opts.arguments[1] if(@opts.arguments.length > 1)
144
+ REPOSITORIES.matches(pattern).each{|url|
145
+ repo=Raykit::Git::Repository.new(url)
146
+ work=Raykit::Git::Directory.new(repo.get_dev_dir('work'))
147
+ if(Dir.exist?(work.directory))
148
+ puts 'removing ' + work.directory
149
+ begin
150
+ FileUtils.rm_rf(work.directory,secure:true)
151
+ rescue
152
+ puts 'error removing ' + work.directory
153
+ end
154
+ end
155
+ }
156
+ end
157
+
158
+ def sync_version
159
+ if(@opts.arguments.length < 3)
160
+ puts 'source and destination arguments are required for sync_version'
161
+ return 1
162
+ end
163
+ source = @opts.arguments[1]
164
+ dest = @opts.arguments[2]
165
+ Raykit::Version::sync_file_versions(source,dest)
166
+ version = Raykit::Version::detect(source,false)
167
+ puts "version #{version} detected in #{source}, updating #{dest} to match."
168
+ end
169
+
170
+ def copy
171
+ if(@pts.arguments.length < 3)
172
+ puts 'source and destination arguments are required for copy'
173
+ return 1
174
+ end
175
+ source = @opts.arguments[1]
176
+ dest = @opts.arguments[2]
177
+ FileUtils.cp(source,dest)
178
+ puts "copied #{source} to #{dest}"
179
+ end
180
+
164
181
  def rake(hash)
165
182
  REPOSITORIES.each{|remote|
166
183
  if(remote.include?(hash[:pattern]))
@@ -184,19 +201,7 @@ module Raykit
184
201
  }
185
202
  end
186
203
 
187
- def work(hash)
188
- REPOSITORIES.each{|remote|
189
- if(remote.include?(hash[:pattern]))
190
- puts "remote: #{remote}"
191
- repo=Raykit::Git::Repository.new(remote)
192
- work=Raykit::Git::Directory.new(repo.get_dev_dir('work'))
193
- if(!Dir.exist?(work.directory))
194
- Raykit::run("git clone #{remote} #{work.directory}")
195
- end
196
- work.rake('default')
197
- end
198
- }
199
- end
204
+
200
205
  end
201
206
 
202
207
 
@@ -31,6 +31,11 @@ module Raykit
31
31
  end
32
32
 
33
33
  def rake(task)
34
+
35
+ if(!Dir.exist?(@directory))
36
+ puts 'directory not found.'
37
+ return 1
38
+ end
34
39
  debug=false
35
40
  sub_dir='work'
36
41
  sub_dir='make' if(@directory.include?('/make/'))
@@ -77,6 +77,16 @@ module Raykit
77
77
  save(@filename)
78
78
  imported
79
79
  end
80
+
81
+ def matches(pattern)
82
+ matches = Array.new
83
+ REPOSITORIES.each{|url|
84
+ if(url.include?(pattern))
85
+ matches << url
86
+ end
87
+ }
88
+ matches
89
+ end
80
90
  end
81
91
  end
82
92
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: raykit
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.148
4
+ version: 0.0.149
5
5
  platform: ruby
6
6
  authors:
7
7
  - Lou Parslow