slyce 1.2.5 → 1.3.0

Sign up to get free protection for your applications and to get access to all the features.
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