dev 2.1.153 → 2.1.154
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/apps/git.rb +207 -208
- data/lib/apps/msbuild.rb +90 -90
- data/lib/apps/nbench.rb +2 -1
- data/lib/apps/nuget.rb +57 -59
- data/lib/apps/svn.rb +137 -143
- data/lib/apps/wix.rb +47 -50
- data/lib/apps/xcodebuild.rb +13 -11
- data/lib/apps/zip.rb +25 -25
- data/lib/apps.rb +3 -1
- data/lib/base/array.rb +66 -64
- data/lib/base/command.rb +237 -238
- data/lib/base/dir.rb +73 -76
- data/lib/base/environment.rb +94 -99
- data/lib/base/file.rb +35 -33
- data/lib/base/gemspec.rb +47 -45
- data/lib/base/giturl.rb +88 -90
- data/lib/base/hash.rb +20 -15
- data/lib/base/history.rb +36 -33
- data/lib/base/internet.rb +22 -20
- data/lib/base/project.rb +410 -423
- data/lib/base/projects.rb +231 -246
- data/lib/base/source.rb +22 -20
- data/lib/base/string.rb +6 -4
- data/lib/base/text.rb +16 -14
- data/lib/base/timeout.rb +29 -28
- data/lib/base/timer.rb +23 -19
- data/lib/base/version.rb +68 -72
- data/lib/base.rb +5 -3
- data/lib/commands.rb +47 -43
- data/lib/dev.config.rb +3 -2
- data/lib/dev.rb +65 -66
- data/lib/tasks/add.rb +34 -40
- data/lib/tasks/analyze.rb +17 -15
- data/lib/tasks/build.rb +101 -103
- data/lib/tasks/clean.rb +6 -4
- data/lib/tasks/clobber.rb +20 -18
- data/lib/tasks/commit.rb +42 -44
- data/lib/tasks/default.rb +41 -39
- data/lib/tasks/doc.rb +10 -8
- data/lib/tasks/info.rb +8 -7
- data/lib/tasks/package.rb +23 -20
- data/lib/tasks/publish.rb +20 -25
- data/lib/tasks/pull.rb +9 -9
- data/lib/tasks/push.rb +11 -13
- data/lib/tasks/setup.rb +180 -183
- data/lib/tasks/test.rb +121 -107
- data/lib/tasks/update.rb +13 -11
- data/lib/tasks.rb +38 -42
- metadata +7 -9
- data/bin/dev +0 -3
data/lib/base/gemspec.rb
CHANGED
@@ -1,51 +1,53 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
puts __FILE__ if defined?(DEBUG)
|
2
|
-
require_relative(
|
4
|
+
require_relative("command")
|
3
5
|
|
4
6
|
class Gemspec
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
def self.gemfile gemspec_file
|
12
|
-
spec=Gem::Specification.load(gemspec_file)
|
13
|
-
return "#{spec.name}-#{spec.version}.gem" if !spec.nil?
|
14
|
-
return ""
|
15
|
-
end
|
16
|
-
|
17
|
-
def self.version gemspec_file
|
18
|
-
spec=Gem::Specification.load(gemspec_file)
|
19
|
-
return spec.version.to_s
|
20
|
-
end
|
7
|
+
def self.update(gemspec_file)
|
8
|
+
Text.replace_in_file gemspec_file,
|
9
|
+
/('\d{4}-\d{2}-\d{2}')/,
|
10
|
+
"'#{Time.now.strftime("%Y-%m-%d")}'"
|
11
|
+
end
|
21
12
|
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
13
|
+
def self.gemfile(gemspec_file)
|
14
|
+
spec = Gem::Specification.load(gemspec_file)
|
15
|
+
return "#{spec.name}-#{spec.version}.gem" unless spec.nil?
|
16
|
+
|
17
|
+
""
|
18
|
+
end
|
19
|
+
|
20
|
+
def self.version(gemspec_file)
|
21
|
+
spec = Gem::Specification.load(gemspec_file)
|
22
|
+
spec.version.to_s
|
23
|
+
end
|
29
24
|
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
25
|
+
def self.latest_published_version(gemname)
|
26
|
+
scan = `gem list -r #{gemname}`.scan(/^dev\s*\(([\d.]+)\)/)
|
27
|
+
return scan[0][0] if !scan.nil? && (scan.length.positive? && !scan[0].nil? && scan[0].length.positive?)
|
28
|
+
|
29
|
+
""
|
30
|
+
end
|
31
|
+
|
32
|
+
def self.published_version(gemspec_file)
|
33
|
+
published_version = ""
|
34
|
+
spec = Gem::Specification.load(gemspec_file)
|
35
|
+
begin
|
36
|
+
published_version = latest_published_version spec.name # `gem list -r #{spec.name}`.scan(/\((\d+.\d+.\d+)\)/)[0][0]
|
37
|
+
rescue StandardError
|
38
|
+
published_version = ""
|
39
39
|
end
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
40
|
+
published_version
|
41
|
+
end
|
42
|
+
|
43
|
+
def self.published?(gemspec_file)
|
44
|
+
published_version(gemspec_file) == version(gemspec_file)
|
45
|
+
end
|
46
|
+
|
47
|
+
def self.normalize(gemspec_file)
|
48
|
+
spec = Gem::Specification.load(gemspec_file)
|
49
|
+
File.open(gemspec_file, "w") { |f| f.write(spec.to_ruby) }
|
50
|
+
end
|
51
|
+
|
52
|
+
def self.upgrade(gemspec_file); end
|
53
|
+
end
|
data/lib/base/giturl.rb
CHANGED
@@ -1,107 +1,105 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
class GitUrl
|
4
|
+
def self.pull(url)
|
5
|
+
if url.is_a?(Array)
|
6
|
+
url.each { |u| GitUrl.pull u }
|
7
|
+
else
|
8
|
+
puts " "
|
9
|
+
work_dir = get_work_dir(url)
|
10
|
+
unless Dir.exist?(work_dir)
|
11
|
+
puts "git clone #{url} #{work_dir}"
|
12
|
+
puts `git clone #{url} #{work_dir}`
|
13
|
+
end
|
2
14
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
puts ' '
|
8
|
-
work_dir = get_work_dir(url)
|
9
|
-
if(!Dir.exists?(work_dir))
|
10
|
-
puts "git clone #{url} #{work_dir}"
|
11
|
-
puts `git clone #{url} #{work_dir}`
|
12
|
-
end
|
13
|
-
|
14
|
-
Dir.chdir(work_dir) do
|
15
|
-
puts "git pull (#{work_dir})"
|
16
|
-
puts `git pull`
|
17
|
-
end
|
18
|
-
end
|
15
|
+
Dir.chdir(work_dir) do
|
16
|
+
puts "git pull (#{work_dir})"
|
17
|
+
puts `git pull`
|
18
|
+
end
|
19
19
|
end
|
20
|
+
end
|
20
21
|
|
21
|
-
|
22
|
+
def self.build(url)
|
23
|
+
if url.is_a?(Array)
|
24
|
+
url.each { |u| GitUrl.build u }
|
25
|
+
else
|
26
|
+
GitUrl.pull url
|
27
|
+
puts "build #{url}"
|
28
|
+
work_dir = get_work_dir(url)
|
29
|
+
puts "work_dir #{work_dir}"
|
22
30
|
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
31
|
+
Dir.chdir(work_dir) do
|
32
|
+
puts "rake #{work_dir}"
|
33
|
+
puts `rake`
|
34
|
+
puts "rake clobber"
|
35
|
+
puts `rake clobber`
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
30
39
|
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
end
|
37
|
-
end
|
40
|
+
def self.update_build_repo(url)
|
41
|
+
local_dir = "#{Environment.dev_root}/build/#{get_relative_dir(url)}"
|
42
|
+
unless Dir.exist?(local_dir)
|
43
|
+
puts "git clone #{url} #{local_dir}"
|
44
|
+
puts `git clone #{url} #{local_dir}`
|
38
45
|
end
|
46
|
+
stags = ""
|
47
|
+
Dir.chdir(local_dir) do
|
48
|
+
puts `git pull`
|
49
|
+
end
|
50
|
+
end
|
39
51
|
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
52
|
+
def self.build_tags(url)
|
53
|
+
if url.is_a?(Array)
|
54
|
+
url.each { |u| GitUrl.build_tags u }
|
55
|
+
else
|
56
|
+
puts "GitUrl.build_tags #{url}"
|
57
|
+
local_dir = "#{Environment.dev_root}/build/#{get_relative_dir(url)}"
|
58
|
+
unless Dir.exist?(local_dir)
|
59
|
+
puts "git clone #{url} #{local_dir}"
|
60
|
+
puts `git clone #{url} #{local_dir}`
|
61
|
+
end
|
62
|
+
stags = ""
|
63
|
+
Dir.chdir(local_dir) do
|
64
|
+
puts `git pull`
|
65
|
+
stags = `git tag`.gsub('\r', "")
|
66
|
+
end
|
67
|
+
tags = stags.split("\n").reverse
|
68
|
+
puts "tags: #{tags}"
|
69
|
+
tags.each do |tag|
|
70
|
+
build_tag url, tag.strip
|
71
|
+
end
|
50
72
|
end
|
73
|
+
end
|
51
74
|
|
52
|
-
|
75
|
+
def self.build_tag(url, tag)
|
76
|
+
build_dir = get_build_dir_tag(url, tag)
|
77
|
+
unless Dir.exist?(build_dir)
|
78
|
+
puts "git clone -b #{tag} --single-branch --depth 1 #{url} #{build_dir}"
|
79
|
+
puts `git clone -b #{tag} --single-branch --depth 1 #{url} #{build_dir}`
|
53
80
|
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
local_dir = Environment.dev_root + "/build/" + get_relative_dir(url)
|
59
|
-
if(!Dir.exists?(local_dir))
|
60
|
-
puts "git clone #{url} #{local_dir}"
|
61
|
-
puts `git clone #{url} #{local_dir}`
|
62
|
-
end
|
63
|
-
stags=''
|
64
|
-
Dir.chdir(local_dir) do
|
65
|
-
puts `git pull`
|
66
|
-
stags = `git tag`.gsub('\r','')
|
67
|
-
|
68
|
-
end
|
69
|
-
tags = stags.split("\n").reverse
|
70
|
-
puts "tags: #{tags}"
|
71
|
-
tags.each{|tag|
|
72
|
-
build_tag url, tag.strip
|
73
|
-
}
|
81
|
+
if Dir.exist?(build_dir)
|
82
|
+
Dir.chdir(build_dir) do
|
83
|
+
puts "rake #{build_dir}"
|
84
|
+
puts `rake`
|
74
85
|
end
|
86
|
+
end
|
75
87
|
end
|
88
|
+
end
|
76
89
|
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
puts "git clone -b #{tag} --single-branch --depth 1 #{url} #{build_dir}"
|
81
|
-
puts `git clone -b #{tag} --single-branch --depth 1 #{url} #{build_dir}`
|
90
|
+
def self.get_work_dir(url)
|
91
|
+
"#{Environment.dev_root}/work/#{get_relative_dir(url)}"
|
92
|
+
end
|
82
93
|
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
puts `rake`
|
87
|
-
end
|
88
|
-
end
|
89
|
-
end
|
90
|
-
end
|
91
|
-
|
92
|
-
def self.get_work_dir url
|
93
|
-
Environment.dev_root + "/work/" + get_relative_dir(url)
|
94
|
-
end
|
94
|
+
def self.get_build_dir(url)
|
95
|
+
"#{Environment.dev_root}/build/#{get_relative_dir(url)}"
|
96
|
+
end
|
95
97
|
|
96
|
-
|
97
|
-
|
98
|
-
|
98
|
+
def self.get_build_dir_tag(url, tag)
|
99
|
+
"#{Environment.dev_root}/build/#{get_relative_dir(url)}-#{tag}"
|
100
|
+
end
|
99
101
|
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
def self.get_relative_dir url
|
105
|
-
url.gsub('http://','').gsub('https://','').gsub('.git','')
|
106
|
-
end
|
107
|
-
end
|
102
|
+
def self.get_relative_dir(url)
|
103
|
+
url.gsub("http://", "").gsub("https://", "").gsub(".git", "")
|
104
|
+
end
|
105
|
+
end
|
data/lib/base/hash.rb
CHANGED
@@ -1,21 +1,26 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
puts __FILE__ if defined?(DEBUG)
|
2
4
|
|
3
5
|
class Hash
|
4
|
-
|
5
|
-
|
6
|
+
def execute(value = nil)
|
7
|
+
each do |k, v|
|
6
8
|
v.update if v.respond_to?(:update)
|
7
|
-
if
|
8
|
-
|
9
|
-
|
10
|
-
|
9
|
+
if v.is_a?(Array) && v.length.zero?
|
10
|
+
delete k
|
11
|
+
elsif v.respond_to?(:execute)
|
12
|
+
v.execute(value)
|
11
13
|
end
|
12
|
-
}
|
13
|
-
end
|
14
|
-
def to_html
|
15
|
-
[
|
16
|
-
'<div>',
|
17
|
-
map { |k, v| ["<br/><div><strong>#{k}</strong>", v.respond_to?(:to_html) ? v.to_html : "<span>#{v}</span></div><br/>"] },
|
18
|
-
'</div>'
|
19
|
-
].join
|
20
14
|
end
|
21
|
-
end
|
15
|
+
end
|
16
|
+
|
17
|
+
def to_html
|
18
|
+
[
|
19
|
+
"<div>",
|
20
|
+
map do |k, v|
|
21
|
+
["<br/><div><strong>#{k}</strong>", v.respond_to?(:to_html) ? v.to_html : "<span>#{v}</span></div><br/>"]
|
22
|
+
end,
|
23
|
+
"</div>",
|
24
|
+
].join
|
25
|
+
end
|
26
|
+
end
|
data/lib/base/history.rb
CHANGED
@@ -1,39 +1,42 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
puts __FILE__ if defined?(DEBUG)
|
2
4
|
|
3
5
|
class History
|
4
|
-
|
6
|
+
attr_accessor :dev
|
7
|
+
|
8
|
+
def initialize(dev = nil)
|
9
|
+
@dev = dev
|
10
|
+
@dev = Dev.new if @dev.nil?
|
11
|
+
end
|
12
|
+
|
13
|
+
# .0. for 0 exit codes
|
14
|
+
# .X. for non 0 exit codes
|
15
|
+
# project name is contained in directory name
|
16
|
+
def get_commands(pattern)
|
17
|
+
commands = []
|
18
|
+
Dir.chdir(@dev.log_dir) do
|
19
|
+
Dir.glob("*#{pattern.gsub("/", "-")}*.*").each do |logfile|
|
20
|
+
commands << Command.new(JSON.parse(IO.read(logfile)))
|
21
|
+
end
|
22
|
+
end
|
23
|
+
commands
|
24
|
+
end
|
5
25
|
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
commands=Array.new
|
16
|
-
Dir.chdir(@dev.log_dir) do
|
17
|
-
Dir.glob("*#{pattern.gsub('/','-')}*.*").each{|logfile|
|
18
|
-
commands << Command.new(JSON.parse(IO.read(logfile)))
|
19
|
-
}
|
20
|
-
end
|
21
|
-
commands
|
22
|
-
end
|
26
|
+
def add_command(command)
|
27
|
+
code = "0"
|
28
|
+
code = "X" if command[:exit_code] != 0
|
29
|
+
directory = command[:directory].gsub(@dev.root_dir, "").gsub("/", "-")
|
30
|
+
name = "#{command[:input]}.#{code}.#{directory}.json"
|
31
|
+
filename = "#{@dev.log_dir}/#{name}"
|
32
|
+
puts "add command #{filename}" if @dev.debug?
|
33
|
+
File.open(filename, "w") { |f| f.write(command.to_json) }
|
34
|
+
end
|
23
35
|
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
directory=command[:directory].gsub(@dev.root_dir,'').gsub('/','-')
|
28
|
-
name="#{command[:input]}.#{code}.#{directory}.json"
|
29
|
-
filename="#{@dev.log_dir}/#{name}"
|
30
|
-
puts "add command #{filename}" if @dev.debug?
|
31
|
-
File.open(filename,'w'){|f|f.write(command.to_json)}
|
32
|
-
end
|
36
|
+
def get_wrk_command(project_fullname)
|
37
|
+
commands = get_commands(project_fullname.to_s.gsub("/", "-"))
|
38
|
+
return commands[0] if commands.length.positive?
|
33
39
|
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
nil
|
38
|
-
end
|
39
|
-
end
|
40
|
+
nil
|
41
|
+
end
|
42
|
+
end
|
data/lib/base/internet.rb
CHANGED
@@ -1,25 +1,27 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
puts __FILE__ if defined?(DEBUG)
|
2
4
|
|
3
|
-
require
|
4
|
-
require
|
5
|
-
class Internet
|
5
|
+
require "open-uri"
|
6
|
+
require "timeout"
|
6
7
|
|
7
|
-
|
8
|
+
class Internet
|
9
|
+
@@available = true
|
8
10
|
|
9
|
-
|
10
|
-
|
11
|
+
def self.available?
|
12
|
+
return @@available unless @@available.nil?
|
11
13
|
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
end
|
14
|
+
begin
|
15
|
+
index = open("http://www.google.com").read
|
16
|
+
if index.include?("<Title>Google")
|
17
|
+
@@available = true
|
18
|
+
else
|
19
|
+
puts "open('http://www.google.com') returned false"
|
20
|
+
end
|
21
|
+
rescue Exception => e
|
22
|
+
puts "open('http://www.google.com') raised an exception: #{e}"
|
23
|
+
@@available = false
|
24
|
+
end
|
25
|
+
@@available
|
26
|
+
end
|
27
|
+
end
|