slyce 1.2.5 → 1.3.0

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/bin/slyce +28 -4
  3. data/bin/slyced +3 -3
  4. data/slyce.gemspec +1 -1
  5. metadata +5 -5
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 87533fb98af597c5c0db5ee86c5bf43bd036d48c135dcd670308f470abd0d9e6
4
- data.tar.gz: 23a914d5c339f06b5713633ab7d51997617957a4188e745effbd2e909fc192ff
3
+ metadata.gz: 1327a9e50802b5e802b1be542681b0c7d051d13e2fd354f20dd12a28b46c14c0
4
+ data.tar.gz: cf79a752ce4346d7a0d3a5756ec564e92b512ad454d7e567c89757575c0d334e
5
5
  SHA512:
6
- metadata.gz: 2cb87eb5c536252a3ea0a393850fac9851738965d3aeb15f70be67a6be24655d8b0168ab1c718c86457293f182ef468a4e286364b71a9a1761968d88aaf567d5
7
- data.tar.gz: c7c5e8211890e4c3b9a5606dab94f22a9db2c266d1090e89b07b64f429d15539e790c4431a3d4833ed8f9d6449d26a83d7421e0330e2f97382ed83cc70ccee30
6
+ metadata.gz: eeaf579fd814d9db6c1120ec2cab9291acad26a14d8c30bbca3585c173b05909e25812c84af2f3524586baba162e0c71429300aff49d5a912444c96a8dbf4fc7
7
+ data.tar.gz: abfcf38eeac61002eefe660ff95fabfeadf7439aa60beb33908ac95c2bbd1b1375ceeeb954b4bdaa08a4687a5b2f8f4b316757e9fb78e8fd27a79723277124a4
data/bin/slyce CHANGED
@@ -11,7 +11,7 @@ dbas = nil
11
11
  tabl = nil
12
12
 
13
13
  OptionParser.new.instance_eval do
14
- @version = "1.2.5"
14
+ @version = "1.3.0"
15
15
  @banner = "usage: #{program_name} [options] <database> <table>"
16
16
 
17
17
  on "--csv" , "Output comma separated values"
@@ -75,10 +75,29 @@ end
75
75
 
76
76
  # ==[ Let 'er rip! ]==
77
77
 
78
- conn = Mysql2::Client.new(database: dbas, as: :array)
78
+ if dbas.include?("/")
79
+ dbas = $' if dbas =~ %r|^mysql://| # drop mysql:// prefix, if present
80
+ auth, dbas = dbas.split("/", 2)
81
+ if auth =~ /^(?:(\w+)(?::([^@]+))?@)?(?:([^:]+)?(?::(\d+))?)$/
82
+ user, pass, host, port = $1, $2, $3, $4 # user:pass@host:port
83
+ conf = {
84
+ database: dbas,
85
+ username: $1,
86
+ password: $2,
87
+ host: $3,
88
+ port: $4,
89
+ }.compact
90
+ else
91
+ abort "invalid database value #{dbas.inspect}"
92
+ end
93
+ else
94
+ conf = { database: dbas }
95
+ end
96
+
97
+ conn = Mysql2::Client.new(**conf, as: :array)
79
98
  resu = conn.query("select * from `#{tabl}` limit 0")
80
99
  cols = resu.fields
81
- want = want.empty? ? cols : want & cols
100
+ want = want.empty? ? cols : want.select {|e| cols.include?(e) }
82
101
 
83
102
  if opts[:columns]
84
103
  puts cols
@@ -102,7 +121,7 @@ if xprt
102
121
 
103
122
  seps = xcsv ? "," : xtsv ? "\t" : xpsv ? "|" : abort("unknown separator #{seps.inspect}")
104
123
 
105
- Censive.writer(sep: seps) do |csv|
124
+ Censive.write(sep: seps) do |csv|
106
125
  csv << want unless hide
107
126
  data.each do |row|
108
127
  csv << row.map {|e| asky ? AnyAscii.transliterate(e.to_s) : e.to_s }
@@ -112,6 +131,11 @@ if xprt
112
131
  exit
113
132
  end
114
133
 
134
+ # MySQL 5.7 compatible version (still need to find replacement for regexp_instr)
135
+ # -if((`#{name}` rlike '^[-+]?((0|([1-9]\\\\d*)(\\\\.\\\\d*)?)|((0|([1-9]\\\\d*))\\\\.\\\\d+))$'), `#{name}` + 0, null) desc,
136
+ # -if((`#{name}` rlike '^0\\\\d+$'), length(`#{name}`), null) desc,
137
+ # -if((`#{name}` rlike '^\\\\d'), regexp_instr(`#{name}`, '[^\\\\d]'), null) desc,
138
+
115
139
  want.each do |name|
116
140
  sort = natu ? "" : "cnt desc,"
117
141
  stmt = show ? "limit #{show}" : ""
data/bin/slyced CHANGED
@@ -11,7 +11,7 @@ dbas = nil
11
11
  tabl = nil
12
12
 
13
13
  OptionParser.new.instance_eval do
14
- @version = "1.2.5"
14
+ @version = "1.3.0"
15
15
  @banner = "usage: #{program_name} [options] <database> <table>"
16
16
 
17
17
  on "--csv" , "Output comma separated values"
@@ -83,7 +83,7 @@ resu = conn.query(<<~end)
83
83
  order by ordinal_position
84
84
  end
85
85
  cols = resu.to_a.flatten
86
- want = want.empty? ? cols : want & cols
86
+ want = want.empty? ? cols : want.select {|e| cols.include?(e) }
87
87
 
88
88
  if opts[:columns]
89
89
  puts cols
@@ -107,7 +107,7 @@ if xprt
107
107
 
108
108
  seps = xcsv ? "," : xtsv ? "\t" : xpsv ? "|" : abort("unknown separator #{seps.inspect}")
109
109
 
110
- Censive.writer(sep: seps) do |csv|
110
+ Censive.write(sep: seps) do |csv|
111
111
  csv << want unless hide
112
112
  data.each do |row|
113
113
  csv << row.map {|e| asky ? AnyAscii.transliterate(e.to_s) : e.to_s }
data/slyce.gemspec CHANGED
@@ -12,7 +12,7 @@ Gem::Specification.new do |s|
12
12
  s.files = `git ls-files`.split("\n") - %w[.gitignore]
13
13
  s.executables = `cd bin && git ls-files .`.split("\n")
14
14
  s.add_runtime_dependency "any_ascii", "~> 0.3.2"
15
- s.add_runtime_dependency "censive", "~> 1.0.3"
15
+ s.add_runtime_dependency "censive", "~> 1.1.0"
16
16
  s.add_runtime_dependency "duckdb", "~> 0.8.0"
17
17
  s.add_runtime_dependency "extralite-bundle", "~> 1.25"
18
18
  s.add_runtime_dependency "mysql2", "~> 0.5"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: slyce
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.5
4
+ version: 1.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Steve Shreeve
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-06-15 00:00:00.000000000 Z
11
+ date: 2023-06-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: any_ascii
@@ -30,14 +30,14 @@ dependencies:
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: 1.0.3
33
+ version: 1.1.0
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: 1.0.3
40
+ version: 1.1.0
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: duckdb
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -115,7 +115,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
115
115
  - !ruby/object:Gem::Version
116
116
  version: '0'
117
117
  requirements: []
118
- rubygems_version: 3.2.33
118
+ rubygems_version: 3.4.14
119
119
  signing_key:
120
120
  specification_version: 4
121
121
  summary: Ruby utility to show data statistics for MySQL databases