am 0.0.6 → 0.0.7

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: 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