ix-cli 0.0.1

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 (274) hide show
  1. checksums.yaml +7 -0
  2. data/Gemfile +3 -0
  3. data/VERSION +1 -0
  4. data/bin/ix +14 -0
  5. data/bin/ix-acronym +21 -0
  6. data/bin/ix-add +8 -0
  7. data/bin/ix-append +8 -0
  8. data/bin/ix-arguments +12 -0
  9. data/bin/ix-array +17 -0
  10. data/bin/ix-ascii +3 -0
  11. data/bin/ix-avg +18 -0
  12. data/bin/ix-aws-pass +17 -0
  13. data/bin/ix-banner +2 -0
  14. data/bin/ix-base +24 -0
  15. data/bin/ix-base64-to-image +6 -0
  16. data/bin/ix-basename +8 -0
  17. data/bin/ix-bash-to-md +17 -0
  18. data/bin/ix-bcat +184 -0
  19. data/bin/ix-bellgrep +17 -0
  20. data/bin/ix-bench +9 -0
  21. data/bin/ix-binary-to-text +8 -0
  22. data/bin/ix-blackbox +45 -0
  23. data/bin/ix-blackbox-html-table +86 -0
  24. data/bin/ix-blamer +23 -0
  25. data/bin/ix-box +35 -0
  26. data/bin/ix-box2 +3 -0
  27. data/bin/ix-box3 +3 -0
  28. data/bin/ix-camel +17 -0
  29. data/bin/ix-cat +7 -0
  30. data/bin/ix-catafter +18 -0
  31. data/bin/ix-catan +6 -0
  32. data/bin/ix-chain +13 -0
  33. data/bin/ix-chars +4 -0
  34. data/bin/ix-checklist +23 -0
  35. data/bin/ix-child-math +10 -0
  36. data/bin/ix-chomp +6 -0
  37. data/bin/ix-chr +6 -0
  38. data/bin/ix-class +5 -0
  39. data/bin/ix-columns +41 -0
  40. data/bin/ix-combinations +11 -0
  41. data/bin/ix-command-class +21 -0
  42. data/bin/ix-commandify +22 -0
  43. data/bin/ix-commit +9 -0
  44. data/bin/ix-confirm +47 -0
  45. data/bin/ix-constants +9 -0
  46. data/bin/ix-cp +10 -0
  47. data/bin/ix-crack +163 -0
  48. data/bin/ix-crap +26 -0
  49. data/bin/ix-crazy-case +9 -0
  50. data/bin/ix-create-cluster-nodes +15 -0
  51. data/bin/ix-csv-to-json +16 -0
  52. data/bin/ix-day +12 -0
  53. data/bin/ix-debugging +33 -0
  54. data/bin/ix-decode-base64 +8 -0
  55. data/bin/ix-dequote +3 -0
  56. data/bin/ix-df +15 -0
  57. data/bin/ix-diagram +47 -0
  58. data/bin/ix-dirname +5 -0
  59. data/bin/ix-divide +8 -0
  60. data/bin/ix-done +11 -0
  61. data/bin/ix-dot-case +15 -0
  62. data/bin/ix-downcase +5 -0
  63. data/bin/ix-dto +39 -0
  64. data/bin/ix-each +7 -0
  65. data/bin/ix-edit +21 -0
  66. data/bin/ix-emails +10 -0
  67. data/bin/ix-escape +8 -0
  68. data/bin/ix-extensions +3 -0
  69. data/bin/ix-file-exists +11 -0
  70. data/bin/ix-filename +7 -0
  71. data/bin/ix-files +9 -0
  72. data/bin/ix-first +6 -0
  73. data/bin/ix-fish-diagram +47 -0
  74. data/bin/ix-flip-flop +20 -0
  75. data/bin/ix-flow +22 -0
  76. data/bin/ix-format-ruby-hash +61 -0
  77. data/bin/ix-gauge +86 -0
  78. data/bin/ix-get-colors +520 -0
  79. data/bin/ix-gift-exchange +52 -0
  80. data/bin/ix-glitter +29 -0
  81. data/bin/ix-grep-join +4 -0
  82. data/bin/ix-group +21 -0
  83. data/bin/ix-groups +15 -0
  84. data/bin/ix-gsub +5 -0
  85. data/bin/ix-gzip-dir +33 -0
  86. data/bin/ix-hash +10 -0
  87. data/bin/ix-hashtag +12 -0
  88. data/bin/ix-hex2rgb +5 -0
  89. data/bin/ix-histogram +80 -0
  90. data/bin/ix-hls +21 -0
  91. data/bin/ix-html +3 -0
  92. data/bin/ix-human-time +3 -0
  93. data/bin/ix-hyphen +9 -0
  94. data/bin/ix-hypothesis +546 -0
  95. data/bin/ix-ids +10 -0
  96. data/bin/ix-image-generate +3 -0
  97. data/bin/ix-image-to-base64 +9 -0
  98. data/bin/ix-increments +16 -0
  99. data/bin/ix-indent +42 -0
  100. data/bin/ix-indent-to-dot +36 -0
  101. data/bin/ix-int +5 -0
  102. data/bin/ix-interpolate +5 -0
  103. data/bin/ix-ips +4 -0
  104. data/bin/ix-jd +13 -0
  105. data/bin/ix-join +15 -0
  106. data/bin/ix-js-classic-functions +9 -0
  107. data/bin/ix-json-append +17 -0
  108. data/bin/ix-json-array-to-records +10 -0
  109. data/bin/ix-json-format +31 -0
  110. data/bin/ix-json-grep +16 -0
  111. data/bin/ix-json-interpolate +17 -0
  112. data/bin/ix-json-key +40 -0
  113. data/bin/ix-json-key-value +14 -0
  114. data/bin/ix-json-keys +12 -0
  115. data/bin/ix-json-merge +11 -0
  116. data/bin/ix-json-paths +61 -0
  117. data/bin/ix-json-paths-pretty +2 -0
  118. data/bin/ix-json-pp +11 -0
  119. data/bin/ix-json-query +14 -0
  120. data/bin/ix-json-records-to-array +13 -0
  121. data/bin/ix-json-remove-key +15 -0
  122. data/bin/ix-json-replace-values +35 -0
  123. data/bin/ix-json-template +267 -0
  124. data/bin/ix-json-to-csv +19 -0
  125. data/bin/ix-json-to-dot +5 -0
  126. data/bin/ix-json-to-html-table +84 -0
  127. data/bin/ix-json-to-ruby-hash +13 -0
  128. data/bin/ix-json-to-table +21 -0
  129. data/bin/ix-json-to-table-2 +22 -0
  130. data/bin/ix-json-to-xml +1 -0
  131. data/bin/ix-json-values +13 -0
  132. data/bin/ix-jsonpp +14 -0
  133. data/bin/ix-lake +6 -0
  134. data/bin/ix-lemmatize +17 -0
  135. data/bin/ix-length +6 -0
  136. data/bin/ix-linkify +35 -0
  137. data/bin/ix-linkify-html +70 -0
  138. data/bin/ix-links +3 -0
  139. data/bin/ix-llp +247 -0
  140. data/bin/ix-llp-indent +20 -0
  141. data/bin/ix-llp2 +224 -0
  142. data/bin/ix-log +44 -0
  143. data/bin/ix-make-readable +13 -0
  144. data/bin/ix-man +14 -0
  145. data/bin/ix-math +6 -0
  146. data/bin/ix-maze +3 -0
  147. data/bin/ix-md5 +7 -0
  148. data/bin/ix-md5s +3 -0
  149. data/bin/ix-military +39 -0
  150. data/bin/ix-morse-to-text +76 -0
  151. data/bin/ix-mr-robot +13 -0
  152. data/bin/ix-multiply +8 -0
  153. data/bin/ix-mv +10 -0
  154. data/bin/ix-ncsa-date-to-timestamp +27 -0
  155. data/bin/ix-nested-list +23 -0
  156. data/bin/ix-nnjj +16 -0
  157. data/bin/ix-noeol +6 -0
  158. data/bin/ix-noise +7 -0
  159. data/bin/ix-normalize +69 -0
  160. data/bin/ix-numbers +4 -0
  161. data/bin/ix-numerate +16 -0
  162. data/bin/ix-occurrence +8 -0
  163. data/bin/ix-open +9 -0
  164. data/bin/ix-parse +17 -0
  165. data/bin/ix-pass +17 -0
  166. data/bin/ix-path +8 -0
  167. data/bin/ix-path-stats +21 -0
  168. data/bin/ix-pbcopy +9 -0
  169. data/bin/ix-pdf +4 -0
  170. data/bin/ix-percentage +103 -0
  171. data/bin/ix-permutations +12 -0
  172. data/bin/ix-pick +4 -0
  173. data/bin/ix-planning-tickets +27 -0
  174. data/bin/ix-prefix +7 -0
  175. data/bin/ix-pretty +3 -0
  176. data/bin/ix-print-and-run +15 -0
  177. data/bin/ix-psd-to-json +16 -0
  178. data/bin/ix-quote +12 -0
  179. data/bin/ix-rainbow +21 -0
  180. data/bin/ix-ramp +15 -0
  181. data/bin/ix-random-hypothesis +10 -0
  182. data/bin/ix-range +9 -0
  183. data/bin/ix-remove-colors +519 -0
  184. data/bin/ix-remove-empty-lines +12 -0
  185. data/bin/ix-remove-leading-spaces +11 -0
  186. data/bin/ix-remove-trailing-spaces +11 -0
  187. data/bin/ix-replace +6 -0
  188. data/bin/ix-replay +34 -0
  189. data/bin/ix-retab +13 -0
  190. data/bin/ix-reverse +5 -0
  191. data/bin/ix-right +3 -0
  192. data/bin/ix-rm +8 -0
  193. data/bin/ix-rot13 +9 -0
  194. data/bin/ix-rot3 +9 -0
  195. data/bin/ix-rps +50 -0
  196. data/bin/ix-ruby-constructor-arguments +7 -0
  197. data/bin/ix-ruby-methods +40 -0
  198. data/bin/ix-ruby-options +189 -0
  199. data/bin/ix-ruby-procs +40 -0
  200. data/bin/ix-ruby-put-vars +11 -0
  201. data/bin/ix-ruby-setter-methods +47 -0
  202. data/bin/ix-ruby-to-json +9 -0
  203. data/bin/ix-ruler +13 -0
  204. data/bin/ix-run +105 -0
  205. data/bin/ix-saldo +25 -0
  206. data/bin/ix-sat +10 -0
  207. data/bin/ix-scan +13 -0
  208. data/bin/ix-scrum +13 -0
  209. data/bin/ix-scrum-summary +12 -0
  210. data/bin/ix-sentence +23 -0
  211. data/bin/ix-sentencify-comments +12 -0
  212. data/bin/ix-show-tabs +5 -0
  213. data/bin/ix-show-trailing-spaces +10 -0
  214. data/bin/ix-shuffle +11 -0
  215. data/bin/ix-signature +7 -0
  216. data/bin/ix-size +9 -0
  217. data/bin/ix-slider +201 -0
  218. data/bin/ix-snake +25 -0
  219. data/bin/ix-split +9 -0
  220. data/bin/ix-stack +42 -0
  221. data/bin/ix-stack-2 +31 -0
  222. data/bin/ix-stamp +5 -0
  223. data/bin/ix-stats +11 -0
  224. data/bin/ix-stream +15 -0
  225. data/bin/ix-string-similarity +152 -0
  226. data/bin/ix-string-similarity2 +35 -0
  227. data/bin/ix-strip +6 -0
  228. data/bin/ix-substract +5 -0
  229. data/bin/ix-success +2 -0
  230. data/bin/ix-suffix +7 -0
  231. data/bin/ix-sum +10 -0
  232. data/bin/ix-swap +3 -0
  233. data/bin/ix-symlink +13 -0
  234. data/bin/ix-tab +6 -0
  235. data/bin/ix-tabify +7 -0
  236. data/bin/ix-tac +11 -0
  237. data/bin/ix-task +20 -0
  238. data/bin/ix-technical +7 -0
  239. data/bin/ix-template +48 -0
  240. data/bin/ix-text-to-binary +7 -0
  241. data/bin/ix-text-to-dot +22 -0
  242. data/bin/ix-text-to-json +16 -0
  243. data/bin/ix-text-to-morse +72 -0
  244. data/bin/ix-tick +20 -0
  245. data/bin/ix-time +6 -0
  246. data/bin/ix-times +10 -0
  247. data/bin/ix-timestamp +79 -0
  248. data/bin/ix-timestamp-sort +16 -0
  249. data/bin/ix-timestamp2 +14 -0
  250. data/bin/ix-title +2 -0
  251. data/bin/ix-to-f +6 -0
  252. data/bin/ix-to-i +6 -0
  253. data/bin/ix-to-sym +6 -0
  254. data/bin/ix-to_i +6 -0
  255. data/bin/ix-todo +11 -0
  256. data/bin/ix-tokenize-for-template +25 -0
  257. data/bin/ix-transpose +48 -0
  258. data/bin/ix-tree +19 -0
  259. data/bin/ix-trim +5 -0
  260. data/bin/ix-truncate +22 -0
  261. data/bin/ix-ts +6 -0
  262. data/bin/ix-tsv-to-json +15 -0
  263. data/bin/ix-ucwords +11 -0
  264. data/bin/ix-unescape +8 -0
  265. data/bin/ix-unhtml +8 -0
  266. data/bin/ix-upcase +5 -0
  267. data/bin/ix-url-check +25 -0
  268. data/bin/ix-urls +46 -0
  269. data/bin/ix-vim +9 -0
  270. data/bin/ix-words +9 -0
  271. data/bin/ix-wrap +10 -0
  272. data/bin/ix-xy +81 -0
  273. data/bin/ix-zebra +122 -0
  274. metadata +597 -0
data/bin/ix-llp ADDED
@@ -0,0 +1,247 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ # llp - Lithium Log Parser
4
+
5
+ require 'rubygems'
6
+ require 'json'
7
+ require 'time'
8
+ require 'optparse'
9
+ require 'isna'
10
+
11
+ $options = {}
12
+ OptionParser.new do |opts|
13
+ opts.banner = "Usage: #{$0} [options]"
14
+ opts.on("-e", "--errors", "Error summary.") do |v|
15
+ $options[:errors] = v
16
+ end
17
+ opts.on("-s", "--summary", "Execution summary.") do |v|
18
+ $options[:summary] = v
19
+ end
20
+ opts.on("-c", "--color", "Use color highligting.") do |v|
21
+ $options[:use_colors] = v
22
+ end
23
+ opts.on("-f", "--fetch-node-info", "Fetch node info.") do |v|
24
+ $options[:fetch_node_info] = v
25
+ end
26
+ end.parse!
27
+
28
+ def print(data)
29
+ unless $options[:errors]
30
+ puts data
31
+ end
32
+ end
33
+
34
+ def translate_timestamp(timestamp_integer)
35
+ Time.at(timestamp_integer)
36
+ end
37
+
38
+ def translate_timestamp2(timestamp_integer)
39
+ cst_delta = 21600
40
+ utc = Time.at(timestamp_integer + cst_delta)
41
+ cst = Time.at(timestamp_integer)
42
+ time = utc
43
+ "new Date(#{time.year}, #{time.month}, #{time.day}, #{time.hour}, #{time.min}, #{time.sec})"
44
+ end
45
+
46
+ def print_summary(log_object, indent, options)
47
+ colored_action = log_object['action']
48
+ method_name = log_object['method_name']
49
+ token = log_object['token']
50
+ took_time = log_object['took_time']
51
+
52
+ if options[:use_colors]
53
+ if log_object['action'] == 'error'
54
+ colored_action = log_object['action'].to_ansi.blink.red
55
+ end
56
+ if log_object['action'] == 'execute'
57
+ colored_action = log_object['action'].to_ansi.green
58
+ end
59
+ if log_object['action'] == 'executed'
60
+ colored_action = log_object['action'].to_ansi.green
61
+ end
62
+ method_name = log_object['method_name'].to_ansi.red
63
+ token = log_object['token'][0..10].to_ansi.cyan
64
+ trace_id = log_object['trace_id'][0..10].to_ansi.green rescue 'n/a'
65
+ took_time = log_object['took_time'].to_s.to_ansi.blue
66
+ end
67
+
68
+ template = indent + "%s %s %s%s %s %s in %s %s"
69
+
70
+ bindings = []
71
+ bindings.push(indent)
72
+ bindings.push(colored_action)
73
+ bindings.push(log_object['class_name'])
74
+ bindings.push('#' + method_name.to_s)
75
+ bindings.push(token)
76
+ bindings.push(trace_id)
77
+ bindings.push(log_object['pname'])
78
+ bindings.push(took_time)
79
+
80
+ if log_object['action'] == 'error'
81
+ template << "\n%s %s"
82
+ bindings.push(indent)
83
+ if options[:use_colors]
84
+ bindings.push("[#{log_object['error']['message'].to_ansi.red}]")
85
+ else
86
+ bindings.push("[#{log_object['error']['message']}]")
87
+ end
88
+ end
89
+
90
+ puts template % bindings
91
+ end
92
+
93
+ def print_detailed(log_object, indent, options)
94
+ template = "%20s: %s"
95
+ if log_object['action'] == 'execute'
96
+ print "{{{{{ #{log_object['action']} #{log_object['class_name']} #{log_object['method_name']} #{log_object['arguments']}"
97
+ end
98
+ print '------'
99
+ log_object.keys.sort.each do |key|
100
+ next if key == 'error'
101
+ if key == 'start_time'
102
+ print indent + template % [key, translate_timestamp(log_object[key])]
103
+ elsif key == 'end_time'
104
+ print indent + template % [key, translate_timestamp(log_object[key])]
105
+ elsif key == 'timestamp'
106
+ print indent + template % [key, translate_timestamp(log_object[key])]
107
+ elsif key == '_timestamp'
108
+ print indent + template % [key, translate_timestamp(log_object[key].to_f / 1000)]
109
+ elsif key == 'return'
110
+ if log_object[key].include?("\\n")
111
+ object = eval(log_object[key].to_s)
112
+
113
+
114
+ if object.is_a?(Array)
115
+ object.each_with_index do |item, index|
116
+ item = item.to_s
117
+ if item.to_s.include? "output"
118
+ begin
119
+ json = JSON.parse(item)
120
+ json['output'].each_line do |json_line|
121
+ print indent + template % [key, json_line.chomp]
122
+ end
123
+ rescue => error
124
+ print indent + template % [index, item.chomp]
125
+ end
126
+ else
127
+ print indent + template % [index, item.chomp]
128
+ end
129
+ end
130
+ end
131
+
132
+ if object.is_a?(String)
133
+ object.each_line do |line|
134
+ print indent + template % [key, line.chomp]
135
+ end
136
+ end
137
+
138
+ else
139
+ print indent + template % [key, log_object[key]]
140
+ end
141
+ else
142
+ print indent + template % [key, log_object[key]]
143
+ end
144
+ end
145
+
146
+ if log_object.keys.include?('deploy')
147
+ log_object['deploy'].keys.sort.each do |key|
148
+ print indent + template % [key, log_object['deploy'][key]]
149
+ end
150
+ end
151
+
152
+ unless options[:summary]
153
+ if log_object['action'] == 'executed'
154
+ print '}}}}}'
155
+ end
156
+ end
157
+
158
+ if log_object.keys.include?('error')
159
+ if options[:errors]
160
+ message = log_object['error']['message'][0..100].gsub(/\n/, '')
161
+ puts "#{log_object['token']} #{translate_timestamp(log_object['start_time'])} #{log_object['pname']} #{log_object['method_name']} #{message}"
162
+
163
+ if options[:fetch_node_info]
164
+ if ['create_task', 'create_document'].include?(log_object['method_name'])
165
+ puts "node ./script/getDataFromPsdServer.js --server #{log_object['pname'].split('.')[1]} --traceid #{eval(log_object['arguments'])[0]} | grep -i --color error"
166
+ system "node ./script/getDataFromPsdServer.js --server #{log_object['pname'].split('.')[1]} --traceid #{eval(log_object['arguments'])[0]} | grep -i --color error"
167
+ end
168
+ end
169
+ end
170
+
171
+ log_object['error'].keys.sort.each do |key|
172
+ if key != 'backtrace'
173
+ print indent + template % [key, log_object['error'][key]]
174
+ next
175
+ end
176
+ end
177
+ print ''
178
+ log_object['error']['backtrace'].each do |err_line|
179
+ print indent + "\t#{err_line}"
180
+ end
181
+ end
182
+
183
+ unless options[:summary]
184
+ if log_object['action'] == 'error'
185
+ print '}}}}}'
186
+ end
187
+ end
188
+
189
+ end
190
+
191
+ def print_cobalt_summary(log_object)
192
+ indent = ' ' * log_object['nesting']
193
+ output = "#{indent} #{log_object['message']}"
194
+ if log_object['time']
195
+ output << " #{log_object['time']}"
196
+ end
197
+ puts output
198
+ end
199
+
200
+ count = 0
201
+ indent = ''
202
+
203
+ STDIN.each_line do |line|
204
+ lithium_line = line.include? 'lithium'
205
+ cobalt_line = line.include? '_cobaltLog'
206
+ friendly_line = (lithium_line || cobalt_line)
207
+ next unless friendly_line
208
+
209
+ begin
210
+ log_object = JSON.parse(line)
211
+ rescue => error
212
+ $stderr.puts error.message
213
+ next
214
+ end
215
+
216
+ unless log_object['action'] # different variant of cobalt
217
+ if $options[:summary]
218
+ print_cobalt_summary(log_object)
219
+ next
220
+ end
221
+ end
222
+
223
+ if log_object['action'] == 'execute'
224
+ count += 1
225
+ end
226
+
227
+ if count < 0
228
+ count = 0
229
+ end
230
+
231
+ if $options[:summary]
232
+ indent = ' ' * count
233
+ print_summary(log_object, indent, $options)
234
+ else
235
+ indent = ' ' * count
236
+ print_detailed(log_object, indent, $options)
237
+ end
238
+
239
+ if log_object['action'] == 'executed'
240
+ count -= 1
241
+ end
242
+
243
+ if log_object['action'] == 'error'
244
+ count -= 1
245
+ end
246
+ end
247
+
data/bin/ix-llp-indent ADDED
@@ -0,0 +1,20 @@
1
+ #!/usr/bin/env bash
2
+
3
+ ix-indent 'execute ' executed:error ' '
4
+
5
+ # INDENT_REGEX = /execute /
6
+ # OUTDENT_REGEX = /executed|error/
7
+ # INDENT_STR = ' '
8
+ #
9
+ # multiplier = 0
10
+ #
11
+ # STDIN.each_line do |line|
12
+ # if line =~ OUTDENT_REGEX
13
+ # multiplier -= 1
14
+ # end
15
+ # puts "#{INDENT_STR * multiplier} #{line}"
16
+ # if line =~ INDENT_REGEX
17
+ # multiplier += 1
18
+ # end
19
+ # end
20
+ #
data/bin/ix-llp2 ADDED
@@ -0,0 +1,224 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ # llp - Lithium Log Parser
4
+
5
+ require 'optparse'
6
+
7
+ options = {}
8
+
9
+ OptionParser.new do |opts|
10
+
11
+ opts.banner = "Usage: #{$0} [OPTIONS]"
12
+
13
+ opts.on('-e', '--errors', 'Errors.') do |value|
14
+ options[:errors] = value
15
+ end
16
+
17
+ opts.on('-s', '--summary', 'Summary.') do |value|
18
+ options[:summary] = value
19
+ end
20
+
21
+ opts.on('-c', '--color', 'Color.') do |value|
22
+ options[:color] = value
23
+ end
24
+
25
+
26
+ end.parse!
27
+
28
+ required_options = [:errors, :summary, :color]
29
+ required_options.each do |option|
30
+ unless options[option]
31
+ $stderr.puts "Can not run #{option.to_s} was not given."
32
+ exit 1
33
+ end
34
+ end
35
+
36
+
37
+ require 'rubygems'
38
+ require 'json'
39
+ require 'time'
40
+ require 'isna'
41
+
42
+
43
+ def print(data)
44
+ unless $options[:errors]
45
+ puts data
46
+ end
47
+ end
48
+
49
+ def translate_timestamp(timestamp_integer)
50
+ Time.at(timestamp_integer)
51
+ end
52
+
53
+ SUMMARY_FORMAT = "%<indent>s %<action>s %<resolved_class>s %<method_name>s %<short_token_id>s %<short_trace_id>s %<pname>s %<took_time>s"
54
+
55
+ def print_summary(log_object, indent, use_colors = true)
56
+
57
+
58
+ object = log_object.symbolize_keys
59
+
60
+ object[:short_trace_id] = object[:trace_id].to_s[1..10]
61
+ object[:short_token_id] = object[:token].to_s[1..10]
62
+
63
+ if use_colors
64
+ if object[:action] == 'error'
65
+ object[:action] = object[:action].to_ansi.blink.red
66
+ end
67
+ if object[:action] == 'execute'
68
+ object[:action] = object[:action].to_ansi.green
69
+ end
70
+ if object[:action] == 'executed'
71
+ object[:action] = object[:action].to_ansi.green
72
+ end
73
+ object[:method_name] = object[:method_name].to_ansi.red
74
+
75
+
76
+ object[:short_trace_id] = object[:trace_id].to_s[1..10].to_ansi.green.to_s
77
+ object[:short_token_id] = object[:token].to_s[1..10].to_ansi.blue.to_s
78
+
79
+ object[:took_time] = object[:took_time].to_s.to_ansi.blue
80
+ end
81
+
82
+
83
+ # if log_object['action'] == 'error'
84
+ # template << "\n%s %s"
85
+ # bindings.push(indent)
86
+ # if use_colors
87
+ # bindings.push("[#{log_object['error']['message'].to_ansi.red}]")
88
+ # else
89
+ # bindings.push("[#{log_object['error']['message']}]")
90
+ # end
91
+ # end
92
+
93
+ puts format(SUMMARY_FORMAT, object)
94
+ end
95
+
96
+ def print_detailed(log_object, indent, options)
97
+ template = "%20s: %s"
98
+ if log_object['action'] == 'execute'
99
+ print "{{{{{ #{log_object['action']} #{log_object['class_name']} #{log_object['method_name']} #{log_object['arguments']}"
100
+ end
101
+ print '------'
102
+ log_object.keys.sort.each do |key|
103
+ next if key == 'error'
104
+ if key == 'start_time'
105
+ print indent + template % [key, translate_timestamp(log_object[key])]
106
+ elsif key == 'end_time'
107
+ print indent + template % [key, translate_timestamp(log_object[key])]
108
+ elsif key == 'timestamp'
109
+ print indent + template % [key, translate_timestamp(log_object[key])]
110
+ elsif key == '_timestamp'
111
+ print indent + template % [key, translate_timestamp(log_object[key].to_f / 1000)]
112
+ elsif key == 'return'
113
+ if log_object[key].include?("\\n")
114
+ object = eval(log_object[key].to_s)
115
+
116
+
117
+ if object.is_a?(Array)
118
+ object.each_with_index do |item, index|
119
+ item = item.to_s
120
+ if item.to_s.include? "output"
121
+ begin
122
+ json = JSON.parse(item)
123
+ json['output'].each_line do |json_line|
124
+ print indent + template % [key, json_line.chomp]
125
+ end
126
+ rescue => error
127
+ print indent + template % [index, item.chomp]
128
+ end
129
+ else
130
+ print indent + template % [index, item.chomp]
131
+ end
132
+ end
133
+ end
134
+
135
+ if object.is_a?(String)
136
+ object.each_line do |line|
137
+ print indent + template % [key, line.chomp]
138
+ end
139
+ end
140
+
141
+ else
142
+ print indent + template % [key, log_object[key]]
143
+ end
144
+ else
145
+ print indent + template % [key, log_object[key]]
146
+ end
147
+ end
148
+
149
+ if log_object.keys.include?('deploy')
150
+ log_object['deploy'].keys.sort.each do |key|
151
+ print indent + template % [key, log_object['deploy'][key]]
152
+ end
153
+ end
154
+
155
+ unless options[:summary]
156
+ if log_object['action'] == 'executed'
157
+ print '}}}}}'
158
+ end
159
+ end
160
+
161
+ if log_object.keys.include?('error')
162
+ if options[:errors]
163
+ message = log_object['error']['message'][0..100].gsub(/\n/, '')
164
+ puts "#{log_object['token']} #{translate_timestamp(log_object['start_time'])} #{log_object['pname']} #{log_object['method_name']} #{message}"
165
+ end
166
+
167
+ log_object['error'].keys.sort.each do |key|
168
+ if key != 'backtrace'
169
+ print indent + template % [key, log_object['error'][key]]
170
+ next
171
+ end
172
+ end
173
+ print ''
174
+ log_object['error']['backtrace'].each do |err_line|
175
+ print indent + "\t#{err_line}"
176
+ end
177
+ end
178
+
179
+ unless options[:summary]
180
+ if log_object['action'] == 'error'
181
+ print '}}}}}'
182
+ end
183
+ end
184
+
185
+ end
186
+
187
+ count = 0
188
+ indent = ''
189
+
190
+ STDIN.each_line do |line|
191
+ next unless line.include? 'lithium'
192
+
193
+ begin
194
+ log_object = JSON.parse(line)
195
+ rescue => error
196
+ $stderr.puts error.message
197
+ next
198
+ end
199
+
200
+ if log_object['action'] == 'execute'
201
+ count += 1
202
+ end
203
+
204
+ if count < 0
205
+ count = 0
206
+ end
207
+
208
+ if $options[:summary]
209
+ indent = ' ' * count
210
+ print_summary(log_object, indent, $options)
211
+ else
212
+ indent = ' ' * count
213
+ print_detailed(log_object, indent, $options)
214
+ end
215
+
216
+ if log_object['action'] == 'executed'
217
+ count -= 1
218
+ end
219
+
220
+ if log_object['action'] == 'error'
221
+ count -= 1
222
+ end
223
+ end
224
+
data/bin/ix-log ADDED
@@ -0,0 +1,44 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'json'
4
+ require 'securerandom'
5
+
6
+ $stdout.sync = true
7
+ $stdin.sync = true
8
+
9
+ TRACE_ID = ENV['TRACE_ID'] || SecureRandom.hex
10
+
11
+ def get_object(message)
12
+ object = {}
13
+ object[:trace_id] = TRACE_ID
14
+ object[:token_id] = SecureRandom.hex
15
+ object[:message] = message
16
+ object[:timestamp] = Time.now.to_f
17
+ object
18
+ end
19
+
20
+ def print_marker(marker)
21
+ object = get_object('ix log initiation marker')
22
+ puts JSON.dump(object)
23
+ end
24
+
25
+ print_markers = true
26
+
27
+ if ARGV[0]
28
+ print_markers = false
29
+ end
30
+
31
+ if print_markers
32
+ object = get_object('ix log initiation marker')
33
+ puts JSON.dump(object)
34
+ end
35
+
36
+ STDIN.each_line do |line|
37
+ object = get_object(line.chomp!)
38
+ puts JSON.dump(object)
39
+ end
40
+
41
+ if print_markers
42
+ object = get_object('ix log termination marker')
43
+ puts JSON.dump(object)
44
+ end
@@ -0,0 +1,13 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ counter = 0
4
+
5
+ STDIN.each_char do |char|
6
+ counter += 1
7
+ print char
8
+ if counter == 4
9
+ print ' '
10
+ counter = 0
11
+ next
12
+ end
13
+ end
data/bin/ix-man ADDED
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env bash
2
+
3
+ # stole from: http://unix.stackexchange.com/questions/164575/highlight-the-current-search-match-in-man-pages
4
+
5
+ if [ "$1" == "" ]; then
6
+ echo "Buddy, I can't find a man page if you don't give me a command.."
7
+ exit 1
8
+ fi
9
+
10
+ man -P "sh -c \"col -b | vim -c 'set ft=man ts=8 nomod nolist nonu' \
11
+ -c 'nnoremap i <nop>' \
12
+ -c 'nnoremap <Space> <C-f>' \
13
+ -c 'noremap q :quit<CR>' -\"" $1
14
+
data/bin/ix-math ADDED
@@ -0,0 +1,6 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ STDIN.each_line do |line|
4
+ puts "#{line.chomp} = #{eval(line)}"
5
+ end
6
+
data/bin/ix-maze ADDED
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env bash
2
+
3
+ system "ix words | ix box | ix chain | ix gsub '\w' ' ' | par -j | ix shuffle | ix box3"
data/bin/ix-md5 ADDED
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'digest/md5'
4
+
5
+ STDIN.each_line do |line|
6
+ puts Digest::MD5.hexdigest(line.chomp)
7
+ end
data/bin/ix-md5s ADDED
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ system "ix scan '[a-f0-9]{32}'"
data/bin/ix-military ADDED
@@ -0,0 +1,39 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ map = {
4
+ 'A' => 'Alpha',
5
+ 'B' => 'Bravo',
6
+ 'C' => 'Charlie',
7
+ 'D' => 'Delta',
8
+ 'E' => 'Echo',
9
+ 'F' => 'Foxtrot',
10
+ 'G' => 'Golf',
11
+ 'H' => 'Hotel',
12
+ 'I' => 'India',
13
+ 'J' => 'Juliet',
14
+ 'K' => 'Kilo',
15
+ 'L' => 'Lima',
16
+ 'M' => 'Mike',
17
+ 'N' => 'November',
18
+ 'O' => 'Oscar',
19
+ 'P' => 'Papa',
20
+ 'Q' => 'Quebec',
21
+ 'R' => 'Romeo',
22
+ 'S' => 'Sierra',
23
+ 'T' => 'Tango',
24
+ 'U' => 'Uniform',
25
+ 'V' => 'Victor',
26
+ 'W' => 'Whiskey',
27
+ 'X' => 'X-Ray',
28
+ 'Y' => 'Yankee',
29
+ 'Z' => 'Zulu',
30
+ }
31
+
32
+ STDIN.each_line do |line|
33
+ puts ''
34
+ chars = []
35
+ line.chomp.each_char do |char|
36
+ chars.push(map[char.upcase])
37
+ end
38
+ puts line.chomp + ' = ' + (chars * '-') + '!'
39
+ end
@@ -0,0 +1,76 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ class Morse
4
+
5
+ MAPPING = {
6
+ 'a' => '.-',
7
+ 'b' => '-...',
8
+ 'c' => '-.-.',
9
+ 'd' => '-..',
10
+ 'e' => '.',
11
+ 'f' => '..-.',
12
+ 'g' => '--.',
13
+ 'h' => '....',
14
+ 'i' => '..',
15
+ 'j' => '.---',
16
+ 'k' => '-.-',
17
+ 'l' => '.-..',
18
+ 'm' => '--',
19
+ 'n' => '-.',
20
+ 'o' => '---',
21
+ 'p' => '.--.',
22
+ 'q' => '--.-',
23
+ 'r' => '.-.',
24
+ 's' => '...',
25
+ 't' => '-',
26
+ 'u' => '..-',
27
+ 'v' => '...-',
28
+ 'w' => '.--',
29
+ 'x' => '-..-',
30
+ 'y' => '-.--',
31
+ 'z' => '--..',
32
+ '0' => '-----',
33
+ '1' => '.----',
34
+ '2' => '..---',
35
+ '3' => '...--',
36
+ '4' => '....-',
37
+ '5' => '.....',
38
+ '6' => '-....',
39
+ '7' => '--...',
40
+ '8' => '---..',
41
+ '9' => '----.',
42
+ ' ' => ' / ',
43
+ }
44
+
45
+ def self.text_to_morse(string)
46
+ result = ''
47
+ string.scan(/[a-zA-Z0-9]| /).each do |word|
48
+ word.each_char do |char|
49
+ result << MAPPING[char] + ' '
50
+ end
51
+ result << ' / '
52
+ end
53
+ result
54
+ end
55
+
56
+ def self.morse_to_text(string)
57
+ result = ''
58
+ string.split(' / ').each do |word|
59
+ word.split(' ').each do |char|
60
+ MAPPING.each do |k, v|
61
+ if v == char
62
+ result << k
63
+ end
64
+ end
65
+ end
66
+ result << ' '
67
+ end
68
+ result
69
+ end
70
+
71
+ end
72
+
73
+ STDIN.each_line do |line|
74
+ puts Morse.morse_to_text(line)
75
+ end
76
+