universal_pipe_handler 0.0.10

Sign up to get free protection for your applications and to get access to all the features.
Files changed (123) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +461 -0
  3. data/doc/README.gen +417 -0
  4. data/doc/todo/todo_for_the_universal_pipe_handler_project.md +300 -0
  5. data/img/UNIVERSAL_PIPE_HANDLER_LOGO.jpg +0 -0
  6. data/img/pipe_paradise.png +0 -0
  7. data/lib/universal_pipe_handler/base/base.rb +147 -0
  8. data/lib/universal_pipe_handler/cmdlet/cmdlet.rb +287 -0
  9. data/lib/universal_pipe_handler/cmdlets/add.rb +15 -0
  10. data/lib/universal_pipe_handler/cmdlets/add_audio.rb +22 -0
  11. data/lib/universal_pipe_handler/cmdlets/all.rb +37 -0
  12. data/lib/universal_pipe_handler/cmdlets/any.rb +25 -0
  13. data/lib/universal_pipe_handler/cmdlets/ascii_video.rb +30 -0
  14. data/lib/universal_pipe_handler/cmdlets/assign.rb +24 -0
  15. data/lib/universal_pipe_handler/cmdlets/capture_screen.rb +46 -0
  16. data/lib/universal_pipe_handler/cmdlets/colourize.rb +35 -0
  17. data/lib/universal_pipe_handler/cmdlets/convert_to.rb +21 -0
  18. data/lib/universal_pipe_handler/cmdlets/convert_to_images.rb +17 -0
  19. data/lib/universal_pipe_handler/cmdlets/convert_to_mp3.rb +28 -0
  20. data/lib/universal_pipe_handler/cmdlets/convert_to_wav.rb +17 -0
  21. data/lib/universal_pipe_handler/cmdlets/copy_directories.rb +23 -0
  22. data/lib/universal_pipe_handler/cmdlets/count_character.rb +31 -0
  23. data/lib/universal_pipe_handler/cmdlets/count_longest_row.rb +21 -0
  24. data/lib/universal_pipe_handler/cmdlets/crop.rb +26 -0
  25. data/lib/universal_pipe_handler/cmdlets/cut.rb +101 -0
  26. data/lib/universal_pipe_handler/cmdlets/days.rb +41 -0
  27. data/lib/universal_pipe_handler/cmdlets/decolourize.rb +25 -0
  28. data/lib/universal_pipe_handler/cmdlets/download.rb +30 -0
  29. data/lib/universal_pipe_handler/cmdlets/download_torrent.rb +17 -0
  30. data/lib/universal_pipe_handler/cmdlets/duration.rb +34 -0
  31. data/lib/universal_pipe_handler/cmdlets/extract.rb +27 -0
  32. data/lib/universal_pipe_handler/cmdlets/extract_all.rb +23 -0
  33. data/lib/universal_pipe_handler/cmdlets/extract_audio.rb +30 -0
  34. data/lib/universal_pipe_handler/cmdlets/extract_video.rb +18 -0
  35. data/lib/universal_pipe_handler/cmdlets/find_all.rb +40 -0
  36. data/lib/universal_pipe_handler/cmdlets/generate_random_video.rb +29 -0
  37. data/lib/universal_pipe_handler/cmdlets/generate_string.rb +27 -0
  38. data/lib/universal_pipe_handler/cmdlets/get_all_audio_files.rb +33 -0
  39. data/lib/universal_pipe_handler/cmdlets/get_all_files.rb +61 -0
  40. data/lib/universal_pipe_handler/cmdlets/get_all_images.rb +47 -0
  41. data/lib/universal_pipe_handler/cmdlets/get_all_images_including_subdirs.rb +26 -0
  42. data/lib/universal_pipe_handler/cmdlets/get_all_video_files.rb +34 -0
  43. data/lib/universal_pipe_handler/cmdlets/get_last_characters.rb +24 -0
  44. data/lib/universal_pipe_handler/cmdlets/help.rb +36 -0
  45. data/lib/universal_pipe_handler/cmdlets/identify.rb +29 -0
  46. data/lib/universal_pipe_handler/cmdlets/increase_audio.rb +26 -0
  47. data/lib/universal_pipe_handler/cmdlets/install.rb +32 -0
  48. data/lib/universal_pipe_handler/cmdlets/match_regex.rb +24 -0
  49. data/lib/universal_pipe_handler/cmdlets/n_directories.rb +25 -0
  50. data/lib/universal_pipe_handler/cmdlets/n_files.rb +20 -0
  51. data/lib/universal_pipe_handler/cmdlets/n_words.rb +25 -0
  52. data/lib/universal_pipe_handler/cmdlets/number_lines.rb +34 -0
  53. data/lib/universal_pipe_handler/cmdlets/open_in_browser.rb +40 -0
  54. data/lib/universal_pipe_handler/cmdlets/pad_left.rb +20 -0
  55. data/lib/universal_pipe_handler/cmdlets/pad_right.rb +20 -0
  56. data/lib/universal_pipe_handler/cmdlets/play.rb +18 -0
  57. data/lib/universal_pipe_handler/cmdlets/position.rb +21 -0
  58. data/lib/universal_pipe_handler/cmdlets/processes.rb +18 -0
  59. data/lib/universal_pipe_handler/cmdlets/random.rb +21 -0
  60. data/lib/universal_pipe_handler/cmdlets/random_video.rb +23 -0
  61. data/lib/universal_pipe_handler/cmdlets/read_file.rb +44 -0
  62. data/lib/universal_pipe_handler/cmdlets/read_line.rb +31 -0
  63. data/lib/universal_pipe_handler/cmdlets/read_n_lines.rb +38 -0
  64. data/lib/universal_pipe_handler/cmdlets/read_n_lines_inverted.rb +36 -0
  65. data/lib/universal_pipe_handler/cmdlets/remove_audio.rb +22 -0
  66. data/lib/universal_pipe_handler/cmdlets/remove_comments.rb +26 -0
  67. data/lib/universal_pipe_handler/cmdlets/remove_directories.rb +29 -0
  68. data/lib/universal_pipe_handler/cmdlets/remove_html.rb +25 -0
  69. data/lib/universal_pipe_handler/cmdlets/remove_newlines.rb +23 -0
  70. data/lib/universal_pipe_handler/cmdlets/remove_numbers.rb +25 -0
  71. data/lib/universal_pipe_handler/cmdlets/repackage_to.rb +27 -0
  72. data/lib/universal_pipe_handler/cmdlets/replace_underscores.rb +29 -0
  73. data/lib/universal_pipe_handler/cmdlets/resize.rb +39 -0
  74. data/lib/universal_pipe_handler/cmdlets/resize_image.rb +45 -0
  75. data/lib/universal_pipe_handler/cmdlets/reverse.rb +22 -0
  76. data/lib/universal_pipe_handler/cmdlets/screenshot.rb +41 -0
  77. data/lib/universal_pipe_handler/cmdlets/search_torrent.rb +24 -0
  78. data/lib/universal_pipe_handler/cmdlets/seconds.rb +23 -0
  79. data/lib/universal_pipe_handler/cmdlets/select.rb +23 -0
  80. data/lib/universal_pipe_handler/cmdlets/show_lines.rb +31 -0
  81. data/lib/universal_pipe_handler/cmdlets/shuffle.rb +16 -0
  82. data/lib/universal_pipe_handler/cmdlets/shuffle_csv.rb +55 -0
  83. data/lib/universal_pipe_handler/cmdlets/size.rb +21 -0
  84. data/lib/universal_pipe_handler/cmdlets/sort_alphabetical.rb +20 -0
  85. data/lib/universal_pipe_handler/cmdlets/sort_by_date.rb +23 -0
  86. data/lib/universal_pipe_handler/cmdlets/starts_with.rb +25 -0
  87. data/lib/universal_pipe_handler/cmdlets/stat_file.rb +61 -0
  88. data/lib/universal_pipe_handler/cmdlets/to_ascii.rb +38 -0
  89. data/lib/universal_pipe_handler/cmdlets/to_camel_case.rb +38 -0
  90. data/lib/universal_pipe_handler/cmdlets/to_dna.rb +31 -0
  91. data/lib/universal_pipe_handler/cmdlets/to_movie.rb +16 -0
  92. data/lib/universal_pipe_handler/cmdlets/to_pdf.rb +58 -0
  93. data/lib/universal_pipe_handler/cmdlets/translate.rb +36 -0
  94. data/lib/universal_pipe_handler/cmdlets/upload_to.rb +29 -0
  95. data/lib/universal_pipe_handler/cmdlets/word_count.rb +39 -0
  96. data/lib/universal_pipe_handler/cmdlets/word_wrap.rb +26 -0
  97. data/lib/universal_pipe_handler/cmdlets/write_to.rb +51 -0
  98. data/lib/universal_pipe_handler/cmdlets/years.rb +30 -0
  99. data/lib/universal_pipe_handler/cmdlets_handler/cmdlets_handler.rb +193 -0
  100. data/lib/universal_pipe_handler/colours/colourize.rb +112 -0
  101. data/lib/universal_pipe_handler/colours/colours.rb +54 -0
  102. data/lib/universal_pipe_handler/configuration/configuration.rb +18 -0
  103. data/lib/universal_pipe_handler/constants/constants.rb +201 -0
  104. data/lib/universal_pipe_handler/dataset/dataset.rb +14 -0
  105. data/lib/universal_pipe_handler/project/project.rb +36 -0
  106. data/lib/universal_pipe_handler/requires/do_require_the_individual_cmdlet_files.rb +21 -0
  107. data/lib/universal_pipe_handler/requires/require_the_universal_pipe_handler.rb +14 -0
  108. data/lib/universal_pipe_handler/shell/shell.rb +256 -0
  109. data/lib/universal_pipe_handler/toplevel_methods/all_actions.rb +48 -0
  110. data/lib/universal_pipe_handler/toplevel_methods/cmdlet_directory.rb +22 -0
  111. data/lib/universal_pipe_handler/toplevel_methods/e.rb +16 -0
  112. data/lib/universal_pipe_handler/toplevel_methods/misc.rb +54 -0
  113. data/lib/universal_pipe_handler/toplevel_methods/rds.rb +18 -0
  114. data/lib/universal_pipe_handler/toplevel_methods/token.rb +18 -0
  115. data/lib/universal_pipe_handler/version/version.rb +19 -0
  116. data/lib/universal_pipe_handler/yaml/aliases_to_cmdlets.yml +250 -0
  117. data/lib/universal_pipe_handler/yaml/allowed_cmdlets.yml +118 -0
  118. data/lib/universal_pipe_handler/yaml/predefined_methods.yml +15 -0
  119. data/lib/universal_pipe_handler.rb +5 -0
  120. data/test/testing_the_universal_pipe_handler.rb +65 -0
  121. data/test/this_file +46 -0
  122. data/universal_pipe_handler.gemspec +80 -0
  123. metadata +299 -0
@@ -0,0 +1,287 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ # === UniversalPipeHandler::Cmdlet
6
+ #
7
+ # This class will evaluate a single cmdlet instruction.
8
+ #
9
+ # What is a cmdlet?
10
+ #
11
+ # A cmdlet, also known as a commandlet, is an individual pipe-element
12
+ # such as the two commandlets ls and nl in the following pipe
13
+ # instruction:
14
+ #
15
+ # 'ls | nl'
16
+ #
17
+ # Usage example for class Cmdlet:
18
+ #
19
+ # UniversalPipeHandler::Cmdlet.new(ARGV)
20
+ #
21
+ # =========================================================================== #
22
+ # require 'universal_pipe_handler/cmdlet/cmdlet.rb'
23
+ # =========================================================================== #
24
+ require 'universal_pipe_handler/base/base.rb'
25
+
26
+ module UniversalPipeHandler
27
+
28
+ class Cmdlet < Base # === UniversalPipeHandler::Cmdlet
29
+
30
+ require 'universal_pipe_handler/toplevel_methods/misc.rb'
31
+
32
+ # ========================================================================= #
33
+ # === NAMESPACE
34
+ # ========================================================================= #
35
+ NAMESPACE = inspect
36
+
37
+ # ========================================================================= #
38
+ # === initialize
39
+ # ========================================================================= #
40
+ def initialize(
41
+ commandline_arguments = ARGV,
42
+ run_already = true
43
+ )
44
+ reset
45
+ # ======================================================================= #
46
+ # Must ensure that it is an Array at all times:
47
+ # ======================================================================= #
48
+ commandline_arguments = [commandline_arguments].flatten.compact
49
+ set_commandline_arguments(
50
+ commandline_arguments
51
+ )
52
+ set_content(commandline_arguments.first)
53
+ case run_already
54
+ # ======================================================================= #
55
+ # === :do_not_run_yet
56
+ # ======================================================================= #
57
+ when :do_not_run_yet
58
+ run_already = false
59
+ end
60
+ run if run_already
61
+ end
62
+
63
+ # ========================================================================= #
64
+ # === reset (reset tag)
65
+ # ========================================================================= #
66
+ def reset
67
+ super()
68
+ # ======================================================================= #
69
+ # === @namespace
70
+ # ======================================================================= #
71
+ @namespace = NAMESPACE
72
+ # ======================================================================= #
73
+ # === @internal_hash
74
+ # ======================================================================= #
75
+ @internal_hash = {}
76
+ # ======================================================================= #
77
+ # === :valid_action
78
+ #
79
+ # This will be true if the action is valid.
80
+ # ======================================================================= #
81
+ @internal_hash[:valid_action] = false
82
+ # ======================================================================= #
83
+ # === :content
84
+ # ======================================================================= #
85
+ @internal_hash[:content] = nil
86
+ # ======================================================================= #
87
+ # === :may_we_exit
88
+ # ======================================================================= #
89
+ @internal_hash[:may_we_exit] = true
90
+ set_start_dir
91
+ # ======================================================================= #
92
+ # === :pipe_aliases
93
+ # ======================================================================= #
94
+ @internal_hash[:pipe_aliases] = YAML.load_file(
95
+ UniversalPipeHandler.file_pipe_aliases
96
+ )
97
+ end
98
+
99
+ # ========================================================================= #
100
+ # === set_content
101
+ # ========================================================================= #
102
+ def set_content(i)
103
+ i = i.join(' ') if i.is_a? Array
104
+ @internal_hash[:content] = i.dup
105
+ # sanitize_content
106
+ end
107
+
108
+ # ========================================================================= #
109
+ # === strip!
110
+ # ========================================================================= #
111
+ def strip!
112
+ @internal_hash[:content].strip! if @internal_hash[:content]
113
+ end
114
+
115
+ # ========================================================================= #
116
+ # === content?
117
+ # ========================================================================= #
118
+ def content?
119
+ @internal_hash[:content]
120
+ end; alias content content? # === content
121
+ alias string? content? # === string?
122
+ alias input? content? # === input?
123
+
124
+ # ========================================================================= #
125
+ # === to_s
126
+ # ========================================================================= #
127
+ def to_s
128
+ @internal_hash[:content].to_s
129
+ end
130
+
131
+ # ========================================================================= #
132
+ # === pipe_aliases?
133
+ # ========================================================================= #
134
+ def pipe_aliases?
135
+ @internal_hash[:pipe_aliases]
136
+ end
137
+
138
+ # ========================================================================= #
139
+ # === may_we_exit?
140
+ # ========================================================================= #
141
+ def may_we_exit?
142
+ @internal_hash[:may_we_exit]
143
+ end
144
+
145
+ # ========================================================================= #
146
+ # === result?
147
+ # ========================================================================= #
148
+ def result?
149
+ ::UniversalPipeHandler.result?
150
+ end
151
+
152
+ # ========================================================================= #
153
+ # === run (run tag)
154
+ # ========================================================================= #
155
+ def run
156
+ try_to_find_an_alias
157
+ evaluate_the_content
158
+ end
159
+
160
+ # ========================================================================= #
161
+ # === set_start_dir
162
+ # ========================================================================= #
163
+ def set_start_dir(i = return_pwd)
164
+ @internal_hash[:start_dir] = i
165
+ end
166
+
167
+ # ========================================================================= #
168
+ # === start_dir?
169
+ # ========================================================================= #
170
+ def start_dir?
171
+ @internal_hash[:start_dir]
172
+ end
173
+
174
+ # ========================================================================= #
175
+ # === set_result
176
+ # ========================================================================= #
177
+ def set_result(i)
178
+ ::UniversalPipeHandler.set_result(i)
179
+ end
180
+
181
+ # ========================================================================= #
182
+ # === try_to_find_an_alias
183
+ #
184
+ # We try to find an alias here.
185
+ # ========================================================================= #
186
+ def try_to_find_an_alias
187
+ input_may_include_an_alias = false
188
+ first_command = content?.split(' ')
189
+ if pipe_aliases?.keys.include? first_command
190
+ # ===================================================================== #
191
+ # In this case, we don't need to do any replacement, because the
192
+ # key is already registered.
193
+ # ===================================================================== #
194
+ else # else try to find an alias.
195
+ # ===================================================================== #
196
+ # Grab the possible results next:
197
+ # ===================================================================== #
198
+ result = pipe_aliases?.keys.select { |entry|
199
+ content?.include? entry
200
+ }
201
+ # ===================================================================== #
202
+ # Next sort it by size so we get the highest entry first:
203
+ # ===================================================================== #
204
+ result = result.sort_by(&:length).reverse
205
+ # ===================================================================== #
206
+ # Result may now be something like this Array here:
207
+ #
208
+ # ["read file", "read"]
209
+ #
210
+ # ===================================================================== #
211
+ input_may_include_an_alias = true unless result.empty?
212
+ if input_may_include_an_alias
213
+ # =================================================================== #
214
+ # We grab the first entry.
215
+ # =================================================================== #
216
+ first = result.first
217
+ the_alias = pipe_aliases?[first]
218
+ content?.gsub!(/#{first}/,the_alias)
219
+ else # else we don't have an alias. Pass through then.
220
+ end
221
+ end
222
+ end
223
+
224
+ # ========================================================================= #
225
+ # === evaluate_the_content
226
+ #
227
+ # Here we must fetch the toplevel method.
228
+ # ========================================================================= #
229
+ def evaluate_the_content(
230
+ content = content?
231
+ )
232
+ _ = content.dup
233
+ if _.include? ' '
234
+ _ = _.split(' ').first
235
+ end
236
+ ::UniversalPipeHandler.set_working_directory(start_dir?)
237
+ _ = return_alias_to_this_cmdlet_or_leave_it_unmodified(_)
238
+ name_of_the_method = 'cmdlet_'+_.to_s
239
+ unless UniversalPipeHandler.respond_to?(name_of_the_method.to_sym)
240
+ # Require all toplevel methods next:
241
+ require 'universal_pipe_handler/requires/do_require_the_individual_cmdlet_files.rb'
242
+ UniversalPipeHandler.do_require_the_individual_cmdlet_files
243
+ end
244
+ _result = ::UniversalPipeHandler.send(name_of_the_method.to_sym)
245
+ if _result.is_a? Array
246
+ set_result(_result)
247
+ end
248
+ end; alias do_evaluate evaluate_the_content # === do_evaluate
249
+
250
+ # ========================================================================= #
251
+ # === return_alias_to_this_cmdlet_or_leave_it_unmodified
252
+ # ========================================================================= #
253
+ def return_alias_to_this_cmdlet_or_leave_it_unmodified(
254
+ i, pipe_aliases = pipe_aliases?
255
+ )
256
+ if pipe_aliases.has_key? i
257
+ i = pipe_aliases[i]
258
+ end
259
+ return i
260
+ end
261
+
262
+ # ========================================================================= #
263
+ # === UniversalPipeHandler::Cmdlet[]
264
+ # ========================================================================= #
265
+ def self.[](i = '', optional_argument = nil)
266
+ new(i).data?
267
+ end
268
+
269
+ end; end
270
+
271
+ if __FILE__ == $PROGRAM_NAME
272
+ require 'colours/autoinclude'
273
+ # ========================================================================= #
274
+ # === test
275
+ # ========================================================================= #
276
+ def test(i = ARGV)
277
+ e 'In the method test: '+skyblue(
278
+ UniversalPipeHandler::Cmdlet.new(i) {{ may_we_exit: false }}
279
+ )
280
+ end
281
+ # ========================================================================= #
282
+ # Note that we will test the various formats not here but in the
283
+ # file test/testing_sanitize_pipe.rb instead.
284
+ # ========================================================================= #
285
+ test 'ls'
286
+ #test 'cat /home/x/programming/ruby/src/universal_pipe_handler/README.md'
287
+ end # cmdlet
@@ -0,0 +1,15 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ # require 'universal_pipe_handler/cmdlets/add.rb'
6
+ # =========================================================================== #
7
+ module UniversalPipeHandler
8
+
9
+ # ========================================================================= #
10
+ # === UniversalPipeHandler.cmdlet_add
11
+ # ========================================================================= #
12
+ def self.cmdlet_add(i = result?)
13
+ end; self.instance_eval { alias add cmdlet_add } # === UniversalPipeHandler.add
14
+
15
+ end
@@ -0,0 +1,22 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ # require 'universal_pipe_handler/cmdlets/add_audio.rb'
6
+ # =========================================================================== #
7
+ module UniversalPipeHandler
8
+
9
+ # ========================================================================= #
10
+ # === UniversalPipeHandler.cmdlet_add_audio
11
+ # ========================================================================= #
12
+ def self.cmdlet_add_audio(i = result?)
13
+ audio_to_add_audio = i
14
+ video_file = result?
15
+ output_file = 'new_'+video_file
16
+ _ = 'ffmpeg -vcodec copy -acodec copy -i '+audio_to_add_audio+' -i '+video_file+' '+output_file
17
+ run_sys_cmd _
18
+ set_result(output_file)
19
+ result?
20
+ end; self.instance_eval { alias add_audio cmdlet_add_audio } # === UniversalPipeHandler.add_audio
21
+
22
+ end
@@ -0,0 +1,37 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ # require 'universal_pipe_handler/cmdlets/all.rb'
6
+ # =========================================================================== #
7
+ module UniversalPipeHandler
8
+
9
+ # ========================================================================= #
10
+ # === UniversalPipeHandler.cmdlet_all
11
+ #
12
+ # This action attempts to obtain "all".
13
+ #
14
+ # The very first argument (or the first member of the Array, when i is
15
+ # an Array) is the pattern which we will use to match against.
16
+ # ========================================================================= #
17
+ def self.cmdlet_all(i)
18
+ _ = action_get_all_files
19
+ if i.is_a? Array
20
+ i.pop if i.last == 'files' # Discard "files" entry if it is the last entry.
21
+ end
22
+ if i.is_a? Array
23
+ i = i.first
24
+ end
25
+
26
+ case i
27
+ when 'files'
28
+ else
29
+ match_to_these_file_endings = i
30
+ _.reject! {|entry| entry !~ /#{match_to_these_file_endings}$/ }
31
+ end
32
+
33
+ set_result(_)
34
+ return result?
35
+ end; self.instance_eval { alias all cmdlet_all } # === UniversalPipeHandler.all
36
+
37
+ end
@@ -0,0 +1,25 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ # require 'universal_pipe_handler/cmdlets/any.rb'
6
+ # =========================================================================== #
7
+ module UniversalPipeHandler
8
+
9
+ # ========================================================================= #
10
+ # === UniversalPipeHandler.cmdlet_any (any tag)
11
+ #
12
+ # Fetch any single file.
13
+ # ========================================================================= #
14
+ def self.cmdlet_any(i = 'avi')
15
+ to_match_against = i
16
+ _ = action_get_all_files
17
+ _.reject! {|file| file !~ /#{to_match_against}$/ }
18
+ if ! _.empty?
19
+ _ = _.sample # Return the first element.
20
+ end
21
+ set_result( _)
22
+ return result?
23
+ end; self.instance_eval { alias any cmdlet_any } # === UniversalPipeHandler.any
24
+
25
+ end
@@ -0,0 +1,30 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ # require 'universal_pipe_handler/cmdlets/ascii_video.rb'
6
+ # =========================================================================== #
7
+ module UniversalPipeHandler
8
+
9
+ # ========================================================================= #
10
+ # === UniversalPipeHandler.cmdlet_ascii_video
11
+ #
12
+ # Play a video through the aalib. We may however had also default to
13
+ # libcaca, which I am trying since March 2015.
14
+ # ========================================================================= #
15
+ def self.cmdlet_ascii_video(
16
+ i = result?,
17
+ play_how = :libcaca
18
+ )
19
+ i = i.first if i.is_a? Array
20
+ case play_how
21
+ when :libcaca
22
+ _ = "mplayer -vo caca #{i}"
23
+ else # Default to allib then.
24
+ _ = "mplayer -vo aa #{i}"
25
+ end
26
+ esystem(_)
27
+ set_result
28
+ end; self.instance_eval { alias ascii_video cmdlet_ascii_video } # === UniversalPipeHandler.ascii_video
29
+
30
+ end
@@ -0,0 +1,24 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ # require 'universal_pipe_handler/cmdlets/assign.rb'
6
+ # =========================================================================== #
7
+ module UniversalPipeHandler
8
+
9
+ # ========================================================================= #
10
+ # === UniversalPipeHandler.cmdlet_assign
11
+ #
12
+ # Simply assign something here.
13
+ # ========================================================================= #
14
+ def self.cmdlet_assign(i)
15
+ if i =~ /^\d+$/ # User did input a number only.
16
+ i = Dir['*'][i.to_i - 1]
17
+ end unless File.exist? i
18
+ i = sanitize_url(i) if i.start_with? ':' # assume it is a special keyword.
19
+ set_file(i) # We also keep track of the file here.
20
+ set_result(i) # This is our assignment-method for the @result variable.
21
+ return result?
22
+ end; self.instance_eval { alias assign cmdlet_assign } # === UniversalPipeHandler.assign
23
+
24
+ end
@@ -0,0 +1,46 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ # require 'universal_pipe_handler/cmdlets/capture_screen.rb'
6
+ # =========================================================================== #
7
+ module UniversalPipeHandler
8
+
9
+ # ========================================================================= #
10
+ # === UniversalPipeHandler.cmdlet_capture_screen
11
+ #
12
+ # Make a screencast with this method. The argument it accepts will break
13
+ # after n seconds, if given. Otherwise endless.
14
+ #
15
+ # A typical example for this would look like:
16
+ #
17
+ # ffmpeg -t 00:00:02 -f x11grab -y -r 12 -s 800x600 -i :0.0+480,200 -vcodec ffv1 -sameq out.avi
18
+ #
19
+ # ========================================================================= #
20
+ def self.cmdlet_capture_screen(
21
+ optional_how_many_seconds = nil
22
+ )
23
+ # output_file = '$MY_TEMP/GRABBED_X11_screencast.mov'
24
+ output_file = 'captured_screencast-'+return_date+'_'+get_time(':')+'.avi'
25
+ set_file(output_file) # Now we can use @file.
26
+ capture_screen = CaptureScreen.new :dont_run_yet
27
+ capture_screen.overwrite_if_the_file_already_exists
28
+ capture_screen.framerate 25
29
+ capture_screen.size '1280x720'
30
+ # capture_screen.size '1024x800'
31
+ # capture_screen.size '800x600'
32
+ capture_screen.vcodec 'ffv1'
33
+ capture_screen.sameq
34
+ capture_screen.no_threads
35
+ capture_screen.store_here = file?
36
+ if optional_how_many_seconds
37
+ twenty_four = TwentyfourHoursNotation.new
38
+ # Must convert the seconds into the long-variant. This is done
39
+ # By the TwentyfourHoursNotation class.
40
+ capture_screen.set_duration( twenty_four.simple_format(optional_how_many_seconds) )
41
+ end
42
+ capture_screen.run
43
+ set_result(file?)
44
+ end; self.instance_eval { alias capture_screen cmdlet_capture_screen } # === UniversalPipeHandler.capture_screen
45
+
46
+ end
@@ -0,0 +1,35 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ # require 'universal_pipe_handler/cmdlets/colourize.rb'
6
+ # =========================================================================== #
7
+ module UniversalPipeHandler
8
+
9
+ # ========================================================================= #
10
+ # === UniversalPipeHandler.cmdlet_colourize
11
+ #
12
+ # This instruction handles colourization; the method can be used
13
+ # specifically to colourize the given input.
14
+ #
15
+ # Before September 2012 we used an internal class for this, however
16
+ # since as of September 2012 we will prefer to use CodeRay instead,
17
+ # and optionally fallback to the Colourize class in the event
18
+ # that CodeRay is unavailable.
19
+ # ========================================================================= #
20
+ def self.cmdlet_colourize(i = result?)
21
+ # If Coderay is available, use that.
22
+ if Object.const_defined? :CodeRay
23
+ if i.is_a? Array
24
+ i = i.join # Won't need to join with newlines here.
25
+ end
26
+ _ = CodeRay.scan(i, :ruby).term # This will become a String.
27
+ else # Else use the project-internal Colourize class, which resides under addons/colours.rb.
28
+ _ = Colourize.new(i) # bl $PIPE_HANDLER/addons/colourize.rb
29
+ _ = _.string
30
+ end
31
+ set_result(_) # Better keep it in array form.
32
+ return result?
33
+ end; self.instance_eval { alias colourize cmdlet_colourize } # === UniversalPipeHandler.colourize
34
+
35
+ end
@@ -0,0 +1,21 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ # require 'universal_pipe_handler/cmdlets/convert_to.rb'
6
+ # =========================================================================== #
7
+ module UniversalPipeHandler
8
+
9
+ # ========================================================================= #
10
+ # === UniversalPipeHandler.cmdlet_convert_to
11
+ #
12
+ # This could in principle convert between different formats.
13
+ # ========================================================================= #
14
+ def self.cmdlet_convert_to(which_format)
15
+ case which_format
16
+ when 'wav'
17
+ set_result(MultimediaParadise.mp3_to_wav(@target_file))
18
+ end
19
+ end; self.instance_eval { alias convert_to cmdlet_convert_to } # === UniversalPipeHandler.convert_to
20
+
21
+ end
@@ -0,0 +1,17 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ # require 'universal_pipe_handler/cmdlets/convert_to_images.rb'
6
+ # =========================================================================== #
7
+ module UniversalPipeHandler
8
+
9
+ # ========================================================================= #
10
+ # === UniversalPipeHandler.cmdlet_convert_to_images
11
+ #
12
+ # This action converts a video file to images.
13
+ # ========================================================================= #
14
+ def self.cmdlet_convert_to_images(i = result?)
15
+ end; self.instance_eval { alias convert_to_images cmdlet_convert_to_images } # === UniversalPipeHandler.convert_to_images
16
+
17
+ end
@@ -0,0 +1,28 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ # require 'universal_pipe_handler/cmdlets/convert_to_mp3.rb'
6
+ # =========================================================================== #
7
+ module UniversalPipeHandler
8
+
9
+ # ========================================================================= #
10
+ # === UniversalPipeHandler.cmdlet_convert_to_mp3
11
+ #
12
+ # This will convert into .mp3. If the input file already is a .mp3 file
13
+ # then we won't have to do a conversion.
14
+ # ========================================================================= #
15
+ def self.cmdlet_convert_to_mp3
16
+ e 'Now converting all found audio files to .wav format.'
17
+ set_result result?.map { |entry|
18
+ if entry.include? '.ogg'
19
+ MultimediaParadise::MultimediaConversions.ogg_to_mp3(entry)
20
+ elsif entry.include? '.wav'
21
+ MultimediaParadise::MultimediaConversions.wav_to_mp3(entry)
22
+ else
23
+ entry
24
+ end
25
+ }
26
+ end; self.instance_eval { alias convert_to_mp3 cmdlet_convert_to_mp3 } # === UniversalPipeHandler.convert_to_mp3
27
+
28
+ end
@@ -0,0 +1,17 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ # require 'universal_pipe_handler/cmdlets/convert_to_wav.rb'
6
+ # =========================================================================== #
7
+ module UniversalPipeHandler
8
+
9
+ # ========================================================================= #
10
+ # === UniversalPipeHandler.cmdlet_convert_to_wav
11
+ # ========================================================================= #
12
+ def self.cmdlet_convert_to_wav
13
+ e 'Now converting all found audio files to .wav format.' if be_verbose?
14
+ result?.each { |entry| MultimediaParadise.mp3_to_wav(entry) }
15
+ end; self.instance_eval { alias convert_to_wav cmdlet_convert_to_wav } # === UniversalPipeHandler.convert_to_wav
16
+
17
+ end
@@ -0,0 +1,23 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ # require 'universal_pipe_handler/cmdlets/copy_directories.rb'
6
+ # =========================================================================== #
7
+ module UniversalPipeHandler
8
+
9
+ # ========================================================================= #
10
+ # === UniversalPipeHandler.cmdlet_copy_directories
11
+ #
12
+ # This method will simply copy directories. We tap into the method
13
+ # return_directories() which is defined in shared.rb
14
+ # ========================================================================= #
15
+ def self.cmdlet_copy_directories(
16
+ i = result?
17
+ )
18
+ @we_want_to_copy_something = true
19
+ set_result(return_directories)
20
+ return result?
21
+ end; self.instance_eval { alias copy_directories cmdlet_copy_directories } # === UniversalPipeHandler.copy_directories
22
+
23
+ end
@@ -0,0 +1,31 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ # require 'universal_pipe_handler/cmdlets/count_character.rb'
6
+ # =========================================================================== #
7
+ module UniversalPipeHandler
8
+
9
+ # ========================================================================= #
10
+ # === UniversalPipeHandler.cmdlet_count_character
11
+ #
12
+ # Count how many occurences we can find of a specific character.
13
+ #
14
+ # That character should be passed to this method.
15
+ # ========================================================================= #
16
+ def self.cmdlet_count_character(
17
+ this_char = :all
18
+ )
19
+ _ = result? # Work on a copy of @result here.
20
+ case this_char
21
+ when :all
22
+ _ = _.size
23
+ else
24
+ _ = _.join if _.is_a? Array
25
+ _ = _.scan(/#{this_char}/).size
26
+ end
27
+ set_result(_)
28
+ return result?
29
+ end; self.instance_eval { alias count_character cmdlet_count_character } # === UniversalPipeHandler.count_character
30
+
31
+ end