getversion 0.0.8 → 0.0.9

Sign up to get free protection for your applications and to get access to all the features.
data/bin/getversion.rb CHANGED
File without changes
@@ -2,11 +2,11 @@ module GetVersion
2
2
 
3
3
  namespace :apple
4
4
 
5
- executable 'security' do
5
+ executable :security do
6
6
  osx_version
7
7
  end
8
8
 
9
- executable 'xcodebuild' do
9
+ executable :xcodebuild do
10
10
  find_version_in_output '-version'
11
11
  end
12
12
 
@@ -2,11 +2,11 @@ module GetVersion
2
2
 
3
3
  namespace :google
4
4
 
5
- executable 'appcfg' do
5
+ executable :appcfg do
6
6
  google_appengine_version
7
7
  end
8
8
 
9
- executable 'dev_appserver' do
9
+ executable :dev_appserver do
10
10
  google_appengine_version
11
11
  end
12
12
 
@@ -2,7 +2,7 @@ module GetVersion
2
2
 
3
3
  namespace :jetbrains
4
4
 
5
- executable 'dotcover' do
5
+ executable :dotcover do
6
6
  find_version_in_output
7
7
  end
8
8
 
@@ -2,35 +2,35 @@ module GetVersion
2
2
 
3
3
  namespace :microsoft
4
4
 
5
- executable 'aspnet_compiler' do
5
+ executable :aspnet_compiler do
6
6
  GetVersion['msbuild']
7
7
  end
8
8
 
9
- executable 'installutil' do
9
+ executable :installutil do
10
10
  find_version_in_output
11
11
  end
12
12
 
13
- executable 'msbuild' do
13
+ executable :msbuild do
14
14
  find_version_in_output '/version'
15
15
  end
16
16
 
17
- executable 'msdeploy' do
17
+ executable :msdeploy do
18
18
  find_version_in_output
19
19
  end
20
20
 
21
- executable 'mstest' do
21
+ executable :mstest do
22
22
  find_version_in_output '/help'
23
23
  end
24
24
 
25
- executable 'netsh' do
25
+ executable :netsh do
26
26
  windows_version
27
27
  end
28
28
 
29
- executable 'nuget' do
29
+ executable :nuget do
30
30
  find_version_in_output
31
31
  end
32
32
 
33
- executable 'tf' do
33
+ executable :tf do
34
34
  find_version_in_output
35
35
  end
36
36
 
@@ -2,15 +2,15 @@ module GetVersion
2
2
 
3
3
  namespace :rubygems
4
4
 
5
- executable 'bundle' do
5
+ executable :bundle do
6
6
  find_version_in_output '--version'
7
7
  end
8
8
 
9
- executable 'cucumber' do
9
+ executable :cucumber do
10
10
  find_version_in_output '--version'
11
11
  end
12
12
 
13
- executable 'rake' do
13
+ executable :rake do
14
14
  find_version_in_output '--version'
15
15
  end
16
16
 
@@ -1,10 +1,10 @@
1
1
  module GetVersion
2
2
 
3
- executable 'conlinkchecker' do
3
+ executable :conlinkchecker do
4
4
  find_version_in_output
5
5
  end
6
6
 
7
- executable 'nunit' do
7
+ executable :nunit do
8
8
  find_version_in_output '/help'
9
9
  end
10
10
 
@@ -4,31 +4,18 @@ require_relative 'execution_context'
4
4
  module GetVersion
5
5
  class Executable
6
6
 
7
- attr_reader :name, :namespace, :block
7
+ attr_reader :block
8
8
 
9
- def initialize(name, namespace, &block)
10
- @name = name
11
- @namespace = namespace
12
- @block = block
9
+ def initialize(&block)
10
+ @block = block || Proc.new {}
13
11
  end
14
12
 
15
- def version(name, dir=nil)
16
- ExecutionContext.execute path(name, dir), &@block
13
+ def version(path)
14
+ ExecutionContext.execute path, &@block
17
15
  end
18
16
 
19
- def self.version(name, &block)
20
- Executable.new(name, nil, &block).version(name)
21
- end
22
-
23
- private
24
-
25
- def path(name, dir=nil)
26
- path = WickedWitch[name]
27
- raise "#{name} not found." unless path
28
- dir ||= File.dirname(path)
29
- dir = nil if dir == '.'
30
- return name unless dir
31
- File.join dir, name
17
+ def self.version(path, &block)
18
+ Executable.new(&block).version(path)
32
19
  end
33
20
 
34
21
  end
@@ -8,12 +8,15 @@ module GetVersion
8
8
  end
9
9
 
10
10
  def add_executable(name, namespace, &block)
11
- @executables << Executable.new(name, namespace, &block)
11
+ @executables << {name: name.to_sym, namespace: namespace.to_sym, value: Executable.new(&block)}
12
12
  end
13
13
 
14
- def get_executable(name)
14
+ def get_executable(path)
15
+ basename = File.basename path
16
+ name = basename == path ? path : basename
15
17
  possibilities = [name, File.basename(name, '.*')]
16
- @executables.find { |e| possibilities.find { |p| p.casecmp(e.name) == 0 } }
18
+ executable = @executables.find { |e| possibilities.find { |p| p.casecmp(e[:name].to_s) == 0 } }
19
+ executable[:value] if executable
17
20
  end
18
21
 
19
22
  end
@@ -1,3 +1,4 @@
1
+ require 'wicked_witch'
1
2
  require 'yaml'
2
3
  require_relative 'executable'
3
4
 
@@ -5,7 +6,8 @@ module GetVersion
5
6
  module PlatformVersions
6
7
 
7
8
  def google_appengine_version
8
- dir = File.dirname @path
9
+ realpath = WickedWitch[@path]
10
+ dir = File.dirname realpath
9
11
  version_file = File.join dir, 'VERSION'
10
12
  YAML::load_file(version_file)['release']
11
13
  end
@@ -19,31 +19,16 @@ module GetVersion
19
19
  private
20
20
 
21
21
  def get(executable_if_nil)
22
- executable = @executable_store.get_executable(name) || executable_if_nil
23
- executable.version name, dir
24
- end
25
-
26
- def path
27
- @path
28
- end
29
-
30
- def name
31
- File.basename path
32
- end
33
-
34
- def dir
35
- dir = File.dirname path
36
- dir = nil if dir == '.'
37
- dir
22
+ executable = @executable_store.get_executable(@path) || executable_if_nil
23
+ executable.version @path
38
24
  end
39
25
 
40
26
  def null_executable
41
- Executable.new name, nil do
42
- end
27
+ Executable.new
43
28
  end
44
29
 
45
30
  def executable_for_guessing
46
- Executable.new name, nil do
31
+ Executable.new do
47
32
  args = %w(--version -version /version version --help -help /help help) << nil
48
33
  versions = args.map { |arg| find_version_in_output arg }.compact.uniq
49
34
  versions[0] if versions.length == 1
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: getversion
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.8
4
+ version: 0.0.9
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-08-02 00:00:00.000000000 Z
12
+ date: 2013-08-03 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: wicked_witch
16
- requirement: &70254546514720 !ruby/object:Gem::Requirement
16
+ requirement: &70288378670740 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,7 +21,18 @@ dependencies:
21
21
  version: 0.0.3
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70254546514720
24
+ version_requirements: *70288378670740
25
+ - !ruby/object:Gem::Dependency
26
+ name: test-unit
27
+ requirement: &70288378670260 !ruby/object:Gem::Requirement
28
+ none: false
29
+ requirements:
30
+ - - ~>
31
+ - !ruby/object:Gem::Version
32
+ version: 2.5.5
33
+ type: :development
34
+ prerelease: false
35
+ version_requirements: *70288378670260
25
36
  description: Provides a standard interface for obtaining CLI application version numbers.
26
37
  email: matthew@matthewriley.name
27
38
  executables: