dev 2.1.153 → 2.1.154

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.
Files changed (51) hide show
  1. checksums.yaml +4 -4
  2. data/lib/apps/git.rb +207 -208
  3. data/lib/apps/msbuild.rb +90 -90
  4. data/lib/apps/nbench.rb +2 -1
  5. data/lib/apps/nuget.rb +57 -59
  6. data/lib/apps/svn.rb +137 -143
  7. data/lib/apps/wix.rb +47 -50
  8. data/lib/apps/xcodebuild.rb +13 -11
  9. data/lib/apps/zip.rb +25 -25
  10. data/lib/apps.rb +3 -1
  11. data/lib/base/array.rb +66 -64
  12. data/lib/base/command.rb +237 -238
  13. data/lib/base/dir.rb +73 -76
  14. data/lib/base/environment.rb +94 -99
  15. data/lib/base/file.rb +35 -33
  16. data/lib/base/gemspec.rb +47 -45
  17. data/lib/base/giturl.rb +88 -90
  18. data/lib/base/hash.rb +20 -15
  19. data/lib/base/history.rb +36 -33
  20. data/lib/base/internet.rb +22 -20
  21. data/lib/base/project.rb +410 -423
  22. data/lib/base/projects.rb +231 -246
  23. data/lib/base/source.rb +22 -20
  24. data/lib/base/string.rb +6 -4
  25. data/lib/base/text.rb +16 -14
  26. data/lib/base/timeout.rb +29 -28
  27. data/lib/base/timer.rb +23 -19
  28. data/lib/base/version.rb +68 -72
  29. data/lib/base.rb +5 -3
  30. data/lib/commands.rb +47 -43
  31. data/lib/dev.config.rb +3 -2
  32. data/lib/dev.rb +65 -66
  33. data/lib/tasks/add.rb +34 -40
  34. data/lib/tasks/analyze.rb +17 -15
  35. data/lib/tasks/build.rb +101 -103
  36. data/lib/tasks/clean.rb +6 -4
  37. data/lib/tasks/clobber.rb +20 -18
  38. data/lib/tasks/commit.rb +42 -44
  39. data/lib/tasks/default.rb +41 -39
  40. data/lib/tasks/doc.rb +10 -8
  41. data/lib/tasks/info.rb +8 -7
  42. data/lib/tasks/package.rb +23 -20
  43. data/lib/tasks/publish.rb +20 -25
  44. data/lib/tasks/pull.rb +9 -9
  45. data/lib/tasks/push.rb +11 -13
  46. data/lib/tasks/setup.rb +180 -183
  47. data/lib/tasks/test.rb +121 -107
  48. data/lib/tasks/update.rb +13 -11
  49. data/lib/tasks.rb +38 -42
  50. metadata +7 -9
  51. data/bin/dev +0 -3
data/lib/base/dir.rb CHANGED
@@ -1,114 +1,111 @@
1
- require 'fileutils'
1
+ # frozen_string_literal: true
2
+
3
+ require "fileutils"
2
4
 
3
5
  class Dir
4
- def self.make directory
5
- FileUtils.mkdir_p directory if !File.exists? directory
6
+ def self.make(directory)
7
+ FileUtils.mkdir_p directory unless File.exist? directory
6
8
  end
7
- def self.remove directory, remove_empty_parents=false
8
- begin
9
- FileUtils.rm_rf directory if(!Dir.empty?(directory))
10
- FileUtils.rm_r directory if(File.exists?(directory))
11
- if(remove_empty_parents)
12
- parent_dir=File.dirname(directory)
13
- Dir.remove parent_dir, true if(Dir.empty?(parent_dir))
14
- end
15
- rescue
9
+
10
+ def self.remove(directory, remove_empty_parents = false)
11
+ FileUtils.rm_rf directory unless Dir.empty?(directory)
12
+ FileUtils.rm_r directory if File.exist?(directory)
13
+ if remove_empty_parents
14
+ parent_dir = File.dirname(directory)
15
+ Dir.remove parent_dir, true if Dir.empty?(parent_dir)
16
16
  end
17
+ rescue StandardError
17
18
  end
18
- def self.empty? directory
19
- if((Dir.entries(directory) - %w{ . .. }).empty?)
20
- return true
21
- end
19
+
20
+ def self.empty?(directory)
21
+ return true if (Dir.entries(directory) - %w[. ..]).empty?
22
+
22
23
  false
23
24
  end
24
25
 
25
- def self.get_latest_mtime directory
26
- mtime=Time.new(1980)
27
- Dir.chdir(directory) do
28
- latest_filename=''
29
- Dir.glob('**/*.*').each{|f|
26
+ def self.get_latest_mtime(directory)
27
+ mtime = Time.new(1980)
28
+ Dir.chdir(directory) do
29
+ latest_filename = ""
30
+ Dir.glob("**/*.*").each do |f|
30
31
  if mtime.nil? || File.mtime(f) > mtime
31
- mtime=File.mtime(f)
32
- latest_filename=f
32
+ mtime = File.mtime(f)
33
+ latest_filename = f
33
34
  end
34
- }
35
- puts " latest_mtime #{mtime.to_s} #{latest_filename}" if Environment.default.debug?
35
+ end
36
+ puts " latest_mtime #{mtime} #{latest_filename}" if Environment.default.debug?
36
37
  end
37
38
  mtime
38
39
  end
39
40
 
40
- def self.get_project_name directory
41
- name = directory.split('/').last
41
+ def self.get_project_name(directory)
42
+ name = directory.split("/").last
42
43
  rakefile = "#{directory}/rakefile.rb"
43
- if(File.exists?(rakefile))
44
- txt=IO.read(rakefile)
45
- if(txt.include?("NAME="))
44
+ if File.exist?(rakefile)
45
+ txt = IO.read(rakefile)
46
+ if txt.include?("NAME=")
46
47
  scan = txt.scan(/NAME=['"]([\w.]+)/)
47
- if(!scan.nil?)
48
- name = scan[0][0] if(scan.length > 0 && !scan[0].nil? && scan[0].length > 0)
49
- end
48
+ name = scan[0][0] if !scan.nil? && (scan.length.positive? && !scan[0].nil? && scan[0].length.positive?)
50
49
  end
51
50
  end
52
51
  name
53
52
  end
54
53
 
55
- def self.zip(directory,files,zipfilename)
56
- if Gem::Specification::find_all_by_name('rubyzip').any?
57
- require 'zip'
58
- File.delete(zipfilename) if(File.exists?(zipfilename))
59
- Zip::File.open(zipfilename,Zip::File::CREATE) do |zipfile|
54
+ def self.zip(directory, files, zipfilename)
55
+ if Gem::Specification.find_all_by_name("rubyzip").any?
56
+ require "zip"
57
+ File.delete(zipfilename) if File.exist?(zipfilename)
58
+ Zip::File.open(zipfilename, Zip::File::CREATE) do |zipfile|
60
59
  Dir.chdir(directory) do
61
60
  count = 0
62
- files.each{|source_file|
63
- zipfile.add(source_file,"#{directory}/#{source_file}")
64
- count = count + 1
65
- }
61
+ files.each do |source_file|
62
+ zipfile.add(source_file, "#{directory}/#{source_file}")
63
+ count += 1
64
+ end
66
65
  puts "added #{count} files to #{zipfilename}"
67
66
  end
68
67
  end
69
68
  else
70
69
  puts "rubyzip gem is not installed 'gem install rubyzip'"
71
70
  end
72
- end
71
+ end
73
72
 
74
- def self.unzip(zipfilename,directory)
75
- if Gem::Specification::find_all_by_name('rubyzip').any?
76
- require 'zip'
77
- count = 0
78
- Zip::File.open(zipfilename) do |zip_file|
79
- zip_file.each do |entry|
80
- dest = "#{directory}/#{entry.to_s}"
81
- parent_dir=File.dirname(dest)
82
- FileUtils.mkdir_p parent_dir if(!Dir.exists?(parent_dir))
83
- entry.extract("#{directory}/#{entry.to_s}")
84
- count = count + 1
73
+ def self.unzip(zipfilename, directory)
74
+ if Gem::Specification.find_all_by_name("rubyzip").any?
75
+ require "zip"
76
+ count = 0
77
+ Zip::File.open(zipfilename) do |zip_file|
78
+ zip_file.each do |entry|
79
+ dest = "#{directory}/#{entry}"
80
+ parent_dir = File.dirname(dest)
81
+ FileUtils.mkdir_p parent_dir unless Dir.exist?(parent_dir)
82
+ entry.extract("#{directory}/#{entry}")
83
+ count += 1
84
+ end
85
85
  end
86
+ puts "extracted #{count} files to #{directory}"
87
+ else
88
+ puts "rubyzip gem is not installed 'gem install rubyzip'"
86
89
  end
87
- puts "extracted #{count} files to #{directory}"
88
- else
89
- puts "rubyzip gem is not installed 'gem install rubyzip'"
90
90
  end
91
- end
92
91
 
93
- def self.copy_files(src_dir,glob_pattern,exclude_patterns,target_dir)
94
- if(Dir.exists?(src_dir))
95
- Dir.chdir(src_dir) do
96
- Dir.glob(glob_pattern).each{|f|
97
- if(File.file?(f))
92
+ def self.copy_files(src_dir, glob_pattern, exclude_patterns, target_dir)
93
+ if Dir.exist?(src_dir)
94
+ Dir.chdir(src_dir) do
95
+ Dir.glob(glob_pattern).each do |f|
96
+ next unless File.file?(f)
97
+
98
98
  exclude = false
99
- if(!exclude_patterns.nil?)
100
- exclude_patterns.each{|p|
101
- exclude = true if(f.include?(p))
102
- }
103
- end
104
- if(!exclude)
105
- dest = "#{target_dir}/#{f}"
106
- FileUtils.mkdir_p(File.dirname(dest)) if(!Dir.exists?(File.dirname(dest)))
107
- FileUtils.cp(f,dest)
99
+ exclude_patterns&.each do |p|
100
+ exclude = true if f.include?(p)
108
101
  end
102
+ next if exclude
103
+
104
+ dest = "#{target_dir}/#{f}"
105
+ FileUtils.mkdir_p(File.dirname(dest)) unless Dir.exist?(File.dirname(dest))
106
+ FileUtils.cp(f, dest)
109
107
  end
110
- }
111
- end
112
- end
108
+ end
109
+ end
110
+ end
113
111
  end
114
- end
@@ -1,138 +1,135 @@
1
+ # frozen_string_literal: true
2
+
1
3
  puts DELIMITER if defined?(DEBUG)
2
4
  puts __FILE__ if defined?(DEBUG)
3
5
 
4
- require_relative('string.rb')
6
+ require_relative("string")
5
7
 
6
8
  class Environment < Hash
7
- attr_accessor :output,:publish_dir
8
- @@default=nil
9
+ attr_accessor :output, :publish_dir
10
+
11
+ @@default = nil
9
12
  def self.default
10
- @@default=Environment.new if @@default.nil?
13
+ @@default = Environment.new if @@default.nil?
11
14
  @@default
12
15
  end
13
16
 
14
- def initialize env=nil
15
- @output=''
17
+ def initialize(env = nil)
18
+ @output = ""
16
19
 
17
- @env=Hash.new
18
- @env_aliases={'HOME' => ['USERPROFILE'],
19
- 'DEV_ROOT' => ['DEV_HOME','HOME','USERPROFILE'],
20
- 'USERNAME' => ['USER','USR']
21
- }
22
- env.each{|k,v| @env[k.to_s]=v} if !env.nil?
23
- @@default=self if @@default.nil?
20
+ @env = {}
21
+ @env_aliases = { "HOME" => ["USERPROFILE"],
22
+ "DEV_ROOT" => %w[DEV_HOME HOME USERPROFILE],
23
+ "USERNAME" => %w[USER USR] }
24
+ env&.each { |k, v| @env[k.to_s] = v }
25
+ @@default = self if @@default.nil?
24
26
 
25
- @publish_dir="#{root_dir}/publish"
26
- FileUtils.mkdir_p @publish_dir if !File.exists? @publish_dir
27
+ @publish_dir = "#{root_dir}/publish"
28
+ FileUtils.mkdir_p @publish_dir unless File.exist? @publish_dir
27
29
  end
28
30
 
29
- #####Begin LEGACY support
31
+ # ####Begin LEGACY support
30
32
  def self.dev_root
31
33
  default.root_dir
32
34
  end
33
- #####End LEGACY support
35
+ # ####End LEGACY support
34
36
 
35
37
  def admin?
36
- rights=%x[whoami /priv]
37
- return rights.include?('SeCreateGlobalPrivilege')
38
+ rights = `whoami /priv`
39
+ rights.include?("SeCreateGlobalPrivilege")
38
40
  end
41
+
39
42
  def root_dir
40
- get_env('DEV_ROOT').gsub('\\','/')
43
+ get_env("DEV_ROOT").gsub('\\', "/")
41
44
  end
42
-
45
+
43
46
  def home_dir
44
- get_env('HOME').gsub('\\','/')
47
+ get_env("HOME").gsub('\\', "/")
45
48
  end
46
49
 
47
50
  def log_dir
48
- dir="#{root_dir}/log/#{user}@#{machine}"
49
- FileUtils.mkdir_p dir if !File.exists? dir
51
+ dir = "#{root_dir}/log/#{user}@#{machine}"
52
+ FileUtils.mkdir_p dir unless File.exist? dir
50
53
  dir
51
54
  end
52
55
 
53
56
  def dropbox_dir
54
- dropbox_info = "#{ENV['LOCALAPPDATA']}/Dropbox/info.json"
55
- if(File.exists?(dropbox_info))
57
+ dropbox_info = "#{ENV["LOCALAPPDATA"]}/Dropbox/info.json"
58
+ if File.exist?(dropbox_info)
56
59
  info = JSON.parse(IO.read(dropbox_info))
57
- if(info.has_key?('personal'))
58
- if(info['personal'].has_key?('path'))
59
- return info['personal']['path']
60
- end
61
- end
60
+ return info["personal"]["path"] if info.key?("personal") && info["personal"].key?("path")
62
61
  end
63
62
  ""
64
63
  end
65
64
 
66
65
  def tmp_dir
67
- dir="#{root_dir}/tmp"
68
- FileUtils.mkdir_p dir if !File.exists? dir
66
+ dir = "#{root_dir}/tmp"
67
+ FileUtils.mkdir_p dir unless File.exist? dir
69
68
  dir
70
69
  end
71
70
 
72
71
  def make_dir
73
- dir="#{root_dir}/make"
74
- FileUtils.mkdir_p dir if !File.exists? dir
72
+ dir = "#{root_dir}/make"
73
+ FileUtils.mkdir_p dir unless File.exist? dir
75
74
  dir
76
75
  end
77
76
 
78
77
  def wrk_dir
79
- dir="#{root_dir}/work"
80
- FileUtils.mkdir_p dir if !File.exists? dir
78
+ dir = "#{root_dir}/work"
79
+ FileUtils.mkdir_p dir unless File.exist? dir
81
80
  dir
82
81
  end
83
82
 
84
83
  def machine
85
- return ENV['COMPUTERNAME'] if !ENV['COMPUTERNAME'].nil?
84
+ return ENV["COMPUTERNAME"] unless ENV["COMPUTERNAME"].nil?
85
+
86
86
  machine = `hostname`
87
- machine = machine.split('.')[0] if machine.include?('.')
88
- return machine.strip
87
+ machine = machine.split(".")[0] if machine.include?(".")
88
+ machine.strip
89
89
  end
90
90
 
91
91
  def user
92
- get_env('USERNAME')
92
+ get_env("USERNAME")
93
93
  end
94
94
 
95
- def get_env key
96
- if(!@env.nil? && @env.has_key?(key))
97
- return @env[key]
98
- end
95
+ def get_env(key)
96
+ return @env[key] if !@env.nil? && @env.key?(key)
97
+
99
98
  value = ENV[key]
100
- if(value.nil?)
101
- if(@env_aliases.has_key?(key))
102
- @env_aliases[key].each{|akey|
103
- value=get_env(akey) if value.nil?
104
- }
99
+ if value.nil? && @env_aliases.key?(key)
100
+ @env_aliases[key].each do |akey|
101
+ value = get_env(akey) if value.nil?
105
102
  end
106
103
  end
107
104
  value
108
105
  end
109
106
 
110
- def set_env key,value
111
- @env[key]=value
107
+ def set_env(key, value)
108
+ @env[key] = value
112
109
  end
113
110
 
114
111
  def debug?
115
112
  return true if defined?(DEBUG)
113
+
116
114
  false
117
115
  end
118
116
 
119
117
  def colorize?
120
- colorize=true
118
+ colorize = true
121
119
  if Environment.windows?
122
- if(`gem list win32console`.include?('win32console'))
123
- require 'ansi/code'
120
+ if `gem list win32console`.include?("win32console")
121
+ require "ansi/code"
124
122
  else
125
- colorize=false
123
+ colorize = false
126
124
  end
127
125
  end
128
- if Environment.mac?
129
- colorize=false
130
- end
126
+ colorize = false if Environment.mac?
131
127
  colorize
132
128
  end
133
129
 
134
130
  def working?
135
131
  return true if Rake.application.original_dir.include? wrk_dir
132
+
136
133
  false
137
134
  end
138
135
 
@@ -140,9 +137,9 @@ class Environment < Hash
140
137
  true
141
138
  end
142
139
 
143
- def out message
144
- puts message if !get_env('SUPPRESS_CONSOLE_OUTPUT')
145
- @output=@output+message+'\n'
140
+ def out(message)
141
+ puts message unless get_env("SUPPRESS_CONSOLE_OUTPUT")
142
+ @output = "#{@output}#{message}\\n"
146
143
  end
147
144
 
148
145
  def show_success?
@@ -151,17 +148,13 @@ class Environment < Hash
151
148
 
152
149
  def self.OS
153
150
  if windows?
154
- return "windows"
151
+ "windows"
152
+ elsif mac?
153
+ "mac"
154
+ elsif linux?
155
+ "linux"
155
156
  else
156
- if mac?
157
- return "mac"
158
- else
159
- if linux?
160
- return "linux"
161
- else
162
- return "unix"
163
- end
164
- end
157
+ "unix"
165
158
  end
166
159
  end
167
160
 
@@ -170,7 +163,7 @@ class Environment < Hash
170
163
  end
171
164
 
172
165
  def self.mac?
173
- (/darwin/ =~ RUBY_PLATFORM) != nil
166
+ (/darwin/ =~ RUBY_PLATFORM) != nil
174
167
  end
175
168
 
176
169
  def self.unix?
@@ -178,46 +171,48 @@ class Environment < Hash
178
171
  end
179
172
 
180
173
  def self.linux?
181
- unix? and not mac?
174
+ unix? and !mac?
182
175
  end
183
176
 
184
177
  def self.check
185
- puts 'checking commands...'
186
- missing_command=false
187
- ['ruby --version','svn --version --quiet','git --version','msbuild /version','nunit-console','nuget','candle','light','gem --version'].each{|cmd|
188
- command=Command.new(cmd)
189
- command[:quiet]=true
190
- command[:ignore_failure]=true
178
+ puts "checking commands..."
179
+ missing_command = false
180
+ ["ruby --version", "svn --version --quiet", "git --version", "msbuild /version", "nunit-console", "nuget", "candle",
181
+ "light", "gem --version"].each do |cmd|
182
+ command = Command.new(cmd)
183
+ command[:quiet] = true
184
+ command[:ignore_failure] = true
191
185
  command.execute
192
- if(command[:exit_code] == 0)
193
- puts "#{cmd.split(' ')[0]} #{get_version(command[:output])}"
186
+ if (command[:exit_code]).zero?
187
+ puts "#{cmd.split(" ")[0]} #{get_version(command[:output])}"
194
188
  else
195
- puts "#{cmd.split(' ')[0]} not found."
196
- missing_command=true
189
+ puts "#{cmd.split(" ")[0]} not found."
190
+ missing_command = true
197
191
  end
198
-
199
- }
200
- puts "missing commands may be resolved by making sure that are installed and in PATH environment variable." if missing_command
192
+ end
193
+ if missing_command
194
+ puts "missing commands may be resolved by making sure that are installed and in PATH environment variable."
195
+ end
201
196
  end
202
197
 
203
- def self.get_version text
198
+ def self.get_version(text)
204
199
  text.match(/(\d+\.\d+\.[\d\w]+)/)
205
200
  end
206
201
 
207
- def info
202
+ def info
208
203
  puts "Environment"
209
204
  puts " ruby version: #{`ruby --version`}"
210
205
  puts " ruby platform: #{RUBY_PLATFORM}"
211
- puts " dev_root: #{self.root_dir}"
212
- puts " machine: #{self.machine}"
213
- puts " user: #{self.user}"
206
+ puts " dev_root: #{root_dir}"
207
+ puts " machine: #{machine}"
208
+ puts " user: #{user}"
214
209
  puts " os: #{Environment.OS}"
215
- #puts " configuration: #{self.configuration}"
216
- puts " debug: #{self.debug?}"
217
- #puts "git user.email: #{Git.user_email}"
210
+ # puts " configuration: #{self.configuration}"
211
+ puts " debug: #{debug?}"
212
+ # puts "git user.email: #{Git.user_email}"
218
213
  puts " "
219
- #puts "Path Commands"
220
- #['svn --version --quiet','git --version','msbuild /version','nuget','candle','light','gem --version'].each{|cmd|
214
+ # puts "Path Commands"
215
+ # ['svn --version --quiet','git --version','msbuild /version','nuget','candle','light','gem --version'].each{|cmd|
221
216
  # command=Command.new(cmd)
222
217
  # command[:quiet]=true
223
218
  # command[:ignore_failure]=true
@@ -228,9 +223,9 @@ class Environment < Hash
228
223
  # puts "#{cmd.split(' ')[0].fix(14)} not found."
229
224
  # missing_command=true
230
225
  # end
231
- #}
226
+ # }
232
227
  end
233
228
  end
234
229
 
235
230
  puts "" if defined?(DEBUG)
236
- puts Environment.default.info if defined?(DEBUG)
231
+ puts Environment.default.info if defined?(DEBUG)
data/lib/base/file.rb CHANGED
@@ -1,40 +1,42 @@
1
+ # frozen_string_literal: true
2
+
1
3
  puts __FILE__ if defined?(DEBUG)
2
4
 
3
- require 'fileutils'
5
+ require "fileutils"
4
6
 
5
7
  class File
6
- def self.amalgamate filename,source
7
- File.open(filename,'w'){|file|
8
- source.each{|source_file|
9
- file.puts IO.read(source_file)
10
- }
11
- }
12
- end
13
-
14
- def self.publish destination, source_dir, source_glob='**/*', exclude_glob=nil# overwrite_existing=false
8
+ def self.amalgamate(filename, source)
9
+ File.open(filename, "w") do |file|
10
+ source.each do |source_file|
11
+ file.puts IO.read(source_file)
12
+ end
13
+ end
14
+ end
15
15
 
16
- output = "\n"
17
- FileUtils.mkdir_p destination if !File.exists? destination
16
+ # overwrite_existing=false
17
+ def self.publish(destination, source_dir, source_glob = "**/*", exclude_glob = nil)
18
+ output = "\n"
19
+ FileUtils.mkdir_p destination unless File.exist? destination
18
20
 
19
- files=nil
20
- Dir.chdir(source_dir) do
21
- files=FileList.new(source_glob).to_a
22
- if(!exclude_glob.nil?)
23
- FileList.new(exclude_glob).to_a.each{|f|
24
- files.delete(f) if(files.include?(f))
25
- }
26
- end
27
- end
28
- output = output + "\nfiles: #{files}.to_s"
21
+ files = nil
22
+ Dir.chdir(source_dir) do
23
+ files = FileList.new(source_glob).to_a
24
+ unless exclude_glob.nil?
25
+ FileList.new(exclude_glob).to_a.each do |f|
26
+ files.delete(f) if files.include?(f)
27
+ end
28
+ end
29
+ end
30
+ output += "\nfiles: #{files}.to_s"
29
31
 
30
- Dir.chdir(source_dir) do
31
- files.each{|f|
32
- file="#{destination}/#{f}"
33
- dirname=File.dirname(file)
34
- FileUtils.mkdir_p dirname if !File.exists? dirname
35
- FileUtils.cp(f,file) if !File.exists? file# || overwrite_existing
36
- }
37
- end
38
- output
39
- end
40
- end
32
+ Dir.chdir(source_dir) do
33
+ files.each do |f|
34
+ file = "#{destination}/#{f}"
35
+ dirname = File.dirname(file)
36
+ FileUtils.mkdir_p dirname unless File.exist? dirname
37
+ FileUtils.cp(f, file) unless File.exist? file # || overwrite_existing
38
+ end
39
+ end
40
+ output
41
+ end
42
+ end