atk_toolbox 0.0.130 → 0.0.133
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.
- checksums.yaml +4 -4
- data/lib/atk/console.rb +35 -0
- data/lib/atk/file_system.rb +84 -87
- data/lib/atk_toolbox/version.rb +1 -1
- metadata +1 -2
- data/lib/atk/set_command.rb +0 -43
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 07d2a21daf5799bcdee004695ddb8b6ac30b283e3d3aa180ac9bb52c76dbef9b
|
4
|
+
data.tar.gz: 5ae84a0a51a2f55782e87a8814f1c29c90000cebffb8456be3c49c91290c8ee6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4f05d179adc38416ff61f379b6979ee6e782bce2bf2e748b5c3bc7372290ebb56abdfea6d999ecc738fb8445b12faf98dcd01708287c0273e3cbed7faf29535a
|
7
|
+
data.tar.gz: 691e2660072bee5dfcb8bd0c7500e357c0c1c9d111875150b0a02b8a7c3761a9654fe901f355e1b34c6b55bfd65ad63b54508f27d9bd1ef125d288f981aab9ad
|
data/lib/atk/console.rb
CHANGED
@@ -179,6 +179,41 @@ Console = Class.new do
|
|
179
179
|
end
|
180
180
|
end
|
181
181
|
end
|
182
|
+
|
183
|
+
def set_command(name, code)
|
184
|
+
require_relative './file_system'
|
185
|
+
require_relative './os'
|
186
|
+
require_relative './atk_info'
|
187
|
+
if OS.is?("unix")
|
188
|
+
exec_path = "#{Atk.paths[:commands]}/#{name}"
|
189
|
+
local_place = Atk.temp_path(name)
|
190
|
+
# add the hash bang
|
191
|
+
hash_bang = "#!#{Atk.paths[:ruby]}\n"
|
192
|
+
# create the file
|
193
|
+
FS.write(hash_bang+code, to: local_place)
|
194
|
+
# copy to command folder
|
195
|
+
system("sudo", "cp", local_place, exec_path)
|
196
|
+
system("sudo", "chmod", "ugo+x", exec_path)
|
197
|
+
elsif OS.is?("windows")
|
198
|
+
# check for invalid file paths, see https://docs.microsoft.com/en-us/windows/win32/fileio/naming-a-file
|
199
|
+
if name =~ /[><:"\/\\|?*]/
|
200
|
+
raise <<-HEREDOC.remove_indent
|
201
|
+
|
202
|
+
|
203
|
+
When using the ATK Console.set_command(name)
|
204
|
+
The name: #{name}
|
205
|
+
is not a valid file path on windows
|
206
|
+
which means it cannot be a command
|
207
|
+
HEREDOC
|
208
|
+
end
|
209
|
+
exec_path = "#{Atk.paths[:commands]}\\#{name}"
|
210
|
+
|
211
|
+
# create the code
|
212
|
+
IO.write(exec_path+".rb", code)
|
213
|
+
# create an executable to call the code
|
214
|
+
IO.write(exec_path+".bat", "@echo off\nruby \"#{exec_path}.rb\" %*")
|
215
|
+
end
|
216
|
+
end
|
182
217
|
end.new
|
183
218
|
|
184
219
|
def log(*args)
|
data/lib/atk/file_system.rb
CHANGED
@@ -25,7 +25,8 @@ class String
|
|
25
25
|
end
|
26
26
|
end
|
27
27
|
|
28
|
-
|
28
|
+
|
29
|
+
FS = FileSystem = Class.new do
|
29
30
|
# This is a combination of the FileUtils, File, Pathname, IO, Etc, and Dir classes,
|
30
31
|
# along with some other helpful methods
|
31
32
|
# It is by-default forceful (dangerous/overwriting)
|
@@ -40,21 +41,21 @@ module FileSystem
|
|
40
41
|
# zip
|
41
42
|
# unzip
|
42
43
|
|
43
|
-
def
|
44
|
+
def write(data, to:nil)
|
44
45
|
# make sure the containing folder exists
|
45
46
|
FileSystem.makedirs(File.dirname(to))
|
46
47
|
# actually download the file
|
47
48
|
IO.write(to, data)
|
48
49
|
end
|
49
50
|
|
50
|
-
def
|
51
|
+
def append(data, to:nil)
|
51
52
|
FileSystem.makedirs(File.dirname(to))
|
52
53
|
return open(to, 'a') do |file|
|
53
54
|
file << data
|
54
55
|
end
|
55
56
|
end
|
56
57
|
|
57
|
-
def
|
58
|
+
def save(value, to:nil, as:nil)
|
58
59
|
# assume string if as was not given
|
59
60
|
if as == nil
|
60
61
|
as = :s
|
@@ -101,7 +102,7 @@ module FileSystem
|
|
101
102
|
end
|
102
103
|
end
|
103
104
|
|
104
|
-
def
|
105
|
+
def read(filepath)
|
105
106
|
begin
|
106
107
|
return IO.read(filepath)
|
107
108
|
rescue Errno::ENOENT => exception
|
@@ -109,7 +110,7 @@ module FileSystem
|
|
109
110
|
end
|
110
111
|
end
|
111
112
|
|
112
|
-
def
|
113
|
+
def delete(path)
|
113
114
|
if File.file?(path)
|
114
115
|
File.delete(path)
|
115
116
|
elsif File.directory?(path)
|
@@ -117,7 +118,7 @@ module FileSystem
|
|
117
118
|
end
|
118
119
|
end
|
119
120
|
|
120
|
-
def
|
121
|
+
def username
|
121
122
|
if OS.is?(:windows)
|
122
123
|
return File.basename(ENV["userprofile"])
|
123
124
|
else
|
@@ -125,11 +126,11 @@ module FileSystem
|
|
125
126
|
end
|
126
127
|
end
|
127
128
|
|
128
|
-
def
|
129
|
+
def makedirs(path)
|
129
130
|
FileUtils.makedirs(path)
|
130
131
|
end
|
131
132
|
|
132
|
-
def
|
133
|
+
def in_dir(path_to_somewhere)
|
133
134
|
# save the current working dir
|
134
135
|
current_dir = Dir.pwd
|
135
136
|
# switch dirs
|
@@ -141,7 +142,7 @@ module FileSystem
|
|
141
142
|
return output
|
142
143
|
end
|
143
144
|
|
144
|
-
def
|
145
|
+
def copy(from:nil, to:nil, new_name:"", force: true, preserve: false, dereference_root: false)
|
145
146
|
if new_name == ""
|
146
147
|
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)"
|
147
148
|
elsif new_name == nil
|
@@ -153,7 +154,7 @@ module FileSystem
|
|
153
154
|
FileUtils.copy_entry(from, to/new_name, preserve, dereference_root, force)
|
154
155
|
end
|
155
156
|
|
156
|
-
def
|
157
|
+
def move(from:nil, to:nil, new_name:"", force: true, noop: nil, verbose: nil, secure: nil)
|
157
158
|
if new_name == ""
|
158
159
|
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)"
|
159
160
|
elsif new_name == nil
|
@@ -165,7 +166,7 @@ module FileSystem
|
|
165
166
|
FileUtils.move(from, to/new_name, force: force, noop: noop, verbose: verbose, secure: secure)
|
166
167
|
end
|
167
168
|
|
168
|
-
def
|
169
|
+
def rename(path, new_name:nil, force: true)
|
169
170
|
if File.dirname(new_name) != "."
|
170
171
|
raise <<-HEREDOC.remove_indent
|
171
172
|
|
@@ -186,38 +187,38 @@ module FileSystem
|
|
186
187
|
File.rename(path, to)
|
187
188
|
end
|
188
189
|
|
189
|
-
def
|
190
|
+
def touch(path)
|
190
191
|
FileSystem.makedirs(File.dirname(path))
|
191
192
|
if not FileSystem.file?(path)
|
192
193
|
return IO.write(path, "")
|
193
194
|
end
|
194
195
|
end
|
195
|
-
|
196
|
-
|
196
|
+
alias :touch_file :touch
|
197
|
+
alias :new_file :touch
|
197
198
|
|
198
|
-
def
|
199
|
+
def touch_dir(path)
|
199
200
|
if not FileSystem.directory?(path)
|
200
201
|
FileUtils.makedirs(path)
|
201
202
|
end
|
202
203
|
end
|
203
|
-
|
204
|
+
alias :new_folder :touch_dir
|
204
205
|
|
205
206
|
# Pathname aliases
|
206
|
-
def
|
207
|
+
def absolute_path?(path)
|
207
208
|
Pathname.new(path).absolute?
|
208
209
|
end
|
209
|
-
|
210
|
-
|
211
|
-
|
210
|
+
alias :is_absolute_path :absolute_path?
|
211
|
+
alias :abs? :absolute_path?
|
212
|
+
alias :is_abs :abs?
|
212
213
|
|
213
|
-
def
|
214
|
+
def relative_path?(path)
|
214
215
|
Pathname.new(path).relative?
|
215
216
|
end
|
216
|
-
|
217
|
-
|
218
|
-
|
217
|
+
alias :is_relative_path :relative_path?
|
218
|
+
alias :rel? :relative_path?
|
219
|
+
alias :is_rel :rel?
|
219
220
|
|
220
|
-
def
|
221
|
+
def path_pieces(path)
|
221
222
|
# use this function like this:
|
222
223
|
# *path, filename, extension = FS.path_pieces('/Users/jeffhykin/Desktop/place1/file1.pdf')
|
223
224
|
pieces = Pathname(path).each_filename.to_a
|
@@ -236,45 +237,45 @@ module FileSystem
|
|
236
237
|
end
|
237
238
|
|
238
239
|
# dir aliases
|
239
|
-
def
|
240
|
+
def home
|
240
241
|
HOME
|
241
242
|
end
|
242
|
-
def
|
243
|
+
def glob(path)
|
243
244
|
Dir.glob(path, File::FNM_DOTMATCH) - %w[. ..]
|
244
245
|
end
|
245
|
-
def
|
246
|
+
def list_files(path=".")
|
246
247
|
Dir.children(path).map{|each| path/each }.select {|each| FileSystem.file?(each)}
|
247
248
|
end
|
248
|
-
def
|
249
|
+
def list_folders(path=".")
|
249
250
|
Dir.children(path).map{|each| path/each }.select {|each| FileSystem.directory?(each)}
|
250
251
|
end
|
251
|
-
def
|
252
|
+
def ls(path=".")
|
252
253
|
Dir.children(path)
|
253
254
|
end
|
254
|
-
def
|
255
|
+
def pwd
|
255
256
|
Dir.pwd
|
256
257
|
end
|
257
|
-
def
|
258
|
+
def cd(*args, verbose: false)
|
258
259
|
if args.size == 0
|
259
260
|
args[0] = FS.home
|
260
261
|
end
|
261
262
|
FileUtils.cd(args[0], verbose: verbose)
|
262
263
|
end
|
263
|
-
def
|
264
|
+
def chdir(*args)
|
264
265
|
FS.cd(*args)
|
265
266
|
end
|
266
267
|
|
267
268
|
# File aliases
|
268
|
-
def
|
269
|
+
def time_access(*args)
|
269
270
|
File.atime(*args)
|
270
271
|
end
|
271
|
-
def
|
272
|
+
def time_created(*args)
|
272
273
|
File.birthtime(*args)
|
273
274
|
end
|
274
|
-
def
|
275
|
+
def time_modified(*args)
|
275
276
|
end
|
276
277
|
|
277
|
-
def
|
278
|
+
def join(*args)
|
278
279
|
if OS.is?("windows")
|
279
280
|
folders_without_leading_or_trailing_slashes = args.map do |each|
|
280
281
|
# replace all forward slashes with backslashes
|
@@ -290,69 +291,69 @@ module FileSystem
|
|
290
291
|
end
|
291
292
|
|
292
293
|
# inherit from File
|
293
|
-
def
|
294
|
+
def absolute_path(*args)
|
294
295
|
File.absolute_path(*args)
|
295
296
|
end
|
296
|
-
def
|
297
|
+
def dirname(*args)
|
297
298
|
File.dirname(*args)
|
298
299
|
end
|
299
|
-
def
|
300
|
+
def basename(*args)
|
300
301
|
File.basename(*args)
|
301
302
|
end
|
302
|
-
def
|
303
|
+
def extname(*args)
|
303
304
|
File.extname(*args)
|
304
305
|
end
|
305
|
-
def
|
306
|
+
def folder?(*args)
|
306
307
|
File.directory?(*args)
|
307
308
|
end
|
308
|
-
|
309
|
-
|
310
|
-
|
311
|
-
|
312
|
-
|
309
|
+
alias :is_folder :folder?
|
310
|
+
alias :dir? :folder?
|
311
|
+
alias :is_dir :dir?
|
312
|
+
alias :directory? :folder?
|
313
|
+
alias :is_directory :directory?
|
313
314
|
|
314
|
-
def
|
315
|
+
def exists?(*args)
|
315
316
|
File.exist?(*args)
|
316
317
|
end
|
317
|
-
|
318
|
-
|
318
|
+
alias :does_exist :exists?
|
319
|
+
alias :exist? :exists?
|
319
320
|
|
320
|
-
def
|
321
|
+
def file?(*args)
|
321
322
|
File.file?(*args)
|
322
323
|
end
|
323
|
-
|
324
|
+
alias :is_file :file?
|
324
325
|
|
325
|
-
def
|
326
|
+
def empty?(*args)
|
326
327
|
File.empty?(*args)
|
327
328
|
end
|
328
|
-
|
329
|
+
alias :is_empty :empty?
|
329
330
|
|
330
|
-
def
|
331
|
+
def executable?(*args)
|
331
332
|
File.executable?(*args)
|
332
333
|
end
|
333
|
-
|
334
|
+
alias :is_executable :executable?
|
334
335
|
|
335
|
-
def
|
336
|
+
def symlink?(*args)
|
336
337
|
File.symlink?(*args)
|
337
338
|
end
|
338
|
-
|
339
|
+
alias :is_symlink :symlink?
|
339
340
|
|
340
|
-
def
|
341
|
+
def owned?(*args)
|
341
342
|
File.owned?(*args)
|
342
343
|
end
|
343
|
-
|
344
|
+
alias :is_owned :owned?
|
344
345
|
|
345
|
-
def
|
346
|
+
def pipe?(*args)
|
346
347
|
File.pipe?(*args)
|
347
348
|
end
|
348
|
-
|
349
|
+
alias :is_pipe :pipe?
|
349
350
|
|
350
|
-
def
|
351
|
+
def readable?(*args)
|
351
352
|
File.readable?(*args)
|
352
353
|
end
|
353
|
-
|
354
|
+
alias :is_readable :readable?
|
354
355
|
|
355
|
-
def
|
356
|
+
def size?(*args)
|
356
357
|
if File.directory?(args[0])
|
357
358
|
# recursively get the size of the folder
|
358
359
|
return Dir.glob(File.join(args[0], '**', '*')).map{ |f| File.size(f) }.inject(:+)
|
@@ -360,49 +361,49 @@ module FileSystem
|
|
360
361
|
File.size?(*args)
|
361
362
|
end
|
362
363
|
end
|
363
|
-
|
364
|
+
alias :size_of :size?
|
364
365
|
|
365
|
-
def
|
366
|
+
def socket?(*args)
|
366
367
|
File.socket?(*args)
|
367
368
|
end
|
368
|
-
|
369
|
+
alias :is_socket :socket?
|
369
370
|
|
370
|
-
def
|
371
|
+
def world_readable?(*args)
|
371
372
|
File.world_readable?(*args)
|
372
373
|
end
|
373
|
-
|
374
|
+
alias :is_world_readable :world_readable?
|
374
375
|
|
375
|
-
def
|
376
|
+
def world_writable?(*args)
|
376
377
|
File.world_writable?(*args)
|
377
378
|
end
|
378
|
-
|
379
|
+
alias :is_world_writable :world_writable?
|
379
380
|
|
380
|
-
def
|
381
|
+
def writable?(*args)
|
381
382
|
File.writable?(*args)
|
382
383
|
end
|
383
|
-
|
384
|
+
alias :is_writable :writable?
|
384
385
|
|
385
|
-
def
|
386
|
+
def writable_real?(*args)
|
386
387
|
File.writable_real?(*args)
|
387
388
|
end
|
388
|
-
|
389
|
+
alias :is_writable_real :writable_real?
|
389
390
|
|
390
|
-
def
|
391
|
+
def expand_path(*args)
|
391
392
|
File.expand_path(*args)
|
392
393
|
end
|
393
|
-
def
|
394
|
+
def mkfifo(*args)
|
394
395
|
File.mkfifo(*args)
|
395
396
|
end
|
396
|
-
def
|
397
|
+
def stat(*args)
|
397
398
|
File.stat(*args)
|
398
399
|
end
|
399
400
|
|
400
|
-
def
|
401
|
+
def download(the_url, to:nil)
|
401
402
|
require 'open-uri'
|
402
403
|
FileSystem.write(open(URI.encode(the_url)).read, to: to)
|
403
404
|
end
|
404
405
|
|
405
|
-
def
|
406
|
+
def online?
|
406
407
|
require 'open-uri'
|
407
408
|
begin
|
408
409
|
true if open("http://www.google.com/")
|
@@ -410,11 +411,7 @@ module FileSystem
|
|
410
411
|
false
|
411
412
|
end
|
412
413
|
end
|
413
|
-
end
|
414
|
-
# create an FS singleton_class.send(:alias_method, :FS = :FileSystem)
|
415
|
-
FS = FileSystem
|
416
|
-
|
417
|
-
|
414
|
+
end.new
|
418
415
|
|
419
416
|
|
420
417
|
# TODO: add zip/unzip functionality
|
data/lib/atk_toolbox/version.rb
CHANGED
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.
|
4
|
+
version: 0.0.133
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jeff Hykin
|
@@ -47,7 +47,6 @@ files:
|
|
47
47
|
- lib/atk/info.rb
|
48
48
|
- lib/atk/os.rb
|
49
49
|
- lib/atk/remove_indent.rb
|
50
|
-
- lib/atk/set_command.rb
|
51
50
|
- lib/atk/version.rb
|
52
51
|
- lib/atk_toolbox.rb
|
53
52
|
- lib/atk_toolbox/version.rb
|
data/lib/atk/set_command.rb
DELETED
@@ -1,43 +0,0 @@
|
|
1
|
-
require_relative './file_system'
|
2
|
-
require_relative './os'
|
3
|
-
require_relative './atk_info'
|
4
|
-
|
5
|
-
# the reason this isn't inside of the console.rb
|
6
|
-
# is because atk_info requires console
|
7
|
-
# and this requires atk_info
|
8
|
-
# which would cause a circular dependency
|
9
|
-
|
10
|
-
# add set_command to the Console
|
11
|
-
class TTY::Prompt
|
12
|
-
def set_command(name, code)
|
13
|
-
if OS.is?("unix")
|
14
|
-
exec_path = "#{Atk.paths[:commands]}/#{name}"
|
15
|
-
local_place = Atk.temp_path(name)
|
16
|
-
# add the hash bang
|
17
|
-
hash_bang = "#!#{Atk.paths[:ruby]}\n"
|
18
|
-
# create the file
|
19
|
-
FS.write(hash_bang+code, to: local_place)
|
20
|
-
# copy to command folder
|
21
|
-
system("sudo", "cp", local_place, exec_path)
|
22
|
-
system("sudo", "chmod", "ugo+x", exec_path)
|
23
|
-
elsif OS.is?("windows")
|
24
|
-
# check for invalid file paths, see https://docs.microsoft.com/en-us/windows/win32/fileio/naming-a-file
|
25
|
-
if name =~ /[><:"\/\\|?*]/
|
26
|
-
raise <<-HEREDOC.remove_indent
|
27
|
-
|
28
|
-
|
29
|
-
When using the ATK Console.set_command(name)
|
30
|
-
The name: #{name}
|
31
|
-
is not a valid file path on windows
|
32
|
-
which means it cannot be a command
|
33
|
-
HEREDOC
|
34
|
-
end
|
35
|
-
exec_path = "#{Atk.paths[:commands]}\\#{name}"
|
36
|
-
|
37
|
-
# create the code
|
38
|
-
IO.write(exec_path+".rb", code)
|
39
|
-
# create an executable to call the code
|
40
|
-
IO.write(exec_path+".bat", "@echo off\nruby \"#{exec_path}.rb\" %*")
|
41
|
-
end
|
42
|
-
end
|
43
|
-
end
|