mycommands 1.0.5 → 1.0.6

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.
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- mycommands (1.0.5)
4
+ mycommands (1.0.6)
5
5
  bundler (~> 1.3.0)
6
6
  clipboard (~> 1.0.1)
7
7
 
data/README.md CHANGED
@@ -37,6 +37,7 @@ About the yml files
37
37
 
38
38
  If the script finds categories.yml or commands.yml in ~/Mycommands
39
39
  those files will be used instead of the default ones.
40
+ You can run "mycommands --copy" to copy the default ones to ~/Mycommands.
40
41
 
41
42
  Categories in categories.yml that has no subcategories has to end with a trailing blank space.
42
43
 
@@ -1,17 +1,11 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- require_relative '../lib/mycommands'
4
-
5
3
  module Mycommands
6
4
 
7
5
  DEBUG = ARGV.include? '-d'
8
6
  TEST = ARGV.include? '-t'
9
7
 
10
- action = :print_version if ARGV.include?('-v')
11
-
12
- action = :sort_yaml_files if ARGV.include?('-s')
13
-
14
- action ||= :run
8
+ require_relative '../lib/mycommands'
15
9
 
16
- Factory::get(:Application).send(action)
10
+ Factory::get(:Application).run
17
11
  end
@@ -1,20 +1,20 @@
1
1
  module Mycommands
2
2
  class Application
3
+ OPTIONS = [
4
+ {short: 'v', verbose: 'version', route: [:Application, :print_version], input: false, description: 'Prints the version'},
5
+ {short: 's', verbose: 'sort', route: [:Application, :sort_yaml_files], input: false, description: 'Sorts categories.yml and commands.yml alphabetically'},
6
+ {short: 'c', verbose: 'copy', route: [:Application, :copy_yaml_files], input: false, description: 'Copies categories.yml and commands.yml to ~/Mycommands/ so that they overrides the default ones'},
7
+ {short: 'h', verbose: 'help', route: [:Application, :help], input: false, description: 'Shows this help'}
8
+ ]
9
+
3
10
  def initialize
4
11
  @router = Factory::get(:Router)
5
12
  end
6
13
 
7
- def print_version
8
- puts "Mycommands #{VERSION}"
9
- end
10
-
11
- def sort_yaml_files
12
- dispatch ['Application', 'sort_yaml_files']
13
- end
14
-
15
14
  def run
16
- dispatch ['Category', 'index']
17
- get_input
15
+ route, input = check_options
16
+ dispatch route
17
+ get_input if input
18
18
  end
19
19
 
20
20
  def dispatch args
@@ -28,6 +28,12 @@ module Mycommands
28
28
  end
29
29
 
30
30
  private
31
+ def check_options
32
+ option = OPTIONS.select {|option| "-" + option[:short] == ARGV.first || "--" + option[:verbose] == ARGV.first}.first
33
+ return [option[:route], option[:input]] if option
34
+ [[:Category, :index], true]
35
+ end
36
+
31
37
  def get_input
32
38
  while input = Readline.readline('--> ', true)
33
39
  route = @router.route input
@@ -1,3 +1,5 @@
1
+ require 'fileutils'
2
+
1
3
  module Mycommands
2
4
  class ApplicationController < Controller
3
5
  def sort_yaml_files
@@ -6,6 +8,32 @@ module Mycommands
6
8
  render
7
9
  end
8
10
 
11
+ def copy_yaml_files
12
+ Dir.chdir(YMLPATH)
13
+ @path = "#{ENV['HOME']}/Mycommands"
14
+ @copied = []
15
+ @skipped = []
16
+ FileUtils.mkdir(@path) unless File.exist?(@path)
17
+ Dir.glob('*.yml').each do |file|
18
+ unless File.exists?("#{@path}/#{file}")
19
+ FileUtils.cp(file, @path)
20
+ @copied << file
21
+ else
22
+ @skipped << file
23
+ end
24
+ end
25
+ render
26
+ end
27
+
28
+ def print_version
29
+ puts "Mycommands #{VERSION}"
30
+ end
31
+
32
+ def help
33
+ @options = Application::OPTIONS
34
+ render
35
+ end
36
+
9
37
  private
10
38
  def set_model
11
39
  false
@@ -9,7 +9,7 @@ module Mycommands
9
9
 
10
10
  def render action = nil
11
11
  instance_variables.each do |i|
12
- @view.instance_variable_set i, eval(i.to_s) unless %w(@model view application).include? i
12
+ @view.instance_variable_set i, eval(i.to_s) unless %w(model view application).include? i
13
13
  end
14
14
  if action
15
15
  @view.send(action)
@@ -4,7 +4,7 @@ module Mycommands
4
4
  def default_or_user_yml file
5
5
  default_yml = "#{YMLPATH}/#{file}"
6
6
  user_yml = "#{ENV['HOME']}/Mycommands/#{file}"
7
- File.exist?(user_yml) ? user_yml : default_yml
7
+ File.exist?(user_yml) && !TEST ? user_yml : default_yml
8
8
  end
9
9
  end
10
10
  end
@@ -1,3 +1,3 @@
1
1
  module Mycommands
2
- VERSION = "1.0.5"
2
+ VERSION = "1.0.6"
3
3
  end
@@ -1,8 +1,23 @@
1
1
  module Mycommands
2
2
  class ApplicationView < View
3
+ def copy_yaml_files
4
+ for file in @copied
5
+ print "#{file} has been copied to #{@path}."
6
+ end
7
+ for file in @skipped
8
+ print "#{file} was skipped as it already exist."
9
+ end
10
+ end
11
+
3
12
  def sort_yaml_files
4
13
  print "#{@category_file} has been sorted."
5
14
  print "#{@command_file} has been sorted."
6
15
  end
16
+
17
+ def help
18
+ for option in @options
19
+ print "-#{option[:short]}, --#{option[:verbose]} \t\t #{option[:description]}"
20
+ end
21
+ end
7
22
  end
8
23
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mycommands
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.5
4
+ version: 1.0.6
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-02-26 00:00:00.000000000 Z
12
+ date: 2013-03-04 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
16
- requirement: &70290001224980 !ruby/object:Gem::Requirement
16
+ requirement: &70355802204540 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: 1.3.0
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70290001224980
24
+ version_requirements: *70355802204540
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: clipboard
27
- requirement: &70290001224520 !ruby/object:Gem::Requirement
27
+ requirement: &70355802204020 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ~>
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: 1.0.1
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *70290001224520
35
+ version_requirements: *70355802204020
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: minitest
38
- requirement: &70290001224060 !ruby/object:Gem::Requirement
38
+ requirement: &70355802203560 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ~>
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: 4.5.0
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *70290001224060
46
+ version_requirements: *70355802203560
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: pry
49
- requirement: &70290001223580 !ruby/object:Gem::Requirement
49
+ requirement: &70355802203020 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ~>
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: 0.9.11.4
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *70290001223580
57
+ version_requirements: *70355802203020
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: rake
60
- requirement: &70290001223120 !ruby/object:Gem::Requirement
60
+ requirement: &70355802202560 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ~>
@@ -65,7 +65,7 @@ dependencies:
65
65
  version: 10.0.3
66
66
  type: :development
67
67
  prerelease: false
68
- version_requirements: *70290001223120
68
+ version_requirements: *70355802202560
69
69
  description: Small console app to manage your favourite commands
70
70
  email:
71
71
  - nils.epost@gmail.com
@@ -127,7 +127,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
127
127
  version: '0'
128
128
  segments:
129
129
  - 0
130
- hash: -2407675755260191965
130
+ hash: 2622909617991334818
131
131
  required_rubygems_version: !ruby/object:Gem::Requirement
132
132
  none: false
133
133
  requirements:
@@ -136,7 +136,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
136
136
  version: '0'
137
137
  segments:
138
138
  - 0
139
- hash: -2407675755260191965
139
+ hash: 2622909617991334818
140
140
  requirements: []
141
141
  rubyforge_project:
142
142
  rubygems_version: 1.8.10