dev 2.1.153 → 2.1.154

Sign up to get free protection for your applications and to get access to all the features.
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