aka2 0.1.9 → 0.1.10.pre

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 40626cc2cfc54d3962ec5658ecf5f38c4b305571
4
- data.tar.gz: 1f50860a5d9a7083791f7b954837bfec1c091959
3
+ metadata.gz: 3f8af39e6917d3db6566784e531da2960dd6425c
4
+ data.tar.gz: afbf8902580d4834383102b3bd8b55e2ed3f7a93
5
5
  SHA512:
6
- metadata.gz: 6aee9b32cb2e7b611e40ada21e45c9d2ba1e73f3557b46bc98888a5280478d58f077948224a81c83c91165a6e3d7f052715b0a47700c3655c351aaa18c6a0a08
7
- data.tar.gz: e6fd42de9861d0f8b33db36a7ca8335fe32927e03444a7daea2624c1052c39bf6f515d1d943570eb1e643458bb85c976ee0cb1e1362cad162bfb2caab6fd0730
6
+ metadata.gz: 90b7bed280b5324ca73a63bff27d478d8869457586b3e618329be96d7ad22b70a1985e572795d113e7334499162dd285afc5ae1d67b87ade5dbaf4b1b1b1ddb4
7
+ data.tar.gz: aad278dee063571eb04e441d97f9dbccd77ab6e8fd42eb1872fbb5c645d9e4920e0ef6381ad22dfed1407ac21777f35c7d9cfdfb9598dfa762f0e691f543f6f8
data/.config ADDED
@@ -0,0 +1,9 @@
1
+ ---
2
+ dotfile: "/Users/ytbryan/.zshrc"
3
+ history: "/Users/ytbryan/.zsh_history"
4
+ home: "/Users/ytbryan/.aka"
5
+ install: "/usr/local/bin"
6
+ profile: "/etc/profile"
7
+ list: 20
8
+ usage: 20
9
+ remote: 12.12.12.21
@@ -0,0 +1 @@
1
+ 2.2.3
@@ -1,6 +1,6 @@
1
1
  The MIT License (MIT)
2
2
 
3
- Copyright (c) 2015 Ryan Goh
3
+ Copyright (c) 2014 - 2999 Bryan Lim (@ytbryan)
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
data/README.md CHANGED
@@ -1,53 +1,83 @@
1
- # aka - The Missing Alias Manager
1
+ # Aka
2
2
 
3
- [![Gem Version](https://badge.fury.io/rb/aka2.svg)](http://badge.fury.io/rb/aka2)
3
+ ### The Shortcut Manager for your Everyday Project
4
+
5
+ [![Gem Version](https://badge.fury.io/rb/aka2.svg)](https://badge.fury.io/rb/aka2)
6
+
7
+ aka loves and works with alias.
4
8
 
5
9
  aka generate/edit/destroy/find permanent aliases with a single command.
6
10
 
7
- aka2 requires ruby and is built for bash and zsh users.
11
+ aka requires ruby and is built for bash and zsh users.
12
+
13
+ | features | alias | aka |
14
+ | :-----------------------: |:----------------------------:| :-------------------:|
15
+ | Generate alias | ![Yes](assets/yes.png) | ![Yes](assets/yes.png) |
16
+ | Destroy alias | ![Yes](assets/yes.png) | ![Yes](assets/yes.png) |
17
+ | Find and show alias | ![Yes](assets/yes.png) | ![Yes](assets/yes.png) |
18
+ | Show last few added alias | - | ![Yes](assets/yes.png) |
19
+ | Edit alias | - | ![Yes](assets/yes.png) |
20
+ | Count alias | - | ![Yes](assets/yes.png) |
21
+ | Auto reload dot file | - | ![Yes](assets/yes.png) |
22
+ | Show usage | - | ![Yes](assets/yes.png) |
23
+ | Persistency | - | ![Yes](assets/yes.png) |
24
+ | Add your last command | - | ![Yes](assets/yes.png) |
25
+ | Export Alias | - | ![Yes](assets/yes.png) |
26
+ | Group your Aliases | - | ![Yes](assets/yes.png) |
27
+ | Add Alias to Project | - | ![Yes](assets/yes.png) |
8
28
 
9
29
  ## Installation
10
30
 
11
- $ gem install aka2
12
- $ aka setup
31
+ gem install aka2
32
+ aka setup
13
33
 
14
- If you wish to reinstall aka setup
34
+ If you wish to setup aka again:
15
35
 
16
- $ aka setup --reset
36
+ aka setup --reset
17
37
 
18
38
  ## Usage
19
39
 
20
- To generate new aka
40
+ To generate new alias
41
+
42
+ aka generate hello="echo helloworld"
43
+ aka g hello="echo helloworld"
44
+ aka g hello="echo helloworld" --group basic
45
+
46
+ To destroy existing alias
47
+
48
+ aka destroy hello
49
+ aka d hello
21
50
 
22
- $ aka generate hello="echo helloworld"
23
- $ aka g hello="echo helloworld"
51
+ To edit existing alias
24
52
 
25
- To destroy aka
53
+ aka edit hello
26
54
 
27
- $ aka destroy hello
28
- $ aka d hello
55
+ To edit alias name
29
56
 
30
- To edit aka command
57
+ aka edit hello --name
31
58
 
32
- $ aka edit hello
59
+ To find an alias
33
60
 
34
- To edit aka alias name
61
+ aka find hello
35
62
 
36
- $ aka edit hello --name
63
+ To list all system aliases
37
64
 
38
- To find a aka command
65
+ aka list
66
+ aka list 20
67
+ aka list --number
39
68
 
40
- $ aka find hello
41
69
 
42
- To list all aka created
70
+ To export your alias into a proj.aka
43
71
 
44
- $ aka list
45
- $ aka list 20
46
- $ aka list --number
72
+ aka export group_name
47
73
 
48
- To list down available command
74
+ To list project alias
49
75
 
50
- $ aka help
76
+ aka proj
77
+
78
+ To list all commands of aka
79
+
80
+ aka help
51
81
 
52
82
  ## Requirement
53
83
 
@@ -55,9 +85,12 @@ Ruby
55
85
 
56
86
  ## Contributing
57
87
 
58
- Bug reports and pull requests are welcome on GitHub at https://github.com/ytbryan/aka-gem.
59
-
88
+ Bug reports and pull requests are welcome on GitHub at https://github.com/ytbryan/aka
60
89
 
61
90
  ## License
62
91
 
63
- The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
92
+ Aka is released as an open source project under the license of [The MIT License (MIT)](http://www.opensource.org/licenses/MIT)
93
+
94
+ ## Contact
95
+
96
+ [@ytbryan](http://www.twitter.com/ytbryan)
data/aka ADDED
File without changes
@@ -2,34 +2,23 @@
2
2
  lib = File.expand_path('../lib', __FILE__)
3
3
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
  require 'aka/version'
5
+ require 'aka/post_message'
5
6
 
6
7
  Gem::Specification.new do |spec|
7
8
  spec.name = "aka2"
8
9
  spec.version = Aka::VERSION
9
- spec.authors = ["Bryan Lim","Ryan Goh"]
10
+ spec.authors = ["Bryan Lim"]
10
11
  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. }
12
+ spec.summary = %q{The Missing Shortcut Manager}
13
+ spec.description = %q{ A delightful way to manage and grow your aliases in your daily project. }
14
14
  spec.homepage = "https://github.com/ytbryan/aka"
15
15
  spec.license = "MIT"
16
-
17
16
  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
17
  spec.executables = ["aka"]
21
18
  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'
19
+ spec.post_install_message = Log::MESSAGE
20
+ spec.required_ruby_version = ">= 2.0.0"
30
21
  spec.add_runtime_dependency 'thor' , '~> 0.19.1'
31
- # spec.add_runtime_dependency 'fileutils'
32
-
33
22
  spec.add_development_dependency "bundler", "~> 1.10"
34
23
  spec.add_development_dependency "rake", "~> 10.0"
35
24
  spec.add_development_dependency "minitest", "~> 5.7"
Binary file
@@ -3,12 +3,5 @@
3
3
  require "bundler/setup"
4
4
  require "aka"
5
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
6
  require "irb"
14
7
  IRB.start
@@ -1,3 +1,16 @@
1
+ ## v0.1.10
2
+ * Introducing system alias, project alias and groups
3
+ * Added [aka proj --load] to export certain alias group into a project directory
4
+ * Added [aka proj --save ] to generate specific aka file
5
+ * Added [aka proj] to show all project alias
6
+ * Added [aka groups] to list all groups in the system
7
+ * Added .profile as setup options. Thanks to fgperianez
8
+ * Edited test_aka.rb
9
+ * Refactor the aka code
10
+ * Remove some dependencies and set required ruby back to 2.0.0.
11
+ * Change default list to 20 aliases
12
+ * Start using aka in your projects :)
13
+
1
14
  ## v0.1.9
2
15
  * Added -g option to add grouping to alias
3
16
  * Added -g option to find grouping based on group name
@@ -0,0 +1,25 @@
1
+
2
+ if [[ "$OSTYPE" == "linux-gnu" ]]; then
3
+ sudo apt-get install git
4
+ elif [[ "$OSTYPE" == "darwin"* ]]; then
5
+ #mac os x
6
+ brew install git
7
+ fi
8
+
9
+ #clone rbenv
10
+ git clone https://github.com/sstephenson/rbenv.git
11
+
12
+ if [[ "$OSTYPE" == "linux-gnu" ]]; then
13
+ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc
14
+ echo 'eval "$(rbenv init -)"' >> ~/.bashrc
15
+ elif [[ "$OSTYPE" == "darwin"* ]]; then
16
+ #mac os x
17
+ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
18
+ echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
19
+ echo 'Mac OSX'
20
+ fi
21
+
22
+ #install ruby
23
+ rbenv install 2.2.3
24
+
25
+ gem install bundler rails
@@ -4,6 +4,6 @@ history: "/home/ryan/.bash_history"
4
4
  home: "/home/ryan/.aka"
5
5
  install: "/usr/local/bin"
6
6
  profile: "/home/ryan/.bashrc"
7
- list: 50
8
- usage: 50
7
+ list: 20
8
+ usage: 20
9
9
  remote: 12.12.12.21
data/lib/aka.rb CHANGED
@@ -1,1488 +1,348 @@
1
- require "aka/version"
2
- require 'net/scp'
3
- require 'open-uri'
4
- require 'colorize'
5
- require "safe_yaml/load"
1
+ require 'aka/version'
2
+ require 'aka/constants'
3
+ require 'aka/helpers'
4
+ require 'aka/printing'
5
+ require 'aka/core'
6
+ require 'aka/string'
7
+ require 'aka/config'
8
+
9
+ require 'yaml'
6
10
  require 'thor'
11
+ require 'shellwords'
7
12
  require 'fileutils'
8
13
 
9
14
  module Aka
10
15
  class Base < Thor
11
16
  check_unknown_options!
12
- package_name "aka"
17
+ package_name 'aka'
13
18
  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
- # Where is your dotfile
27
- # aka where
28
- desc "where", "locate your dotfile"
29
- def where
30
- puts readYML("#{Dir.pwd}/.aka/.config")["dotfile"]
31
- end
32
-
19
+ map 'g' => :generate,
20
+ 'd' => :destroy,
21
+ 'f' => :find,
22
+ 'u' => :usage,
23
+ 'l' => :list,
24
+ 'e' => :edit,
25
+ 'c' => :clean,
26
+ 'h' => :help,
27
+ 'v' => :version
28
+
29
+ # desc :open, 'open my dotfile for development'
30
+ # def open
31
+ # system("atom #{Aka.readYML("#{CONFIG_PATH}")['dotfile']}")
32
+ # end
33
33
  #
34
- # UPLOAD
34
+ # desc :testing, 'testing'
35
+ # def testing(_name, _number)
36
+ # inp = $stdin.read
37
+ # puts inp
38
+ # end
35
39
  #
36
- #aka upload --from ~/Desktop/TwitterAPI.rb --login admin@162.243.249.154:22000 --to /home/admin
37
- desc "upload", "upload a dot file"
38
- method_options :from => :string
39
- method_options :to => :string
40
- method_options :login => :string
41
- def upload
42
- if options.from && options.to && options.login
43
- password = get_password()
44
-
45
- if File.exists?(options.from)
46
- success = true
47
- begin
48
- arr = split(options.login)
49
- result = Net::SCP.upload!(arr[1], #remote
50
- arr.first, #username
51
- options.from, #local_path
52
- options.to, #remote_path
53
- :ssh => {:port => arr[2],
54
- :password => password})
55
- rescue Exception => e
56
- puts "\n#{e}"
57
- success = false
58
- end
59
-
60
- puts "\nDone." if success
61
- else
62
- puts "Cannot find #{options.from}"
63
- end
64
- else
65
- puts "Some options are missing:"
66
- puts "--of -> #{options.of}"
67
- puts "--to -> #{options.to}"
68
- puts "--from -> #{options.from}"
69
- puts "aka up --of some_string --to some_string --from some_string"
70
- end
71
- end
40
+ # desc :test, 'this is where we test our code'
41
+ # def test
42
+ # output = []
43
+ # r, io = IO.pipe
44
+ # fork do
45
+ # # system (%(zsh -c 'source ~/.zshrc; aka generate something=\"echo well well\" --no'), out: io, err: :out)
46
+ # system("zsh -c 'source ~/.zshrc; aka generate something=\"echo well well\" --no; ${=aliases[something]}'", out: io, err: :out)
47
+ # # system("ruby", "-e 3.times{|i| p i; sleep 1}", out: io, err: :out)
48
+ # end
49
+ # io.close
50
+ # r.each_line { |l| puts l; output << l.chomp }
51
+ # p output
52
+ # puts 'boo'
53
+ # end
72
54
 
73
55
  #
74
- # UPLOAD
56
+ # PROJ
75
57
  #
76
- #aka upload --from ~/Desktop/TwitterAPI.rb --login admin@162.243.249.154:22000 --to /home/admin
77
- desc "upload", "upload a dot file"
78
- method_options :from => :string
79
- method_options :to => :string
80
- method_options :login => :string
81
- def upload
82
- if options.from && options.to && options.login
83
- password = get_password()
58
+ desc :proj, 'list the project alias (short alias: p)'
59
+ method_option :group, type: :boolean, aliases: '-g'
60
+ method_option :load, type: :string, aliases: '-l'
61
+ method_option :save, type: :string, aliases: '-s'
62
+ method_option :force, type: :boolean, aliases: '-f'
84
63
 
85
- if File.exists?(options.from)
86
- success = true
87
- begin
88
- arr = split(options.login)
89
- result = Net::SCP.upload!(arr[1], #remote
90
- arr.first, #username
91
- options.from, #local_path
92
- options.to, #remote_path
93
- :ssh => {:port => arr[2],
94
- :password => password})
95
- rescue Exception => e
96
- puts "\n#{e}"
97
- success = false
98
- end
99
-
100
- puts "\nDone." if success
64
+ def proj(arg = nil)
65
+ if options[:load]
66
+ Aka.export(arg, options[:load], options[:force])
67
+ elsif options[:save]
68
+ Aka.import(options[:save])
69
+ else
70
+ if options[:group] && File.exist?('proj.aka')
71
+ Aka.list_all_groups_in_proj_aka
72
+ elsif options[:group] && !File.exist?('proj.aka')
73
+ Aka.error_statement('The proj.aka is missing. Please run [aka proj --load <name_of_group>] to generate proj.aka file')
101
74
  else
102
- puts "Cannot find #{options.from}"
75
+ if File.exist?('proj.aka')
76
+ if content = File.open('proj.aka').read
77
+ Aka.print_title('Project Alias')
78
+ content_array = Aka.product_content_array(content)
79
+ answer_count = Aka.print_the_aliases(content_array)
80
+ Aka.print_helpful_statement(answer_count)
81
+ end
82
+ else
83
+ Aka.error_statement('The proj.aka is missing. Please run [aka proj --load <name_of_group>] to generate proj.aka file')
84
+ end
103
85
  end
104
- else
105
- puts "Some options are missing:"
106
- puts "--of -> #{options.of}"
107
- puts "--to -> #{options.to}"
108
- puts "--from -> #{options.from}"
109
- puts "aka up --of some_string --to some_string --from some_string"
110
- end
86
+ end # end of when
111
87
  end
112
88
 
113
- #################
89
+ #
114
90
  # GENERATE
115
- #################
116
- desc "generate", "generate an alias (short alias: g)"
117
- method_option :last, :type => :boolean, :aliases => '-l', :desc => ''
118
- method_option :group, :type => :string, :aliases => '-g', :desc => '', :default => 'default'
119
- def generate args
120
- result = false
121
- if options.last?
122
- #we need to add group here.
123
- result = add(add_last_command(parseARGS(args))) if args
91
+ #
92
+ desc :generate, 'generate an alias (short alias: g)'
93
+ method_option :last, type: :boolean, aliases: '-l', desc: ''
94
+ method_option :group, type: :string, aliases: '-g', desc: '', default: 'default'
95
+ method_option :no, type: :boolean, aliases: '-n', desc: '--no means do not reload'
96
+ method_option :empty, type: :boolean, aliases: '-e', desc: 'do not print anything'
97
+ def generate(args)
98
+ result = FALSE
99
+ if options[:last] && args
100
+ result = Aka.add_with_group(Aka.add_last_command(Aka.parseARGS(args)))
124
101
  else
125
- #we should probably phase out add()
126
- result = add_with_group(parseARGS(args), options.group) if args
127
- if options.proj? && result == true
128
- FileUtils.touch("#{Dir.pwd}/.aka")
129
- add_to_proj(args)
130
- end
102
+ result = Aka.add_with_group(Aka.parseARGS(args), options[:group])
131
103
  end
132
- reload_dot_file if result == true && !options.noreload
104
+ Aka.reload_dot_file if result == TRUE && !options[:no]
105
+ TRUE
133
106
  end
134
107
 
135
108
  #
136
109
  # DESTROY
137
110
  #
138
- desc "destroy", "destroy an alias (short alias: d)"
139
- method_options :force => :boolean
111
+ desc :destroy, 'destroy an alias (short alias: d)'
112
+ method_options force: :boolean
113
+ method_option :no, type: :boolean, aliases: '-n', desc: '--no means do not reload'
114
+ method_option :nounalias, type: :boolean, aliases: '-u', desc: '--nounalias means do not remove the alias from current shell'
140
115
  def destroy(*args)
141
- args.each_with_index do |value, index|
142
- result = remove(value)
143
- unalias_the(value) if !options.nounalias && result == true
144
- reload_dot_file if result == true && !options.noreload
116
+ args.each_with_index do |value, _index|
117
+ result = Aka.remove(value)
118
+ Aka.unalias_the(value) if !options[:nounalias] && result == TRUE
119
+ Aka.reload_dot_file if result == TRUE && !options[:no]
145
120
  end
121
+ TRUE
146
122
  end
147
123
 
148
124
  #
149
125
  # first step: set config file
150
126
  #
151
- desc "setup", "Gem - Setup aka"
152
- method_options :reset => :boolean
127
+ desc :setup, 'Gem - Setup aka'
128
+ method_options reset: :boolean
153
129
  def setup
154
- configDir = "#{Dir.home}/.aka"
155
- if options.reset? && File.exist?("#{configDir}")
156
- remove_autosource
157
- FileUtils.rm_r("#{configDir}")
158
- puts "#{configDir} is removed"
130
+ if options[:reset] && File.exist?("#{CONFIG_PATH}")
131
+ Aka.remove_autosource
132
+ FileUtils.rm_r("#{CONFIG_PATH}")
133
+ puts "#{CONFIG_PATH} is removed"
159
134
  end
160
135
 
161
- if File.exist?("#{configDir}/.config")
162
- puts ".aka config file is exist in #{configDir}"
163
- puts "Please run [aka setup --reset] to remove aka file and setup again"
136
+ if File.exist?("#{CONFIG_PATH}")
137
+ puts ".aka config file is exist in #{CONFIG_PATH}"
138
+ puts 'Please run [aka setup --reset] to remove aka file and setup again'
164
139
  else
165
- setup_config # create and setup .config file
166
- setup_aka # put value in .config file
167
- puts "setting up autosource"
168
- setup_autosource # create, link source file
169
- puts "Congratulation, aka is setup in #{configDir}"
140
+ Aka.setup_config # create and setup .config file
141
+ Aka.setup_aka # put value in .config file
142
+ puts 'setting up autosource'
143
+ Aka.setup_autosource # create, link source file
144
+ puts "Congratulation, aka is setup in #{CONFIG_PATH}"
170
145
  end
171
146
  end
172
147
 
173
148
  #
174
149
  # FIND
175
150
  #
176
- desc "find", "find an alias (short alias: f)"
177
- method_options :force => :boolean
178
- method_option :group, :type => :string, :aliases => '-g', :desc => ''
179
- def find *args
180
- if options.group
181
- search_alias_with_group_name(options.group)
151
+ desc :find, 'find an alias (short alias: f)'
152
+ method_options force: :boolean
153
+ method_option :group, type: :string, aliases: '-g', desc: ''
154
+ def find(*args)
155
+ if options[:group]
156
+ Aka.search_alias_with_group_name(options[:group])
182
157
  else
183
- args.each_with_index do |value, index|
184
- search_alias_return_alias_tokens(value)
158
+ args.each_with_index do |value, _index|
159
+ Aka.search_alias_return_alias_tokens(value)
185
160
  end
186
161
  end
162
+ TRUE
187
163
  end
188
164
 
189
165
  #
190
166
  # EDIT
191
167
  #
192
- desc "edit", "edit an alias(short alias: e)"
193
- method_options :force => :boolean
194
- method_options :name => :boolean #--name
195
- def edit args
196
- if args
197
- values = args.split("=")
198
- if values.size > 1
199
- truth, _alias = search_alias_return_alias_tokens(args)
200
- if truth == true
201
- if options.name
202
- remove(_alias) #remove that alias
203
- edit_alias_name(values[1], _alias) #edit that alias
204
- reload_dot_file() if !options.noreload
168
+ desc :edit, 'edit an alias(short alias: e)'
169
+ method_options force: :boolean
170
+ method_options name: :boolean #--name
171
+ method_option :group, type: :string, aliases: '-g', desc: ''
172
+ def edit(args)
173
+ if options[:group]
174
+ Aka.change_alias_group_name_with(Aka.parseARGS(args), options[:group])
175
+ else
176
+ if args
177
+ values = args.split('=')
178
+ if values.size > 1
179
+ truth, _alias = Aka.search_alias_return_alias_tokens(args)
180
+ if truth == TRUE
181
+ if options[:name]
182
+ # Aka.remove(_alias) #remove that alias
183
+ Aka.edit_alias_name(values[1], _alias) # edit that alias
184
+ Aka.reload_dot_file unless options[:noreload]
185
+ else
186
+ # Aka.remove(_alias) #remove that alias
187
+ Aka.edit_alias_command(values[1], _alias) # edit that alias
188
+ Aka.reload_dot_file unless options[:noreload]
189
+ end
205
190
  else
206
- remove(_alias) #remove that alias
207
- edit_alias_command(values[1], _alias) #edit that alias
208
- reload_dot_file() if !options.noreload
191
+ Aka.error_statement("Alias '#{args}' cannot be found.")
209
192
  end
210
193
  else
211
- puts "Alias '#{args}' cannot be found".red
212
- end
213
- else
214
- truth, _alias, command = search_alias_return_alias_tokens(args)
215
- if truth == true
216
- if options.name
217
- input = ask "Enter a new alias for command '#{command}'?\n"
218
- if yes? "Please confirm the new alias? (y/N)"
219
- remove(_alias) #remove that alias
220
- edit_alias_name(input, command) #edit that alias
221
- reload_dot_file() if !options.noreload
194
+ puts "this is passed in #{args}"
195
+ truth, _alias, command, group = Aka.search_alias_return_alias_tokens_with_group(args)
196
+ if truth == TRUE
197
+ if options[:name]
198
+ input = ask "Enter a new alias for command '#{command}'?\n"
199
+ if yes? 'Please confirm the new alias? (y/N)'
200
+ Aka.remove(_alias) # remove that alias
201
+ Aka.edit_alias_name_with_group(input, command, group) # edit that alias
202
+ Aka.reload_dot_file unless options[:noreload]
203
+ end
204
+ else
205
+ input = ask "Enter a new command for alias '#{args}'?\n"
206
+ if yes? 'Please confirm the new command? (y/N)'
207
+ Aka.remove(_alias) # remove that alias
208
+ Aka.edit_alias_command_with_group(input, _alias, group) # edit that alias
209
+ Aka.reload_dot_file unless options[:noreload]
210
+ end
222
211
  end
223
212
  else
224
- input = ask "Enter a new command for alias '#{args}'?\n"
225
- if yes? "Please confirm the new command? (y/N)"
226
- remove(_alias) #remove that alias
227
- edit_alias_command(input, _alias) #edit that alias
228
- reload_dot_file() if !options.noreload
229
- end
213
+ Aka.error_statement("Alias '#{args}' cannot be found")
230
214
  end
231
- else
232
- puts "Alias '#{args}' cannot be found".red
233
215
  end
234
- end
235
-
236
- end #if args
216
+ end # if args
217
+ end # end else no group option
237
218
  end
238
219
 
239
220
  #
240
221
  # LIST OUT - ryan - remove numbering
241
222
  #
242
- desc "list", "list alias (short alias: l)"
243
- method_options :force => :boolean
244
- method_options :number => :boolean
245
- def list(args=nil)
246
- if args != nil
247
- showlast(options.number,args.to_i) #user input
223
+ desc :list, 'list alias (short alias: l)'
224
+ method_options force: :boolean
225
+ method_options number: :boolean
226
+ method_option :no, type: :boolean, aliases: '-n', desc: '--no means do not reload'
227
+ method_option :group, type: :boolean, aliases: '-g', desc: ''
228
+ def list(args = nil)
229
+ Aka.print_title('System Alias')
230
+ if !args.nil?
231
+ Aka.showlast(options[:number], args.to_i, options[:group]) # user input
248
232
  else
249
- value = readYML("#{Dir.home}/.aka/.config")["list"]
233
+ value = Aka.readYML("#{CONFIG_PATH}")['list']
250
234
  if value.class == Fixnum
251
- showlast(options.number,value.to_i)
235
+ Aka.showlast(options[:number], value.to_i, options[:group])
252
236
  else
253
- puts "List value is not defined in #{Dir.home}/.aka/.config"
254
- showlast(options.number,50)
237
+ puts "List value is not defined in #{CONFIG_PATH}"
238
+ Aka.showlast(options[:number], 50, options[:group])
255
239
  end
256
240
  end
257
-
258
- #total of #{} exports #functions
259
- puts "A total of #{count()} aliases,#{count_export} exports and #{count_function} functions from #{readYML("#{Dir.home}/.aka/.config")["dotfile"]}"
260
- puts "\nUse 'aka -h' to see all the useful commands.\n\n"
261
- reload_dot_file
241
+ Aka.print_all_helpful_statement
242
+ Aka.reload_dot_file unless options[:no]
262
243
  end
263
244
 
264
245
  #
265
246
  # USAGE - ryan - remove numbering in front
266
247
  #
267
- desc "usage [number]", "show commands usage based on history"
268
- # method_options :least, :type => :boolean, :aliases => '-l', :desc => 'show the least used commands'
269
- # method_options :clear, :type => :boolean, :aliases => '-c', :desc => 'clear the dot history file'
270
- def usage(args=nil)
248
+ desc 'usage [number]', 'show commands usage based on history'
249
+ def usage(args = nil)
271
250
  if args
272
- if options.least
273
- showUsage(args.to_i, true) if args
251
+ if options[:least] && args
252
+ Aka.showUsage(args.to_i, TRUE)
274
253
  else
275
- showUsage(args.to_i) if args
254
+ Aka.showUsage(args.to_i)
276
255
  end
277
256
  else
278
- if options.least
279
- value = readYML("#{Dir.home}/.aka/.config")["usage"]
280
- showlast(value.to_i, true) #this is unsafe
257
+ if options[:least]
258
+ value = Aka.readYML("#{CONFIG_PATH}")['usage']
259
+ Aka.showlast(value.to_i, TRUE) # this is unsafe
281
260
  else
282
- value = readYML("#{Dir.home}/.aka/.config")["usage"]
283
- showlast(value.to_i) #this is unsafe
261
+ value = Aka.readYML("#{CONFIG_PATH}")['usage']
262
+ Aka.howlast(value.to_i) # this is unsafe
284
263
  end
285
264
  end
286
265
 
287
- if options[:clear]
288
- puts "clear the dot history file"
289
- end
266
+ puts 'clear the dot history file' if options[:clear]
290
267
  end
291
268
 
292
269
  #
293
270
  # INIT
294
271
  #
295
- desc "init", "setup aka"
296
- method_options :dotfile => :string
297
- method_options :history => :string
298
- method_options :home => :string
299
- method_options :install => :string
300
- method_options :profile => :string
301
- method_options :list => :numeric
302
- method_options :usage => :numeric
303
- method_options :remote => :string
304
- method_options :config => :boolean
305
- method_options :zshrc => :boolean
306
- method_options :bashrc => :boolean
307
- method_options :bash => :boolean
272
+ desc :init, 'setup aka'
273
+ method_options dotfile: :string
274
+ method_options history: :string
275
+ method_options install: :string
276
+ method_options profile: :string
277
+ method_options remote: :string
278
+ method_options config: :boolean
279
+ method_options bashrc: :boolean
280
+ method_options usage: :numeric
281
+ method_options zshrc: :boolean
282
+ method_options bash: :boolean
283
+ method_options home: :string
284
+ method_options list: :numeric
308
285
 
309
286
  def init
310
- if options.count < 1
311
- setup
287
+ if options[:count] && options[:count] < 1
288
+ Aka.setup
312
289
  else
313
- setZSHRC if options[:zshrc]
314
- setBASHRC if options[:bashrc]
315
- setBASH if options[:bash]
290
+ Aka.setZSHRC if options[:zshrc]
291
+ Aka.setBASHRC if options[:bashrc]
292
+ Aka.setBASH if options[:bash]
316
293
 
317
- showConfig if options[:config]
318
- setPath(options[:dotfile],"dotfile") if options[:dotfile]
319
- setPath(options[:history],"history") if options[:history]
320
- setPath(options[:home],"home") if options[:home]
321
- setPath(options[:install],"install") if options[:install]
322
- setPath(options[:profile],"profile") if options[:profile]
323
- setPath(options[:list],"list") if options[:list]
324
- setPath(options[:usage],"usage") if options[:usage]
325
- setPath(options[:remote],"remote") if options[:remote]
294
+ Aka.showConfig if options[:config]
295
+ Aka.setPath(options[:dotfile], 'dotfile') if options[:dotfile]
296
+ Aka.setPath(options[:history], 'history') if options[:history]
297
+ Aka.setPath(options[:home], 'home') if options[:home]
298
+ Aka.setPath(options[:install], 'install') if options[:install]
299
+ Aka.setPath(options[:profile], 'profile') if options[:profile]
300
+ Aka.setPath(options[:list], 'list') if options[:list]
301
+ Aka.setPath(options[:usage], 'usage') if options[:usage]
302
+ Aka.setPath(options[:remote], 'remote') if options[:remote]
326
303
  end
327
304
  end
328
305
 
329
306
  #
330
307
  # CLEAN
331
308
  #
332
- desc "clean", "perform cleanup"
309
+ desc :clean, 'perform cleanup on your dot file'
333
310
  def clean
334
- cleanup
311
+ Aka.cleanup
335
312
  end
336
313
 
337
314
  #
338
- # PRIVATE METHODS
315
+ # Config
339
316
  #
340
-
341
- private
342
-
343
- # set path
344
- def setPath(path, value)
345
- data = readYML("#{Dir.home}/.aka/.config")
346
- if data.has_key?(value) == true
347
- old_path = data[value]
348
- data[value] = path
349
- writeYML("#{Dir.home}/.aka/.config", data)
350
- puts "#{value} -> #{path}"
351
- else
352
- puts "Error: ".red + "--#{value} does not exist in #{Dir.home}/.aka/.config "
353
- end
354
- end
355
-
356
- # reload
357
- def reload
358
- system "source #{readYML("#{Dir.home}/.aka/.config")["dotfile"]}"
359
- end
360
-
361
- # read YML
362
- def readYML path
363
- if File.exists? path
364
- return YAML.load_file(path)
365
- else
366
- puts "#{Dir.home}/.aka/.config does not exist. Type `aka setup` to setup the config file".red
367
- end
368
- end
369
-
370
- # write YML
371
- def writeYML path, theyml
372
- File.open(path, 'w') {|f| f.write theyml.to_yaml } #Store
373
- end
374
-
375
- # write_with
376
- def write_with array
377
- str = checkConfigFile(readYML("#{Dir.home}/.aka/.config")["dotfile"])
378
-
379
- File.open(str, 'w') { |file|
380
- array.each do |line|
381
- file.write(line)
382
- end
383
- }
384
- end
385
-
386
- # write_with_newline
387
- def write_with_newline array
388
- str = checkConfigFile(readYML("#{Dir.home}/.aka/.config")["dotfile"])
389
-
390
- File.open(str, 'w') { |file|
391
- array.each do |line|
392
- file.write(line + "\n")
393
- end
394
- }
395
- end
396
-
397
- # write
398
- def write str, path
399
- File.open(path, 'w') { |file| file.write(str) }
400
- end
401
-
402
- # append
403
- def append str, path
404
- File.open(path, 'a') { |file| file.write(str) }
405
- end
406
-
407
- #append_with_newline
408
- def append_with_newline str, path
409
- File.open(path, 'a') { |file| file.write(str + "\n") }
410
- end
411
-
412
- # reload_dot_file
413
- def reload_dot_file
414
- if isOhMyZsh == true
415
- system("exec zsh")
416
- else
417
- system("kill -SIGUSR1 #{Process.ppid}")
418
- end
419
- end
420
-
421
- # history write
422
- def historywrite
423
- if isOhMyZsh == true
424
- system("exec zsh")
425
- else
426
- system "kill -SIGUSR2 #{Process.ppid}"
427
- end
428
- end
429
-
430
- # unalias
431
- def unalias_the value
432
- if isOhMyZsh == true
433
- system("exec zsh")
434
- else
435
- system "echo '#{value}' > ~/sigusr1-args;"
436
- system "kill -SIGUSR2 #{Process.ppid}"
437
- end
438
- end
439
-
440
- #split domain user
441
- def split_domain_user fulldomain
442
- username = fulldomain.split("@").first
443
- domain = fulldomain.split("@")[1]
444
- return [username, domain]
445
- end
446
-
447
- # split
448
- def split fulldomain
449
- username = fulldomain.split("@").first
450
- domain = fulldomain.split("@")[1].split(":").first
451
- port = fulldomain.split("@")[1].split(":")[1]
452
- return [username, domain, port]
453
- end
454
-
455
- def add_with_group input, name_of_group
456
- if input && search_alias_return_alias_tokens(input).first == false && not_empty_alias(input) == false
457
- array = input.split("=")
458
- group_name = "# => #{name_of_group}"
459
- full_command = "alias #{array.first}='#{array[1]}' #{group_name}".gsub("\n","") #remove new line in command
460
- print_out_command = "aka g #{array.first}='#{array[1]}'"
461
- str = checkConfigFile(readYML("#{Dir.home}/.aka/.config")["dotfile"])
462
-
463
- File.open(str, 'a') { |file| file.write("\n" +full_command) }
464
- # puts "#{print_out_command} is added to #{readYML("#{Dir.home}/.aka/.config")["dotfile"]}"
465
- puts "Created: ".green + "#{print_out_command} " + "in #{name_of_group} group."
466
-
467
- return true
468
- else
469
- puts "The alias is already present. Use 'aka -h' to see all the useful commands."
470
- return false
471
- end
472
- end
473
-
474
- # add
475
- def add input
476
- if input && search_alias_return_alias_tokens(input).first == false && not_empty_alias(input) == false
477
- array = input.split("=")
478
- full_command = "alias #{array.first}='#{array[1]}'".gsub("\n","") #remove new line in command
479
- print_out_command = "aka g #{array.first}='#{array[1]}'"
480
-
481
- str = checkConfigFile(readYML("#{Dir.home}/.aka/.config")["dotfile"])
482
-
483
- File.open(str, 'a') { |file| file.write("\n" +full_command) }
484
- # puts "#{print_out_command} is added to #{readYML("#{Dir.home}/.aka/.config")["dotfile"]}"
485
- puts "Created: ".green + "#{print_out_command}"
486
-
487
- return true
488
- else
489
- puts "The alias is already present. Use 'aka -h' to see all the useful commands."
490
- return false
491
- end
492
- end
493
-
494
- # not empty alias
495
- def not_empty_alias input
496
- array = input.split("=")
497
- return true if array.count < 2
498
- return array[1].strip == ""
499
- end
500
-
501
- #list
502
- def search_alias_with_group_name name
503
- if name == "group"
504
- name = "default"
505
- str = checkConfigFile(readYML("#{Dir.home}/.aka/.config")["dotfile"])
506
-
507
- if content = File.open(str).read
508
- content.gsub!(/\r\n?/, "\n")
509
- content_array = content.split("\n")
510
- content_array.each_with_index { |line, index|
511
- value = line.split(" ")
512
- containsCommand = line.split('=') #containsCommand[1]
513
- if value.length > 1 && value.first == "alias"
514
- answer = value[1].split("=") #contains the alias
515
- group_name = line.scan(/# => ([a-zA-z]*)/).first if line.scan(/# => ([a-zA-z]*)/)
516
- if group_name != nil && group_name.first == name
517
- containsCommand[1].slice!(0) && containsCommand[1].slice!(containsCommand[1].length-1) if containsCommand[1] != nil && containsCommand[1][0] == "'" && containsCommand[1][containsCommand[1].length-1] == "'"
518
- puts "aka g " + "#{answer.first}".red + "=#{containsCommand[1]}"
519
- end
520
- end
521
- }
522
- end
523
- else
524
-
525
- str = checkConfigFile(readYML("#{Dir.home}/.aka/.config")["dotfile"])
526
- if content = File.open(str).read
527
- content.gsub!(/\r\n?/, "\n")
528
- content_array = content.split("\n")
529
- content_array.each_with_index { |line, index|
530
- value = line.split(" ")
531
- containsCommand = line.split('=') #containsCommand[1]
532
- if value.length > 1 && value.first == "alias"
533
- answer = value[1].split("=") #contains the alias
534
- group_name = line.scan(/# => ([a-zA-z]*)/).first if line.scan(/# => ([a-zA-z]*)/)
535
- if group_name != nil && group_name.first == name
536
- containsCommand[1].slice!(0) && containsCommand[1].slice!(containsCommand[1].length-1) if containsCommand[1] != nil && containsCommand[1][0] == "'" && containsCommand[1][containsCommand[1].length-1] == "'"
537
- puts "aka g " + "#{answer.first}".red + "=#{containsCommand[1]}"
538
- end
539
- end
540
- }
541
- end
542
- end
543
- end
544
-
545
- # show alias
546
- def search_alias_return_alias_tokens argument
547
- str = checkConfigFile(readYML("#{Dir.home}/.aka/.config")["dotfile"])
548
- # alias something="echo something"
549
- if content = File.open(str).read
550
- content.gsub!(/\r\n?/, "\n")
551
- content_array = content.split("\n")
552
- content_array.each_with_index { |line, index|
553
- value = line.split(" ")
554
- # puts "value -> #{value}"
555
- containsCommand = line.split('=') #containsCommand[1]
556
- if value.length > 1 && value.first == "alias"
557
- # answer = value[1].split("=")
558
- answer = value[1].split("=") #contains the alias
559
-
560
- # puts "answer -> #{answer}"
561
- if found?(answer.first, argument.split("=").first, line) == true
562
- this_alias = answer.first
563
- answer.slice!(0) #rmove the first
564
- # puts "before ->#{containsCommand[1]}"
565
- containsCommand[1].slice!(0) && containsCommand[1].slice!(containsCommand[1].length-1) if containsCommand[1] != nil && containsCommand[1][0] == "'" && containsCommand[1][containsCommand[1].length-1] == "'"
566
- # puts "before 2 ->#{containsCommand[1]}"
567
-
568
- # puts "join ->#{containsCommand[1]}"
569
- return [true, this_alias, containsCommand[1]]
570
- end
571
- end
572
- }
573
- else
574
- puts "#{@pwd} cannot be found.".red
575
- return [false, nil, nil]
576
- end
577
- return [false, nil, nil]
578
-
579
- end
580
-
581
- # remove
582
- def remove input
583
-
584
- str = checkConfigFile(readYML("#{Dir.home}/.aka/.config")["dotfile"])
585
-
586
- if content=File.open(str).read
587
- content.gsub!(/\r\n?/, "\n")
588
- content_array= content.split("\n")
589
- content_array.each_with_index { |line, index|
590
- value = line.split(" ")
591
- if value.length > 1 && value.first == "alias"
592
- answer = value[1].split("=")
593
- if answer.first == input
594
- content_array.delete_at(index) && write_with_newline(content_array)
595
- print_out_command = "aka g #{input}=#{line.split("=")[1]}"
596
- # puts "removed: #{print_out_command} is removed from #{str}".red
597
-
598
- puts "Removed: ".red + "#{print_out_command}"
599
-
600
- return true
601
- end
602
- end
603
- }
604
-
605
- puts "#{input} cannot be found.".red
606
- else
607
- puts "#{@pwd} cannot be found.".red
608
- return false
609
- end
610
- end
611
-
612
- # remove autosource in dotfile
613
- def remove_autosource
614
-
615
- str = checkConfigFile(readYML("#{Dir.home}/.aka/.config")["dotfile"])
616
-
617
- if content=File.open(str).read
618
- content.gsub!(/\r\n?/, "\n")
619
- content_array= content.split("\n")
620
- content_array.each_with_index { |line, index|
621
- if line == "source \"/home/ryan/.aka/autosource\""
622
- content_array.delete_at(index) && write_with_newline(content_array)
623
- # puts "---> removed: source \"/home/ryan/.aka/autosource\""
624
- puts "Removed: ".red + "source \"/home/ryan/.aka/autosource\""
625
-
626
- return true
627
- end
628
- }
629
-
630
- else
631
- puts "---> autosource cannot be found in dotfile.".red
632
- return false
633
- end
634
- end
635
-
636
- # history
637
- def history
638
-
639
- str = checkConfigFile(readYML("#{Dir.home}/.aka/.config")["history"])
640
-
641
- if content = File.open(str).read
642
- puts ".bash_history is available"
643
- count=0
644
- content.gsub!(/\r\n?/, "\n")
645
- content_array = content.split("\n")
646
- content_array.each_with_index { |line, index|
647
- array = line.split(" ")
648
- if array.first == "alias"
649
- count += 1
650
- end
651
- puts "#{index+1} #{line}"
652
- }
653
- puts "There are #{count} lines of history."
654
- else
655
- puts ".bash_history is not available".red
656
- end
657
- end
658
-
659
- # check version
660
- def version
661
- puts ""
662
- puts "aka #{program(:version)} - #{program(:last_update)}"
663
- puts "#{program(:author)} - #{program(:contact)}"
664
- puts "https://github.com/ytbryan/aka"
665
- end
666
-
667
- # check found
668
- def found? answer, argument, line
669
- if answer == argument
670
- # puts line.red + " - aka add #{argument}"
671
- # puts line.red
672
- puts "Exist: ".green + " aka g #{argument}=#{line.split('=')[1]}"
673
- return true
674
- else
675
- return false
676
- end
677
- end
678
-
679
- def edit_alias_command newcommand, this_alias
680
- puts "Edited: ".yellow + "aka g #{this_alias}='#{newcommand}'"
681
- return append("alias " + this_alias + "='" + newcommand + "'", readYML("#{Dir.home}/.aka/.config")["dotfile"] )
682
- end
683
-
684
- # edit alias
685
- def edit_alias_name newalias, thiscommand
686
- puts "Edited: ". yellow + "aka g #{newalias}='#{thiscommand}'"
687
- return append("alias " + newalias + "='" + thiscommand + "'", readYML("#{Dir.home}/.aka/.config")["dotfile"] )
688
- end
689
-
690
- # count function
691
- def count_function
692
- function_count = 0
693
- str = checkConfigFile(readYML("#{Dir.home}/.aka/.config")["dotfile"])
694
- if content=File.open(str).read
695
- content.gsub!(/\r\n?/, "\n")
696
- content_array= content.split("\n")
697
- content_array.each_with_index { |line, index|
698
- value = line.split(" ")
699
- if value.length > 1 && value.first == "function"
700
- answer = value[1].split("=")
701
- function_count += 1
702
- end
703
- }
704
- return function_count
705
- end
706
- end
707
-
708
- #count export
709
- def count_export
710
- export_count = 0
711
- str = checkConfigFile(readYML("#{Dir.home}/.aka/.config")["dotfile"])
712
- if content=File.open(str).read
713
- content.gsub!(/\r\n?/, "\n")
714
- content_array= content.split("\n")
715
- content_array.each_with_index { |line, index|
716
- value = line.split(" ")
717
- if value.length > 1 && value.first == "export"
718
- answer = value[1].split("=")
719
- export_count += 1
720
- end
721
- }
722
- return export_count
723
- end
724
-
725
- end
726
-
727
- # count
728
- def count
729
- alias_count = 0
730
-
731
- str = checkConfigFile(readYML("#{Dir.home}/.aka/.config")["dotfile"])
732
-
733
- if content=File.open(str).read
734
- content.gsub!(/\r\n?/, "\n")
735
- content_array= content.split("\n")
736
- content_array.each_with_index { |line, index|
737
- value = line.split(" ")
738
- if value.length > 1 && value.first == "alias"
739
- answer = value[1].split("=")
740
- alias_count += 1
741
- end
742
- }
743
- return alias_count
744
- end
745
- end
746
-
747
-
748
-
749
- # setup_aka by ryan - set value in config file
750
- def setup_aka
751
- userBash = []
752
- # 1. check for each type of file without setting anything.
753
- if File.exist?("#{Dir.home}/.zshrc") #if zshrc exist
754
- userBash.push(".zshrc")
755
- end
756
- if File.exist?("#{Dir.home}/.bashrc") #if bashrc exist
757
- userBash.push(".bashrc")
758
- end
759
- if File.exist?("#{Dir.home}/.bash_profile") #if bash_profile exist
760
- userBash.push(".bash_profile")
761
- end
762
-
763
- #2. count the number of types
764
-
765
- #3 if number of types is 1, proceed to set it
766
- if userBash.count == 1
767
- set_to_dotfile(userBash.first)
768
-
769
- elsif userBash.count > 1
770
- #4 if the number of types is more than 1, proceed to ask which one does the users want to uses.
771
- userBash.each_with_index do |choice,i|
772
- puts "#{i+1}. Setup in #{Dir.home}/#{choice}"
773
- end
774
- choice = ask "Please choose which location you wish to setup? (Choose a number and enter)\n"
775
-
776
- #5 once you receive input, then you set it according to input
777
- case choice
778
- when "1"
779
- set_to_dotfile(userBash[0]) if userBash[0]
780
- when "2"
781
- if userBash[1] then set_to_dotfile(userBash[1]) else abort "No file choosen" end
782
- when "3"
783
- if userBash[2] then set_to_dotfile(userBash[2]) else abort "No file choosen" end
784
- else
785
- puts "Invalid input, Please enter the number between 1 and #{userBash.count}. Please try again"
786
- abort "No file choosen"
787
- end
788
- end #if userBash > 1
789
-
790
- # if File.exist?("#{Dir.home}/.zshrc") #if zshec exist
791
- # setZSHRC2
792
- # elsif File.exist?("#{Dir.home}/.bashrc") #if bashrc exist
793
- # setBASHRC2
794
- # elsif File.exist?("#{Dir.home}/.bash_profile") #if bash_profile exist
795
- # setBASH2
796
- # else
797
- # puts "Aka2 only supports zshrc, bashrc and bash_profile"
798
- # puts "Please contact http://github.com/ytbryan for more info."
799
- # end
800
- end
801
-
802
- def set_to_dotfile(filename)
803
- if filename == ".zshrc"
804
- setZSHRC2
805
- elsif filename == ".bashrc"
806
- setBASHRC2
807
- elsif filename == ".bash_profile"
808
- setBASH2
809
- end
317
+ desc :config, 'show config'
318
+ def config
319
+ Aka.showConfig
810
320
  end
811
321
 
812
-
813
- # setup_autosource by ryan - create source file
814
- def setup_autosource
815
- configDir = "#{Dir.home}/.aka"
816
-
817
- if File.exist?("#{configDir}/.config")
818
- out_file = File.new("#{configDir}/autosource", "w")
819
- out_file.puts("export HISTSIZE=10000")
820
- out_file.puts("sigusr2() { unalias $1;}")
821
- out_file.puts("sigusr1() { source #{readYML("#{configDir}/.config")["dotfile"]}; history -a; echo 'reloaded dot file'; }")
822
- out_file.puts("trap sigusr1 SIGUSR1")
823
- out_file.puts("trap 'sigusr2 $(cat ~/sigusr1-args)' SIGUSR2")
824
- out_file.close
825
- autosource = "\nsource \"#{configDir}/autosource\""
826
- append(autosource, readYML("#{configDir}/.config")['profile'])
827
- puts "Done. Please restart this shell.".red
828
- else
829
- puts "Directory #{configDir}/.config doesn't exist"
830
- end
831
- end
832
-
833
- # create and setup config file
834
- def setup_config
835
- configDir = "#{Dir.home}/.aka"
836
- if File.exist?("#{configDir}/.config")
837
- puts "Directory #{configDir}/.config exist"
838
- else
839
- FileUtils::mkdir_p("#{configDir}")
840
- # FileUtils.cp("./lib/.config", "#{configDir}")
841
- out_file = File.new("#{configDir}/.config", "w")
842
- out_file.puts("---")
843
- out_file.puts("dotfile: \"/home/user/.bashrc\"")
844
- out_file.puts("history: \"/home/user/.bash_history\"")
845
- out_file.puts("home: \"/home/user/.aka\"")
846
- out_file.puts("install: \"/usr/local/bin\"")
847
- out_file.puts("profile: \"/home/user/.bashrc\"")
848
- out_file.puts("list: 50")
849
- out_file.puts("usage: 50")
850
- out_file.puts("remote: 12.12.12.21")
851
- out_file.close
852
- end
853
- end
854
-
855
- # write to location
856
- def write_to_location location, address
857
- if aka_directory_exists?
858
- write(location, address)
859
- else
860
- puts ".aka not found.".red
861
- end
862
- end
863
-
864
- # read location
865
- def read location
866
- answer = dot_location_exists?(location)
867
- if answer == true && content = File.open(location).read
868
- return content
869
- end
870
- return ""
871
- end
872
-
873
- # dot location exist
874
- def dot_location_exists? address
875
- return File.exist? address
876
- end
877
-
878
- # aka directory exist ?
879
- def aka_directory_exists?
880
- return File.directory?("#{Dir.home}/.aka")
881
- end
882
-
883
- # check config file
884
- def checkConfigFile str
885
- path = "#{Dir.home}/.bash_profile"
886
- if str == ""
887
- puts "Error: ".red + "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."
888
- exit()
889
- end
890
-
891
- if !File.exists?(str)
892
- puts "Error: ".red + "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."
893
- exit()
894
- end
895
-
896
- return str
897
- end
898
-
899
- # show last
900
- def showlast_old howmany=10
901
- str = checkConfigFile(readYML("#{Dir.home}/.aka/.config")["dotfile"])
902
-
903
- if content = File.open(str).read
904
- content.gsub!(/\r\n?/, "\n")
905
- content_array = content.split("\n")
906
- #why not just call the last five lines? Because i can't be sure that they are aliases
907
- total_aliases = []
908
- content_array.each_with_index { |line, index|
909
- value = line.split(" ")
910
- if value.length > 1 && value.first == "alias"
911
- total_aliases.push(line)
912
- end
913
- }
914
- puts ""
915
- if total_aliases.count > howmany
916
- total_aliases.last(howmany).each_with_index do |line, index|
917
- splitted= line.split('=')
918
- puts "#{total_aliases.count - howmany + index+1}. aka g " + splitted[0].split(" ")[1].red + "=" + splitted[1]
919
- # puts "#{total_aliases.count - howmany + index+1}. aka g " + splitted[0].split(" ")[1] + "=" + splitted[1].red
920
- # puts "#{total_aliases.count - howmany + index+1}. " + splitted[0] + "=" + splitted[1].red
921
- end
922
- else
923
- total_aliases.last(howmany).each_with_index do |line, index|
924
- splitted= line.split('=')
925
- # puts "#{index+1}. " + splitted[0] + "=" + splitted[1].red
926
- puts "#{index+1}. aka g " + splitted[0].split(" ")[1].red + "=" + splitted[1]
927
- # puts "#{index+1}. aka g " + splitted[0].split(" ")[1] + "=" + splitted[1].red
928
- end
929
- end
930
- puts ""
931
- end
932
- end
933
-
934
- def show_last_with_group(list_number=false, howmany=10, group)
935
- str = checkConfigFile(readYML("#{Dir.home}/.aka/.config")["dotfile"])
936
-
937
- if content = File.open(str).read
938
- content.gsub!(/\r\n?/, "\n")
939
- content_array = content.split("\n")
940
-
941
- total_aliases = []
942
- content_array.each_with_index { |line, index|
943
- value = line.split(" ")
944
- if value.length > 1 && value.first == "alias"
945
- total_aliases.push(line)
946
- end
947
- }
948
- puts ""
949
- if total_aliases.count > howmany
950
- total_aliases.last(howmany).each_with_index do |line, index|
951
- splitted= line.split('=')
952
- if list_number
953
- puts "#{total_aliases.count - howmany + index+1}. aka g " + splitted[0].split(" ")[1].red + "=" + splitted[1]
954
- # puts "#{total_aliases.count - howmany + index+1}. aka g " + splitted[0].split(" ")[1] + "=" + splitted[1].red
955
- else
956
- puts "aka g " + splitted[0].split(" ")[1].red + "=" + splitted[1]
957
- # puts "aka g " + splitted[0].split(" ")[1] + "=" + splitted[1].red
958
- end
959
- # puts "#{total_aliases.count - howmany + index+1}. " + splitted[0] + "=" + splitted[1].red
960
- end
961
- else
962
- total_aliases.last(howmany).each_with_index do |line, index|
963
- splitted= line.split('=')
964
- # puts "#{index+1}. " + splitted[0] + "=" + splitted[1].red
965
- if list_number
966
- puts "#{index+1}. aka g " + splitted[0].split(" ")[1].red + "=" + splitted[1]
967
- # puts "#{index+1}. aka g " + splitted[0].split(" ")[1] + "=" + splitted[1].red
968
- else
969
- puts "aka g " + splitted[0].split(" ")[1].red + "=" + splitted[1]
970
- # puts "aka g " + splitted[0].split(" ")[1] + "=" + splitted[1].red
971
- end
972
- end
973
- end
974
- puts ""
975
- end
976
- end
977
-
978
- # show last2 - ryan - remove number
979
- def showlast(list_number=false,howmany=10)
980
- str = checkConfigFile(readYML("#{Dir.home}/.aka/.config")["dotfile"])
981
-
982
- if content = File.open(str).read
983
- content.gsub!(/\r\n?/, "\n")
984
- content_array = content.split("\n")
985
- #why not just call the last five lines? Because i can't be sure that they are aliases
986
- total_aliases = []
987
- content_array.each_with_index { |line, index|
988
- value = line.split(" ")
989
- if value.length > 1 && value.first == "alias"
990
- total_aliases.push(line)
991
- end
992
- }
993
- puts ""
994
- if total_aliases.count > howmany
995
- total_aliases.last(howmany).each_with_index do |line, index|
996
- splitted= line.split('=')
997
- if list_number
998
- puts "#{total_aliases.count - howmany + index+1}. aka g " + splitted[0].split(" ")[1].red + "=" + splitted[1]
999
- # puts "#{total_aliases.count - howmany + index+1}. aka g " + splitted[0].split(" ")[1] + "=" + splitted[1].red
1000
- else
1001
- puts "aka g " + splitted[0].split(" ")[1].red + "=" + splitted[1]
1002
- # puts "aka g " + splitted[0].split(" ")[1] + "=" + splitted[1].red
1003
- end
1004
- # puts "#{total_aliases.count - howmany + index+1}. " + splitted[0] + "=" + splitted[1].red
1005
- end
1006
- else
1007
- total_aliases.last(howmany).each_with_index do |line, index|
1008
- splitted= line.split('=')
1009
- # puts "#{index+1}. " + splitted[0] + "=" + splitted[1].red
1010
- if list_number
1011
- puts "#{index+1}. aka g " + splitted[0].split(" ")[1].red + "=" + splitted[1]
1012
- # puts "#{index+1}. aka g " + splitted[0].split(" ")[1] + "=" + splitted[1].red
1013
- else
1014
- puts "aka g " + splitted[0].split(" ")[1].red + "=" + splitted[1]
1015
- # puts "aka g " + splitted[0].split(" ")[1] + "=" + splitted[1].red
1016
- end
1017
- end
1018
- end
1019
- puts ""
1020
- end
1021
- end
1022
-
1023
- # show usage
1024
- def showUsage howmany=10, least=false
1025
-
1026
- str = checkConfigFile(readYML("#{Dir.home}/.aka/.config")["history"])
1027
-
1028
- value = reload_dot_file()
1029
- #get all aliases
1030
- if content = File.open(str).read
1031
- content.gsub!(/\r\n?/, "\n")
1032
- content_array = content.split("\n")
1033
- total_aliases = []
1034
- content_array.each_with_index { |line, index|
1035
- value = line.split(" ")
1036
- total_aliases.push(value.first)
1037
- }
1038
- count_aliases(total_aliases, howmany, least)
1039
- end
1040
- end
1041
-
1042
- # count aliases
1043
- def count_aliases array, howmany, least=false
1044
- name_array,count_array = [], []
1045
- #find the unique value
1046
- array.each_with_index { |value, index|
1047
- if name_array.include?(value) == false
1048
- name_array.push(value)
1049
- end
1050
- }
1051
- #count the value
1052
- name_array.each { |unique_value|
1053
- count = 0
1054
- array.each { |value|
1055
- if (unique_value == value)
1056
- count+=1
1057
- end
1058
- }
1059
- count_array.push(count)
1060
- }
1061
-
1062
- sorted_count_array, sorted_name_array = sort(count_array, name_array)
1063
-
1064
- #display the least used aliases
1065
- if least == true
1066
- if sorted_count_array.count == sorted_name_array.count
1067
- puts ""
1068
- sorted_name_array.last(howmany).each_with_index { |value, index|
1069
- percent = ((sorted_count_array[sorted_name_array.last(howmany).size + index]).round(2)/array.size.round(2))*100
1070
- str = "#{sorted_name_array.size-sorted_name_array.last(howmany).size+index+1}. #{value}"
1071
- puts "#{str} #{showSpace(str)} #{showBar(percent)}"
1072
- }
1073
- puts ""
1074
- else
1075
- puts "Something went wrong: count_array.count = #{sorted_count_array.count}\n
1076
- name_array.count = #{sorted_name_array.count}. Please check your .bash_history.".pretty
1077
- end
1078
- else
1079
- # #print out
1080
- if sorted_count_array.count == sorted_name_array.count
1081
- puts ""
1082
- sorted_name_array.first(howmany).each_with_index { |value, index|
1083
- percent = ((sorted_count_array[index]).round(2)/array.size.round(2))*100
1084
- str = "#{index+1}. #{value}"
1085
- puts "#{str} #{showSpace(str)} #{showBar(percent)}"
1086
- }
1087
- puts ""
1088
- else
1089
- puts "Something went wrong: count_array.count = #{sorted_count_array.count}\n
1090
- name_array.count = #{sorted_name_array.count}. Please check your .bash_history.".pretty
1091
- end
1092
- end
1093
- puts "There's a total of #{array.size} lines in #{readYML("#{Dir.home}/.aka/.config")["history"]}."
1094
- end
1095
-
1096
- # sort
1097
- def sort(countarray, namearray) #highest first. decscending.
1098
- temp = 0, temp2 = ""
1099
- countarray.each_with_index { |count, index|
1100
- countarray[0..countarray.size-index].each_with_index { |x, thisindex| #always one less than total
1101
-
1102
- if index < countarray.size-1 && thisindex < countarray.size-1
1103
- if countarray[thisindex] < countarray[thisindex+1] #if this count is less than next count
1104
- temp = countarray[thisindex]
1105
- countarray[thisindex] = countarray[thisindex+1]
1106
- countarray[thisindex+1] = temp
1107
-
1108
- temp2 = namearray[thisindex]
1109
- namearray[thisindex] = namearray[thisindex+1]
1110
- namearray[thisindex+1] = temp2
1111
- end
1112
- end
1113
-
1114
- }
1115
- }#outer loop
1116
- return countarray, namearray
1117
- end
1118
-
1119
- # get history file
1120
- def get_latest_history_file
1121
- system("history -a")
1122
- end
1123
-
1124
- # clean up
1125
- def cleanup
1126
-
1127
- str = checkConfigFile(readYML("#{Dir.home}/.aka/.config")["dotfile"])
1128
-
1129
- if content = File.open(str).read
1130
- content.gsub!(/\r\n?/, "\n")
1131
- content_array = content.split("\n")
1132
- check = false
1133
- while check == false
1134
- check = true
1135
- content_array.each_with_index { |line, index|
1136
- if line == "" || line == "\n"
1137
- content_array.delete_at(index)
1138
- check = false
1139
- end
1140
- }
1141
- end
1142
- write_with_newline(content_array)
1143
- end
1144
- end
1145
-
1146
- ################################################
1147
- ## Getting these babies ready for beauty contest
1148
- ################################################
1149
-
1150
- def showSpace word
1151
- space = ""
1152
- val = 20 - word.size
1153
- val = 20 if val < 0
1154
- val.times do
1155
- space += " "
1156
- end
1157
- return space
1158
- end
1159
-
1160
- def showBar percent
1161
- result = ""
1162
- val = percent/100 * 50
1163
- val = 2 if val > 1 && val < 2
1164
- val = 1 if val.round <= 1 #for visibiity, show two bars if it's just one
1165
- val.round.times do
1166
- result += "+"
1167
- end
1168
-
1169
- remaining = 50 - val.round
1170
- remaining.times do
1171
- result += "-".red
1172
- end
1173
-
1174
- return result + " #{percent.round(2)}%"
1175
- end
1176
-
1177
- def add_to_proj fullalias
1178
- values = fullalias.split("=")
1179
- yml = readYML("#{Dir.pwd}/.aka")
1180
- if yml == false
1181
- write_new_proj_aka_file fullalias
1182
- else
1183
- yml["proj"]["title"] = "this is title"
1184
- yml["proj"]["summary"] = "this is summary"
1185
- yml["proj"]["aka"][values.first] = values[1]
1186
- writeYML("#{Dir.pwd}/.aka", yml)
1187
- end
1188
- end
1189
-
1190
- def write_new_proj_aka_file fullalias
1191
- values = fullalias.split("=")
1192
-
1193
- theyml = {"proj" => {
1194
- "title" => "",
1195
- "summary" => "",
1196
- "aliases" => {
1197
- "firstvalue" => ""
1198
- }}}
1199
-
1200
- writeYML("#{Dir.pwd}/.aka", theyml)
1201
- end
1202
-
1203
- def createShortcut(proj)
1204
- answer = ""
1205
- proj["shortcuts"].to_a.each_with_index do |each,index|
1206
- answer += "#{each["name"]}
1207
- - #{each["command"]}
1208
- ".pretty
1209
- answer += "\n"
1210
- end
1211
- return answer
1212
- end
1213
-
1214
- def add_last_command name
1215
- command= find_last_command()
1216
- return str = name + "=" + "#{command}"
1217
- end
1218
-
1219
- def find_last_command
1220
- str = checkConfigFile(readYML("#{Dir.home}/.aka/.config")["history"])
1221
- #i think if you do history -w, you can retrieve the latest command
1222
- if content = File.open(str).read
1223
- count=0
1224
- content.gsub!(/\r\n?/, "\n")
1225
- content_array = content.split("\n")
1226
- return content_array[content_array.count - 1]
1227
- end
1228
- end
1229
-
1230
- def parseARGS str
1231
- array = str.split(" ")
1232
- array.each_with_index do |line, value|
1233
- array[value] = line.gsub('#{pwd}', Shellwords.escape(Dir.pwd))
1234
- end
1235
- return array.join(" ")
1236
- end
1237
-
1238
- def add_pwd_to_the_command
1239
- #detect #{pwd}
1240
- #get the pwd and replace the the pwd
1241
- end
1242
-
1243
- def showConfig
1244
- thing = YAML.load_file("#{Dir.home}/.aka/.config")
1245
- puts ""
1246
- thing.each do |company,details|
1247
- puts "#{company} -> " + "#{details}".red
1248
- end
1249
- end
1250
-
1251
- def setZSHRC
1252
- setPath("#{Dir.home}/.zshrc","dotfile")
1253
- setPath("#{Dir.home}/.zsh_history","history")
1254
- setPath("/etc/zprofile","profile")
1255
- end
1256
-
1257
- def setBASHRC
1258
- setPath("#{Dir.home}/.bashrc","dotfile")
1259
- setPath("#{Dir.home}/.bash_history","history")
1260
- setPath("/etc/profile","profile")
1261
- end
1262
-
1263
- def setBASH
1264
- setPath("#{Dir.home}/.bash_profile","dotfile")
1265
- setPath("#{Dir.home}/.bash_history","history")
1266
- setPath("/etc/profile","profile")
1267
- end
1268
-
1269
- def setZSHRC2 #ryan - set the right dotfile and profile
1270
- setPath("#{Dir.home}/.zshrc","dotfile")
1271
- setPath("#{Dir.home}/.zsh_history","history")
1272
- setPath("#{Dir.home}/.zshrc","profile")
1273
- setPath("#{Dir.home}/.aka","home")
1274
- end
1275
-
1276
- def setBASHRC2 #ryan - set the right dotfile and profile
1277
- setPath("#{Dir.home}/.bashrc","dotfile")
1278
- setPath("#{Dir.home}/.bash_history","history")
1279
- setPath("#{Dir.home}/.bashrc","profile")
1280
- setPath("#{Dir.home}/.aka","home")
1281
- end
1282
-
1283
- def setBASH2 #ryan - set the right dotfile and profile
1284
- setPath("#{Dir.home}/.bash_profile","dotfile")
1285
- setPath("#{Dir.home}/.bash_history","history")
1286
- setPath("/etc/profile","profile")
1287
- setPath("#{Dir.home}/.aka","home")
1288
- end
1289
-
1290
- def get_password
1291
- ask("Enter Password: ", :echo => false)
1292
- end
1293
-
1294
- def isOhMyZsh
1295
- if readYML("#{Dir.home}/.aka/.config")["dotfile"] == "#{Dir.home}/.zshrc"
1296
- return true
1297
- else
1298
- return false
1299
- end
1300
- end
1301
-
1302
- end
1303
-
1304
-
1305
- end
1306
-
1307
- class String
1308
- def pretty
1309
- return self.gsub("\s\t\r\f", ' ').squeeze(' ')
1310
- end
1311
-
1312
- def is_i?
1313
- !!(self =~ /\A[-+]?[0-9]+\z/)
1314
- end
1315
- end
1316
-
1317
- __END__
1318
-
1319
- #
1320
- # LIST OUT
1321
- #
1322
- # desc "list_old", "list alias (short alias: l)"
1323
- # method_options :force => :boolean
1324
- # def list_old(args=nil)
1325
- # if args != nil
1326
- # showlast_old(args.to_i)
1327
- # else
1328
- # value = readYML("#{Dir.home}/.aka/.config")["list"]
1329
- # showlast_old(value.to_i) #this is unsafe
1330
- # end
1331
- #
1332
- # #total of #{} exports #functions
1333
- # puts "A total of #{count()} aliases,#{count_export} exports and #{count_function} functions from #{readYML("#{Dir.home}/.aka/.config")["dotfile"]}"
1334
- # reload_dot_file
1335
- # end
1336
-
1337
-
1338
-
1339
- # command :config do |c|
1340
- # c.action do |args, options|
1341
- # # theyml = Hash.new
1342
- # # theyml["location"] = "~/.aka/.location"
1343
- # # theyml["global"] = "/Users/ytbryan/.bash_profile"
1344
- # # theyml["groups"] = "~/.aka/groups"
1345
- # # theyml["remote"] = "255, admin, 12.12.12.233"
1346
- # # theyml["path"] = "~/.aka"
1347
- # # writeYML("#{Dir.home}/.aka/.config", theyml)
1348
- # FileUtils.touch(readYML("#{Dir.home}/.aka/.config")["location"])
1349
- # end
1350
- # end
1351
322
  #
1352
- # command :readconfig do |c|
1353
- # c.action do |args, options|
1354
- # puts "readYML('#{Dir.home}/.aka/.config')['location'] ->#{readYML("#{Dir.home}/.aka/.config")["location"].class} -> #{readYML("#{Dir.home}/.aka/.config")["location"]}"
1355
- # puts "readYML("#{Dir.home}/.aka/.config")["location"] -> #{ readYML("#{Dir.home}/.aka/.config")["location"].class} -> #{ readYML("#{Dir.home}/.aka/.config")["location"]}"
1356
- # puts "#{program(:path_to_location).class} -> #{program(:path_to_location)}"
1357
- # end
1358
- # end
323
+ # Groups
1359
324
  #
325
+ desc :groups, 'list all the groups'
326
+ def groups
327
+ Aka.list_all_groups
328
+ end
1360
329
 
1361
- ###########################
1362
- ### DEVELOPMENT
1363
- ###########################
1364
-
1365
- # command :build do |c|
1366
- # c.syntax = 'aka build [options]'
1367
- # c.summary = 'build the VERSION file and run tests'
1368
- # c.action do |args, options|
1369
- # write(program(:version), './VERSION')
1370
- # puts "VERSION #{program(:version)} created at #{Time.now.strftime("%I:%M%p, %A, %d %b %Y")}"
1371
- # end
1372
- # end
1373
-
1374
- # command :install do |c|
1375
- # c.syntax = 'aka copy [options]'
1376
- # c.summary = 'copy a local copy of aka to /usr/local/bin'
1377
- # c.action do |args, options|
1378
- # result = system("sudo cp aka /usr/local/bin")
1379
- # puts "Installed aka #{program(:version)} into /usr/local/bin (#{Time.now.strftime("%I:%M%p,%a,%d %b %Y")}).".red if result == true
1380
- # puts "" if result == true
1381
- # end
1382
- # end
1383
- #
1384
- # command :uninstall do |c|
1385
- # c.syntax = 'aka uninstall [options]'
1386
- # c.summary = 'uninstall aka'
1387
- # c.action do |args, options|
1388
- # input = ask "Confirm that you want to uninstall aka? (y/N)"
1389
- # system("sudo rm -rf ~/.aka; sudo rm -rf /usr/local/bin/aka;") if input == "y"
1390
- # end
1391
- # end
1392
-
1393
- #
1394
- # SETUP_old
1395
- #
1396
- # desc "setup_old", "setup aka"
1397
- # method_options :force => :boolean
1398
- # def setup_old
1399
- # setup_aka_old
1400
- # end
1401
-
1402
- #
1403
- # USAGE
1404
330
  #
1405
- # desc "usage_old [number]", "show commands usage based on history"
1406
- # # method_options :least, :type => :boolean, :aliases => '-l', :desc => 'show the least used commands'
1407
- # # method_options :clear, :type => :boolean, :aliases => '-c', :desc => 'clear the dot history file'
1408
- # def usage_old(args=nil)
1409
- # if args
1410
- # if options.least
1411
- # showUsage(args.to_i, true) if args
1412
- # else
1413
- # showUsage(args.to_i) if args
1414
- # end
1415
- # else
1416
- # if options.least
1417
- # value = readYML("#{Dir.home}/.aka/.config")["usage"]
1418
- # showlast_old(value.to_i, true) #this is unsafe
1419
- # else
1420
- # value = readYML("#{Dir.home}/.aka/.config")["usage"]
1421
- # showlast_old(value.to_i) #this is unsafe
1422
- # end
1423
- # end
331
+ # Where is your dotfile
1424
332
  #
1425
- # if options[:clear]
1426
- # puts "clear the dot history file"
1427
- # end
1428
- # end
1429
-
333
+ desc :where, 'locate your dotfile'
334
+ def where
335
+ puts Aka.readYML("#{CONFIG_PATH}")['dotfile']
336
+ end
1430
337
 
1431
338
  #
1432
- # INSTALL
339
+ # show version
1433
340
  #
1434
- # desc "install [name]", "install aka"
1435
- # method_options :force => :boolean
1436
- # def install
1437
- # if File.exist? "#{Dir.pwd}/aka"
1438
- # if File.exist? "/usr/local/bin/aka"
1439
- # if yes? "aka exists. Do you want to replace it? (yN)"
1440
- # FileUtils.rm("/usr/local/bin/aka")
1441
- # system("ln -s #{Dir.pwd}/aka /usr/local/bin/aka")
1442
- # puts "aka replaced."
1443
- # end
1444
- # else
1445
- # result = system("ln -s #{Dir.pwd}/aka /usr/local/bin/aka")
1446
- # puts "aka installed."
1447
- # end
1448
- # else
1449
- # puts "Cannot find aka.".red
1450
- # end
1451
- # end
341
+ desc :version, 'show version'
342
+ def version
343
+ puts Aka::VERSION
344
+ end
1452
345
 
1453
346
 
1454
- # setup_aka_old
1455
- # def setup_aka_old
1456
- # append_with_newline("export HISTSIZE=10000","/etc/profile")
1457
- # trap = "sigusr2() { unalias $1;}
1458
- # sigusr1() { source #{readYML("#{Dir.home}/.aka/.config")["dotfile"]}; history -a; echo 'reloaded dot file'; }
1459
- # trap sigusr1 SIGUSR1
1460
- # trap 'sigusr2 $(cat ~/sigusr1-args)' SIGUSR2\n".pretty
1461
- # append(trap, readYML("#{Dir.home}/.aka/.config")['profile'])
1462
- # puts "Done. Please restart this shell.".red
1463
- # end
1464
- #
1465
- # # setup_aka_old2 by ryan - check bash file first
1466
- # def setup_aka_old2
1467
- # if File.exist?("#{Dir.home}/.zshrc") #if zshec exist
1468
- # setZSHRC2
1469
- # append_with_newline("\nexport HISTSIZE=10000","#{Dir.home}/.zshrc")
1470
- # elsif
1471
- # File.exist?("#{Dir.home}/.bashrc") #if bashrc exist
1472
- # setBASHRC2
1473
- # append_with_newline("\nexport HISTSIZE=10000","#{Dir.home}/.bashrc")
1474
- # elsif File.exist?("#{Dir.home}/.bash_profile") #if bash_profile exist
1475
- # setBASH2
1476
- # append_with_newline("\nexport HISTSIZE=10000","#{Dir.home}/.bash_profile")
1477
- # else
1478
- # puts "Currently aka2 just support zshrc, bashrc and bash_profile"
1479
- # puts "Pleaes contact aka2 creator for more info."
1480
- # end
1481
- #
1482
- # trap = "sigusr2() { unalias $1;}
1483
- # sigusr1() { source #{readYML("#{Dir.home}/.aka/.config")["dotfile"]}; history -a; echo 'reloaded dot file'; }
1484
- # trap sigusr1 SIGUSR1
1485
- # trap 'sigusr2 $(cat ~/sigusr1-args)' SIGUSR2\n".pretty
1486
- # append(trap, readYML("#{Dir.home}/.aka/.config")['profile'])
1487
- # puts "Done. Please restart this shell.".red
1488
- # end
347
+ end # that's all
348
+ end # last end