raykit 0.0.467 → 0.0.468

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,244 +1,244 @@
1
- # frozen_string_literal: true
2
-
3
- module Raykit
4
- module Git
5
- # Functionality to manage a remote git repository
6
- class Repository
7
- # The url of the remote repository
8
- attr_accessor :url
9
- attr_accessor :clone_directory, :work_directory
10
-
11
- def initialize(url)
12
- @url = url
13
- @clone_directory = Raykit::Git::Directory.new(get_dev_dir("clone"))
14
- @work_directory = Raykit::Git::Directory.new(get_dev_dir("work"))
15
- end
16
-
17
- def short_name()
18
- @url.split("/").last.gsub(".git", "")
19
- end
20
-
21
- def to_json(*_args)
22
- JSON.generate({ "url" => @url })
23
- end
24
-
25
- def self.parse(json)
26
- hash = JSON.parse(json)
27
- Repository.new(hash["url"])
28
- end
29
-
30
- # The relative path is a valid local path name derived from the url
31
- def relative_path
32
- @url.gsub("https://", "").gsub(".git", "").gsub("http://", "")
33
- end
34
-
35
- def get_dev_dir(dir)
36
- dev_dir = Environment.get_dev_dir(dir)
37
- Raykit::Environment::normalize_path("#{dev_dir}/#{relative_path}")
38
- end
39
-
40
- # Clone the repository to a specific directory
41
- def clone(directory, depth = 0)
42
- if depth.zero?
43
- PROJECT.run("git clone #{@url} #{directory}")
44
- else
45
- PROJECT.run("git clone #{@url} #{directory} --depth #{depth}")
46
- end
47
- end
48
-
49
- # default branch
50
- def default_branch
51
- update_local_clone_directory
52
- if Dir.exist?(local_clone_directory)
53
- Dir.chdir(local_clone_directory) do
54
- # refs/remotes/origin/master
55
- default_branch = `git symbolic-ref refs/remotes/origin/HEAD`.split("/").last.strip
56
- return default_branch
57
- end
58
- end
59
- "main"
60
- end
61
-
62
- # The branches for the git repository
63
- def branches
64
- results = []
65
- update_local_clone_directory
66
- if Dir.exist?(local_clone_directory)
67
- Dir.chdir(local_clone_directory) do
68
- `git branch`.split('\n').each do |line|
69
- branch = line.gsub("*", "").strip
70
- results.insert(-1, branch) if branch.length.positive?
71
- end
72
- end
73
- end
74
- results
75
- end
76
-
77
- # The latest commit id for a branch of the repostiory
78
- def latest_commit(branch)
79
- if checkout_local_clone_directory_branch(branch)
80
- update_local_clone_directory
81
- Dir.chdir(local_clone_directory) do
82
- text = `git log -n 1`
83
- scan = text.scan(/commit (\w+)\s/)
84
- return scan[0][0].to_s
85
- end
86
- end
87
- ""
88
- end
89
-
90
- # The latest tag for a branch of the repository
91
- def latest_tag(branch)
92
- return `git describe --abbrev=0`.strip if checkout_local_clone_directory_branch(branch)
93
-
94
- ""
95
- end
96
-
97
- private def local_clone_directory
98
- clone_dir = "#{Environment.get_dev_dir("clone")}/#{relative_path}"
99
- end
100
-
101
- public def update_local_clone_directory
102
- if Dir.exist?(local_clone_directory)
103
- Dir.chdir(local_clone_directory) do
104
- pull = Raykit::Command.new("git pull")
105
- pull.run
106
- pull
107
- # t = `git pull`
108
- end
109
- else
110
- PROJECT.run("git clone #{@url} #{local_clone_directory}")
111
- end
112
- end
113
-
114
- private def checkout_local_clone_directory_branch(branch)
115
- update_local_clone_directory
116
- if Dir.exist?(local_clone_directory)
117
- Dir.chdir(local_clone_directory) do
118
- check = `git branch`
119
- t = `git checkout #{branch}` unless check.include?("* #{branch}")
120
- check = `git branch`
121
- return check.include?("* #{branch}")
122
- end
123
- end
124
- false
125
- end
126
-
127
- def clobber
128
- ["work", "clone", "make"].each { |d|
129
- dir = get_dev_dir(d)
130
- if (Dir.exist?(dir))
131
- begin
132
- puts " deleting #{dir}"
133
- FileUtils.rm_rf(dir)
134
- FileUtils.rm(dir) if (Dir.exist?(dir))
135
- rescue
136
- puts " problem while deleting #{dir}"
137
- end
138
- end
139
- }
140
- end
141
-
142
- def pull
143
- Raykit::Git::Repository::work_pull(url)
144
- update_local_clone_directory
145
- end
146
-
147
- def work(command, force = false)
148
- pull if (!Dir.exist?(get_dev_dir("work")))
149
- fcommand = Raykit::FileSystem::replace_invalid_chars(command)
150
- filename = "#{Raykit::Environment::log_dir}/work_#{fcommand}_#{relative_path.gsub("/", "-")}.json"
151
- if (Raykit::Git::Directory.new(get_dev_dir("work")).outstanding_commit? || force)
152
- puts " outstanding commit in #{get_dev_dir("work")}"
153
- work_cmd = Raykit::Git::Repository::work_url(url, command)
154
- work_cmd.save_as(filename)
155
- return work_cmd
156
- else
157
- if (File.exist?(filename))
158
- return Raykit::Command::parse(IO.read(filename))
159
- else
160
- work_cmd = Raykit::Git::Repository::work_url(url, command)
161
- work_cmd.save_as(filename)
162
- end
163
- #
164
- end
165
- end
166
-
167
- def make(command, force = false)
168
- commit_id = "#{latest_commit(default_branch)}"
169
- make_id = "make_#{relative_path.gsub("/", "-")}_#{commit_id}"
170
- fcommand = Raykit::FileSystem::replace_invalid_chars(command)
171
- filename = "#{Raykit::Environment::log_dir}/#{make_id}_#{fcommand}.json"
172
- if (!force && File.exist?(filename))
173
- return Raykit::Command::parse(IO.read(filename))
174
- else
175
- make_cmd = Raykit::Git::Repository::make_url(url, commit_id, "rake default")
176
- make_cmd.save_as(filename)
177
- return make_cmd
178
- end
179
- end
180
-
181
- def self.work_pull(url)
182
- repo = Raykit::Git::Repository.new(url)
183
- work_dir = repo.get_dev_dir("work")
184
- repo.clone(work_dir) if !Dir.exist?(work_dir)
185
- Dir.chdir(work_dir) do
186
- run("git pull")
187
- end
188
- end
189
-
190
- def self.work_integrate(url)
191
- repo = Raykit::Git::Repository.new(url)
192
- work_dir = repo.get_dev_dir("work")
193
- repo.clone(work_dir) if !Dir.exist?(work_dir)
194
- Dir.chdir(work_dir) do
195
- run("git pull")
196
- run("rake integrate")
197
- end
198
- end
199
-
200
- def self.work_url(url, cmd)
201
- repo = Raykit::Git::Repository.new(url)
202
- puts " work #{url} #{cmd}"
203
- work_dir = repo.get_dev_dir("work")
204
- repo.clone(work_dir) if !Dir.exist?(work_dir)
205
- Dir.chdir(work_dir) do
206
- run("git pull")
207
- cmd = Raykit::Command.new(cmd)
208
- cmd = cmd.run().summary()
209
- cmd
210
- end
211
- end
212
-
213
- def self.make_url(url, commit_id, command)
214
- repo = Raykit::Git::Repository.new(url)
215
- puts " make #{url} #{commit_id} #{command}"
216
- make_dir = Raykit::Environment::normalize_path(repo.get_dev_dir("make") + "/" + commit_id)
217
- FileUtils.mkdir_p(repo.get_dev_dir("make")) if !Dir.exist?(repo.get_dev_dir("make"))
218
- if (Dir.exist?(make_dir))
219
- FileUtils.rm_rf(make_dir)
220
- end
221
- run("git clone #{url} #{make_dir}")
222
- cmd = 0
223
- Dir.chdir(make_dir) do
224
- run("git reset --hard #{commit_id}")
225
- FileUtils.rm_rf(".git")
226
- cmd = Raykit::Command.new(command)
227
- cmd = cmd.run().summary()
228
- end
229
- FileUtils.rm_rf(make_dir) if (cmd.exitstatus == 0)
230
- cmd
231
- end
232
-
233
- def self.backup(url, backup_dir)
234
- if (Dir.exist?(backup_dir))
235
- Dir.chdir(backup_dir) do
236
- run("git pull")
237
- end
238
- else
239
- run("git clone #{url} \"#{backup_dir}\"")
240
- end
241
- end
242
- end
243
- end
244
- end
1
+ # frozen_string_literal: true
2
+
3
+ module Raykit
4
+ module Git
5
+ # Functionality to manage a remote git repository
6
+ class Repository
7
+ # The url of the remote repository
8
+ attr_accessor :url
9
+ attr_accessor :clone_directory, :work_directory
10
+
11
+ def initialize(url)
12
+ @url = url
13
+ @clone_directory = Raykit::Git::Directory.new(get_dev_dir("clone"))
14
+ @work_directory = Raykit::Git::Directory.new(get_dev_dir("work"))
15
+ end
16
+
17
+ def short_name()
18
+ @url.split("/").last.gsub(".git", "")
19
+ end
20
+
21
+ def to_json(*_args)
22
+ JSON.generate({ "url" => @url })
23
+ end
24
+
25
+ def self.parse(json)
26
+ hash = JSON.parse(json)
27
+ Repository.new(hash["url"])
28
+ end
29
+
30
+ # The relative path is a valid local path name derived from the url
31
+ def relative_path
32
+ @url.gsub("https://", "").gsub(".git", "").gsub("http://", "")
33
+ end
34
+
35
+ def get_dev_dir(dir)
36
+ dev_dir = Environment.get_dev_dir(dir)
37
+ Raykit::Environment::normalize_path("#{dev_dir}/#{relative_path}")
38
+ end
39
+
40
+ # Clone the repository to a specific directory
41
+ def clone(directory, depth = 0)
42
+ if depth.zero?
43
+ PROJECT.run("git clone #{@url} #{directory}")
44
+ else
45
+ PROJECT.run("git clone #{@url} #{directory} --depth #{depth}")
46
+ end
47
+ end
48
+
49
+ # default branch
50
+ def default_branch
51
+ update_local_clone_directory
52
+ if Dir.exist?(local_clone_directory)
53
+ Dir.chdir(local_clone_directory) do
54
+ # refs/remotes/origin/master
55
+ default_branch = `git symbolic-ref refs/remotes/origin/HEAD`.split("/").last.strip
56
+ return default_branch
57
+ end
58
+ end
59
+ "main"
60
+ end
61
+
62
+ # The branches for the git repository
63
+ def branches
64
+ results = []
65
+ update_local_clone_directory
66
+ if Dir.exist?(local_clone_directory)
67
+ Dir.chdir(local_clone_directory) do
68
+ `git branch`.split('\n').each do |line|
69
+ branch = line.gsub("*", "").strip
70
+ results.insert(-1, branch) if branch.length.positive?
71
+ end
72
+ end
73
+ end
74
+ results
75
+ end
76
+
77
+ # The latest commit id for a branch of the repostiory
78
+ def latest_commit(branch)
79
+ if checkout_local_clone_directory_branch(branch)
80
+ update_local_clone_directory
81
+ Dir.chdir(local_clone_directory) do
82
+ text = `git log -n 1`
83
+ scan = text.scan(/commit (\w+)\s/)
84
+ return scan[0][0].to_s
85
+ end
86
+ end
87
+ ""
88
+ end
89
+
90
+ # The latest tag for a branch of the repository
91
+ def latest_tag(branch)
92
+ return `git describe --abbrev=0`.strip if checkout_local_clone_directory_branch(branch)
93
+
94
+ ""
95
+ end
96
+
97
+ private def local_clone_directory
98
+ clone_dir = "#{Environment.get_dev_dir("clone")}/#{relative_path}"
99
+ end
100
+
101
+ public def update_local_clone_directory
102
+ if Dir.exist?(local_clone_directory)
103
+ Dir.chdir(local_clone_directory) do
104
+ pull = Raykit::Command.new("git pull")
105
+ pull.run
106
+ pull
107
+ # t = `git pull`
108
+ end
109
+ else
110
+ PROJECT.run("git clone #{@url} #{local_clone_directory}")
111
+ end
112
+ end
113
+
114
+ private def checkout_local_clone_directory_branch(branch)
115
+ update_local_clone_directory
116
+ if Dir.exist?(local_clone_directory)
117
+ Dir.chdir(local_clone_directory) do
118
+ check = `git branch`
119
+ t = `git checkout #{branch}` unless check.include?("* #{branch}")
120
+ check = `git branch`
121
+ return check.include?("* #{branch}")
122
+ end
123
+ end
124
+ false
125
+ end
126
+
127
+ def clobber
128
+ ["work", "clone", "make"].each { |d|
129
+ dir = get_dev_dir(d)
130
+ if (Dir.exist?(dir))
131
+ begin
132
+ puts " deleting #{dir}"
133
+ FileUtils.rm_rf(dir)
134
+ FileUtils.rm(dir) if (Dir.exist?(dir))
135
+ rescue
136
+ puts " problem while deleting #{dir}"
137
+ end
138
+ end
139
+ }
140
+ end
141
+
142
+ def pull
143
+ Raykit::Git::Repository::work_pull(url)
144
+ update_local_clone_directory
145
+ end
146
+
147
+ def work(command, force = false)
148
+ pull if (!Dir.exist?(get_dev_dir("work")))
149
+ fcommand = Raykit::FileSystem::replace_invalid_chars(command)
150
+ filename = "#{Raykit::Environment::log_dir}/work_#{fcommand}_#{relative_path.gsub("/", "-")}.json"
151
+ if (Raykit::Git::Directory.new(get_dev_dir("work")).outstanding_commit? || force)
152
+ puts " outstanding commit in #{get_dev_dir("work")}"
153
+ work_cmd = Raykit::Git::Repository::work_url(url, command)
154
+ work_cmd.save_as(filename)
155
+ return work_cmd
156
+ else
157
+ if (File.exist?(filename))
158
+ return Raykit::Command::parse(IO.read(filename))
159
+ else
160
+ work_cmd = Raykit::Git::Repository::work_url(url, command)
161
+ work_cmd.save_as(filename)
162
+ end
163
+ #
164
+ end
165
+ end
166
+
167
+ def make(command, force = false)
168
+ commit_id = "#{latest_commit(default_branch)}"
169
+ make_id = "make_#{relative_path.gsub("/", "-")}_#{commit_id}"
170
+ fcommand = Raykit::FileSystem::replace_invalid_chars(command)
171
+ filename = "#{Raykit::Environment::log_dir}/#{make_id}_#{fcommand}.json"
172
+ if (!force && File.exist?(filename))
173
+ return Raykit::Command::parse(IO.read(filename))
174
+ else
175
+ make_cmd = Raykit::Git::Repository::make_url(url, commit_id, "rake default")
176
+ make_cmd.save_as(filename)
177
+ return make_cmd
178
+ end
179
+ end
180
+
181
+ def self.work_pull(url)
182
+ repo = Raykit::Git::Repository.new(url)
183
+ work_dir = repo.get_dev_dir("work")
184
+ repo.clone(work_dir) if !Dir.exist?(work_dir)
185
+ Dir.chdir(work_dir) do
186
+ run("git pull")
187
+ end
188
+ end
189
+
190
+ def self.work_integrate(url)
191
+ repo = Raykit::Git::Repository.new(url)
192
+ work_dir = repo.get_dev_dir("work")
193
+ repo.clone(work_dir) if !Dir.exist?(work_dir)
194
+ Dir.chdir(work_dir) do
195
+ run("git pull")
196
+ run("rake integrate")
197
+ end
198
+ end
199
+
200
+ def self.work_url(url, cmd)
201
+ repo = Raykit::Git::Repository.new(url)
202
+ puts " work #{url} #{cmd}"
203
+ work_dir = repo.get_dev_dir("work")
204
+ repo.clone(work_dir) if !Dir.exist?(work_dir)
205
+ Dir.chdir(work_dir) do
206
+ run("git pull")
207
+ cmd = Raykit::Command.new(cmd)
208
+ cmd = cmd.run().summary()
209
+ cmd
210
+ end
211
+ end
212
+
213
+ def self.make_url(url, commit_id, command)
214
+ repo = Raykit::Git::Repository.new(url)
215
+ puts " make #{url} #{commit_id} #{command}"
216
+ make_dir = Raykit::Environment::normalize_path(repo.get_dev_dir("make") + "/" + commit_id)
217
+ FileUtils.mkdir_p(repo.get_dev_dir("make")) if !Dir.exist?(repo.get_dev_dir("make"))
218
+ if (Dir.exist?(make_dir))
219
+ FileUtils.rm_rf(make_dir)
220
+ end
221
+ run("git clone #{url} #{make_dir}")
222
+ cmd = 0
223
+ Dir.chdir(make_dir) do
224
+ run("git reset --hard #{commit_id}")
225
+ FileUtils.rm_rf(".git")
226
+ cmd = Raykit::Command.new(command)
227
+ cmd = cmd.run().summary()
228
+ end
229
+ FileUtils.rm_rf(make_dir) if (cmd.exitstatus == 0)
230
+ cmd
231
+ end
232
+
233
+ def self.backup(url, backup_dir)
234
+ if (Dir.exist?(backup_dir))
235
+ Dir.chdir(backup_dir) do
236
+ run("git pull")
237
+ end
238
+ else
239
+ run("git clone #{url} \"#{backup_dir}\"")
240
+ end
241
+ end
242
+ end
243
+ end
244
+ end
@@ -1,17 +1,17 @@
1
- # frozen_string_literal: true
2
-
3
- module Raykit
4
- class Installer
5
- def self.make_msi(wxs_file, source_dir, msi_filename)
6
- name = "#{File.basename(wxs_file, ".wxs")}"
7
- FileUtils.cp(wxs_file, "#{source_dir}/#{File.basename(wxs_file)}")
8
- Dir.chdir(source_dir) do
9
- run("candle #{File.basename(wxs_file)}")
10
- run("light #{name}.wixobj")
11
- FileUtils.cp("#{name}.msi", msi_filename)
12
- raise "#{msi_filename} does not exist" if !File.exist?(msi_filename)
13
- File.delete("#{name}.wixobj")
14
- end
15
- end
16
- end
17
- end
1
+ # frozen_string_literal: true
2
+
3
+ module Raykit
4
+ class Installer
5
+ def self.make_msi(wxs_file, source_dir, msi_filename)
6
+ name = "#{File.basename(wxs_file, ".wxs")}"
7
+ FileUtils.cp(wxs_file, "#{source_dir}/#{File.basename(wxs_file)}")
8
+ Dir.chdir(source_dir) do
9
+ run("candle #{File.basename(wxs_file)}")
10
+ run("light #{name}.wixobj")
11
+ FileUtils.cp("#{name}.msi", msi_filename)
12
+ raise "#{msi_filename} does not exist" if !File.exist?(msi_filename)
13
+ File.delete("#{name}.wixobj")
14
+ end
15
+ end
16
+ end
17
+ end