hsss 0.1.22 → 0.1.24

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 (5) hide show
  1. checksums.yaml +4 -4
  2. data/exe/hsss +2 -0
  3. data/lib/hsss/version.rb +1 -1
  4. data/lib/hsss.rb +22 -7
  5. metadata +3 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ab9670f9e9bc65678262837155e1d719ff1229aacf60ddbb252dfc60db21e1e0
4
- data.tar.gz: e3fb68fb25dcca408cade5e93428171c43954ae677b8246244740de15f2d0f06
3
+ metadata.gz: 9b326a1ea17b5af3b409257a920bf4b34b3574fad92aa5bebd1b1e9936e10442
4
+ data.tar.gz: d4a828beb961c683c4c8b5b3c4edb08b080f76b99e7a385f7f30217ab6fe06a4
5
5
  SHA512:
6
- metadata.gz: 29fdbf0eea60e178839c45f95bcb8430cd0d1b195d66c6bb204c1bc7f884cf5004b77db99896b21bab01b6e68d3b1ca0194237dc1b6696786000709ff9f0cbe3
7
- data.tar.gz: f72929dd7afcbf6ded15f647d71b6eb13b2adc23c574ae665e41b3984895df72479a87ca0f8064d564bb5d1c611fdef97ab2eca9895dd803273e7cfd2fc58f1f
6
+ metadata.gz: 0aaa3566110eed57a52c527a9f81d464e4c79f44159449eb027b28c9c758a6f4a4a55ae0d4fe7fdb2fe5095a1502a48f12bce32dc955254bb3cbd6bfd1a39c75
7
+ data.tar.gz: 8b8da08b03629fbfd86cc4b5f7166d7fa17df28669f6b170826419ff13810e5a940b2083bed8bb6869fca4027d8862f36244e35ecdc59ea6c79d867fcfb14099
data/exe/hsss CHANGED
@@ -16,6 +16,8 @@ arg=OptionParser.new do |opts|
16
16
  opts.on("--no-count", "Omit script count variable"){opt[:skip_count]=true}
17
17
  opts.on("--count-macro [#{Hsss::DEFAULT_COUNT_MACRO_NAME}]", "integer script count variable"){|v| opt[:count_macro_name]=v}
18
18
  opts.on("--no-count-macro", "Omit script count variable"){opt[:skip_count_macro]=true}
19
+ opts.on("--all-hashes-string [#{Hsss::DEFAULT_ALL_HASHES_STRING_NAME}]", "all hashes string macro name"){|v| opt[:all_hashes_string_name]=v}
20
+ opts.on("--no-all-hashes-string", "Omit the string with all the script hashes"){opt[:skip_all_hashes_string]=true}
19
21
  opts.on("--each-macro [#{Hsss::DEFAULT_ITER_MACRO_NAME}]", "Iterator macro"){|v| opt[:iter_macro_name]=v}
20
22
  opts.on("--no-each", "Omit the iterator macro"){opt[:skip_each]=true}
21
23
  opts.on("--no-parse", "Skip using luac to check script syntax"){opt[:no_luac]=true}
data/lib/hsss/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Hsss
2
- VERSION = "0.1.22"
2
+ VERSION = "0.1.24"
3
3
  end
data/lib/hsss.rb CHANGED
@@ -10,11 +10,12 @@ module Hsss
10
10
  DEFAULT_COUNT_NAME="lua_scripts_count"
11
11
  DEFAULT_COUNT_MACRO_NAME="LUA_SCRIPTS_COUNT"
12
12
  DEFAULT_ITER_MACRO_NAME="LUA_SCRIPTS_EACH"
13
+ DEFAULT_ALL_HASHES_STRING_NAME="LUA_SCRIPTS_ALL_HASHES"
13
14
  DEFAULT_PREFIX="redis_"
14
15
 
15
16
  class COutput
16
17
  EXT="lua"
17
- attr_accessor :struct_name, :hashes_struct, :names_struct, :scripts_struct, :count_name, :count_macro_name, :iter_macro_name, :row_struct_name
18
+ attr_accessor :struct_name, :hashes_struct, :names_struct, :scripts_struct, :count_name, :count_macro_name, :all_hashes_string_name, :iter_macro_name, :row_struct_name
18
19
 
19
20
  def cased_prefix(prefix, name)
20
21
  if name
@@ -36,7 +37,9 @@ module Hsss
36
37
  scripts_struct: DEFAULT_SCRIPTS_NAME,
37
38
  count_name: DEFAULT_COUNT_NAME,
38
39
  count_macro_name: DEFAULT_COUNT_MACRO_NAME,
39
- iter_macro_name: DEFAULT_ITER_MACRO_NAME}
40
+ iter_macro_name: DEFAULT_ITER_MACRO_NAME,
41
+ all_hashes_string_name: DEFAULT_ALL_HASHES_STRING_NAME,
42
+ }
40
43
 
41
44
  names.each do |var, default|
42
45
  send "#{var}=", opt[var]!=false ? opt[var] || cased_prefix(opt[:prefix], default) : false
@@ -47,6 +50,7 @@ module Hsss
47
50
  @include_count = !opt[:skip_count]
48
51
  @include_count_macro = !opt[:skip_count_macro]
49
52
  @include_iter_macro = !opt[:skip_each]
53
+ @include_all_hashes_macro = !opt[:skip_all_hashes_string]
50
54
  @header_guard = opt[:header_guard] || "LUA_SCRIPTS_H"
51
55
  @header_guard = false if @header_guard.length == 0
52
56
  @include_hash = !!hashes_struct
@@ -90,14 +94,22 @@ module Hsss
90
94
  end
91
95
 
92
96
  def count_macro
93
- if @include_count_macro
94
- macro = "#define #{count_macro_name} #{@scripts.count}\n"
95
- else
96
- ""
97
- end
97
+ return "" unless @include_count_macro
98
+ "#define #{count_macro_name} #{@scripts.count}\n"
98
99
  end
99
100
 
101
+ def all_hashes_string_macro
102
+ return "" unless @include_all_hashes_macro
103
+ "#define #{all_hashes_string_name} \"#{@hashed_table.join " "}\"\n"
104
+ end
105
+
100
106
  def check_script(path)
107
+ luac_exists_ret = system "command -v luac &>/dev/null"
108
+ unless luac_exists_ret
109
+ @failed = true
110
+ STDERR.puts "luac is missing, cannot check script #{path}"
111
+ return false
112
+ end
101
113
  ret = system "luac -p #{path}"
102
114
  @failed = true unless ret
103
115
  ret
@@ -172,6 +184,7 @@ module Hsss
172
184
  out << "//no scrpts\n"
173
185
  end
174
186
  out << "const int #{@count_name}=#{@scripts.count};\n" if @include_count
187
+ out << all_hashes_string_macro
175
188
  out << count_macro
176
189
  out << iter_macro
177
190
  end
@@ -248,6 +261,7 @@ module Hsss
248
261
  out << sprintf(@headf, @struct.join("\n"))
249
262
  out << "extern #{@static}#{struct_name} #{scripts_struct};\n"
250
263
  out << "extern const int #{@count_name};\n" if @include_count
264
+ out << all_hashes_string_macro
251
265
  out << count_macro
252
266
  out << iter_macro
253
267
  if @header_guard
@@ -261,6 +275,7 @@ module Hsss
261
275
  else
262
276
  out << sprintf(@cout, (@struct || []).join("\n"), (scrapts || []).join(",\n\n"))
263
277
  out << "const int #{@count_name}=#{@scripts.count};\n" if @include_count
278
+ out << all_hashes_string_macro
264
279
  out << count_macro
265
280
  out << iter_macro
266
281
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hsss
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.22
4
+ version: 0.1.24
5
5
  platform: ruby
6
6
  authors:
7
7
  - Leo P.
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-04-18 00:00:00.000000000 Z
11
+ date: 2022-12-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -93,7 +93,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
93
93
  - !ruby/object:Gem::Version
94
94
  version: '0'
95
95
  requirements: []
96
- rubygems_version: 3.3.8
96
+ rubygems_version: 3.3.25
97
97
  signing_key:
98
98
  specification_version: 4
99
99
  summary: Hash-Safe Script Splinterer