aka2 0.1.0

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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 6b42c6d23b25160f7d666276d36d857b4aa047ef
4
+ data.tar.gz: a5002d7e07128d791043eca594a07c8cfdec78a0
5
+ SHA512:
6
+ metadata.gz: e3c58913ffefbb616c13aeea0c7441044cb4d4255d95f9e0889b00cc4b5e3b54faef0cf02b932997d921b516f7c66266c35e153f6acd61643ada7d7ddd4d33ac
7
+ data.tar.gz: 9816c945c799fec31e5574941bdd4dd9a3533795c8573facbae5d79f47de2db1d447c15ed3cd7064ab4ea8eff4b1072cdf3db84b7b5cb9de59102c51a67a3d9e
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in aka.gemspec
4
+ gemspec
@@ -0,0 +1,32 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ aka (0.0.1)
5
+ colorize (~> 0)
6
+ net-scp (~> 1.2, >= 1.2.1)
7
+ safe_yaml (~> 1.0, >= 1.0.4)
8
+ thor (~> 0.19.1)
9
+
10
+ GEM
11
+ remote: https://rubygems.org/
12
+ specs:
13
+ colorize (0.7.7)
14
+ minitest (5.7.0)
15
+ net-scp (1.2.1)
16
+ net-ssh (>= 2.6.5)
17
+ net-ssh (2.9.2)
18
+ rake (10.4.2)
19
+ safe_yaml (1.0.4)
20
+ thor (0.19.1)
21
+
22
+ PLATFORMS
23
+ ruby
24
+
25
+ DEPENDENCIES
26
+ aka!
27
+ bundler (~> 1.10)
28
+ minitest (~> 5.7)
29
+ rake (~> 10.0)
30
+
31
+ BUNDLED WITH
32
+ 1.10.2
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2015 Ryan Goh
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in
13
+ all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ THE SOFTWARE.
@@ -0,0 +1,37 @@
1
+ # aka - The Missing Alias Manager
2
+
3
+ aka generate/edit/destroy/find permanent aliases with a single command.
4
+
5
+ aka2 requires ruby and is built for bash and zsh users.
6
+
7
+ ## Installation
8
+
9
+ $ gem install aka2
10
+
11
+ ## Usage
12
+
13
+ $ aka generate hello="echo helloworld"
14
+ $ aka destroy hello
15
+ $ aka edit hello
16
+ $ aka find hello
17
+ $ aka usage
18
+ $ aka
19
+
20
+ ## Requirement
21
+
22
+ Ruby
23
+
24
+ ## Development
25
+
26
+ After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake test` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
27
+
28
+ To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
29
+
30
+ ## Contributing
31
+
32
+ Bug reports and pull requests are welcome on GitHub at https://github.com/ryangoh/aka2.
33
+
34
+
35
+ ## License
36
+
37
+ The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
@@ -0,0 +1,10 @@
1
+ require "bundler/gem_tasks"
2
+ require "rake/testtask"
3
+
4
+ Rake::TestTask.new(:test) do |t|
5
+ t.libs << "test"
6
+ t.libs << "lib"
7
+ t.test_files = FileList['test/**/*_test.rb']
8
+ end
9
+
10
+ task :default => :test
@@ -0,0 +1,36 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'aka/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "aka2"
8
+ spec.version = Aka::VERSION
9
+ spec.authors = ["Bryan Lim","Ryan Goh"]
10
+ spec.email = ["ytbryan@gmail.com","gohengkeat89@gmail.com"]
11
+
12
+ spec.summary = %q{The Missing Alias Manager}
13
+ spec.description = %q{aka generate/edit/destroy/find permanent aliases with a single command. }
14
+ spec.homepage = "https://github.com/ytbryan/aka-gem"
15
+ spec.license = "MIT"
16
+
17
+ spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
18
+ #spec.bindir = "exe"
19
+ #spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
20
+ spec.executables = ["aka"]
21
+ spec.require_paths = ["lib"]
22
+
23
+ spec.required_ruby_version = ">= 2.2.2"
24
+
25
+
26
+ spec.add_runtime_dependency 'net-scp', '~> 1.2', '>= 1.2.1'
27
+ # spec.add_runtime_dependency 'open-uri'
28
+ spec.add_runtime_dependency 'colorize', '~> 0'
29
+ spec.add_runtime_dependency "safe_yaml", '~> 1.0', '>= 1.0.4'
30
+ spec.add_runtime_dependency 'thor' , '~> 0.19.1'
31
+ # spec.add_runtime_dependency 'fileutils'
32
+
33
+ spec.add_development_dependency "bundler", "~> 1.10"
34
+ spec.add_development_dependency "rake", "~> 10.0"
35
+ spec.add_development_dependency "minitest", "~> 5.7"
36
+ end
data/bin/aka ADDED
@@ -0,0 +1,5 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'aka'
4
+
5
+ Aka::Base.start(ARGV)
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "bundler/setup"
4
+ require "aka"
5
+
6
+ # You can add fixtures and/or initialization code here to make experimenting
7
+ # with your gem easier. You can also use a different console, if you like.
8
+
9
+ # (If you use this, don't forget to add pry to your Gemfile!)
10
+ # require "pry"
11
+ # Pry.start
12
+
13
+ require "irb"
14
+ IRB.start
@@ -0,0 +1,7 @@
1
+ #!/bin/bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+
5
+ bundle install
6
+
7
+ # Do any other automated setup that you need to do here
@@ -0,0 +1,9 @@
1
+ ---
2
+ dotfile: "/home/ryan/.bashrc"
3
+ history: "/home/ryan/.bash_history"
4
+ home: "/home/ryan/.aka"
5
+ install: "/usr/local/bin"
6
+ profile: "/home/ryan/.bashrc"
7
+ list: 50
8
+ usage: 50
9
+ remote: 12.12.12.21
@@ -0,0 +1,1188 @@
1
+ require "aka/version"
2
+ require 'net/scp'
3
+ require 'open-uri'
4
+ require 'colorize'
5
+ require "safe_yaml/load"
6
+ require 'thor'
7
+ require 'fileutils'
8
+
9
+ module Aka
10
+ class Base < Thor
11
+ check_unknown_options!
12
+ package_name "aka"
13
+ default_task :list
14
+ map "dl" => "download",
15
+ "g" => "generate",
16
+ "d" => "destroy",
17
+ "f" => "find",
18
+ "up" => "upload",
19
+ "u" => "usage",
20
+ "l" => "list",
21
+ "e" => "edit",
22
+ "c" => "clean",
23
+ "h" => "help"
24
+
25
+ #
26
+ # DOWNLOAD
27
+ # aka download --to ~/Desktop/ --login admin@162.243.249.154:22000 --from /home/admin/hello desc "download [path]", "download a dot file"
28
+ desc "download", "download dotfile from server"
29
+ method_options :from => :string
30
+ method_options :to => :string
31
+ method_options :login => :string
32
+ def download
33
+ if options.from and options.to and options.login
34
+ success = true
35
+ arr = split(options.login)
36
+ pw = get_password()
37
+ begin
38
+ result = Net::SCP.download!(arr[1], #remote
39
+ arr.first,#username
40
+ options.from, #remote_path
41
+ options.to, #local_path
42
+ :ssh => {:password => pw,
43
+ :port => arr[2]})
44
+ rescue Exception => e
45
+ puts "\n#{e}"
46
+ success = false
47
+ end
48
+ puts "\nDone." if success
49
+ else
50
+ puts "Some options are missing."
51
+ puts "--login: #{options.login}"
52
+ puts "--to: #{options.to}"
53
+ puts "--from: #{options.from}"
54
+ puts "aka dl --login some_login_string --to some_local_path_string --from some_remote_path_string"
55
+ end
56
+ end
57
+
58
+ #
59
+ # UPLOAD
60
+ #
61
+ #aka upload --from ~/Desktop/TwitterAPI.rb --login admin@162.243.249.154:22000 --to /home/admin
62
+ desc "upload", "upload a dot file"
63
+ method_options :from => :string
64
+ method_options :to => :string
65
+ method_options :login => :string
66
+ def upload
67
+ if options.from and options.to and options.login
68
+ password = get_password()
69
+
70
+ if File.exists?(options.from)
71
+ success = true
72
+ begin
73
+ arr = split(options.login)
74
+ result = Net::SCP.upload!(arr[1], #remote
75
+ arr.first, #username
76
+ options.from, #local_path
77
+ options.to, #remote_path
78
+ :ssh => {:port => arr[2],
79
+ :password => password})
80
+ rescue Exception => e
81
+ puts "\n#{e}"
82
+ success = false
83
+ end
84
+
85
+ puts "\nDone." if success
86
+ else
87
+ puts "Cannot find #{options.from}"
88
+ end
89
+ else
90
+ puts "Some options are missing:"
91
+ puts "--of -> #{options.of}"
92
+ puts "--to -> #{options.to}"
93
+ puts "--from -> #{options.from}"
94
+ puts "aka up --of some_string --to some_string --from some_string"
95
+ end
96
+ end
97
+
98
+ #
99
+ # GENERATE
100
+ #
101
+ desc "generate", "generate an alias (short alias: g)"
102
+ method_options :last => :boolean
103
+ def generate args
104
+ result = false
105
+ if options.last?
106
+ result = add(add_last_command(parseARGS(args))) if args
107
+ else
108
+ result = add(parseARGS(args)) if args
109
+ if options.proj? and result == true
110
+ FileUtils.touch("#{Dir.pwd}/.aka")
111
+ add_to_proj(args)
112
+ end
113
+ end
114
+ reload_dot_file if result == true and !options.noreload
115
+ end
116
+
117
+ #
118
+ # DESTROY
119
+ #
120
+ desc "destroy", "destroy an alias (short alias: d)"
121
+ method_options :force => :boolean
122
+ def destroy(*args)
123
+ args.each_with_index do |value, index|
124
+ result = remove(value)
125
+ unalias_the(value) if !options.nounalias and result == true
126
+ reload_dot_file if result == true and !options.noreload
127
+ end
128
+ end
129
+
130
+ #
131
+ # SETUP
132
+ #
133
+ desc "setup", "setup aka"
134
+ method_options :force => :boolean
135
+ def setup
136
+ setup_aka
137
+ end
138
+
139
+ #
140
+ # first step: set config file
141
+ #
142
+ desc "setup2", "Gem - Setup aka"
143
+ method_options :force => :boolean
144
+ def setupconfig
145
+ configDir = "#{Dir.home}/.aka"
146
+ if File.exist?("#{configDir}/.config")
147
+ # list
148
+ puts "config file is exist in #{configDir}"
149
+ else
150
+ setup_config #create and setup .config file
151
+ setup_aka2 #setup aka
152
+ end
153
+ end
154
+
155
+ #
156
+ # FIND
157
+ #
158
+ desc "find", "find an alias (short alias: f)"
159
+ method_options :force => :boolean
160
+ def find *args
161
+ args.each_with_index do |value, index|
162
+ show_alias(value)
163
+ end
164
+ end
165
+
166
+ #
167
+ # EDIT
168
+ #
169
+ desc "edit", "edit an alias(short alias: e)"
170
+ method_options :force => :boolean
171
+ def edit args
172
+ if args
173
+ values = args.split("=")
174
+ if values.size > 1
175
+ truth, _alias = show_alias(args)
176
+ if truth == true
177
+ if options.name
178
+ remove(_alias) #remove that alias
179
+ edit_alias(values[1], _alias) #edit that alias
180
+ reload_dot_file() if !options.noreload
181
+ else
182
+ remove(_alias) #remove that alias
183
+ edit_this(values[1], _alias) #edit that alias
184
+ reload_dot_file() if !options.noreload
185
+ end
186
+ else
187
+ puts "Alias '#{args}' cannot be found".red
188
+ end
189
+ else
190
+ truth, _alias, command = show_alias(args)
191
+ if truth == true
192
+ if options.name
193
+ input = ask "Enter a new alias for command '#{command}'?\n"
194
+ if yes? "Please confirm the new alias? (y/N)"
195
+ remove(_alias) #remove that alias
196
+ edit_alias(input, _alias) #edit that alias
197
+ reload_dot_file() if !options.noreload
198
+ end
199
+ else
200
+ input = ask "Enter a new command for alias '#{args}'?\n"
201
+ if yes? "Please confirm the new command? (y/N)"
202
+ remove(_alias) #remove that alias
203
+ edit_this(input, _alias) #edit that alias
204
+ reload_dot_file() if !options.noreload
205
+ end
206
+ end
207
+ else
208
+ puts "Alias '#{args}' cannot be found".red
209
+ end
210
+ end
211
+
212
+ end #if args
213
+ end
214
+
215
+ #
216
+ # LIST OUT
217
+ #
218
+ desc "list", "list alias (short alias: l)"
219
+ method_options :force => :boolean
220
+ def list(args=nil)
221
+ if args != nil
222
+ showlast(args.to_i)
223
+ else
224
+ value = readYML("#{Dir.home}/.aka/.config")["list"]
225
+ showlast(value.to_i) #this is unsafe
226
+ end
227
+
228
+ #total of #{} exports #functions
229
+ puts "A total of #{count()} aliases,#{count_export} exports and #{count_function} functions from #{readYML("#{Dir.home}/.aka/.config")["dotfile"]}"
230
+ reload_dot_file
231
+ end
232
+
233
+ #
234
+ # LIST OUT - ryan - remove numbering
235
+ #
236
+ desc "list2", "list alias (short alias: l)"
237
+ method_options :force => :boolean
238
+ def list2(args=nil)
239
+ if args != nil
240
+ showlast2(args.to_i)
241
+ else
242
+ value = readYML("#{Dir.home}/.aka/.config")["list"]
243
+ showlast2(value.to_i) #this is unsafe
244
+ end
245
+
246
+ #total of #{} exports #functions
247
+ puts "A total of #{count()} aliases,#{count_export} exports and #{count_function} functions from #{readYML("#{Dir.home}/.aka/.config")["dotfile"]}"
248
+ reload_dot_file
249
+ puts "\nUse 'aka -h' to see all the useful commands.\n\n"
250
+ end
251
+
252
+ #
253
+ # USAGE
254
+ #
255
+ desc "usage [number]", "show commands usage based on history"
256
+ # method_options :least, :type => :boolean, :aliases => '-l', :desc => 'show the least used commands'
257
+ # method_options :clear, :type => :boolean, :aliases => '-c', :desc => 'clear the dot history file'
258
+ def usage(args=nil)
259
+ if args
260
+ if options.least
261
+ showUsage(args.to_i, true) if args
262
+ else
263
+ showUsage(args.to_i) if args
264
+ end
265
+ else
266
+ if options.least
267
+ value = readYML("#{Dir.home}/.aka/.config")["usage"]
268
+ showlast(value.to_i, true) #this is unsafe
269
+ else
270
+ value = readYML("#{Dir.home}/.aka/.config")["usage"]
271
+ showlast(value.to_i) #this is unsafe
272
+ end
273
+ end
274
+
275
+ if options[:clear]
276
+ puts "clear the dot history file"
277
+ end
278
+ end
279
+
280
+ #
281
+ # USAGE2 - ryan - remove numbering in front
282
+ #
283
+ desc "usage2 [number]", "show commands usage based on history"
284
+ # method_options :least, :type => :boolean, :aliases => '-l', :desc => 'show the least used commands'
285
+ # method_options :clear, :type => :boolean, :aliases => '-c', :desc => 'clear the dot history file'
286
+ def usage2(args=nil)
287
+ if args
288
+ if options.least
289
+ showUsage(args.to_i, true) if args
290
+ else
291
+ showUsage(args.to_i) if args
292
+ end
293
+ else
294
+ if options.least
295
+ value = readYML("#{Dir.home}/.aka/.config")["usage"]
296
+ showlast2(value.to_i, true) #this is unsafe
297
+ else
298
+ value = readYML("#{Dir.home}/.aka/.config")["usage"]
299
+ showlast2(value.to_i) #this is unsafe
300
+ end
301
+ end
302
+
303
+ if options[:clear]
304
+ puts "clear the dot history file"
305
+ end
306
+ end
307
+
308
+
309
+ #
310
+ # INSTALL
311
+ #
312
+ desc "install [name]", "install aka"
313
+ method_options :force => :boolean
314
+ def install
315
+ if File.exist? "#{Dir.pwd}/aka"
316
+ if File.exist? "/usr/local/bin/aka"
317
+ if yes? "aka exists. Do you want to replace it? (yN)"
318
+ FileUtils.rm("/usr/local/bin/aka")
319
+ system("ln -s #{Dir.pwd}/aka /usr/local/bin/aka")
320
+ puts "aka replaced."
321
+ end
322
+ else
323
+ result = system("ln -s #{Dir.pwd}/aka /usr/local/bin/aka")
324
+ puts "aka installed."
325
+ end
326
+ else
327
+ puts "Cannot find aka.".red
328
+ end
329
+ end
330
+
331
+ #
332
+ # INIT
333
+ #
334
+ desc "init", "setup aka"
335
+ method_options :dotfile => :string
336
+ method_options :history => :string
337
+ method_options :home => :string
338
+ method_options :install => :string
339
+ method_options :profile => :string
340
+ method_options :list => :numeric
341
+ method_options :usage => :numeric
342
+ method_options :remote => :string
343
+ method_options :config => :boolean
344
+ method_options :zshrc => :boolean
345
+ method_options :bashrc => :boolean
346
+ method_options :bash => :boolean
347
+
348
+ def init
349
+ if options.count < 1
350
+ setup
351
+ else
352
+ setZSHRC if options[:zshrc]
353
+ setBASHRC if options[:bashrc]
354
+ setBASH if options[:bash]
355
+
356
+ showConfig if options[:config]
357
+ setPath(options[:dotfile],"dotfile") if options[:dotfile]
358
+ setPath(options[:history],"history") if options[:history]
359
+ setPath(options[:home],"home") if options[:home]
360
+ setPath(options[:install],"install") if options[:install]
361
+ setPath(options[:profile],"profile") if options[:profile]
362
+ setPath(options[:list],"list") if options[:list]
363
+ setPath(options[:usage],"usage") if options[:usage]
364
+ setPath(options[:remote],"remote") if options[:remote]
365
+ end
366
+ end
367
+
368
+ #
369
+ # CLEAN
370
+ #
371
+ desc "clean", "perform cleanup"
372
+ def clean
373
+ cleanup
374
+ end
375
+
376
+ #
377
+ # PRIVATE METHODS
378
+ #
379
+
380
+ private
381
+
382
+ # set path
383
+ def setPath(path, value)
384
+ data = readYML("#{Dir.home}/.aka/.config")
385
+ if data.has_key?(value) == true
386
+ old_path = data[value]
387
+ data[value] = path
388
+ writeYML("#{Dir.home}/.aka/.config", data)
389
+ puts "#{value} -> #{path}"
390
+ else
391
+ puts "error: --#{value} does not exist in #{Dir.home}/.aka/.config "
392
+ end
393
+ end
394
+
395
+ # reload
396
+ def reload
397
+ system "source #{readYML("#{Dir.home}/.aka/.config")["dotfile"]}"
398
+ end
399
+
400
+ # read YML
401
+ def readYML path
402
+ if File.exists? path
403
+ return YAML.load_file(path)
404
+ else
405
+ puts "#{Dir.home}/.aka/.config does not exist. You need to create one, type `touch ~/.aka/.config` and copy https://github.com/ytbryan/aka/blob/master/.config".red
406
+ end
407
+ end
408
+
409
+ # write YML
410
+ def writeYML path, theyml
411
+ File.open(path, 'w') {|f| f.write theyml.to_yaml } #Store
412
+ end
413
+
414
+ # write_with
415
+ def write_with array
416
+ str = checkConfigFile(readYML("#{Dir.home}/.aka/.config")["dotfile"])
417
+
418
+ File.open(str, 'w') { |file|
419
+ array.each do |line|
420
+ file.write(line)
421
+ end
422
+ }
423
+ end
424
+
425
+ # write_with_newline
426
+ def write_with_newline array
427
+ str = checkConfigFile(readYML("#{Dir.home}/.aka/.config")["dotfile"])
428
+
429
+ File.open(str, 'w') { |file|
430
+ array.each do |line|
431
+ file.write(line + "\n")
432
+ end
433
+ }
434
+ end
435
+
436
+ # write
437
+ def write str, path
438
+ File.open(path, 'w') { |file| file.write(str) }
439
+ end
440
+
441
+ # append
442
+ def append str, path
443
+ File.open(path, 'a') { |file| file.write(str) }
444
+ end
445
+
446
+ #append_with_newline
447
+ def append_with_newline str, path
448
+ File.open(path, 'a') { |file| file.write(str + "\n") }
449
+ end
450
+
451
+ # reload_dot_file
452
+ def reload_dot_file
453
+ if isOhMyZsh == true
454
+ system("exec zsh")
455
+ else
456
+ system("kill -SIGUSR1 #{Process.ppid}")
457
+ end
458
+ end
459
+
460
+ # history write
461
+ def historywrite
462
+ if isOhMyZsh == true
463
+ system("exec zsh")
464
+ else
465
+ system "kill -SIGUSR2 #{Process.ppid}"
466
+ end
467
+ end
468
+
469
+ # unalias
470
+ def unalias_the value
471
+ if isOhMyZsh == true
472
+ system("exec zsh")
473
+ else
474
+ system "echo '#{value}' > ~/sigusr1-args;"
475
+ system "kill -SIGUSR2 #{Process.ppid}"
476
+ end
477
+ end
478
+
479
+ #split domain user
480
+ def split_domain_user fulldomain
481
+ username = fulldomain.split("@").first
482
+ domain = fulldomain.split("@")[1]
483
+ return [username, domain]
484
+ end
485
+
486
+ # split
487
+ def split fulldomain
488
+ username = fulldomain.split("@").first
489
+ domain = fulldomain.split("@")[1].split(":").first
490
+ port = fulldomain.split("@")[1].split(":")[1]
491
+ return [username, domain, port]
492
+ end
493
+
494
+ # add
495
+ def add input
496
+ if input and show_alias(input).first == false and not_empty_alias(input) == false
497
+ array = input.split("=")
498
+ full_command = "alias #{array.first}='#{array[1]}'".gsub("\n","") #remove new line in command
499
+ print_out_command = "aka g #{array.first}='#{array[1]}'"
500
+
501
+ str = checkConfigFile(readYML("#{Dir.home}/.aka/.config")["dotfile"])
502
+
503
+ File.open(str, 'a') { |file| file.write("\n" +full_command) }
504
+ puts "#{print_out_command} is added to #{readYML("#{Dir.home}/.aka/.config")["dotfile"]}"
505
+ return true
506
+ else
507
+ puts "The alias is already present."
508
+ return false
509
+ end
510
+ end
511
+
512
+ # not empty alias
513
+ def not_empty_alias input
514
+ array = input.split("=")
515
+ return true if array.count < 2
516
+ return array[1].strip == ""
517
+ end
518
+
519
+ # show alias
520
+ def show_alias argument
521
+ str = checkConfigFile(readYML("#{Dir.home}/.aka/.config")["dotfile"])
522
+
523
+ if content = File.open(str).read
524
+ content.gsub!(/\r\n?/, "\n")
525
+ content_array = content.split("\n")
526
+ content_array.each_with_index { |line, index|
527
+ value = line.split(" ")
528
+ if value.length > 1 and value.first == "alias"
529
+ answer = value[1].split("=")
530
+ if found?(answer.first, argument.split("=").first, line) == true
531
+ return [true, answer.first, answer[1]]
532
+ end
533
+ end
534
+ }
535
+ else
536
+ puts "#{@pwd} cannot be found.".red
537
+ return [false, nil, nil]
538
+ end
539
+ return [false, nil, nil]
540
+
541
+ end
542
+
543
+ # remove
544
+ def remove input
545
+
546
+ str = checkConfigFile(readYML("#{Dir.home}/.aka/.config")["dotfile"])
547
+
548
+ if content=File.open(str).read
549
+ content.gsub!(/\r\n?/, "\n")
550
+ content_array= content.split("\n")
551
+ content_array.each_with_index { |line, index|
552
+ value = line.split(" ")
553
+ if value.length > 1 and value.first == "alias"
554
+ answer = value[1].split("=")
555
+ if answer.first == input
556
+ content_array.delete_at(index) and write_with_newline(content_array)
557
+ print_out_command = "aka g #{input}=#{line.split("=")[1]}"
558
+ puts "removed: #{print_out_command} is removed from #{str}".red
559
+ return true
560
+ end
561
+ end
562
+ }
563
+
564
+ puts "#{input} cannot be found.".red
565
+ else
566
+ puts "#{@pwd} cannot be found.".red
567
+ return false
568
+ end
569
+ end
570
+
571
+ # history
572
+ def history
573
+
574
+ str = checkConfigFile(readYML("#{Dir.home}/.aka/.config")["history"])
575
+
576
+ if content = File.open(str).read
577
+ puts ".bash_history is available"
578
+ count=0
579
+ content.gsub!(/\r\n?/, "\n")
580
+ content_array = content.split("\n")
581
+ content_array.each_with_index { |line, index|
582
+ array = line.split(" ")
583
+ if array.first == "alias"
584
+ count += 1
585
+ end
586
+ puts "#{index+1} #{line}"
587
+ }
588
+ puts "There are #{count} lines of history."
589
+ else
590
+ puts ".bash_history is not available".red
591
+ end
592
+ end
593
+
594
+ # check version
595
+ def version
596
+ puts ""
597
+ puts "aka #{program(:version)} - #{program(:last_update)}"
598
+ puts "#{program(:author)} - #{program(:contact)}"
599
+ puts "https://github.com/ytbryan/aka"
600
+ end
601
+
602
+ # check found
603
+ def found? answer, argument, line
604
+ if answer == argument
605
+ # puts line.red + " - aka add #{argument}"
606
+ # puts line.red
607
+ puts "found: aka g #{argument}=#{line.split('=')[1]}".red
608
+ return true
609
+ else
610
+ return false
611
+ end
612
+ end
613
+
614
+ # edit_this
615
+ def edit_this newcommand, this_alias
616
+ puts "new: aka g #{this_alias}='#{newcommand}'"
617
+ return append("alias " + this_alias + "='" + newcommand + "'", readYML("#{Dir.home}/.aka/.config")["dotfile"] )
618
+ end
619
+
620
+ # edit alias
621
+ def edit_alias newalias, thiscommand
622
+ puts "new: aka g #{this_alias}='#{newcommand}'"
623
+ return append("alias " + newalias + "='" + thiscommand + "'", readYML("#{Dir.home}/.aka/.config")["dotfile"] )
624
+ end
625
+
626
+ # count function
627
+ def count_function
628
+ function_count = 0
629
+ str = checkConfigFile(readYML("#{Dir.home}/.aka/.config")["dotfile"])
630
+ if content=File.open(str).read
631
+ content.gsub!(/\r\n?/, "\n")
632
+ content_array= content.split("\n")
633
+ content_array.each_with_index { |line, index|
634
+ value = line.split(" ")
635
+ if value.length > 1 and value.first == "function"
636
+ answer = value[1].split("=")
637
+ function_count += 1
638
+ end
639
+ }
640
+ return function_count
641
+ end
642
+ end
643
+
644
+ #count export
645
+ def count_export
646
+ export_count = 0
647
+ str = checkConfigFile(readYML("#{Dir.home}/.aka/.config")["dotfile"])
648
+ if content=File.open(str).read
649
+ content.gsub!(/\r\n?/, "\n")
650
+ content_array= content.split("\n")
651
+ content_array.each_with_index { |line, index|
652
+ value = line.split(" ")
653
+ if value.length > 1 and value.first == "export"
654
+ answer = value[1].split("=")
655
+ export_count += 1
656
+ end
657
+ }
658
+ return export_count
659
+ end
660
+
661
+ end
662
+
663
+ # count
664
+ def count
665
+ alias_count = 0
666
+
667
+ str = checkConfigFile(readYML("#{Dir.home}/.aka/.config")["dotfile"])
668
+
669
+ if content=File.open(str).read
670
+ content.gsub!(/\r\n?/, "\n")
671
+ content_array= content.split("\n")
672
+ content_array.each_with_index { |line, index|
673
+ value = line.split(" ")
674
+ if value.length > 1 and value.first == "alias"
675
+ answer = value[1].split("=")
676
+ alias_count += 1
677
+ end
678
+ }
679
+ return alias_count
680
+ end
681
+ end
682
+
683
+ # setup_aka
684
+ def setup_aka
685
+ append_with_newline("export HISTSIZE=10000","/etc/profile")
686
+ trap = "sigusr2() { unalias $1;}
687
+ sigusr1() { source #{readYML("#{Dir.home}/.aka/.config")["dotfile"]}; history -a; echo 'reloaded dot file'; }
688
+ trap sigusr1 SIGUSR1
689
+ trap 'sigusr2 $(cat ~/sigusr1-args)' SIGUSR2\n".pretty
690
+ append(trap, readYML("#{Dir.home}/.aka/.config")['profile'])
691
+ puts "Done. Please restart this shell.".red
692
+ end
693
+
694
+ # setup_aka2 by ryan - check bash file first
695
+ def setup_aka2
696
+ if File.exist?("#{Dir.home}/.zshrc") #if zshec exist
697
+ setZSHRC2
698
+ append_with_newline("export HISTSIZE=10000","#{Dir.home}/.zshrc")
699
+ elsif
700
+ File.exist?("#{Dir.home}/.bashrc") #if bashrc exist
701
+ setBASHRC2
702
+ append_with_newline("export HISTSIZE=10000","#{Dir.home}/.bashrc")
703
+ elsif File.exist?("#{Dir.home}/.bash_profile") #if bash_profile exist
704
+ setBASH2
705
+ append_with_newline("export HISTSIZE=10000","#{Dir.home}/.bash_profile")
706
+ else
707
+ puts "Currently aka2 just support zshrc, bashrc and bash_profile"
708
+ puts "Pleaes contact aka2 creator for more info."
709
+ end
710
+
711
+ trap = "sigusr2() { unalias $1;}
712
+ sigusr1() { source #{readYML("#{Dir.home}/.aka/.config")["dotfile"]}; history -a; echo 'reloaded dot file'; }
713
+ trap sigusr1 SIGUSR1
714
+ trap 'sigusr2 $(cat ~/sigusr1-args)' SIGUSR2\n".pretty
715
+ append(trap, readYML("#{Dir.home}/.aka/.config")['profile'])
716
+ puts "Done. Please restart this shell.".red
717
+ end
718
+
719
+ # create and setup config file
720
+ def setup_config
721
+ configDir = "#{Dir.home}/.aka"
722
+ if File.exist?("#{configDir}/.config")
723
+ puts "Directory #{configDir}/.config exist"
724
+ else
725
+ FileUtils::mkdir_p("#{configDir}")
726
+ FileUtils.cp("./lib/.config", "#{configDir}")
727
+ end
728
+ end
729
+
730
+ # write to location
731
+ def write_to_location location, address
732
+ if aka_directory_exists?
733
+ write(location, address)
734
+ else
735
+ puts ".aka not found.".red
736
+ end
737
+ end
738
+
739
+ # read location
740
+ def read location
741
+ answer = dot_location_exists?(location)
742
+ if answer == true and content = File.open(location).read
743
+ return content
744
+ end
745
+ return ""
746
+ end
747
+
748
+ # dot location exist
749
+ def dot_location_exists? address
750
+ return File.exist? address
751
+ end
752
+
753
+ # aka directory exist ?
754
+ def aka_directory_exists?
755
+ return File.directory?("#{Dir.home}/.aka")
756
+ end
757
+
758
+ # check config file
759
+ def checkConfigFile str
760
+ path = "#{Dir.home}/.bash_profile"
761
+ if str == ""
762
+ puts "Error: Type `aka init --dotfile #{path}` to set the path to your dotfile. \nReplace .bash_profile with .bashrc or .zshrc if you are not using bash.".red
763
+ exit()
764
+ end
765
+
766
+ if !File.exists?(str)
767
+ puts "Error: Type `aka init --dotfile #{path}` to set the path of your dotfile. \nReplace .bash_profile with .bashrc or .zshrc if you are not using bash.".red
768
+ exit()
769
+ end
770
+
771
+ return str
772
+ end
773
+
774
+ # show last
775
+ def showlast howmany=10
776
+ str = checkConfigFile(readYML("#{Dir.home}/.aka/.config")["dotfile"])
777
+
778
+ if content = File.open(str).read
779
+ content.gsub!(/\r\n?/, "\n")
780
+ content_array = content.split("\n")
781
+ #why not just call the last five lines? Because i can't be sure that they are aliases
782
+ total_aliases = []
783
+ content_array.each_with_index { |line, index|
784
+ value = line.split(" ")
785
+ if value.length > 1 and value.first == "alias"
786
+ total_aliases.push(line)
787
+ end
788
+ }
789
+ puts ""
790
+ if total_aliases.count > howmany
791
+ total_aliases.last(howmany).each_with_index do |line, index|
792
+ splitted= line.split('=')
793
+ puts "#{total_aliases.count - howmany + index+1}. aka g " + splitted[0].split(" ")[1] + "=" + splitted[1].red
794
+ # puts "#{total_aliases.count - howmany + index+1}. " + splitted[0] + "=" + splitted[1].red
795
+ end
796
+ else
797
+ total_aliases.last(howmany).each_with_index do |line, index|
798
+ splitted= line.split('=')
799
+ # puts "#{index+1}. " + splitted[0] + "=" + splitted[1].red
800
+ puts "#{index+1}. aka g " + splitted[0].split(" ")[1] + "=" + splitted[1].red
801
+ end
802
+ end
803
+ puts ""
804
+ end
805
+ end
806
+
807
+ # show last2 - ryan - remove number
808
+ def showlast2 howmany=10
809
+ str = checkConfigFile(readYML("#{Dir.home}/.aka/.config")["dotfile"])
810
+
811
+ if content = File.open(str).read
812
+ content.gsub!(/\r\n?/, "\n")
813
+ content_array = content.split("\n")
814
+ #why not just call the last five lines? Because i can't be sure that they are aliases
815
+ total_aliases = []
816
+ content_array.each_with_index { |line, index|
817
+ value = line.split(" ")
818
+ if value.length > 1 and value.first == "alias"
819
+ total_aliases.push(line)
820
+ end
821
+ }
822
+ puts ""
823
+ if total_aliases.count > howmany
824
+ total_aliases.last(howmany).each_with_index do |line, index|
825
+ splitted= line.split('=')
826
+ puts "aka g " + splitted[0].split(" ")[1] + "=" + splitted[1].red
827
+ # puts "#{total_aliases.count - howmany + index+1}. " + splitted[0] + "=" + splitted[1].red
828
+ end
829
+ else
830
+ total_aliases.last(howmany).each_with_index do |line, index|
831
+ splitted= line.split('=')
832
+ # puts "#{index+1}. " + splitted[0] + "=" + splitted[1].red
833
+ puts "aka g " + splitted[0].split(" ")[1] + "=" + splitted[1].red
834
+ end
835
+ end
836
+ puts ""
837
+ end
838
+ end
839
+
840
+ # show usage
841
+ def showUsage howmany=10, least=false
842
+
843
+ str = checkConfigFile(readYML("#{Dir.home}/.aka/.config")["history"])
844
+
845
+ value = reload_dot_file()
846
+ #get all aliases
847
+ if content = File.open(str).read
848
+ content.gsub!(/\r\n?/, "\n")
849
+ content_array = content.split("\n")
850
+ total_aliases = []
851
+ content_array.each_with_index { |line, index|
852
+ value = line.split(" ")
853
+ total_aliases.push(value.first)
854
+ }
855
+ count_aliases(total_aliases, howmany, least)
856
+ end
857
+ end
858
+
859
+ # count aliases
860
+ def count_aliases array, howmany, least=false
861
+ name_array,count_array = [], []
862
+ #find the unique value
863
+ array.each_with_index { |value, index|
864
+ if name_array.include?(value) == false
865
+ name_array.push(value)
866
+ end
867
+ }
868
+ #count the value
869
+ name_array.each { |unique_value|
870
+ count = 0
871
+ array.each { |value|
872
+ if (unique_value == value)
873
+ count+=1
874
+ end
875
+ }
876
+ count_array.push(count)
877
+ }
878
+
879
+ sorted_count_array, sorted_name_array = sort(count_array, name_array)
880
+
881
+ #display the least used aliases
882
+ if least == true
883
+ if sorted_count_array.count == sorted_name_array.count
884
+ puts ""
885
+ sorted_name_array.last(howmany).each_with_index { |value, index|
886
+ percent = ((sorted_count_array[sorted_name_array.last(howmany).size + index]).round(2)/array.size.round(2))*100
887
+ str = "#{sorted_name_array.size-sorted_name_array.last(howmany).size+index+1}. #{value}"
888
+ puts "#{str} #{showSpace(str)} #{showBar(percent)}"
889
+ }
890
+ puts ""
891
+ else
892
+ puts "Something went wrong: count_array.count = #{sorted_count_array.count}\n
893
+ name_array.count = #{sorted_name_array.count}. Please check your .bash_history.".pretty
894
+ end
895
+ else
896
+ # #print out
897
+ if sorted_count_array.count == sorted_name_array.count
898
+ puts ""
899
+ sorted_name_array.first(howmany).each_with_index { |value, index|
900
+ percent = ((sorted_count_array[index]).round(2)/array.size.round(2))*100
901
+ str = "#{index+1}. #{value}"
902
+ puts "#{str} #{showSpace(str)} #{showBar(percent)}"
903
+ }
904
+ puts ""
905
+ else
906
+ puts "Something went wrong: count_array.count = #{sorted_count_array.count}\n
907
+ name_array.count = #{sorted_name_array.count}. Please check your .bash_history.".pretty
908
+ end
909
+ end
910
+ puts "There's a total of #{array.size} lines in #{readYML("#{Dir.home}/.aka/.config")["history"]}."
911
+ end
912
+
913
+ # sort
914
+ def sort(countarray, namearray) #highest first. decscending.
915
+ temp = 0, temp2 = ""
916
+ countarray.each_with_index { |count, index|
917
+ countarray[0..countarray.size-index].each_with_index { |x, thisindex| #always one less than total
918
+
919
+ if index < countarray.size-1 and thisindex < countarray.size-1
920
+ if countarray[thisindex] < countarray[thisindex+1] #if this count is less than next count
921
+ temp = countarray[thisindex]
922
+ countarray[thisindex] = countarray[thisindex+1]
923
+ countarray[thisindex+1] = temp
924
+
925
+ temp2 = namearray[thisindex]
926
+ namearray[thisindex] = namearray[thisindex+1]
927
+ namearray[thisindex+1] = temp2
928
+ end
929
+ end
930
+
931
+ }
932
+ }#outer loop
933
+ return countarray, namearray
934
+ end
935
+
936
+ # get history file
937
+ def get_latest_history_file
938
+ system("history -a")
939
+ end
940
+
941
+ # clean up
942
+ def cleanup
943
+
944
+ str = checkConfigFile(readYML("#{Dir.home}/.aka/.config")["dotfile"])
945
+
946
+ if content = File.open(str).read
947
+ content.gsub!(/\r\n?/, "\n")
948
+ content_array = content.split("\n")
949
+ check = false
950
+ while check == false
951
+ check = true
952
+ content_array.each_with_index { |line, index|
953
+ if line == "" or line == "\n"
954
+ content_array.delete_at(index)
955
+ check = false
956
+ end
957
+ }
958
+ end
959
+ write_with_newline(content_array)
960
+ end
961
+ end
962
+
963
+ ################################################
964
+ ## Getting these babies ready for beauty contest
965
+ ################################################
966
+
967
+ def showSpace word
968
+ space = ""
969
+ val = 20 - word.size
970
+ val = 20 if val < 0
971
+ val.times do
972
+ space += " "
973
+ end
974
+ return space
975
+ end
976
+
977
+ def showBar percent
978
+ result = ""
979
+ val = percent/100 * 50
980
+ val = 2 if val > 1 and val < 2
981
+ val = 1 if val.round <= 1 #for visibiity, show two bars if it's just one
982
+ val.round.times do
983
+ result += "+"
984
+ end
985
+
986
+ remaining = 50 - val.round
987
+ remaining.times do
988
+ result += "-".red
989
+ end
990
+
991
+ return result + " #{percent.round(2)}%"
992
+ end
993
+
994
+
995
+ # command :config do |c|
996
+ # c.action do |args, options|
997
+ # # theyml = Hash.new
998
+ # # theyml["location"] = "~/.aka/.location"
999
+ # # theyml["global"] = "/Users/ytbryan/.bash_profile"
1000
+ # # theyml["groups"] = "~/.aka/groups"
1001
+ # # theyml["remote"] = "255, admin, 12.12.12.233"
1002
+ # # theyml["path"] = "~/.aka"
1003
+ # # writeYML("#{Dir.home}/.aka/.config", theyml)
1004
+ # FileUtils.touch(readYML("#{Dir.home}/.aka/.config")["location"])
1005
+ # end
1006
+ # end
1007
+ #
1008
+ # command :readconfig do |c|
1009
+ # c.action do |args, options|
1010
+ # puts "readYML('#{Dir.home}/.aka/.config')['location'] ->#{readYML("#{Dir.home}/.aka/.config")["location"].class} -> #{readYML("#{Dir.home}/.aka/.config")["location"]}"
1011
+ # puts "readYML("#{Dir.home}/.aka/.config")["location"] -> #{ readYML("#{Dir.home}/.aka/.config")["location"].class} -> #{ readYML("#{Dir.home}/.aka/.config")["location"]}"
1012
+ # puts "#{program(:path_to_location).class} -> #{program(:path_to_location)}"
1013
+ # end
1014
+ # end
1015
+ #
1016
+
1017
+ ###########################
1018
+ ### DEVELOPMENT
1019
+ ###########################
1020
+
1021
+ # command :build do |c|
1022
+ # c.syntax = 'aka build [options]'
1023
+ # c.summary = 'build the VERSION file and run tests'
1024
+ # c.action do |args, options|
1025
+ # write(program(:version), './VERSION')
1026
+ # puts "VERSION #{program(:version)} created at #{Time.now.strftime("%I:%M%p, %A, %d %b %Y")}"
1027
+ # end
1028
+ # end
1029
+
1030
+ # command :install do |c|
1031
+ # c.syntax = 'aka copy [options]'
1032
+ # c.summary = 'copy a local copy of aka to /usr/local/bin'
1033
+ # c.action do |args, options|
1034
+ # result = system("sudo cp aka /usr/local/bin")
1035
+ # puts "Installed aka #{program(:version)} into /usr/local/bin (#{Time.now.strftime("%I:%M%p,%a,%d %b %Y")}).".red if result == true
1036
+ # puts "" if result == true
1037
+ # end
1038
+ # end
1039
+ #
1040
+ # command :uninstall do |c|
1041
+ # c.syntax = 'aka uninstall [options]'
1042
+ # c.summary = 'uninstall aka'
1043
+ # c.action do |args, options|
1044
+ # input = ask "Confirm that you want to uninstall aka? (y/N)"
1045
+ # system("sudo rm -rf ~/.aka; sudo rm -rf /usr/local/bin/aka;") if input == "y"
1046
+ # end
1047
+ # end
1048
+
1049
+ def add_to_proj fullalias
1050
+ values = fullalias.split("=")
1051
+ yml = readYML("#{Dir.pwd}/.aka")
1052
+ if yml == false
1053
+ write_new_proj_aka_file fullalias
1054
+ else
1055
+ yml["proj"]["title"] = "this is title"
1056
+ yml["proj"]["summary"] = "this is summary"
1057
+ yml["proj"]["aka"][values.first] = values[1]
1058
+ writeYML("#{Dir.pwd}/.aka", yml)
1059
+ end
1060
+ end
1061
+
1062
+ def write_new_proj_aka_file fullalias
1063
+ values = fullalias.split("=")
1064
+
1065
+ theyml = {"proj" => {
1066
+ "title" => "",
1067
+ "summary" => "",
1068
+ "aliases" => {
1069
+ "firstvalue" => ""
1070
+ }}}
1071
+
1072
+ writeYML("#{Dir.pwd}/.aka", theyml)
1073
+ end
1074
+
1075
+ def createShortcut(proj)
1076
+ answer = ""
1077
+ proj["shortcuts"].to_a.each_with_index do |each,index|
1078
+ answer += "#{each["name"]}
1079
+ - #{each["command"]}
1080
+ ".pretty
1081
+ answer += "\n"
1082
+ end
1083
+ return answer
1084
+ end
1085
+
1086
+ def add_last_command name
1087
+ command= find_last_command()
1088
+ return str = name + "=" + "#{command}"
1089
+ end
1090
+
1091
+ def find_last_command
1092
+ str = checkConfigFile(readYML("#{Dir.home}/.aka/.config")["history"])
1093
+ #i think if you do history -w, you can retrieve the latest command
1094
+ if content = File.open(str).read
1095
+ count=0
1096
+ content.gsub!(/\r\n?/, "\n")
1097
+ content_array = content.split("\n")
1098
+ return content_array[content_array.count - 1]
1099
+ end
1100
+ end
1101
+
1102
+ def parseARGS str
1103
+ array = str.split(" ")
1104
+ array.each_with_index do |line, value|
1105
+ array[value] = line.gsub('#{pwd}', Shellwords.escape(Dir.pwd))
1106
+ end
1107
+ return array.join(" ")
1108
+ end
1109
+
1110
+ def add_pwd_to_the_command
1111
+ #detect #{pwd}
1112
+ #get the pwd and replace the the pwd
1113
+ end
1114
+
1115
+ def showConfig
1116
+ thing = YAML.load_file("#{Dir.home}/.aka/.config")
1117
+ puts ""
1118
+ thing.each do |company,details|
1119
+ puts "#{company} -> " + "#{details}".red
1120
+ end
1121
+ end
1122
+
1123
+ def setZSHRC
1124
+ setPath("#{Dir.home}/.zshrc","dotfile")
1125
+ setPath("#{Dir.home}/.zsh_history","history")
1126
+ setPath("/etc/zprofile","profile")
1127
+ end
1128
+
1129
+ def setBASHRC
1130
+ setPath("#{Dir.home}/.bashrc","dotfile")
1131
+ setPath("#{Dir.home}/.bash_history","history")
1132
+ setPath("/etc/profile","profile")
1133
+ end
1134
+
1135
+ def setBASH
1136
+ setPath("#{Dir.home}/.bash_profile","dotfile")
1137
+ setPath("#{Dir.home}/.bash_history","history")
1138
+ setPath("/etc/profile","profile")
1139
+ end
1140
+
1141
+ def setZSHRC2 #ryan - set the right dotfile and profile
1142
+ setPath("#{Dir.home}/.zshrc","dotfile")
1143
+ setPath("#{Dir.home}/.zsh_history","history")
1144
+ setPath("#{Dir.home}/.zshrc","profile")
1145
+ setPath("#{Dir.home}/.aka","home")
1146
+ end
1147
+
1148
+ def setBASHRC2 #ryan - set the right dotfile and profile
1149
+ setPath("#{Dir.home}/.bashrc","dotfile")
1150
+ setPath("#{Dir.home}/.bash_history","history")
1151
+ setPath("#{Dir.home}/.bashrc","profile")
1152
+ setPath("#{Dir.home}/.aka","home")
1153
+ end
1154
+
1155
+ def setBASH2 #ryan - set the right dotfile and profile
1156
+ setPath("#{Dir.home}/.bash_profile","dotfile")
1157
+ setPath("#{Dir.home}/.bash_history","history")
1158
+ setPath("/etc/profile","profile")
1159
+ setPath("#{Dir.home}/.aka","home")
1160
+ end
1161
+
1162
+ def get_password
1163
+ ask("Enter Password: ", :echo => false)
1164
+ end
1165
+
1166
+ def isOhMyZsh
1167
+ if readYML("#{Dir.home}/.aka/.config")["dotfile"] == "#{Dir.home}/.zshrc"
1168
+ return true
1169
+ else
1170
+ return false
1171
+ end
1172
+ end
1173
+
1174
+
1175
+ end
1176
+
1177
+
1178
+ end
1179
+
1180
+ class String
1181
+ def pretty
1182
+ return self.gsub("\s\t\r\f", ' ').squeeze(' ')
1183
+ end
1184
+
1185
+ def is_i?
1186
+ !!(self =~ /\A[-+]?[0-9]+\z/)
1187
+ end
1188
+ end