spader 0.0.1.pre.pre → 0.0.3.pre.pre

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: d2603fbd12b3088658c382bf48ed92c41f66b6da5169692e96aa6b026b77907a
4
- data.tar.gz: ac8d0454a647b8fc19878769504f00922b1c3af66d50e2e3506740f4b178f8a3
3
+ metadata.gz: 35f3d0356c590d5a277e303f4a3a6f5fc7ed4b83a7e2054e8dbec71317d86aa3
4
+ data.tar.gz: 1b6f9853d6afef2bdd83de25d0b47762fce00bce4d4614dce4707dd5c3bf0db4
5
5
  SHA512:
6
- metadata.gz: fbc7426da951f50bdfb54515ecf29a27f6104df0e63598d6e442022bb434194affb1e1d055d596ba8d5e1474b8d2c56e8c768ee1303a430edcefa34826eec2ed
7
- data.tar.gz: d5417d40a5b74db83a7b90d3fb55b5b865d4205230d1002bff3ea8e22e4bd3d229fd4c47a9a4d5a2110d81c72f60f314768bc62a7ff9af047df0cc4bfa236869
6
+ metadata.gz: 258ee052057b3f6f8f751b8a99d3a3991c9ecb683526ca3ea35962612c3b8545a66c11c5390e841b429d41b75b9e35a244e0c88210c95f47c47e34aec0211656
7
+ data.tar.gz: e26db02962f9a4edf3a2d4a06827aaad9e39bcbb2a9f8b17cb03bfac55c0bcf3ac82636658a0b847f2121d66a96e9ef364e7943d7d234447fe9ef3cd55d023a5
data/bin/spader CHANGED
@@ -1,329 +1,68 @@
1
- #!/usr/bin/env ruby
2
-
3
- # SPADER
4
- # WebExtension maker's toolkit.
5
- # Copyright (C) 2020 Cosmic Shovel, Inc.
6
-
7
- require "spader"
8
-
9
- #require_relative "rb/dl_libs"
10
- #require_relative "rb/rendering_helpers"
11
-
12
- ########################################################################################
13
-
14
- if ARGV.length() == 0 || ARGV.include?("--help") || ARGV.include?("-h")
15
- puts "spader <command> <args>\nvalid commands: generate, download, build, help\nvalid parameters:\n* generate: <project title>\n* download: none\n* build: <extension path> <browser> <environment> <version> [--zip]\n* help: <command>\n"
16
- exit(0)
17
- end
18
-
19
- spader_command = ARGV[0]
20
- spader_command_args = ARGV.drop(1)
21
-
22
- begin
23
-
24
- case spader_command
25
- when "build"
26
- Spader.build(spader_command_args)
27
- #dmsg("Building...")
28
- #build(ARGV[1].dup(), ARGV[2].dup(), ARGV[3].dup(), ARGV[4].dup(), ARGV.include?("--zip"))
29
- when "download"
30
- Spader.download(spader_command_args)
31
- #dmsg("Downloading...")
32
- #dmsg("Not implemented!")
33
- when "generate"
34
- Spader.generate(spader_command_args)
35
- #dmsg("Generating skeleton...")
36
-
37
- #title = ARGV[1]
38
-
39
- #if title.nil?()
40
- # dmsg("ruby spader.rb --skeleton <extension name>")
41
- # exit(0)
42
- #end
43
-
44
- #generate_skeleton(__dir__ + "/#{title.downcase().gsub(" ", "_")}/", title)
45
- when "help"
46
- case spader_command_args[0]
47
- when "build"
48
- puts "The build command compiles your code into a WebExtension."
49
- when "download"
50
- puts "The download command installs bit-perfect copies of third party libraries into your source directory ."
51
- when "skeleton"
52
- puts "The skeleton command generates an empty but build-able project directory."
53
- else
54
- puts "Invalid command: #{spader_command_args[0]}"
55
- end
56
-
57
- exit(0)
58
- else
59
- puts "Invalid command, exiting."
60
- exit(0)
61
- end
62
- rescue Spader::Command::InvalidParametersError => e
63
- puts "Aborting due to invalid parameters."
64
- exit(1)
65
- end
66
-
67
- exit(0)
68
-
69
- zip_it = ARGV.include?("--zip")
70
- dl_libs = ARGV.include?("--download-libs")
71
- generate_skeleton = ARGV.include?("--skeleton")
72
-
73
- if ARGV.length() < 3 && !dl_libs && !generate_skeleton
74
- dmsg("ruby spader.rb <browser> <environment> <version> [--zip]")
75
- dmsg("OR")
76
- dmsg("ruby spader.rb --download-libs")
77
- dmsg("OR")
78
- dmsg("ruby spader.rb --skeleton <extension name>")
79
- exit(0)
80
- end
81
-
82
- if generate_skeleton
83
- title = ARGV[1]
84
-
85
- if title.nil?()
86
- dmsg("ruby spader.rb --skeleton <extension name>")
87
- exit(0)
88
- end
89
-
90
- dmsg("Initializing extension: #{title}")
91
- generate_skeleton(__dir__ + "/#{title.downcase().gsub(" ", "_")}/", title)
92
- exit(0)
93
- end
94
-
95
- browser = ARGV[0]
96
- environment = ARGV[1]
97
- version = ARGV[2].dup()
98
-
99
- browser_requires_polyfill = is_browser_chromal?(browser)
100
- build_info = DateTime.now().strftime("%Y-%m-%d @ %H:%M:%S")
101
- out_dir = "dist/#{environment}/#{browser}/"
102
- camel_domain = "dissident.be"
103
- api_endpoint = "dissident.be"
104
- charts_domain = "charts-dev.camelcamelcamel.com"
105
- #analytics_endpoint = "127.0.0.1:8787/"
106
- analytics_endpoint = "hello.camelcamelcamel.com/camelizer"
107
- zoom_levels = [0.25, 0.33, 0.5, 0.67, 0.75, 0.8, 0.9, 1.0, 1.1, 1.25, 1.5, 1.75, 2.0, 2.5, 3.0, 4.0, 5.0]
108
-
109
- case browser
110
- when "firefox"
111
- zoom_levels = [0.3, 0.5, 0.67, 0.8, 0.9, 1.0, 1.1, 1.2, 1.33, 1.5, 1.7, 2.0, 2.4, 3.0]
112
- when "safari"
113
- zoom_levels = []
114
- end
115
-
116
- case environment
117
- when "production"
118
- out_dir << "#{version}/"
119
- camel_domain = "camelcamelcamel.com"
120
- api_endpoint = "izer.camelcamelcamel.com"
121
- charts_domain = "charts.camelcamelcamel.com"
122
- when "development"
123
- version << "000"
124
- end
125
-
126
- if dl_libs
127
- dl_libs(__dir__)
128
- exit(0)
129
- end
130
-
131
- required_domains = [
132
- "camelcamelcamel.com",
133
- "amazon.com",
134
- "amazon.co.uk",
135
- "amazon.fr",
136
- "amazon.de",
137
- "amazon.es",
138
- "amazon.ca",
139
- "amazon.it",
140
- "amazon.com.au",
141
- "camelizer.net",
142
- "camelizer.org",
143
- ]
144
-
145
- html_templates = [
146
- "html/main.html.erb",
147
- "html/background.html.erb",
148
- "html/camel.html.erb",
149
- "html/options.html.erb",
150
- ]
151
-
152
- js_templates = [
153
- "js/3camelizer.js.erb",
154
- "js/main.js.erb",
155
- "js/background.js.erb",
156
- "js/camel.js.erb",
157
- "js/options.js.erb",
158
- "js/content_script/announce.js.erb",
159
- ]
160
-
161
- static_files = [
162
- "js/jquery/jquery-3.5.1.min.js",
163
- "js/foundation/foundation.js",
164
- "js/tooltipster/tooltipster.bundle.js",
165
- "js/util/what-input.js",
166
- "js/content_script/get_all_anchors.js",
167
- "js/content_script/set_firstrun_options.js",
168
- "js/introjs/intro.js",
169
- "txt/privacy.txt",
170
- "icon/icon-16.png",
171
- "icon/icon-32.png",
172
- "icon/icon-48.png",
173
- "icon/icon-64.png",
174
- "icon/icon-96.png",
175
- "icon/icon-128.png",
176
- "icon/icon-256.png",
177
- "icon/help-logo.png",
178
- "icon/gradient.png",
179
- "icon/chart_error.png",
180
- "font/fa-solid-900.woff2",
181
- "font/KFOmCnqEu92Fr1Mu7GxKOzY.woff2",
182
- "font/KFOmCnqEu92Fr1Mu4mxK.woff2"
183
- ]
184
-
185
- if browser_requires_polyfill
186
- static_files << "js/browser/browser-polyfill.min.js"
187
- end
188
-
189
- translated_files = {
190
- "manifest/#{browser}.json" => "manifest.json",
191
- #"config/#{browser}.js" => "config.js",
192
- #"environment/#{environment}.js" => "environment.js",
193
- }
194
-
195
- dirs = [
196
- ]
197
-
198
- case browser
199
- when"firefox"
200
- translated_files["txt/links.txt"] = "amo-reviewer-links.txt"
201
- end
202
-
203
- SassC.load_paths << (__dir__ + "/scss/")
204
- SassC.load_paths << (__dir__ + "/scss/foundation/")
205
-
206
- dmsg("BUILDING #{browser}/#{environment} into #{out_dir}")
207
-
208
- Dir.chdir(__dir__)
209
-
210
- if Dir.exists?(out_dir)
211
- dmsg(" Removing old dirs")
212
- FileUtils.remove_dir(out_dir)
213
- end
214
-
215
- dmsg(" Ensuring dirs exist")
216
- FileUtils.mkdir_p(out_dir)
217
-
218
- dmsg(" Compiling SCSS")
219
- Dir.chdir(__dir__ + "/scss/")
220
- scss = SassC::Engine.new(read_file("3camelizer.scss"), style: :expanded).render()
221
-
222
- Dir.chdir(__dir__)
223
-
224
- dmsg(" Writing #{pretty_float(scss.length().to_f() / 1024.0)} KB to #{out_dir}/3camelizer.css")
225
- write_file("#{out_dir}/3camelizer.css", scss)
226
-
227
- if browser == "safari"
228
- Dir.chdir(__dir__ + "/scss/")
229
- scss = SassC::Engine.new(read_file("safari.scss"), style: :expanded).render()
230
-
231
- Dir.chdir(__dir__)
232
-
233
- dmsg(" Writing #{pretty_float(scss.length().to_f() / 1024.0)} KB to #{out_dir}/safari.css")
234
- write_file("#{out_dir}/safari.css", scss)
235
- end
236
-
237
- dmsg(" Rendering JS")
238
- js_templates.each do |infile|
239
- outfile = out_dir + File.basename(infile, ".erb")
240
- dmsg(" Rendering #{infile} to #{outfile}")
241
- js = render(infile)
242
- dmsg(" Writing #{pretty_float(js.length().to_f() / 1024.0)} KB")
243
- write_file(outfile, js)
244
- end
245
-
246
- dmsg(" Rendering HTML...")
247
- html_templates.each do |infile|
248
- outfile = out_dir + File.basename(infile, ".erb")
249
- dmsg(" Rendering #{infile} to #{outfile}")
250
- html = render(infile)
251
- dmsg(" Writing #{pretty_float(html.length().to_f() / 1024.0)} KB")
252
- write_file(outfile, html)
253
- end
254
-
255
- dmsg(" Copying files...")
256
-
257
- static_files.each do |infile|
258
- outfile = out_dir + File.basename(infile)
259
- dmsg(" Copying #{infile} to #{outfile}")
260
- FileUtils.cp(infile, outfile)
261
- end
262
-
263
- translated_files.each do |infile,outfile|
264
- outpath = out_dir + outfile
265
- dmsg(" Copying #{infile} to #{outpath}")
266
- FileUtils.cp(infile, outpath)
267
- end
268
-
269
- dirs.each do |indir|
270
- Dir.entries(indir).each do |entry|
271
- if entry[0, 1] == "."
272
- next
273
- end
274
-
275
- dmsg(" Copying #{indir + "/" + entry} to #{out_dir + entry}")
276
-
277
- FileUtils.cp(indir + "/" + entry, out_dir + entry)
278
- end
279
- end
280
-
281
- dmsg(" Copying _locales to #{out_dir + "_locales"}")
282
- FileUtils.cp_r("_locales", out_dir + "_locales")
283
-
284
- dmsg(" Updating manifest.json")
285
- manifest = JSON.parse(read_file(out_dir + "manifest.json"))
286
- manifest["version"] = version
287
-
288
- perms = [
289
- "activeTab",
290
- "storage",
291
- # "cookies",
292
- #"tabs",
293
- ]
294
-
295
- if !is_browser_chromal?(browser)
296
- perms << "tabs"
297
- end
298
-
299
- required_domains.each do |dom|
300
- perms << "http://#{dom}/*"
301
- perms << "https://#{dom}/*"
302
- perms << "http://*.#{dom}/*"
303
- perms << "https://*.#{dom}/*"
304
- end
305
-
306
- manifest["permissions"] += perms
307
-
308
- if environment == "development"
309
- manifest["permissions"] << "http://*.dissident.be/*"
310
- manifest["permissions"] << "http://dissident.be/*"
311
- manifest["permissions"] << "https://*.dissident.be/*"
312
- manifest["permissions"] << "https://dissident.be/*"
313
- end
314
-
315
- manifest["default_locale"] = "en"
316
-
317
- manifest["options_ui"] = {
318
- "page" => "options.html",
319
- }
320
-
321
- write_file(out_dir + "manifest.json", JSON.pretty_generate(manifest))
322
-
323
- if zip_it
324
- dmsg(" Creating zip archive...")
325
- zip_file = ZipFileGenerator.new(out_dir, "dist/3camelizer-#{browser}-#{environment}-#{version}.zip")
326
- zip_file.write()
327
- end
328
-
329
- dmsg("Build complete!")
1
+ # encoding: UTF-8
2
+ #!/usr/bin/env ruby
3
+
4
+ # SPADER
5
+ # WebExtension maker's toolkit.
6
+ # Copyright (C) 2020 Cosmic Shovel, Inc.
7
+
8
+ require "spader"
9
+
10
+ #require_relative "rb/dl_libs"
11
+ #require_relative "rb/rendering_helpers"
12
+
13
+ ########################################################################################
14
+
15
+ if ARGV.length() == 0 || ARGV[0] == "--help" || ARGV[0] == "-h"
16
+ puts "Usage: spader <command> <args>\nvalid commands: generate, download, build, help\nspader <command> --help"
17
+ exit(0)
18
+ end
19
+
20
+ spader_command = ARGV[0]
21
+ spader_command_args = ARGV.drop(1)
22
+
23
+ begin
24
+
25
+ case spader_command
26
+ when "build"
27
+ Spader.build(spader_command_args)
28
+ #dmsg("Building...")
29
+ #build(ARGV[1].dup(), ARGV[2].dup(), ARGV[3].dup(), ARGV[4].dup(), ARGV.include?("--zip"))
30
+ when "download"
31
+ Spader.download(spader_command_args)
32
+ #dmsg("Downloading...")
33
+ #dmsg("Not implemented!")
34
+ when "generate"
35
+ Spader.generate(spader_command_args)
36
+ #dmsg("Generating skeleton...")
37
+
38
+ #title = ARGV[1]
39
+
40
+ #if title.nil?()
41
+ # dmsg("ruby spader.rb --skeleton <extension name>")
42
+ # exit(0)
43
+ #end
44
+
45
+ #generate_skeleton(__dir__ + "/#{title.downcase().gsub(" ", "_")}/", title)
46
+ when "help"
47
+ case spader_command_args[0]
48
+ when "build"
49
+ puts "The build command compiles your code into a WebExtension."
50
+ when "download"
51
+ puts "The download command installs bit-perfect copies of third party libraries into your source directory ."
52
+ when "skeleton"
53
+ puts "The skeleton command generates an empty but build-able project directory."
54
+ else
55
+ puts "Invalid command: #{spader_command_args[0]}"
56
+ end
57
+
58
+ exit(0)
59
+ else
60
+ puts "Invalid command, exiting."
61
+ exit(0)
62
+ end
63
+ rescue Spader::Command::InvalidParametersError => e
64
+ puts "Aborting due to invalid parameters."
65
+ exit(1)
66
+ end
67
+
68
+ exit(0)
data/lib/spader.rb CHANGED
@@ -58,13 +58,13 @@ module Spader
58
58
  cmd.zip = true
59
59
  end
60
60
 
61
+ opts.on("-h", "--help", "Show this help message") do
62
+ opts.show_usage()
63
+ end
64
+
61
65
  begin
62
66
  opts.order(args) do |path|
63
- cmd.path = File.absolute_path(path, Dir.pwd)
64
-
65
- if cmd.path[-1, 1] != File::SEPARATOR
66
- cmd.path << File::SEPARATOR
67
- end
67
+ cmd.path = make_path_absolute(path, Dir.pwd, :dir)
68
68
  end
69
69
  rescue OptionParser::ParseError => e
70
70
  opts.warn(e.message)
@@ -87,17 +87,17 @@ module Spader
87
87
  exit(1)
88
88
  end
89
89
 
90
+ opts.on("-h", "--help", "Show this help message") do
91
+ opts.show_usage()
92
+ end
93
+
90
94
  if args.empty?()
91
95
  opts.show_usage()
92
96
  end
93
97
 
94
98
  begin
95
99
  opts.order(args) do |path|
96
- cmd.path = File.absolute_path(path, Dir.pwd)
97
-
98
- if cmd.path[-1, 1] != File::SEPARATOR
99
- cmd.path << File::SEPARATOR
100
- end
100
+ cmd.path = make_path_absolute(path, Dir.pwd, :dir)
101
101
  end
102
102
  rescue OptionParser::ParseError => e
103
103
  opts.warn(e.message)