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-catan ADDED
@@ -0,0 +1,6 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ # machin request.
4
+
5
+ puts 'chill!'
6
+
data/bin/ix-chain ADDED
@@ -0,0 +1,13 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ items = []
4
+
5
+ STDIN.each_line do |line|
6
+ items.push(line.chomp)
7
+ end
8
+
9
+ items.map! do |item|
10
+ "[#{item}]"
11
+ end
12
+
13
+ puts items.join(' -> ')
data/bin/ix-chars ADDED
@@ -0,0 +1,4 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ system "ix scan '.'"
4
+
data/bin/ix-checklist ADDED
@@ -0,0 +1,23 @@
1
+ #!/usr/bin/env ruby
2
+
3
+
4
+ template = "
5
+ <p>
6
+ <input id='%s' type='checkbox' />
7
+ <label for='%s'>
8
+ %s
9
+ </label>
10
+ </p>
11
+ "
12
+
13
+ counter = 0
14
+
15
+ STDIN.each_line do |line|
16
+ counter += 1
17
+ id = "item_#{counter}"
18
+ bindings = []
19
+ bindings.push(id)
20
+ bindings.push(id)
21
+ bindings.push(line.chomp)
22
+ puts template % bindings
23
+ end
data/bin/ix-child-math ADDED
@@ -0,0 +1,10 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ standard = '0123456789'
4
+ children = '1000101021'
5
+
6
+ STDIN.each_line do |line|
7
+ line = line.chomp
8
+ puts line.chomp.tr(standard, children)
9
+ end
10
+
data/bin/ix-chomp ADDED
@@ -0,0 +1,6 @@
1
+ #!/usr/bin/env bash
2
+
3
+ STDIN.each_line do |line|
4
+ $stdout.write line.chomp
5
+ end
6
+
data/bin/ix-chr ADDED
@@ -0,0 +1,6 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ STDIN.each_line do |line|
4
+ puts line.chomp.to_i.chr
5
+ end
6
+
data/bin/ix-class ADDED
@@ -0,0 +1,5 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ STDIN.each_line do |line|
4
+ puts "class #{line.chomp}\nend"
5
+ end
data/bin/ix-columns ADDED
@@ -0,0 +1,41 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'tmpdir'
4
+
5
+ # decomposes each line into columns
6
+ # applying transformations on each column.
7
+
8
+ class Formatter
9
+ REGEX = /(\d+)(\:)([^$]+)/
10
+ def initialize(string)
11
+ @string = string
12
+ end
13
+ def valid?
14
+ @string =~ REGEX
15
+ end
16
+ def column
17
+ @string.scan(REGEX)[0][0].to_i
18
+ end
19
+ def processor
20
+ @string.scan(REGEX)[0][2]
21
+ end
22
+ end
23
+
24
+ def resolve_processor(column)
25
+ end
26
+
27
+ SPLITTER = /\s+/
28
+
29
+ STDIN.each_line do |line|
30
+ output = []
31
+ columns = line.chomp.split(SPLITTER)
32
+
33
+ ARGV.each do |value|
34
+ formatter = Formatter.new(value)
35
+ next unless formatter.valid?
36
+ output.push(`echo #{columns[formatter.column]} | #{formatter.processor}`.chomp)
37
+ end
38
+
39
+ puts output * ' '
40
+ end
41
+
@@ -0,0 +1,11 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ sets = []
4
+
5
+ STDIN.each_line do |line|
6
+ sets.push(line)
7
+ end
8
+
9
+ sets.combination((ARGV[0] || 2).to_i).each do |set|
10
+ puts set * "\t"
11
+ end
@@ -0,0 +1,21 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ attributes = ARGV[1..(ARGV.size - 1)]
4
+
5
+ template = attributes.map do |attribute|
6
+ "%<#{attribute}>s"
7
+ end
8
+
9
+ template = (template * ' ').inspect
10
+
11
+ puts "class #{ARGV[0]}"
12
+ puts "ATTRIBUTES = #{attributes.inspect}"
13
+ puts "TEMPLATE = #{template}"
14
+ attributes.each do |attribute|
15
+ puts " attr_accessor :#{attribute}"
16
+ end
17
+ puts "def to_s"
18
+ puts "end"
19
+ puts "def execute"
20
+ puts "end"
21
+ puts "end"
data/bin/ix-commandify ADDED
@@ -0,0 +1,22 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ def commandify(string)
4
+ words = {}
5
+ interpolation_buffer = []
6
+ string.scan(/\w+/).each do |word|
7
+ word.downcase!
8
+ interpolation_buffer.push(word)
9
+ end
10
+ interpolation = (interpolation_buffer * '_')
11
+ words[string] = "%<#{interpolation}>s"
12
+ words
13
+ end
14
+
15
+ STDIN.each_line do |line|
16
+ line = line.chomp!
17
+ hash = commandify(line)
18
+ hash.each do |k, v|
19
+ puts "#{k} #{v}"
20
+ end
21
+ end
22
+
data/bin/ix-commit ADDED
@@ -0,0 +1,9 @@
1
+ #!/usr/bin/env ruby
2
+
3
+
4
+ STDIN.each_line do |line|
5
+ line.scan(/[a-f0-9]{40}/).each do |commit|
6
+ puts commit
7
+ end
8
+ end
9
+
data/bin/ix-confirm ADDED
@@ -0,0 +1,47 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ commands = []
4
+
5
+ File.read(ARGV[0]).each_line do |line|
6
+ commands.push(line.chomp)
7
+ end
8
+
9
+ commands.each do |command|
10
+
11
+ puts "confirm: #{command}"
12
+
13
+ x = gets
14
+
15
+ puts x
16
+
17
+ # puts "Confirm (abort, skip, yes, or y): #{command} "
18
+
19
+ # puts "response: #{response.inspect}"
20
+
21
+ # next
22
+
23
+ # if response == "abort\n"
24
+ # puts 'Exiting now..'
25
+ # exit 0
26
+ # end
27
+
28
+ # if response == "skip\n"
29
+ # puts 'Skipping..'
30
+ # next
31
+ # end
32
+
33
+ # if response == "yes\n"
34
+ # puts 'Executing..'
35
+ # system command
36
+ # next
37
+ # end
38
+
39
+ # if response == "y\n"
40
+ # puts 'Executing..'
41
+ # system command
42
+ # next
43
+ # end
44
+
45
+ # puts 'doing nothing..'
46
+
47
+ end
data/bin/ix-constants ADDED
@@ -0,0 +1,9 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ WORDS_REGEX = /\w+/
4
+
5
+ STDIN.each_line do |line|
6
+ words = line.scan(WORDS_REGEX)
7
+ puts words.map { |word| word.upcase } * '_'
8
+ end
9
+
data/bin/ix-cp ADDED
@@ -0,0 +1,10 @@
1
+ #!/usr/bin/env bash
2
+
3
+ source_application=$1
4
+ target_application=$2
5
+ target_path=`dirname $0`
6
+ source_file="$target_path/ix-$source_application"
7
+ target_file="$target_path/ix-$target_application"
8
+
9
+ cp $source_file $target_file
10
+
data/bin/ix-crack ADDED
@@ -0,0 +1,163 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ # ==============================================================================
4
+ # Array hack.
5
+ # ==============================================================================
6
+ # from: https://apidock.com/rails/Array/in_groups_of
7
+ # File activesupport/lib/active_support/core_ext/array/grouping.rb, line 20
8
+ class Array
9
+ def in_groups_of(number, fill_with = nil)
10
+ if number.to_i <= 0
11
+ raise ArgumentError,
12
+ "Group size must be a positive integer, was #{number.inspect}"
13
+ end
14
+
15
+ if fill_with == false
16
+ collection = self
17
+ else
18
+ # size % number gives how many extra we have;
19
+ # subtracting from number gives how many to add;
20
+ # modulo number ensures we don't add group of just fill.
21
+ padding = (number - size % number) % number
22
+ collection = dup.concat(Array.new(padding, fill_with))
23
+ end
24
+
25
+ if block_given?
26
+ collection.each_slice(number) { |slice| yield(slice) }
27
+ else
28
+ collection.each_slice(number).to_a
29
+ end
30
+ end
31
+ end
32
+
33
+ # ==============================================================================
34
+ # CRACK IMPLEMENTATION.
35
+ # ==============================================================================
36
+
37
+ require 'tmpdir'
38
+ require 'json'
39
+
40
+ class Crack
41
+
42
+ MASTER_FUNCTION = %q{
43
+ trap "exit 1" SIGQUIT
44
+ function run_crack_file() {
45
+ $* 2>&1
46
+ if [ "$?" != "0" ]; then
47
+ kill -SIGQUIT $$
48
+ fi
49
+ }
50
+ }
51
+
52
+ SET_FUNCTION = %q{
53
+ function run_command() {
54
+ uuid=`uuidgen`
55
+ echo $* > /tmp/$uuid
56
+ data=`bash /tmp/$uuid 2>&1`
57
+ status=$?
58
+ if [ "$status" != "0" ]; then
59
+ echo "$uuid NG $*"
60
+ echo "$data" | sed "s/^/`date +%s` `echo $uuid` /"
61
+ rm /tmp/$uuid
62
+ exit 1
63
+ else
64
+ echo "$uuid OK $*"
65
+ echo "$data" | sed "s/^/`date +%s` `echo $uuid` /"
66
+ rm /tmp/$uuid
67
+ fi
68
+ }
69
+ }
70
+
71
+ # Crack - The most lines of crack you do, the best it will feel.
72
+ #
73
+ # Receives a *queue* array of system commands to be executed.
74
+ # and executes them in parallel using a subshelling optimization.
75
+ #
76
+ # You may wonder what is the behavior of this parallelization.
77
+ # Is it asynchronous or synchronous?
78
+ #
79
+ # Crack is Asynchronous by nature because it is parallelizing
80
+ # execution. But it will hide all that handling complexity within
81
+ # itself. And it will not return until all of the asynchronicity
82
+ # chaos has been dealt with. So you can assume that it is asynchronous
83
+ # internally but this method will return only after all the executions
84
+ # finished.
85
+ #
86
+ # threads Fixnum can never be zero, an exception will be thrown.
87
+ # queue Array size can never be zero, an exception will be thrown.
88
+ #
89
+ def self.schedule(queue, threads = 16)
90
+ Dir.mktmpdir do |directory|
91
+ chunk_size = queue.size / threads
92
+ chunk_size = 1 if chunk_size == 0
93
+ master_file = "#{directory}/master.crack"
94
+ File.open(master_file, 'w+') do |master_file|
95
+ master_file.puts MASTER_FUNCTION
96
+ sets = queue.in_groups_of(chunk_size)
97
+ sets.each_with_index do |set, set_index|
98
+ set_file_name = "#{directory}/set_#{set_index}.crack"
99
+ if set_index == sets.size - 1
100
+ master_file.puts 'run_crack_file "bash ' + set_file_name + '"'
101
+ else
102
+ master_file.puts 'run_crack_file "bash ' + set_file_name + '" &'
103
+ end
104
+ File.open(set_file_name, 'w+') do |set_file|
105
+ set_file.puts SET_FUNCTION
106
+ set.compact.each do |item|
107
+ set_file.puts "run_command #{item.inspect}"
108
+ end
109
+ end
110
+ end
111
+ master_file.puts 'wait'
112
+ end
113
+
114
+ # Detects exit status of zero
115
+ # if process exits with error on ubuntu, fucked up right?.
116
+ # system "bash #{master_file} &> #{directory}/crack.log"
117
+ system "bash #{master_file} >>#{directory}/crack.log 2>&1"
118
+
119
+ File.read("#{directory}/crack.log").each_line do |line|
120
+ info = {
121
+ :trace => line.chomp,
122
+ :threads => threads
123
+ }
124
+ puts info.to_json
125
+ end
126
+
127
+ unless $?.success?
128
+ data = {
129
+ :queue => queue,
130
+ :threads => threads,
131
+ :time => Time.now.to_i
132
+ }
133
+ sleep 2 # process exits, but data is still streaming.
134
+ File.open("#{directory}/crack.log", 'a+') do |file|
135
+ file.puts data.inspect
136
+ end
137
+ debug_file = "/tmp/crack_debug_#{Time.now.to_f}.log"
138
+ system "cp #{directory}/crack.log #{debug_file}"
139
+ raise "Commands given to crack break, please debug: #{debug_file}"
140
+ end
141
+
142
+ end
143
+ end
144
+
145
+ end
146
+
147
+ # ==============================================================================
148
+ # IX CLIENT CODE.
149
+ # ==============================================================================
150
+
151
+ commands = []
152
+
153
+ STDIN.each_line do |line|
154
+ commands.push(line.chomp)
155
+ end
156
+
157
+ threads = ARGV[0] || 4
158
+ threads = threads.to_i
159
+
160
+
161
+ Crack.schedule(commands, threads)
162
+
163
+
data/bin/ix-crap ADDED
@@ -0,0 +1,26 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ regex = /[a-z0-9A-Z]+/
4
+
5
+ replace = ARGV[0] || 'crap'
6
+
7
+ needle = 0
8
+
9
+ upper_case_chars = ('A'..'Z').to_a
10
+
11
+ STDIN.each_char do |char|
12
+ if char =~ regex
13
+ if upper_case_chars.include?(char)
14
+ print replace[needle].upcase
15
+ else
16
+ print replace[needle]
17
+ end
18
+ needle += 1
19
+ if needle == replace.size
20
+ needle = 0
21
+ end
22
+ else
23
+ print char
24
+ end
25
+ end
26
+
data/bin/ix-crazy-case ADDED
@@ -0,0 +1,9 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ options = [:downcase, :upcase]
4
+
5
+ STDIN.each_char do |char|
6
+ STDOUT.write(char.send(options.shuffle.first))
7
+ end
8
+
9
+
@@ -0,0 +1,15 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ target = ARGV[0].to_i
4
+
5
+ STDIN.each_line do |line|
6
+ puts ''
7
+ puts 'node = ClusterNode.new'
8
+ puts "node.ip = #{line.chomp.inspect}"
9
+ puts "node.target = 'fusion#{target}'"
10
+ puts "node.name = 'Fusion Render Node #{target}'"
11
+ puts "node.enabled = false"
12
+ puts "node.save!"
13
+ target += 1
14
+ end
15
+
@@ -0,0 +1,16 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'rubygems'
4
+ require 'json'
5
+ require 'csv'
6
+
7
+ STDIN.each_line do |line|
8
+ CSV.parse(line.force_encoding("iso-8859-1").encode("utf-8")) do |row|
9
+ object = {}
10
+ row.size.times do |column|
11
+ key = ARGV[column] || "column-#{column}"
12
+ object[key] = row[column]
13
+ end
14
+ puts object.to_json
15
+ end
16
+ end
data/bin/ix-day ADDED
@@ -0,0 +1,12 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'time'
4
+
5
+ map = {}
6
+
7
+ STDIN.each_line do |line|
8
+ ts = line.chomp.to_i
9
+ time = Time.at(ts)
10
+ puts "#{ts} - #{time.year}.#{time.month}.#{time.day}"
11
+ end
12
+
data/bin/ix-debugging ADDED
@@ -0,0 +1,33 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ class Counter
4
+ class << self
5
+ def get
6
+ File.read('/tmp/counter').to_i
7
+ end
8
+ def set(value)
9
+ File.open('/tmp/counter', 'w+') do |file|
10
+ file.puts(value)
11
+ end
12
+ end
13
+ def increase
14
+ set(get + 1)
15
+ end
16
+ def decrease
17
+ set(get - 1)
18
+ end
19
+ def to_human
20
+ get.to_s.rjust(4, '0')
21
+ end
22
+ end
23
+ end
24
+
25
+
26
+ STDIN.each_line do |line|
27
+ puts ''
28
+ Counter.increase
29
+ puts "#{Counter.to_human} - Debugging: #{ARGV[0]}: #{line.chomp}"
30
+ puts '--------------------------------------------------------------------------------'
31
+ puts ''
32
+ end
33
+
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'json'
4
+ require 'base64'
5
+
6
+ STDIN.each_line do |line|
7
+ print Base64.decode64(line)
8
+ end
data/bin/ix-dequote ADDED
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env bash
2
+
3
+ ix scan '"[^"]+"' | sed 's/"//g'
data/bin/ix-df ADDED
@@ -0,0 +1,15 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ # /dev/xvdi 2.9T 1.2T 1.7T 42% /ebs/stage-new
4
+
5
+ STDIN.each_line do |line|
6
+ puts ''
7
+ chunks = line.chomp.split(/\s+/)
8
+ puts "Device: #{chunks[0]}"
9
+ puts "Total Size: #{chunks[1]}"
10
+ puts "Space Used: #{chunks[2]}"
11
+ puts "Space Available: #{chunks[3]}"
12
+ puts "Percentage Used: #{chunks[4]}"
13
+ puts "Mount Point: #{chunks[5]}"
14
+ end
15
+
data/bin/ix-diagram ADDED
@@ -0,0 +1,47 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'tree_node'
4
+
5
+ class Node
6
+ include Tree::Node
7
+ attr_accessor :level
8
+ attr_accessor :label
9
+ def initialize(level, label)
10
+ @level = level
11
+ @label = label
12
+ end
13
+ def to_s
14
+ "<Node level:#{level}, label:#{label}, children: #{children.size}>"
15
+ end
16
+ def relations
17
+ children.map do |child|
18
+ "#{label.inspect} -> #{child.label.inspect}"
19
+ end
20
+ end
21
+ end
22
+
23
+ SPACER = /\s\s\s\s/
24
+
25
+ nodes = []
26
+
27
+ STDIN.each_line do |line|
28
+ label = line.chomp.gsub(SPACER, '')
29
+ level = line.chomp.scan(SPACER).size
30
+ node = Node.new(level, label)
31
+ nodes.push(node)
32
+ nodes.reverse.find do |previous_node|
33
+ if previous_node.level < node.level
34
+ previous_node.add_child(node)
35
+ end
36
+ end
37
+ end
38
+
39
+ puts 'digraph diagram {'
40
+ puts "rankdir = #{ARGV[0] || 'LR'};"
41
+ nodes.first.map(:down) do |node|
42
+ node.relations.each do |relation|
43
+ puts relation
44
+ end
45
+ end
46
+ puts '}'
47
+
data/bin/ix-dirname ADDED
@@ -0,0 +1,5 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ STDIN.each_line do |line|
4
+ puts File.dirname(line.chomp)
5
+ end
data/bin/ix-divide ADDED
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ divisor = ARGV[0].to_i.to_f
4
+
5
+ STDIN.each_line do |line|
6
+ puts line.to_i / divisor
7
+ end
8
+
data/bin/ix-done ADDED
@@ -0,0 +1,11 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ REGEX = /(^\s*)(.*)/
4
+ PREFIX = ARGV[0] || '# '
5
+
6
+ STDIN.each_line do |line|
7
+ chunks = line.chomp.scan(REGEX)
8
+ space, data = chunks[0]
9
+ puts "#{space}# DONE: #{data}"
10
+ end
11
+
data/bin/ix-dot-case ADDED
@@ -0,0 +1,15 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ def to_dot_case(string)
4
+ string.gsub!('_', ' ')
5
+ words = string.scan(/\w+/)
6
+ words.map! do |word|
7
+ word.downcase
8
+ end
9
+ words * '.'
10
+ end
11
+
12
+ STDIN.each_line do |line|
13
+ puts to_dot_case(line.chomp!)
14
+ end
15
+
data/bin/ix-downcase ADDED
@@ -0,0 +1,5 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ STDIN.each_line do |line|
4
+ puts line.chomp.downcase
5
+ end