atk_toolbox 0.0.133 → 0.0.134

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 07d2a21daf5799bcdee004695ddb8b6ac30b283e3d3aa180ac9bb52c76dbef9b
4
- data.tar.gz: 5ae84a0a51a2f55782e87a8814f1c29c90000cebffb8456be3c49c91290c8ee6
3
+ metadata.gz: c8547c094c0776ccc49a4f81b4db4c3d895b0a545c2fad417a4a635179ac8a44
4
+ data.tar.gz: e32165b8ee0dcce88a235dc3b656af1af742aca39c6c7daab1f3714668bf2ce4
5
5
  SHA512:
6
- metadata.gz: 4f05d179adc38416ff61f379b6979ee6e782bce2bf2e748b5c3bc7372290ebb56abdfea6d999ecc738fb8445b12faf98dcd01708287c0273e3cbed7faf29535a
7
- data.tar.gz: 691e2660072bee5dfcb8bd0c7500e357c0c1c9d111875150b0a02b8a7c3761a9654fe901f355e1b34c6b55bfd65ad63b54508f27d9bd1ef125d288f981aab9ad
6
+ metadata.gz: 5d95da0117bc36d4030650c39ee6bed3c88532c50fda2c632cf19cf247a65fa5e6d1efbc39059a36a8557381db51eee0b9f2d33b5aec6373aa7de2572d35a19a
7
+ data.tar.gz: e706e87c839abbd2095d565ce0558104afd19bbc64d63a7a9c47abba18d40088f3b26618aacfdb0fb8ed6a5b84787dfbca65f9b0ca477f1c2b42087c713e1285
@@ -25,8 +25,7 @@ class String
25
25
  end
26
26
  end
27
27
 
28
-
29
- FS = FileSystem = Class.new do
28
+ module FileSystem
30
29
  # This is a combination of the FileUtils, File, Pathname, IO, Etc, and Dir classes,
31
30
  # along with some other helpful methods
32
31
  # It is by-default forceful (dangerous/overwriting)
@@ -41,21 +40,21 @@ FS = FileSystem = Class.new do
41
40
  # zip
42
41
  # unzip
43
42
 
44
- def write(data, to:nil)
43
+ def self.write(data, to:nil)
45
44
  # make sure the containing folder exists
46
45
  FileSystem.makedirs(File.dirname(to))
47
46
  # actually download the file
48
47
  IO.write(to, data)
49
48
  end
50
49
 
51
- def append(data, to:nil)
50
+ def self.append(data, to:nil)
52
51
  FileSystem.makedirs(File.dirname(to))
53
52
  return open(to, 'a') do |file|
54
53
  file << data
55
54
  end
56
55
  end
57
56
 
58
- def save(value, to:nil, as:nil)
57
+ def self.save(value, to:nil, as:nil)
59
58
  # assume string if as was not given
60
59
  if as == nil
61
60
  as = :s
@@ -102,7 +101,7 @@ FS = FileSystem = Class.new do
102
101
  end
103
102
  end
104
103
 
105
- def read(filepath)
104
+ def self.read(filepath)
106
105
  begin
107
106
  return IO.read(filepath)
108
107
  rescue Errno::ENOENT => exception
@@ -110,7 +109,7 @@ FS = FileSystem = Class.new do
110
109
  end
111
110
  end
112
111
 
113
- def delete(path)
112
+ def self.delete(path)
114
113
  if File.file?(path)
115
114
  File.delete(path)
116
115
  elsif File.directory?(path)
@@ -118,7 +117,7 @@ FS = FileSystem = Class.new do
118
117
  end
119
118
  end
120
119
 
121
- def username
120
+ def self.username
122
121
  if OS.is?(:windows)
123
122
  return File.basename(ENV["userprofile"])
124
123
  else
@@ -126,11 +125,11 @@ FS = FileSystem = Class.new do
126
125
  end
127
126
  end
128
127
 
129
- def makedirs(path)
128
+ def self.makedirs(path)
130
129
  FileUtils.makedirs(path)
131
130
  end
132
131
 
133
- def in_dir(path_to_somewhere)
132
+ def self.in_dir(path_to_somewhere)
134
133
  # save the current working dir
135
134
  current_dir = Dir.pwd
136
135
  # switch dirs
@@ -142,7 +141,7 @@ FS = FileSystem = Class.new do
142
141
  return output
143
142
  end
144
143
 
145
- def copy(from:nil, to:nil, new_name:"", force: true, preserve: false, dereference_root: false)
144
+ def self.copy(from:nil, to:nil, new_name:"", force: true, preserve: false, dereference_root: false)
146
145
  if new_name == ""
147
146
  raise "\n\nFileSystem.copy() needs a new_name: argument\nset new_name:nil if you wish the file/folder to keep the same name\ne.g. FileSystem.copy(from:'place/thing', to:'place', new_name:nil)"
148
147
  elsif new_name == nil
@@ -154,7 +153,7 @@ FS = FileSystem = Class.new do
154
153
  FileUtils.copy_entry(from, to/new_name, preserve, dereference_root, force)
155
154
  end
156
155
 
157
- def move(from:nil, to:nil, new_name:"", force: true, noop: nil, verbose: nil, secure: nil)
156
+ def self.move(from:nil, to:nil, new_name:"", force: true, noop: nil, verbose: nil, secure: nil)
158
157
  if new_name == ""
159
158
  raise "\n\nFileSystem.move() needs a new_name: argument\nset new_name:nil if you wish the file/folder to keep the same name\ne.g. FileSystem.move(from:'place/thing', to:'place', new_name:nil)"
160
159
  elsif new_name == nil
@@ -166,7 +165,7 @@ FS = FileSystem = Class.new do
166
165
  FileUtils.move(from, to/new_name, force: force, noop: noop, verbose: verbose, secure: secure)
167
166
  end
168
167
 
169
- def rename(path, new_name:nil, force: true)
168
+ def self.rename(path, new_name:nil, force: true)
170
169
  if File.dirname(new_name) != "."
171
170
  raise <<-HEREDOC.remove_indent
172
171
 
@@ -187,38 +186,38 @@ FS = FileSystem = Class.new do
187
186
  File.rename(path, to)
188
187
  end
189
188
 
190
- def touch(path)
189
+ def self.touch(path)
191
190
  FileSystem.makedirs(File.dirname(path))
192
191
  if not FileSystem.file?(path)
193
192
  return IO.write(path, "")
194
193
  end
195
194
  end
196
- alias :touch_file :touch
197
- alias :new_file :touch
195
+ singleton_class.send(:alias_method, :touch_file, :touch)
196
+ singleton_class.send(:alias_method, :new_file, :touch)
198
197
 
199
- def touch_dir(path)
198
+ def self.touch_dir(path)
200
199
  if not FileSystem.directory?(path)
201
200
  FileUtils.makedirs(path)
202
201
  end
203
202
  end
204
- alias :new_folder :touch_dir
203
+ singleton_class.send(:alias_method, :new_folder, :touch_dir)
205
204
 
206
205
  # Pathname aliases
207
- def absolute_path?(path)
206
+ def self.absolute_path?(path)
208
207
  Pathname.new(path).absolute?
209
208
  end
210
- alias :is_absolute_path :absolute_path?
211
- alias :abs? :absolute_path?
212
- alias :is_abs :abs?
209
+ singleton_class.send(:alias_method, :is_absolute_path, :absolute_path?)
210
+ singleton_class.send(:alias_method, :abs?, :absolute_path?)
211
+ singleton_class.send(:alias_method, :is_abs, :abs?)
213
212
 
214
- def relative_path?(path)
213
+ def self.relative_path?(path)
215
214
  Pathname.new(path).relative?
216
215
  end
217
- alias :is_relative_path :relative_path?
218
- alias :rel? :relative_path?
219
- alias :is_rel :rel?
216
+ singleton_class.send(:alias_method, :is_relative_path, :relative_path?)
217
+ singleton_class.send(:alias_method, :rel?, :relative_path?)
218
+ singleton_class.send(:alias_method, :is_rel, :rel?)
220
219
 
221
- def path_pieces(path)
220
+ def self.path_pieces(path)
222
221
  # use this function like this:
223
222
  # *path, filename, extension = FS.path_pieces('/Users/jeffhykin/Desktop/place1/file1.pdf')
224
223
  pieces = Pathname(path).each_filename.to_a
@@ -237,45 +236,45 @@ FS = FileSystem = Class.new do
237
236
  end
238
237
 
239
238
  # dir aliases
240
- def home
239
+ def self.home
241
240
  HOME
242
241
  end
243
- def glob(path)
242
+ def self.glob(path)
244
243
  Dir.glob(path, File::FNM_DOTMATCH) - %w[. ..]
245
244
  end
246
- def list_files(path=".")
245
+ def self.list_files(path=".")
247
246
  Dir.children(path).map{|each| path/each }.select {|each| FileSystem.file?(each)}
248
247
  end
249
- def list_folders(path=".")
248
+ def self.list_folders(path=".")
250
249
  Dir.children(path).map{|each| path/each }.select {|each| FileSystem.directory?(each)}
251
250
  end
252
- def ls(path=".")
251
+ def self.ls(path=".")
253
252
  Dir.children(path)
254
253
  end
255
- def pwd
254
+ def self.pwd
256
255
  Dir.pwd
257
256
  end
258
- def cd(*args, verbose: false)
257
+ def self.cd(*args, verbose: false)
259
258
  if args.size == 0
260
259
  args[0] = FS.home
261
260
  end
262
261
  FileUtils.cd(args[0], verbose: verbose)
263
262
  end
264
- def chdir(*args)
263
+ def self.chdir(*args)
265
264
  FS.cd(*args)
266
265
  end
267
266
 
268
267
  # File aliases
269
- def time_access(*args)
268
+ def self.time_access(*args)
270
269
  File.atime(*args)
271
270
  end
272
- def time_created(*args)
271
+ def self.time_created(*args)
273
272
  File.birthtime(*args)
274
273
  end
275
- def time_modified(*args)
274
+ def self.time_modified(*args)
276
275
  end
277
276
 
278
- def join(*args)
277
+ def self.join(*args)
279
278
  if OS.is?("windows")
280
279
  folders_without_leading_or_trailing_slashes = args.map do |each|
281
280
  # replace all forward slashes with backslashes
@@ -291,69 +290,69 @@ FS = FileSystem = Class.new do
291
290
  end
292
291
 
293
292
  # inherit from File
294
- def absolute_path(*args)
293
+ def self.absolute_path(*args)
295
294
  File.absolute_path(*args)
296
295
  end
297
- def dirname(*args)
296
+ def self.dirname(*args)
298
297
  File.dirname(*args)
299
298
  end
300
- def basename(*args)
299
+ def self.basename(*args)
301
300
  File.basename(*args)
302
301
  end
303
- def extname(*args)
302
+ def self.extname(*args)
304
303
  File.extname(*args)
305
304
  end
306
- def folder?(*args)
305
+ def self.folder?(*args)
307
306
  File.directory?(*args)
308
307
  end
309
- alias :is_folder :folder?
310
- alias :dir? :folder?
311
- alias :is_dir :dir?
312
- alias :directory? :folder?
313
- alias :is_directory :directory?
308
+ singleton_class.send(:alias_method, :is_folder, :folder?)
309
+ singleton_class.send(:alias_method, :dir?, :folder?)
310
+ singleton_class.send(:alias_method, :is_dir, :dir?)
311
+ singleton_class.send(:alias_method, :directory?, :folder?)
312
+ singleton_class.send(:alias_method, :is_directory, :directory?)
314
313
 
315
- def exists?(*args)
314
+ def self.exists?(*args)
316
315
  File.exist?(*args)
317
316
  end
318
- alias :does_exist :exists?
319
- alias :exist? :exists?
317
+ singleton_class.send(:alias_method, :does_exist, :exists?)
318
+ singleton_class.send(:alias_method, :exist?, :exists?)
320
319
 
321
- def file?(*args)
320
+ def self.file?(*args)
322
321
  File.file?(*args)
323
322
  end
324
- alias :is_file :file?
323
+ singleton_class.send(:alias_method, :is_file, :file?)
325
324
 
326
- def empty?(*args)
325
+ def self.empty?(*args)
327
326
  File.empty?(*args)
328
327
  end
329
- alias :is_empty :empty?
328
+ singleton_class.send(:alias_method, :is_empty, :empty?)
330
329
 
331
- def executable?(*args)
330
+ def self.executable?(*args)
332
331
  File.executable?(*args)
333
332
  end
334
- alias :is_executable :executable?
333
+ singleton_class.send(:alias_method, :is_executable, :executable?)
335
334
 
336
- def symlink?(*args)
335
+ def self.symlink?(*args)
337
336
  File.symlink?(*args)
338
337
  end
339
- alias :is_symlink :symlink?
338
+ singleton_class.send(:alias_method, :is_symlink, :symlink?)
340
339
 
341
- def owned?(*args)
340
+ def self.owned?(*args)
342
341
  File.owned?(*args)
343
342
  end
344
- alias :is_owned :owned?
343
+ singleton_class.send(:alias_method, :is_owned, :owned?)
345
344
 
346
- def pipe?(*args)
345
+ def self.pipe?(*args)
347
346
  File.pipe?(*args)
348
347
  end
349
- alias :is_pipe :pipe?
348
+ singleton_class.send(:alias_method, :is_pipe, :pipe?)
350
349
 
351
- def readable?(*args)
350
+ def self.readable?(*args)
352
351
  File.readable?(*args)
353
352
  end
354
- alias :is_readable :readable?
353
+ singleton_class.send(:alias_method, :is_readable, :readable?)
355
354
 
356
- def size?(*args)
355
+ def self.size?(*args)
357
356
  if File.directory?(args[0])
358
357
  # recursively get the size of the folder
359
358
  return Dir.glob(File.join(args[0], '**', '*')).map{ |f| File.size(f) }.inject(:+)
@@ -361,49 +360,49 @@ FS = FileSystem = Class.new do
361
360
  File.size?(*args)
362
361
  end
363
362
  end
364
- alias :size_of :size?
363
+ singleton_class.send(:alias_method, :size_of, :size?)
365
364
 
366
- def socket?(*args)
365
+ def self.socket?(*args)
367
366
  File.socket?(*args)
368
367
  end
369
- alias :is_socket :socket?
368
+ singleton_class.send(:alias_method, :is_socket, :socket?)
370
369
 
371
- def world_readable?(*args)
370
+ def self.world_readable?(*args)
372
371
  File.world_readable?(*args)
373
372
  end
374
- alias :is_world_readable :world_readable?
373
+ singleton_class.send(:alias_method, :is_world_readable, :world_readable?)
375
374
 
376
- def world_writable?(*args)
375
+ def self.world_writable?(*args)
377
376
  File.world_writable?(*args)
378
377
  end
379
- alias :is_world_writable :world_writable?
378
+ singleton_class.send(:alias_method, :is_world_writable, :world_writable?)
380
379
 
381
- def writable?(*args)
380
+ def self.writable?(*args)
382
381
  File.writable?(*args)
383
382
  end
384
- alias :is_writable :writable?
383
+ singleton_class.send(:alias_method, :is_writable, :writable?)
385
384
 
386
- def writable_real?(*args)
385
+ def self.writable_real?(*args)
387
386
  File.writable_real?(*args)
388
387
  end
389
- alias :is_writable_real :writable_real?
388
+ singleton_class.send(:alias_method, :is_writable_real, :writable_real?)
390
389
 
391
- def expand_path(*args)
390
+ def self.expand_path(*args)
392
391
  File.expand_path(*args)
393
392
  end
394
- def mkfifo(*args)
393
+ def self.mkfifo(*args)
395
394
  File.mkfifo(*args)
396
395
  end
397
- def stat(*args)
396
+ def self.stat(*args)
398
397
  File.stat(*args)
399
398
  end
400
399
 
401
- def download(the_url, to:nil)
400
+ def self.download(the_url, to:nil)
402
401
  require 'open-uri'
403
402
  FileSystem.write(open(URI.encode(the_url)).read, to: to)
404
403
  end
405
404
 
406
- def online?
405
+ def self.online?
407
406
  require 'open-uri'
408
407
  begin
409
408
  true if open("http://www.google.com/")
@@ -411,7 +410,86 @@ FS = FileSystem = Class.new do
411
410
  false
412
411
  end
413
412
  end
414
- end.new
413
+
414
+ class ProfileHelper
415
+ def initialize(unqiue_id)
416
+ function_def = "ProfileHelper.new(unqiue_id)"
417
+ if unqiue_id =~ /\n/
418
+ raise <<-HEREDOC.remove_indent
419
+
420
+
421
+ Inside the #{function_def.color_as :code}
422
+ the unqiue_id contains a newline (\\n)
423
+
424
+ unqiue_id: #{"#{unqiue_id}".inspect}
425
+
426
+ Sadly newlines are not allowed in the unqiue_id due to how they are searched for.
427
+ Please provide a unqiue_id that doesn't have newlines.
428
+ HEREDOC
429
+ end
430
+ if "#{unqiue_id}".size < 5
431
+ raise <<-HEREDOC.remove_indent
432
+
433
+
434
+ Inside the #{function_def.color_as :code}
435
+ the unqiue_id is: #{"#{unqiue_id}".inspect}
436
+
437
+ That's not even 5 characters. Come on man, there's going to be problems if the unqiue_id isn't unqiue
438
+ generate a random number (once), then put the name of the service at the front of that random number
439
+ HEREDOC
440
+ end
441
+ @unqiue_id = unqiue_id
442
+ end
443
+
444
+ @bash_comment_out = comment_out_line = ->(code) do
445
+ "### #{code}"
446
+ end
447
+
448
+ def add_to_bash_profile(code)
449
+ uniquely_append(code, HOME/".bash_profile", @bash_comment_out)
450
+ end
451
+
452
+ def add_to_zsh_profile(code)
453
+ uniquely_append(code, HOME/".zprofile", @bash_comment_out)
454
+ end
455
+
456
+ def add_to_bash_rc(code)
457
+ uniquely_append(code, HOME/".bashrc", @bash_comment_out)
458
+ end
459
+
460
+ def add_to_zsh_rc(code)
461
+ uniquely_append(code, HOME/".zshrc", @bash_comment_out)
462
+ end
463
+
464
+ def uniquely_append(string_to_add, location_of_file, comment_out_line)
465
+ _UNQIUE_HELPER = 'fj03498hglkasjdgoghu2904' # dont change this, its a 1-time randomly generated string
466
+ final_string = "\n"
467
+ final_string += comment_out_line["start of ID: #{@unqiue_id} #{_UNQIUE_HELPER}"] + "\n"
468
+ final_string += comment_out_line["NOTE! if you remove this, remove the whole thing (don't leave a dangling start/end comment)"] + "\n"
469
+ final_string += string_to_add + "\n"
470
+ final_string += comment_out_line["end of ID: #{@unqiue_id} #{_UNQIUE_HELPER}"]
471
+
472
+ # open the existing file if there is one
473
+ file = FS.read(location_of_file) || ""
474
+ # remove any previous versions
475
+ file.gsub!(/### start of ID: (.+) #{_UNQIUE_HELPER}[\s\S]*### end of ID: \1 #{_UNQIUE_HELPER}/) do |match|
476
+ if $1 == @unqiue_id
477
+ ""
478
+ else
479
+ match
480
+ end
481
+ end
482
+ # append the the new code at the bottom (highest priority)
483
+ file += final_string
484
+ # overwrite the file
485
+ FS.write(file, to: location_of_file)
486
+ end
487
+ end
488
+ end
489
+ # create an FS singleton_class.send(:alias_method, :FS = :FileSystem)
490
+ FS = FileSystem
491
+
492
+
415
493
 
416
494
 
417
495
  # TODO: add zip/unzip functionality
@@ -1,3 +1,3 @@
1
1
  module AtkToolbox
2
- VERSION = '0.0.133'
2
+ VERSION = '0.0.134'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: atk_toolbox
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.133
4
+ version: 0.0.134
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jeff Hykin