am 0.0.6 → 0.0.7

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 6f536428a276df0fd09ec9937e8a5a32995c4e8b
4
- data.tar.gz: dc5e19ae44f8d6957b67a9f138eb5edd86de37b6
3
+ metadata.gz: c1c035e872c61d3c8de94e71e81b49d30fc26792
4
+ data.tar.gz: 42f8fa57dad2dd410c302a59a1cb105b30773772
5
5
  SHA512:
6
- metadata.gz: 043ad037b3a430e61d3dca3e0dccaaac7019acf0ed714bfc469c33b793a7f3e655e32560db22d2528e27a956fce57e31f2a3d4c6c8ac5f1ec96be3c380d8c791
7
- data.tar.gz: b1d21f7a283e740fc9cbe37aa834999fdea81b670b6b1a4a550db8817893256d77e069a9aa0ddf402ab52be69f76eddf8a12bd71df4d7c0540d4ca27b02f9d85
6
+ metadata.gz: ebf1c71e6ccc74ef5ae1044c37bbead6ade425dfc4dafdd30ae637a21b6f852c4af53021d8453ce28da5da9aee7eac52bb07f7652e96e496aefad76554cc6240
7
+ data.tar.gz: 83331d4c739e1a5f7dfdbc2296801741acbe481fd3687d7879ef1622d0c51907dce6288dbff90f33452ac888c399138f4afba218c149af0a019d041699f7f9de
data/am.gemspec CHANGED
@@ -20,5 +20,6 @@ Gem::Specification.new do |spec|
20
20
 
21
21
  spec.add_development_dependency "bundler", "~> 1.7"
22
22
  spec.add_development_dependency "rake", "~> 10.0"
23
+ spec.add_development_dependency "rspec"
23
24
  spec.add_dependency 'thor'
24
25
  end
data/lib/am/cli.rb CHANGED
@@ -19,7 +19,7 @@ module AM
19
19
  if @config.empty?
20
20
  puts 'a blank config'
21
21
  else
22
- @ui.current_config(@config)
22
+ @ui.print_current_config(@config)
23
23
  end
24
24
  end
25
25
 
@@ -29,19 +29,21 @@ module AM
29
29
  tail = Tail.new
30
30
  # registeration from history choice
31
31
  if options[:list]
32
- commands = tail.print_last_commands
32
+ commands = tail.get_last_five_command
33
+ @ui.print_last_commands(commands)
33
34
  add_record = @ui.add_command_with_number(commands)
35
+
34
36
  # registeration from last history
35
37
  else
36
38
  last_command = tail.get_last_command
37
39
  add_record = @ui.add_command_with_last_history(last_command)
38
40
  end
39
41
 
40
- if uniq?(add_record)
42
+ if uniq?(add_record) && valid?(add_record)
41
43
  @config << add_record
42
44
  add_config(add_record)
43
45
  else
44
- AM.before_break("")
46
+ AM.p1("")
45
47
  show
46
48
  end
47
49
  end
@@ -56,7 +58,7 @@ module AM
56
58
  end
57
59
 
58
60
  if options[:list] || delete_alias == nil
59
- @ui.current_config(@config)
61
+ @ui.print_current_config(@config)
60
62
  delete_alias = @ui.del_command_with_number(@config)
61
63
  end
62
64
  delete_config(delete_alias)
@@ -67,8 +69,8 @@ module AM
67
69
  def add_config(add_record)
68
70
  config = Config.new
69
71
  if config.save_config(@config)
70
- AM.before_break("[success] #{add_record[ALIAS]} / #{add_record[COMMAND]} added command")
71
- AM.after_break("please run: [ source #{CONFIG_FILE} ]")
72
+ AM.p1("[success] #{add_record[ALIAS]} / #{add_record[COMMAND]} added command")
73
+ AM.p2("please run: [ source #{CONFIG_FILE} ]")
72
74
  else
73
75
  puts "[error] #{add_record[ALIAS]} / #{add_record[COMMAND]} couldn't add command"
74
76
  end
@@ -77,26 +79,33 @@ module AM
77
79
  def delete_config(exclude)
78
80
  config = Config.new
79
81
  if config.save_config(@config, exclude)
80
- AM.before_break("[success] delete alias #{exclude}")
81
- AM.after_break("please run: [ source #{CONFIG_FILE} ]")
82
+ AM.p1("[success] delete alias #{exclude}")
83
+ AM.p2("please run: [ source #{CONFIG_FILE} ]")
82
84
  else
83
- AM.after_break("[error] failue delete alias #{exclude}}")
85
+ AM.p2("[error] failue delete alias #{exclude}}")
84
86
  end
85
87
  end
86
88
 
87
89
  def uniq?(add_record)
88
- @config.each do |al, command|
89
- if add_record[ALIAS] == al
90
- AM.before_break("[error] not written as duplecate alias is '#{add_record[ALIAS]}'")
90
+ @config.each do |a,c|
91
+ if add_record[ALIAS] == a
92
+ AM.p1("[error] not written as duplecate alias is '#{add_record[ALIAS]}'")
91
93
  return false
92
- elsif add_record[COMMAND] == command
93
- AM.before_break("[error] not written as duplecate command is #{add_record[COMMAND]}")
94
+ elsif add_record[COMMAND] == c
95
+ AM.p1("[error] not written as duplecate command is #{add_record[COMMAND]}")
94
96
  return false
95
97
  end
96
98
  end
97
- return true
99
+ true
98
100
  end
99
- end
100
101
 
102
+ def valid?(add_record)
103
+ unless add_record[ALIAS].length > 0 || add_record[COMMAND].length > 0
104
+ puts "[error] #{add_record[ALIAS]} / #{add_record[COMMAND]} length equal 0"
105
+ return false
106
+ end
107
+ true
108
+ end
109
+ end
101
110
  end
102
111
  end
data/lib/am/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Am
2
- VERSION = "0.0.6"
2
+ VERSION = "0.0.7"
3
3
  end
data/lib/am.rb CHANGED
@@ -1,14 +1,16 @@
1
1
  require "am/version"
2
2
  require "am/cli"
3
3
  module AM
4
- # Your code goes here...
4
+
5
5
  CONFIG_FILE=File.expand_path('~/.am_config')
6
6
  ALIAS = 0
7
7
  COMMAND = 1
8
- def self.before_break(message)
8
+
9
+ def self.p1(message="")
9
10
  puts "\n#{message}"
10
11
  end
11
- def self.after_break(message)
12
+
13
+ def self.p2(message="")
12
14
  puts "#{message}\n\n"
13
15
  end
14
16
  end
data/lib/config.rb CHANGED
@@ -2,7 +2,6 @@ require 'am'
2
2
 
3
3
  module AM
4
4
  class Config
5
-
6
5
  def current
7
6
  config = []
8
7
  File.open(CONFIG_FILE, 'r') do |file|
@@ -13,17 +12,17 @@ module AM
13
12
  config
14
13
  end
15
14
 
16
- def save_config(cache, exclude=nil)
15
+ def save_config(config, exclude=nil)
17
16
  tmp_file = CONFIG_FILE + '.tmp'
18
17
  file = File.open(tmp_file, "w")
19
18
 
20
- cache.each do |al, command|
21
- record = "alias #{al.to_s.strip}=#{command.to_s.strip}"
22
- if al.to_s.strip != exclude
23
- file.puts(record)
19
+ config.each do |a,c|
20
+ r = "alias #{a.to_s}=#{c.to_s}"
21
+ if a.to_s != exclude
22
+ file.puts(r)
24
23
  end
25
- `#{record}`
26
24
  end
25
+
27
26
  file.close
28
27
  File.rename(tmp_file, CONFIG_FILE)
29
28
  end
data/lib/tail.rb CHANGED
@@ -8,36 +8,47 @@ module AM
8
8
 
9
9
  def set_profile
10
10
  shell = `echo $SHELL`
11
+ @profile = {}
12
+
11
13
  if shell =~ /zsh/
12
- @history_pattern = '.*;(.*)'
13
- @sh_history_file = File.expand_path('~/.zsh_history')
14
- @tail_margin = 0
14
+ @profile = {
15
+ pattern: '.*;(.*)',
16
+ file: File.expand_path('~/.zsh_history'),
17
+ margin: 0,
18
+ max_line: 5,
19
+ }
15
20
  elsif shell =~ /bash/
16
- @history_pattern = '(.*)'
17
- @sh_history_file = File.expand_path('~/.bash_history')
18
- @tail_margin = 1
21
+ @profile = {
22
+ pattern: '(.*)',
23
+ file: File.expand_path('~/.bash_history'),
24
+ margin: 1,
25
+ max_line: 5,
26
+ }
19
27
  else
20
28
  puts "does not support is #{shell}"
29
+ exit
21
30
  end
22
31
  end
23
32
 
24
- def print_last_commands
25
- exit if @sh_history_file.nil?
26
-
33
+ def get_last_five_command
34
+ exit if @profile.empty?
27
35
  commands = []
28
- last_commands = `tail -#{6-@tail_margin} #{@sh_history_file} | head -5`.split("\n")
36
+ last_commands = `tail -#{@profile[:max_line] + 1 - @profile[:margin]} #{@profile[:file]} | head -#{@profile[:max_line]}`.split("\n")
37
+
29
38
  last_commands.each_with_index do |c,i|
30
- record = c.split(/#{@history_pattern}/)[COMMAND].strip
31
- puts " #{(i+1).to_s} : #{record.to_s}"
39
+ record = c.split(/#{@profile[:pattern]}/)[COMMAND].strip
32
40
  commands << record
33
- end
41
+ end unless last_commands.empty?
42
+
34
43
  commands
35
44
  end
36
45
 
37
46
  def get_last_command
38
- exit if @sh_history_file.nil?
39
- `tail -#{2-@tail_margin} #{@sh_history_file} | head -1`.split(/#{@history_pattern}/)[COMMAND].strip
40
- end
47
+ exit if @profile[:file].empty?
41
48
 
49
+ if last_row = `tail -#{2-@profile[:margin]} #{@profile[:file]} | head -1`.split(/#{@profile[:pattern]}/)
50
+ last_row[COMMAND].strip
51
+ end
52
+ end
42
53
  end
43
54
  end
data/lib/ui.rb CHANGED
@@ -2,27 +2,22 @@ require 'am'
2
2
 
3
3
  module AM
4
4
  class Ui
5
- def current_config(config)
6
- al_max_len = 0
5
+ def print_current_config(config)
6
+ aml = config.max_by{|c| c[0].length }[0].length #alias max length
7
+ iml = config.length.to_s.length #index max length
7
8
 
8
- AM::after_break("current commands of the config")
9
-
10
- config.each do |al,command|
11
- al_max_len = max(al.to_s.length, al_max_len)
12
- end
13
-
14
- index_max_len = config.length.to_s.length
15
-
16
- config.each_with_index do|record,index|
17
-
18
- as = ''
19
- (al_max_len - record[ALIAS].length.to_i).times do as = as + ' ' end
20
- is = ''
21
- (index_max_len - (index+1).to_s.length).times do is = is + ' ' end
9
+ AM::p1("current commands of the config")
10
+ config.each_with_index do|r,i|
11
+ # 1: name=command
12
+ puts " #{' '*(iml - (i+1).to_s.length)}#{(i+1).to_s} : #{r[ALIAS].to_s}#{' '*(aml-r[ALIAS].length)} = #{r[COMMAND].to_s}"
13
+ end unless config.empty?
14
+ AM::p1
15
+ end
22
16
 
23
- puts " #{is}#{(index+1).to_s} : #{record[ALIAS].to_s}#{as} = #{record[COMMAND].to_s}"
24
- end
25
- AM::before_break("")
17
+ def print_last_commands(commands)
18
+ commands.each_with_index do |c,i|
19
+ puts " #{(i+1).to_s} : #{c.to_s}"
20
+ end unless commands.empty?
26
21
  end
27
22
 
28
23
  def add_command_with_number(commands)
@@ -30,11 +25,11 @@ module AM
30
25
  number = please_input
31
26
  valid?(number, '^[^1-5]', '[error] input using number!')
32
27
  alias_name = get_alias
33
- [alias_name, quot(commands[number.to_i-1])]
28
+ [alias_name, quot(commands[number.to_i-1].strip)]
34
29
  end
35
30
 
36
31
  def add_command_with_last_history(command)
37
- puts "add command is #{quot(command)}"
32
+ puts "add command is #{quot(command.strip)}"
38
33
  alias_name = get_alias
39
34
  [alias_name, quot(command)]
40
35
  end
@@ -50,7 +45,7 @@ module AM
50
45
  print "please input add command alias: "
51
46
  name = please_input
52
47
  valid?(name, '^[^\w-]', '[error] input using a-z or 0-9 or _ or -!')
53
- name
48
+ name.strip
54
49
  end
55
50
 
56
51
  def valid?(val, pattern, message)
@@ -0,0 +1,30 @@
1
+ require 'spec_helper.rb'
2
+
3
+ describe AM::Config do
4
+ describe 'config commands tests' do
5
+ before() do
6
+ @config= AM::Config.new
7
+ `echo "alias test1='test az - AZ 09 _'" > #{AM::CONFIG_FILE}`
8
+ end
9
+ it 'load config' do
10
+ @config.current
11
+ expect(@config.current[0][0]).to eq 'test1'
12
+ expect(@config.current[0][1]).to eq "'test az - AZ 09 _'"
13
+ end
14
+ it 'save config'do
15
+ # add
16
+ config = @config.current << ['test2',"'abcdefgeijklmn'"]
17
+ expect(@config.save_config(config)).to eql(0)
18
+ expect(@config.current.length).to eql(2)
19
+
20
+ # delete
21
+ expect(@config.save_config(config,'test1')).to eql(0)
22
+ expect(@config.current.length).to eql(1)
23
+
24
+ # add check
25
+ expect(@config.current[0][0]).to eq 'test2'
26
+ expect(@config.current[0][1]).to eq "'abcdefgeijklmn'"
27
+ end
28
+ end
29
+ end
30
+
@@ -0,0 +1,21 @@
1
+ require 'spec_helper.rb'
2
+
3
+ describe AM::Tail do
4
+ describe 'tail commands tests' do
5
+
6
+ before() do
7
+ @tail = AM::Tail.new
8
+ end
9
+
10
+ it 'print_last_commands' do
11
+ expect(@tail.get_last_five_command.length).to eq 5
12
+ expect(@tail.get_last_five_command[0]).to match(/[a-z]+/)
13
+ end
14
+
15
+ it 'get_last_command' do
16
+ expect(@tail.get_last_command.length).to be >= 1
17
+ expect(@tail.get_last_command[0]).to match(/[a-z]+/)
18
+ end
19
+ end
20
+ end
21
+
@@ -0,0 +1,3 @@
1
+ require 'am'
2
+ require 'tail'
3
+ require 'config'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: am
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.6
4
+ version: 0.0.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - ka-yamashita
@@ -38,6 +38,20 @@ dependencies:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: '10.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
41
55
  - !ruby/object:Gem::Dependency
42
56
  name: thor
43
57
  requirement: !ruby/object:Gem::Requirement
@@ -73,6 +87,9 @@ files:
73
87
  - lib/config.rb
74
88
  - lib/tail.rb
75
89
  - lib/ui.rb
90
+ - spec/lib/config_spec.rb
91
+ - spec/lib/tail_spec.rb
92
+ - spec/spec_helper.rb
76
93
  homepage: http://ten-snapon.com
77
94
  licenses:
78
95
  - MIT
@@ -97,4 +114,7 @@ rubygems_version: 2.4.6
97
114
  signing_key:
98
115
  specification_version: 4
99
116
  summary: command note command.
100
- test_files: []
117
+ test_files:
118
+ - spec/lib/config_spec.rb
119
+ - spec/lib/tail_spec.rb
120
+ - spec/spec_helper.rb