tty-which 0.3.0 → 0.5.0

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
- SHA1:
3
- metadata.gz: 03043a40c5cf44b4afbd6c213c373fd75299e8cc
4
- data.tar.gz: 80a1f7dc2748814fb8d3b9d0f92fad214a2098a9
2
+ SHA256:
3
+ metadata.gz: b386870d74bfbd8fbf700f42133763d6474d836f4fa1f9e9a03e45d1ea6f49ab
4
+ data.tar.gz: 31a710e7009c233287ce2d7cde91f88ec9743047a5ddb2825f32abba4b17ec5f
5
5
  SHA512:
6
- metadata.gz: 5ef5e7498c79265dd91d347b33ab45afc7e4ce43e298d6339733cd554dec32bdcf256644340f9458e9283bcddc3332c1eebe736b16569bc3b681a2e3f32a0753
7
- data.tar.gz: a116bc4bed3540b165351932a4d5644e53c66313ee87190e08b8e47f4a438b1f227c0b1de70aecaeb3eb115f3f2b7e06b37f137cffc3a52299d616b977ba8daa
6
+ metadata.gz: 8a6aa76a7f716ebeb5b0f3a16c59844ce7cdfb8cbc8a18ca9abf7453bbc9e75110273dc548d36decf0d239dee262060a5017495f829f76c32ec01fbe1c9a5482
7
+ data.tar.gz: 68bec4ef1c3ac092b253c69b5c73f51d88acfc12a994a984fde9d9887ddc3109d9781ad0493b75763b5119e44d72f293eed5b8373092ea333b5f4e7ced454fb6
data/CHANGELOG.md CHANGED
@@ -1,5 +1,35 @@
1
1
  # Change log
2
2
 
3
+ ## [v0.5.0] - 2021-08-11
4
+
5
+ ### Changed
6
+ * Change to use double-quoted strings
7
+ * Remove bundler as development dependency
8
+
9
+ ### Fixed
10
+ * Fix to stop joining absolute path and extension with a file path separator
11
+
12
+ ## [v0.4.2] - 2020-01-20
13
+
14
+ ### Changed
15
+ * Change gemspec to add metadata and remove test artifacts
16
+
17
+ ## [v0.4.1] - 2019-06-02
18
+
19
+ ### Changed
20
+ * Change to relax bundler dependency version
21
+
22
+ ## [v0.4.0] - 2018-10-13
23
+
24
+ ### Added
25
+ * Add ability to specify search paths for #which and #exist? calls
26
+
27
+ ### Changed
28
+ * Change to freeze all strings
29
+ * Change gemspec to require Ruby >= 2.0.0
30
+ * Change gemspec to load files without calling git
31
+ * Change gemspec to add rspec as dev dependency
32
+
3
33
  ## [v0.3.0] - 2017-03-20
4
34
 
5
35
  ### Changed
@@ -34,6 +64,11 @@
34
64
 
35
65
  * Initial implementation and release
36
66
 
67
+ [v0.5.0]: https://github.com/piotrmurach/tty-which/compare/v0.4.2...v0.5.0
68
+ [v0.4.2]: https://github.com/piotrmurach/tty-which/compare/v0.4.1...v0.4.2
69
+ [v0.4.1]: https://github.com/piotrmurach/tty-which/compare/v0.4.0...v0.4.1
70
+ [v0.4.0]: https://github.com/piotrmurach/tty-which/compare/v0.3.0...v0.4.0
71
+ [v0.3.0]: https://github.com/piotrmurach/tty-which/compare/v0.2.2...v0.3.0
37
72
  [v0.2.2]: https://github.com/piotrmurach/tty-which/compare/v0.2.1...v0.2.2
38
73
  [v0.2.1]: https://github.com/piotrmurach/tty-which/compare/v0.2.0...v0.2.1
39
74
  [v0.2.0]: https://github.com/piotrmurach/tty-which/compare/v0.1.0...v0.2.0
data/LICENSE.txt CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2015 Piotr Murach
1
+ Copyright (c) 2015 Piotr Murach (piotrmurach.com)
2
2
 
3
3
  MIT License
4
4
 
data/README.md CHANGED
@@ -1,18 +1,23 @@
1
+ <div align="center">
2
+ <a href="https://ttytoolkit.org"><img width="130" src="https://github.com/piotrmurach/tty/raw/master/images/tty.png" alt="TTY Toolkit logo"/></a>
3
+ </div>
4
+
1
5
  # TTY::Which [![Gitter](https://badges.gitter.im/Join%20Chat.svg)][gitter]
6
+
2
7
  [![Gem Version](https://badge.fury.io/rb/tty-which.svg)][gem]
3
- [![Build Status](https://secure.travis-ci.org/piotrmurach/tty-which.svg?branch=master)][travis]
8
+ [![Actions CI](https://github.com/piotrmurach/tty-which/workflows/CI/badge.svg?branch=master)][gh_actions_ci]
4
9
  [![Build status](https://ci.appveyor.com/api/projects/status/2rpm67huf1nh98d0?svg=true)][appveyor]
5
10
  [![Code Climate](https://codeclimate.com/github/piotrmurach/tty-which/badges/gpa.svg)][codeclimate]
6
11
  [![Coverage Status](https://coveralls.io/repos/github/piotrmurach/tty-which/badge.svg?branch=master)][coveralls]
7
- [![Inline docs](http://inch-ci.org/github/piotrmurach/tty-which.svg?branch=master)][inchpages]
12
+ [![Inline docs](https://inch-ci.org/github/piotrmurach/tty-which.svg?branch=master)][inchpages]
8
13
 
9
14
  [gitter]: https://gitter.im/piotrmurach/tty
10
- [gem]: http://badge.fury.io/rb/tty-which
11
- [travis]: http://travis-ci.org/piotrmurach/tty-which
15
+ [gem]: https://badge.fury.io/rb/tty-which
16
+ [gh_actions_ci]: https://github.com/piotrmurach/tty-which/actions?query=workflow%3ACI
12
17
  [appveyor]: https://ci.appveyor.com/project/piotrmurach/tty-which
13
18
  [codeclimate]: https://codeclimate.com/github/piotrmurach/tty-which
14
19
  [coveralls]: https://coveralls.io/github/piotrmurach/tty-which
15
- [inchpages]: http://inch-ci.org/github/piotrmurach/tty-which
20
+ [inchpages]: https://inch-ci.org/github/piotrmurach/tty-which
16
21
 
17
22
  > Platform independent implementation of Unix `which` utility that searches for executable file in the path variable.
18
23
 
@@ -22,7 +27,7 @@
22
27
 
23
28
  Add this line to your application's Gemfile:
24
29
 
25
- gem 'tty-which'
30
+ gem "tty-which"
26
31
 
27
32
  And then execute:
28
33
 
@@ -34,31 +39,40 @@ Or install it yourself as:
34
39
 
35
40
  ## Usage
36
41
 
37
- **TTY::Which** has `which` method that searches the path for executable file.
42
+ **TTY::Which** has `which` method that searches set of directories for an executable file based on the `PATH` environment variable.
38
43
 
39
- When the path to executable exists, an absolute path is returned, otherwise `nil`.
44
+ When the path to an executable program exists, an absolute path is returned, otherwise `nil`.
40
45
 
41
- For example, to find location for a single executable do:
46
+ For example, to find location for an executable program do:
42
47
 
43
48
  ```ruby
44
- TTY::Which.which('less') # => '/usr/bin/less'
45
- TTY::Which.which('git') # => 'C:\Program Files\Git\bin\git'
49
+ TTY::Which.which("less") # => "/usr/bin/less"
50
+ TTY::Which.which("git") # => "C:\Program Files\Git\bin\git"
46
51
  ```
47
52
 
48
53
  You can also check an absolute path to executable:
49
54
 
50
55
  ```ruby
51
- TTY::Which.which('/usr/bin/ruby') # => '/usr/bin/ruby'
56
+ TTY::Which.which("/usr/bin/ruby") # => "/usr/bin/ruby"
52
57
  ```
53
58
 
54
- The `exist?` returns `true` if the executable exists in the path and `false` otherwise:
59
+ You can also specify directly the paths to search using `:paths` keyword:
55
60
 
56
61
  ```ruby
57
- TTY::Which.exist?('ruby') # => true
62
+ TTY::Which.which("ruby", paths: ["/usr/local/bin", "/usr/bin", "/bin"])
63
+ # => "/usr/local/bin/ruby"
64
+ ```
65
+
66
+ When you're only interesting in knowing that an executable exists on the system use the `exist?` call:
67
+
68
+ ```ruby
69
+ TTY::Which.exist?("ruby") # => true
58
70
  ```
59
71
 
60
72
  ## Contributing
61
73
 
74
+ Bug reports and pull requests are welcome on GitHub at https://github.com/piotrmurach/tty-which. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
75
+
62
76
  1. Fork it ( https://github.com/piotrmurach/tty-which/fork )
63
77
  2. Create your feature branch (`git checkout -b my-new-feature`)
64
78
  3. Commit your changes (`git commit -am 'Add some feature'`)
@@ -67,4 +81,4 @@ TTY::Which.exist?('ruby') # => true
67
81
 
68
82
  ## Copyright
69
83
 
70
- Copyright (c) 2015-2017 Piotr Murach. See LICENSE for further details.
84
+ Copyright (c) 2015 Piotr Murach. See LICENSE for further details.
data/lib/tty-which.rb CHANGED
@@ -1,3 +1,3 @@
1
- # coding: utf-8
1
+ # frozen_string_literal: true
2
2
 
3
- require_relative 'tty/which'
3
+ require_relative "tty/which"
data/lib/tty/which.rb CHANGED
@@ -1,35 +1,41 @@
1
- # coding: utf-8
1
+ # frozen_string_literal: true
2
2
 
3
- require_relative 'which/version'
3
+ require_relative "which/version"
4
4
 
5
5
  module TTY
6
6
  # A class responsible for finding an executable in the PATH
7
7
  module Which
8
8
  # Find an executable in a platform independent way
9
9
  #
10
- # @param [String] command
10
+ # @param [String] cmd
11
11
  # the command to search for
12
+ # @param [Array<String>] paths
13
+ # the paths to look through
14
+ #
15
+ # @example
16
+ # which("ruby") # => "/usr/local/bin/ruby"
17
+ # which("/usr/local/bin/ruby") # => "/usr/local/bin/ruby"
18
+ # which("foo") # => nil
12
19
  #
13
20
  # @example
14
- # which('ruby') # => '/usr/local/bin/ruby'
15
- # which('/usr/local/bin/ruby') # => '/usr/local/bin/ruby'
16
- # which('foo') # => nil
21
+ # which("ruby", paths: ["/usr/locale/bin", "/usr/bin", "/bin"])
17
22
  #
18
23
  # @return [String, nil]
19
24
  # the absolute path to executable if found, `nil` otherwise
20
25
  #
21
26
  # @api public
22
- def which(cmd, search_path = nil)
27
+ def which(cmd, paths: search_paths)
23
28
  if file_with_path?(cmd)
24
29
  return cmd if executable_file?(cmd)
30
+
25
31
  extensions.each do |ext|
26
- exe = ::File.join(cmd, ext)
32
+ exe = "#{cmd}#{ext}"
27
33
  return ::File.absolute_path(exe) if executable_file?(exe)
28
34
  end
29
35
  return nil
30
36
  end
31
37
 
32
- search_paths.each do |path|
38
+ paths.each do |path|
33
39
  if file_with_exec_ext?(cmd)
34
40
  exe = ::File.join(path, cmd)
35
41
  return ::File.absolute_path(exe) if executable_file?(exe)
@@ -45,17 +51,17 @@ module TTY
45
51
 
46
52
  # Check if executable exists in the path
47
53
  #
48
- # @param [String] command
54
+ # @param [String] cmd
49
55
  # the executable to check
50
56
  #
51
- # @param [String] search_path
57
+ # @param [Array<String>] paths
52
58
  # paths to check
53
59
  #
54
60
  # @return [Boolean]
55
61
  #
56
62
  # @api public
57
- def exist?(cmd, search_path = nil)
58
- !which(cmd, search_path).nil?
63
+ def exist?(cmd, paths: search_paths)
64
+ !which(cmd, paths: paths).nil?
59
65
  end
60
66
  module_function :exist?
61
67
 
@@ -66,17 +72,17 @@ module TTY
66
72
  #
67
73
  # @example
68
74
  # search_paths("/usr/local/bin:/bin")
69
- # # => ['/bin']
75
+ # # => ["/bin"]
70
76
  #
71
- # @return [Array[String]]
77
+ # @return [Array<String>]
72
78
  # the array of paths to search
73
79
  #
74
80
  # @api private
75
- def search_paths(path = ENV['PATH'])
81
+ def search_paths(path = ENV["PATH"])
76
82
  paths = if path && !path.empty?
77
83
  path.split(::File::PATH_SEPARATOR)
78
84
  else
79
- %w(/usr/local/bin /usr/ucb /usr/bin /bin)
85
+ %w[/usr/local/bin /usr/ucb /usr/bin /bin]
80
86
  end
81
87
  paths.select(&Dir.method(:exist?))
82
88
  end
@@ -85,30 +91,31 @@ module TTY
85
91
  # All possible file extensions
86
92
  #
87
93
  # @example
88
- # extensions('.exe;cmd;.bat')
89
- # # => ['.exe','.bat']
94
+ # extensions(".exe;cmd;.bat")
95
+ # # => [".exe", ".bat"]
90
96
  #
91
97
  # @param [String] path_ext
92
98
  # a string of semicolon separated filename extensions
93
99
  #
94
- # @return [Array[String]]
100
+ # @return [Array<String>]
95
101
  # an array with valid file extensions
96
102
  #
97
103
  # @api private
98
- def extensions(path_ext = ENV['PATHEXT'])
99
- return [''] unless path_ext
100
- path_ext.split(::File::PATH_SEPARATOR).select { |part| part.include?('.') }
104
+ def extensions(path_ext = ENV["PATHEXT"])
105
+ return [""] unless path_ext
106
+
107
+ path_ext.split(::File::PATH_SEPARATOR).select { |part| part.include?(".") }
101
108
  end
102
109
  module_function :extensions
103
110
 
104
111
  # Determines if filename is an executable file
105
112
  #
106
113
  # @example Basic usage
107
- # executable_file?('/usr/bin/less') # => true
114
+ # executable_file?("/usr/bin/less") # => true
108
115
  #
109
116
  # @example Executable in directory
110
- # executable_file?('less', '/usr/bin') # => true
111
- # executable_file?('less', '/usr') # => false
117
+ # executable_file?("less", "/usr/bin") # => true
118
+ # executable_file?("less", "/usr") # => false
112
119
  #
113
120
  # @param [String] filename
114
121
  # the path to file
@@ -140,6 +147,7 @@ module TTY
140
147
  def file_with_exec_ext?(filename)
141
148
  extension = ::File.extname(filename)
142
149
  return false if extension.empty?
150
+
143
151
  extensions.any? { |ext| extension.casecmp(ext).zero? }
144
152
  end
145
153
  module_function :file_with_exec_ext?
@@ -1,7 +1,7 @@
1
- # coding: utf-8
1
+ # frozen_string_literal: true
2
2
 
3
3
  module TTY
4
4
  module Which
5
- VERSION = "0.3.0"
5
+ VERSION = "0.5.0"
6
6
  end # Which
7
7
  end # TTY
metadata CHANGED
@@ -1,84 +1,70 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tty-which
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Piotr Murach
8
- autorequire:
9
- bindir: bin
8
+ autorequire:
9
+ bindir: exe
10
10
  cert_chain: []
11
- date: 2017-03-20 00:00:00.000000000 Z
11
+ date: 2021-08-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: bundler
14
+ name: rake
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: 1.5.0
20
- - - "<"
21
- - !ruby/object:Gem::Version
22
- version: '2.0'
19
+ version: '0'
23
20
  type: :development
24
21
  prerelease: false
25
22
  version_requirements: !ruby/object:Gem::Requirement
26
23
  requirements:
27
24
  - - ">="
28
25
  - !ruby/object:Gem::Version
29
- version: 1.5.0
30
- - - "<"
31
- - !ruby/object:Gem::Version
32
- version: '2.0'
26
+ version: '0'
33
27
  - !ruby/object:Gem::Dependency
34
- name: rake
28
+ name: rspec
35
29
  requirement: !ruby/object:Gem::Requirement
36
30
  requirements:
37
31
  - - ">="
38
32
  - !ruby/object:Gem::Version
39
- version: '0'
33
+ version: '3.0'
40
34
  type: :development
41
35
  prerelease: false
42
36
  version_requirements: !ruby/object:Gem::Requirement
43
37
  requirements:
44
38
  - - ">="
45
39
  - !ruby/object:Gem::Version
46
- version: '0'
40
+ version: '3.0'
47
41
  description: Platform independent implementation of Unix which command.
48
42
  email:
49
- - ''
43
+ - piotr@piotrmurach.com
50
44
  executables: []
51
45
  extensions: []
52
- extra_rdoc_files: []
46
+ extra_rdoc_files:
47
+ - README.md
48
+ - CHANGELOG.md
49
+ - LICENSE.txt
53
50
  files:
54
- - ".gitignore"
55
- - ".rspec"
56
- - ".travis.yml"
57
51
  - CHANGELOG.md
58
- - Gemfile
59
52
  - LICENSE.txt
60
53
  - README.md
61
- - Rakefile
62
- - appveyor.yml
63
54
  - lib/tty-which.rb
64
55
  - lib/tty/which.rb
65
56
  - lib/tty/which/version.rb
66
- - spec/spec_helper.rb
67
- - spec/unit/executable_file_spec.rb
68
- - spec/unit/exist_spec.rb
69
- - spec/unit/extensions_spec.rb
70
- - spec/unit/file_with_exec_ext_spec.rb
71
- - spec/unit/search_paths_spec.rb
72
- - spec/unit/which_spec.rb
73
- - tasks/console.rake
74
- - tasks/coverage.rake
75
- - tasks/spec.rake
76
- - tty-which.gemspec
77
- homepage: http://piotrmurach.github.io/tty/
57
+ homepage: https://ttytoolkit.org
78
58
  licenses:
79
59
  - MIT
80
- metadata: {}
81
- post_install_message:
60
+ metadata:
61
+ allowed_push_host: https://rubygems.org
62
+ bug_tracker_uri: https://github.com/piotrmurach/tty-which/issues
63
+ changelog_uri: https://github.com/piotrmurach/tty-which/blob/master/CHANGELOG.md
64
+ documentation_uri: https://www.rubydoc.info/gems/tty-which
65
+ homepage_uri: https://ttytoolkit.org
66
+ source_code_uri: https://github.com/piotrmurach/tty-which
67
+ post_install_message:
82
68
  rdoc_options: []
83
69
  require_paths:
84
70
  - lib
@@ -86,24 +72,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
86
72
  requirements:
87
73
  - - ">="
88
74
  - !ruby/object:Gem::Version
89
- version: '0'
75
+ version: 2.0.0
90
76
  required_rubygems_version: !ruby/object:Gem::Requirement
91
77
  requirements:
92
78
  - - ">="
93
79
  - !ruby/object:Gem::Version
94
80
  version: '0'
95
81
  requirements: []
96
- rubyforge_project:
97
- rubygems_version: 2.5.1
98
- signing_key:
82
+ rubygems_version: 3.1.2
83
+ signing_key:
99
84
  specification_version: 4
100
85
  summary: Platform independent implementation of Unix which command.
101
- test_files:
102
- - spec/spec_helper.rb
103
- - spec/unit/executable_file_spec.rb
104
- - spec/unit/exist_spec.rb
105
- - spec/unit/extensions_spec.rb
106
- - spec/unit/file_with_exec_ext_spec.rb
107
- - spec/unit/search_paths_spec.rb
108
- - spec/unit/which_spec.rb
109
- has_rdoc:
86
+ test_files: []
data/.gitignore DELETED
@@ -1,22 +0,0 @@
1
- *.gem
2
- *.rbc
3
- .bundle
4
- .config
5
- .yardoc
6
- Gemfile.lock
7
- InstalledFiles
8
- _yardoc
9
- coverage
10
- doc/
11
- lib/bundler/man
12
- pkg
13
- rdoc
14
- spec/reports
15
- test/tmp
16
- test/version_tmp
17
- tmp
18
- *.bundle
19
- *.so
20
- *.o
21
- *.a
22
- mkmf.log
data/.rspec DELETED
@@ -1,3 +0,0 @@
1
- --color
2
- --require spec_helper
3
- --warnings
data/.travis.yml DELETED
@@ -1,26 +0,0 @@
1
- ---
2
- language: ruby
3
- sudo: false
4
- cache: bundler
5
- script: "bundle exec rake ci"
6
- rvm:
7
- - 1.9.3
8
- - 2.0.0
9
- - 2.1.10
10
- - 2.2.6
11
- - 2.3.3
12
- - 2.4.0
13
- - ruby-head
14
- - jruby-9000
15
- - jruby-head
16
- - rbx-3
17
- matrix:
18
- allow_failures:
19
- - rvm: ruby-head
20
- - rvm: jruby-head
21
- - rvm: rbx-3
22
- fast_finish: true
23
- branches:
24
- only: master
25
- notifications:
26
- email: false
data/Gemfile DELETED
@@ -1,15 +0,0 @@
1
- source 'https://rubygems.org'
2
-
3
- gemspec
4
-
5
- group :development do
6
- gem 'rspec', '~> 3.5.0'
7
- gem 'yard', '~> 0.8.7'
8
- end
9
-
10
- group :metrics do
11
- gem 'coveralls', '~> 0.8.13'
12
- gem 'simplecov', '~> 0.11.2'
13
- gem 'yardstick', '~> 0.9.9'
14
- gem 'term-ansicolor', '=1.3.2'
15
- end
data/Rakefile DELETED
@@ -1,8 +0,0 @@
1
- # coding: utf-8
2
-
3
- require 'bundler/gem_tasks'
4
-
5
- FileList['tasks/**/*.rake'].each(&method(:import))
6
-
7
- desc 'Run all specs'
8
- task ci: %w[ spec ]
data/appveyor.yml DELETED
@@ -1,23 +0,0 @@
1
- ---
2
- install:
3
- - SET PATH=C:\Ruby%ruby_version%\bin;%PATH%
4
- - ruby --version
5
- - gem --version
6
- - bundle install
7
- build: off
8
- test_script:
9
- - bundle exec rake ci
10
- environment:
11
- matrix:
12
- - ruby_version: "193"
13
- - ruby_version: "200"
14
- - ruby_version: "200-x64"
15
- - ruby_version: "21"
16
- - ruby_version: "21-x64"
17
- - ruby_version: "22"
18
- - ruby_version: "22-x64"
19
- - ruby_version: "23"
20
- - ruby_version: "23-x64"
21
- matrix:
22
- allow_failures:
23
- - ruby_version: "193"
data/spec/spec_helper.rb DELETED
@@ -1,45 +0,0 @@
1
- # coding: utf-8
2
-
3
- if RUBY_VERSION > '1.9' and (ENV['COVERAGE'] || ENV['TRAVIS'])
4
- require 'simplecov'
5
- require 'coveralls'
6
-
7
- SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter[
8
- SimpleCov::Formatter::HTMLFormatter,
9
- Coveralls::SimpleCov::Formatter
10
- ]
11
-
12
- SimpleCov.start do
13
- command_name 'spec'
14
- add_filter 'spec'
15
- end
16
- end
17
-
18
- require 'tty-which'
19
-
20
- RSpec.configure do |config|
21
- config.expect_with :rspec do |expectations|
22
- expectations.include_chain_clauses_in_custom_matcher_descriptions = true
23
- end
24
-
25
- config.mock_with :rspec do |mocks|
26
- mocks.verify_partial_doubles = true
27
- end
28
-
29
- # Limits the available syntax to the non-monkey patched syntax that is recommended.
30
- config.disable_monkey_patching!
31
-
32
- # This setting enables warnings. It's recommended, but in some cases may
33
- # be too noisy due to issues in dependencies.
34
- config.warnings = true
35
-
36
- if config.files_to_run.one?
37
- config.default_formatter = 'doc'
38
- end
39
-
40
- config.profile_examples = 2
41
-
42
- config.order = :random
43
-
44
- Kernel.srand config.seed
45
- end
@@ -1,13 +0,0 @@
1
- # encoding: utf-8
2
-
3
- RSpec.describe TTY::Which, '#executable_file?' do
4
- it "checks if file is executable" do
5
- allow(::File).to receive(:join).with('/usr/local/bin', 'ruby').
6
- and_return('/usr/local/bin/ruby')
7
-
8
- allow(::File).to receive(:file?).and_return(true)
9
- allow(::File).to receive(:executable?).with('/usr/local/bin/ruby').and_return(true)
10
-
11
- expect(TTY::Which.executable_file?('ruby', '/usr/local/bin')).to eq(true)
12
- end
13
- end
@@ -1,16 +0,0 @@
1
- # encoding: utf-8
2
-
3
- RSpec.describe TTY::Which, '#exist?' do
4
- it "finds executable in the path" do
5
- allow(TTY::Which).to receive(:which).with('ruby', nil).
6
- and_return('/usr/loca/bin/ruby')
7
-
8
- expect(TTY::Which.exist?('ruby')).to be(true)
9
- end
10
-
11
- it "fails to find executable in the path" do
12
- allow(TTY::Which).to receive(:which).with('ruby', nil).and_return(nil)
13
-
14
- expect(TTY::Which.exist?('ruby')).to be(false)
15
- end
16
- end
@@ -1,16 +0,0 @@
1
- # encoding: utf-8
2
-
3
- RSpec.describe TTY::Which, '#extensions' do
4
- it "provides extensions" do
5
- exts = [".COM", ".EXE", ".BAT", ".CMD", ".VBS", ".RB", ".RBW"]
6
- exts_path = exts.join(::File::PATH_SEPARATOR)
7
- allow(ENV).to receive(:[]).with('PATHEXT').and_return(exts_path)
8
-
9
- expect(TTY::Which.extensions).to eq(exts)
10
- end
11
-
12
- it "finds no extensions" do
13
- allow(ENV).to receive(:[]).with('PATHEXT').and_return(nil)
14
- expect(TTY::Which.extensions).to eq([''])
15
- end
16
- end
@@ -1,18 +0,0 @@
1
- # encoding: utf-8
2
-
3
- RSpec.describe TTY::Which, "#file_with_exec_ext?" do
4
- it "detects executable extension" do
5
- filename = 'file.exe'
6
- allow(TTY::Which).to receive(:extensions).and_return(['.EXE', '.BAT', '.CMD'])
7
-
8
- expect(TTY::Which.file_with_exec_ext?(filename)).to eq(true)
9
- end
10
-
11
- it "fails to detect executable extension" do
12
- filename = 'file.unknown'
13
- allow(TTY::Which).to receive(:extensions).and_return(['.EXE', '.BAT'])
14
-
15
- expect(TTY::Which.file_with_exec_ext?(filename)).to eq(false)
16
- end
17
- end
18
-
@@ -1,28 +0,0 @@
1
- # encoding: utf-8
2
-
3
- RSpec.describe TTY::Which, '#search_paths' do
4
- it "defauls search paths" do
5
- allow(ENV).to receive(:[]).with('PATH').and_return([])
6
- allow(Dir).to receive(:exist?).and_return(true)
7
-
8
- expect(TTY::Which.search_paths).to eq([
9
- '/usr/local/bin', '/usr/ucb', '/usr/bin', '/bin'])
10
- end
11
-
12
- it "finds paths in path environment" do
13
- paths = ['/bin', '/usr/bin', '/usr/local/bin', '/opt/local/bin']
14
- path = paths.join(::File::PATH_SEPARATOR)
15
- allow(ENV).to receive(:[]).with('PATH').and_return(path)
16
- allow(Dir).to receive(:exist?).and_return(true)
17
-
18
- expect(TTY::Which.search_paths).to eq(paths)
19
- end
20
-
21
- it "accepts paths to search as an argument" do
22
- paths = ['/bin', '/usr/bin', '/usr/local/bin', '/opt/local/bin']
23
- path = paths.join(::File::PATH_SEPARATOR)
24
- allow(Dir).to receive(:exist?).and_return(true)
25
-
26
- expect(TTY::Which.search_paths(path)).to eq(paths)
27
- end
28
- end
@@ -1,117 +0,0 @@
1
- # coding: utf-8
2
-
3
- RSpec.describe TTY::Which, '#which' do
4
-
5
- before { stub_const("Which", described_class) }
6
-
7
- context "without extension" do
8
- let(:path) { "/bin:/usr/bin:/usr/local/bin:/opt/local/bin" }
9
- let(:cmds) { %w(/usr/bin/ls /bin/sh /usr/bin/ruby /usr/local/git/bin/git) }
10
-
11
- before do
12
- allow(ENV).to receive(:[]).with('PATHEXT').and_return(nil)
13
- allow(ENV).to receive(:[]).with('PATH').and_return(path)
14
- stub_const("::File::PATH_SEPARATOR", ':')
15
- stub_const("::File::SEPARATOR", '/')
16
- allow(Dir).to receive(:exist?) { true }
17
- end
18
-
19
- it "handles path with executable file /bin/sh" do
20
- allow(Which).to receive(:file_with_path?) { true }
21
- allow(Which).to receive(:executable_file?) { true }
22
-
23
- expect(Which.which('/bin/sh')).to eq('/bin/sh')
24
- end
25
-
26
- it "fails to find path executable" do
27
- allow(Which).to receive(:file_with_path?) { true }
28
- allow(Which).to receive(:executable_file?) { false }
29
-
30
- expect(Which.which('/bin/sh')).to eq(nil)
31
- end
32
-
33
- it "searches executable file git" do
34
- dir_path = "/usr/local/bin"
35
- cmd = "git"
36
- expected_path = "#{dir_path}/#{cmd}"
37
- allow(Which).to receive(:file_with_path?) { false }
38
- allow(Which).to receive(:file_with_exec_ext?) { false }
39
-
40
- allow(::File).to receive(:join)
41
- allow(::File).to receive(:join).with(dir_path, cmd).and_return(expected_path)
42
- allow(Which).to receive(:executable_file?) { false }
43
- allow(Which).to receive(:executable_file?).with(expected_path) { true }
44
- allow(::File).to receive(:absolute_path).with(expected_path).
45
- and_return(expected_path)
46
-
47
- expect(Which.which(cmd)).to eq(expected_path)
48
- end
49
- end
50
-
51
- context "with extension" do
52
- let(:path) { "C:\\Program Files\\Git\\bin;" }
53
- let(:exts) { ".com;.exe;.bat;.cmd" }
54
-
55
- before do
56
- allow(ENV).to receive(:[]).with('PATHEXT').and_return(exts)
57
- allow(ENV).to receive(:[]).with('PATH').and_return(path)
58
- stub_const("::File::PATH_SEPARATOR", ';')
59
- stub_const("::File::SEPARATOR", '\\')
60
- allow(Dir).to receive(:exist?) { true }
61
- end
62
-
63
- it "handles path with executable file C:\\Program Files\\Git\\bin\\git" do
64
- allow(Which).to receive(:file_with_path?) { true }
65
- allow(Which).to receive(:executable_file?).with(any_args) { false }
66
-
67
- path_with_exe_file = 'C:\Program Files\Git\bin\git'
68
- expected_path = "#{path_with_exe_file}.exe"
69
-
70
- allow(::File).to receive(:join).with(path_with_exe_file, any_args).
71
- and_return(path_with_exe_file)
72
- allow(::File).to receive(:join).with(path_with_exe_file, '.exe').
73
- and_return(expected_path)
74
- allow(Which).to receive(:executable_file?).with(expected_path) { true }
75
- allow(::File).to receive(:absolute_path).and_return(expected_path)
76
-
77
- expect(Which.which(path_with_exe_file)).to eq(expected_path)
78
- end
79
-
80
- it "searches path for executable git.exe" do
81
- dir_path = "C:\\Program Files\\Git\\bin"
82
- cmd = 'git.exe'
83
- expected_path = "#{dir_path}\\#{cmd}"
84
- allow(Which).to receive(:file_with_path?) { false }
85
- allow(Which).to receive(:file_with_exec_ext?).with(cmd) { true }
86
-
87
- allow(::File).to receive(:join).with(dir_path, any_args)
88
- allow(::File).to receive(:join).with(dir_path, cmd).and_return(expected_path)
89
- allow(Which).to receive(:executable_file?).with(any_args) { false }
90
- allow(Which).to receive(:executable_file?).with(expected_path) { true }
91
- allow(::File).to receive(:absolute_path).with(expected_path).
92
- and_return(expected_path)
93
-
94
- expect(Which.which(cmd)).to eq(expected_path)
95
- expect(::File).to have_received(:absolute_path).with(expected_path)
96
- end
97
-
98
- it "searches path for executable git" do
99
- dir_path = "C:\\Program Files\\Git\\bin"
100
- cmd = 'git'
101
- expected_path = "#{dir_path}\\#{cmd}.exe"
102
- allow(Which).to receive(:file_with_path?) { false }
103
- allow(Which).to receive(:file_with_exec_ext?).with(cmd) { false }
104
-
105
- allow(::File).to receive(:join).with(dir_path, any_args)
106
- allow(::File).to receive(:join).with(dir_path, "#{cmd}.exe").
107
- and_return(expected_path)
108
- allow(Which).to receive(:executable_file?).with(any_args) { false }
109
- allow(Which).to receive(:executable_file?).with(expected_path) { true }
110
- allow(::File).to receive(:absolute_path).with(expected_path).
111
- and_return(expected_path)
112
-
113
- expect(Which.which(cmd)).to eq(expected_path)
114
- expect(::File).to have_received(:absolute_path).with(expected_path)
115
- end
116
- end
117
- end
data/tasks/console.rake DELETED
@@ -1,10 +0,0 @@
1
- # encoding: utf-8
2
-
3
- desc 'Load gem inside irb console'
4
- task :console do
5
- require 'irb'
6
- require 'irb/completion'
7
- require File.join(__FILE__, '../../lib/tty-which')
8
- ARGV.clear
9
- IRB.start
10
- end
data/tasks/coverage.rake DELETED
@@ -1,11 +0,0 @@
1
- # encoding: utf-8
2
-
3
- desc 'Measure code coverage'
4
- task :coverage do
5
- begin
6
- original, ENV['COVERAGE'] = ENV['COVERAGE'], 'true'
7
- Rake::Task['spec'].invoke
8
- ensure
9
- ENV['COVERAGE'] = original
10
- end
11
- end
data/tasks/spec.rake DELETED
@@ -1,29 +0,0 @@
1
- # encoding: utf-8
2
-
3
- begin
4
- require 'rspec/core/rake_task'
5
-
6
- desc 'Run all specs'
7
- RSpec::Core::RakeTask.new(:spec) do |task|
8
- task.pattern = 'spec/{unit,integration}{,/*/**}/*_spec.rb'
9
- end
10
-
11
- namespace :spec do
12
- desc 'Run unit specs'
13
- RSpec::Core::RakeTask.new(:unit) do |task|
14
- task.pattern = 'spec/unit{,/*/**}/*_spec.rb'
15
- end
16
-
17
- desc 'Run integration specs'
18
- RSpec::Core::RakeTask.new(:integration) do |task|
19
- task.pattern = 'spec/integration{,/*/**}/*_spec.rb'
20
- end
21
- end
22
-
23
- rescue LoadError
24
- %w[spec spec:unit spec:integration].each do |name|
25
- task name do
26
- $stderr.puts "In order to run #{name}, do `gem install rspec`"
27
- end
28
- end
29
- end
data/tty-which.gemspec DELETED
@@ -1,23 +0,0 @@
1
- # coding: utf-8
2
- lib = File.expand_path('../lib', __FILE__)
3
- $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
- require 'tty/which/version'
5
-
6
- Gem::Specification.new do |spec|
7
- spec.name = "tty-which"
8
- spec.version = TTY::Which::VERSION
9
- spec.authors = ["Piotr Murach"]
10
- spec.email = [""]
11
- spec.summary = %q{Platform independent implementation of Unix which command.}
12
- spec.description = %q{Platform independent implementation of Unix which command.}
13
- spec.homepage = "http://piotrmurach.github.io/tty/"
14
- spec.license = "MIT"
15
-
16
- spec.files = `git ls-files -z`.split("\x0")
17
- spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
- spec.test_files = spec.files.grep(%r{^(spec)/})
19
- spec.require_paths = ["lib"]
20
-
21
- spec.add_development_dependency 'bundler', '>= 1.5.0', '< 2.0'
22
- spec.add_development_dependency 'rake'
23
- end