tty-which 0.4.2 → 0.5.0

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
  SHA256:
3
- metadata.gz: f0c9e4e31be53ac50bc5cae7cb0ada9335ddd14ae698f41f646584181e799cd8
4
- data.tar.gz: bfec7279db13dc7ed6c19ce3043a19efa8c1ea30d9d61eb23f48f15a8e2298b9
3
+ metadata.gz: b386870d74bfbd8fbf700f42133763d6474d836f4fa1f9e9a03e45d1ea6f49ab
4
+ data.tar.gz: 31a710e7009c233287ce2d7cde91f88ec9743047a5ddb2825f32abba4b17ec5f
5
5
  SHA512:
6
- metadata.gz: 8842d553c6dae6e17eb10eb2fde70910664b1065f99743f67797f743ae5170d42a2aa3b73f3e77ebd3e4ae376fbb4c7f8bf162e9c90dc9993eebb6a8cfca83ee
7
- data.tar.gz: a8b6d035ddf86104de1847365c01a0e8128944e1aa862314b1807e3028bcf097b38426ed0a5b01a491cf955a414dac55f7e9c4bc82cbec42e3abe2aed202a34f
6
+ metadata.gz: 8a6aa76a7f716ebeb5b0f3a16c59844ce7cdfb8cbc8a18ca9abf7453bbc9e75110273dc548d36decf0d239dee262060a5017495f829f76c32ec01fbe1c9a5482
7
+ data.tar.gz: 68bec4ef1c3ac092b253c69b5c73f51d88acfc12a994a984fde9d9887ddc3109d9781ad0493b75763b5119e44d72f293eed5b8373092ea333b5f4e7ced454fb6
data/CHANGELOG.md CHANGED
@@ -1,5 +1,14 @@
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
+
3
12
  ## [v0.4.2] - 2020-01-20
4
13
 
5
14
  ### Changed
@@ -55,6 +64,7 @@
55
64
 
56
65
  * Initial implementation and release
57
66
 
67
+ [v0.5.0]: https://github.com/piotrmurach/tty-which/compare/v0.4.2...v0.5.0
58
68
  [v0.4.2]: https://github.com/piotrmurach/tty-which/compare/v0.4.1...v0.4.2
59
69
  [v0.4.1]: https://github.com/piotrmurach/tty-which/compare/v0.4.0...v0.4.1
60
70
  [v0.4.0]: https://github.com/piotrmurach/tty-which/compare/v0.3.0...v0.4.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,23 +1,23 @@
1
1
  <div align="center">
2
- <a href="https://piotrmurach.github.io/tty" target="_blank"><img width="130" src="https://cdn.rawgit.com/piotrmurach/tty/master/images/tty.png" alt="tty logo" /></a>
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
3
  </div>
4
4
 
5
5
  # TTY::Which [![Gitter](https://badges.gitter.im/Join%20Chat.svg)][gitter]
6
6
 
7
7
  [![Gem Version](https://badge.fury.io/rb/tty-which.svg)][gem]
8
- [![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]
9
9
  [![Build status](https://ci.appveyor.com/api/projects/status/2rpm67huf1nh98d0?svg=true)][appveyor]
10
10
  [![Code Climate](https://codeclimate.com/github/piotrmurach/tty-which/badges/gpa.svg)][codeclimate]
11
11
  [![Coverage Status](https://coveralls.io/repos/github/piotrmurach/tty-which/badge.svg?branch=master)][coveralls]
12
- [![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]
13
13
 
14
14
  [gitter]: https://gitter.im/piotrmurach/tty
15
- [gem]: http://badge.fury.io/rb/tty-which
16
- [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
17
17
  [appveyor]: https://ci.appveyor.com/project/piotrmurach/tty-which
18
18
  [codeclimate]: https://codeclimate.com/github/piotrmurach/tty-which
19
19
  [coveralls]: https://coveralls.io/github/piotrmurach/tty-which
20
- [inchpages]: http://inch-ci.org/github/piotrmurach/tty-which
20
+ [inchpages]: https://inch-ci.org/github/piotrmurach/tty-which
21
21
 
22
22
  > Platform independent implementation of Unix `which` utility that searches for executable file in the path variable.
23
23
 
@@ -27,7 +27,7 @@
27
27
 
28
28
  Add this line to your application's Gemfile:
29
29
 
30
- gem 'tty-which'
30
+ gem "tty-which"
31
31
 
32
32
  And then execute:
33
33
 
@@ -46,27 +46,27 @@ When the path to an executable program exists, an absolute path is returned, oth
46
46
  For example, to find location for an executable program do:
47
47
 
48
48
  ```ruby
49
- TTY::Which.which('less') # => '/usr/bin/less'
50
- 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"
51
51
  ```
52
52
 
53
53
  You can also check an absolute path to executable:
54
54
 
55
55
  ```ruby
56
- TTY::Which.which('/usr/bin/ruby') # => '/usr/bin/ruby'
56
+ TTY::Which.which("/usr/bin/ruby") # => "/usr/bin/ruby"
57
57
  ```
58
58
 
59
59
  You can also specify directly the paths to search using `:paths` keyword:
60
60
 
61
61
  ```ruby
62
- TTY::Which.which('ruby', paths: ['/usr/local/bin', '/usr/bin', '/bin'])
63
- # => '/usr/local/bin/ruby'
62
+ TTY::Which.which("ruby", paths: ["/usr/local/bin", "/usr/bin", "/bin"])
63
+ # => "/usr/local/bin/ruby"
64
64
  ```
65
65
 
66
66
  When you're only interesting in knowing that an executable exists on the system use the `exist?` call:
67
67
 
68
68
  ```ruby
69
- TTY::Which.exist?('ruby') # => true
69
+ TTY::Which.exist?("ruby") # => true
70
70
  ```
71
71
 
72
72
  ## Contributing
data/lib/tty-which.rb CHANGED
@@ -1 +1,3 @@
1
- require_relative 'tty/which'
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "tty/which"
data/lib/tty/which.rb CHANGED
@@ -1,24 +1,24 @@
1
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
12
+ # @param [Array<String>] paths
13
13
  # the paths to look through
14
14
  #
15
15
  # @example
16
- # which('ruby') # => '/usr/local/bin/ruby'
17
- # which('/usr/local/bin/ruby') # => '/usr/local/bin/ruby'
18
- # which('foo') # => nil
16
+ # which("ruby") # => "/usr/local/bin/ruby"
17
+ # which("/usr/local/bin/ruby") # => "/usr/local/bin/ruby"
18
+ # which("foo") # => nil
19
19
  #
20
20
  # @example
21
- # which('ruby', paths: ['/usr/locale/bin', '/usr/bin', '/bin'])
21
+ # which("ruby", paths: ["/usr/locale/bin", "/usr/bin", "/bin"])
22
22
  #
23
23
  # @return [String, nil]
24
24
  # the absolute path to executable if found, `nil` otherwise
@@ -27,8 +27,9 @@ module TTY
27
27
  def which(cmd, paths: search_paths)
28
28
  if file_with_path?(cmd)
29
29
  return cmd if executable_file?(cmd)
30
+
30
31
  extensions.each do |ext|
31
- exe = ::File.join(cmd, ext)
32
+ exe = "#{cmd}#{ext}"
32
33
  return ::File.absolute_path(exe) if executable_file?(exe)
33
34
  end
34
35
  return nil
@@ -50,10 +51,10 @@ module TTY
50
51
 
51
52
  # Check if executable exists in the path
52
53
  #
53
- # @param [String] command
54
+ # @param [String] cmd
54
55
  # the executable to check
55
56
  #
56
- # @param [String] paths
57
+ # @param [Array<String>] paths
57
58
  # paths to check
58
59
  #
59
60
  # @return [Boolean]
@@ -71,17 +72,17 @@ module TTY
71
72
  #
72
73
  # @example
73
74
  # search_paths("/usr/local/bin:/bin")
74
- # # => ['/bin']
75
+ # # => ["/bin"]
75
76
  #
76
- # @return [Array[String]]
77
+ # @return [Array<String>]
77
78
  # the array of paths to search
78
79
  #
79
80
  # @api private
80
- def search_paths(path = ENV['PATH'])
81
+ def search_paths(path = ENV["PATH"])
81
82
  paths = if path && !path.empty?
82
83
  path.split(::File::PATH_SEPARATOR)
83
84
  else
84
- %w(/usr/local/bin /usr/ucb /usr/bin /bin)
85
+ %w[/usr/local/bin /usr/ucb /usr/bin /bin]
85
86
  end
86
87
  paths.select(&Dir.method(:exist?))
87
88
  end
@@ -90,30 +91,31 @@ module TTY
90
91
  # All possible file extensions
91
92
  #
92
93
  # @example
93
- # extensions('.exe;cmd;.bat')
94
- # # => ['.exe','.bat']
94
+ # extensions(".exe;cmd;.bat")
95
+ # # => [".exe", ".bat"]
95
96
  #
96
97
  # @param [String] path_ext
97
98
  # a string of semicolon separated filename extensions
98
99
  #
99
- # @return [Array[String]]
100
+ # @return [Array<String>]
100
101
  # an array with valid file extensions
101
102
  #
102
103
  # @api private
103
- def extensions(path_ext = ENV['PATHEXT'])
104
- return [''] unless path_ext
105
- 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?(".") }
106
108
  end
107
109
  module_function :extensions
108
110
 
109
111
  # Determines if filename is an executable file
110
112
  #
111
113
  # @example Basic usage
112
- # executable_file?('/usr/bin/less') # => true
114
+ # executable_file?("/usr/bin/less") # => true
113
115
  #
114
116
  # @example Executable in directory
115
- # executable_file?('less', '/usr/bin') # => true
116
- # executable_file?('less', '/usr') # => false
117
+ # executable_file?("less", "/usr/bin") # => true
118
+ # executable_file?("less", "/usr") # => false
117
119
  #
118
120
  # @param [String] filename
119
121
  # the path to file
@@ -145,6 +147,7 @@ module TTY
145
147
  def file_with_exec_ext?(filename)
146
148
  extension = ::File.extname(filename)
147
149
  return false if extension.empty?
150
+
148
151
  extensions.any? { |ext| extension.casecmp(ext).zero? }
149
152
  end
150
153
  module_function :file_with_exec_ext?
@@ -2,6 +2,6 @@
2
2
 
3
3
  module TTY
4
4
  module Which
5
- VERSION = "0.4.2"
5
+ VERSION = "0.5.0"
6
6
  end # Which
7
7
  end # TTY
metadata CHANGED
@@ -1,57 +1,43 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tty-which
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.2
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Piotr Murach
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-01-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
19
+ version: '0'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: 1.5.0
26
+ version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rspec
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - "~>"
32
- - !ruby/object:Gem::Version
33
- version: '3.1'
34
- type: :development
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - "~>"
39
- - !ruby/object:Gem::Version
40
- version: '3.1'
41
- - !ruby/object:Gem::Dependency
42
- name: rake
43
29
  requirement: !ruby/object:Gem::Requirement
44
30
  requirements:
45
31
  - - ">="
46
32
  - !ruby/object:Gem::Version
47
- version: '0'
33
+ version: '3.0'
48
34
  type: :development
49
35
  prerelease: false
50
36
  version_requirements: !ruby/object:Gem::Requirement
51
37
  requirements:
52
38
  - - ">="
53
39
  - !ruby/object:Gem::Version
54
- version: '0'
40
+ version: '3.0'
55
41
  description: Platform independent implementation of Unix which command.
56
42
  email:
57
43
  - piotr@piotrmurach.com
@@ -59,6 +45,8 @@ executables: []
59
45
  extensions: []
60
46
  extra_rdoc_files:
61
47
  - README.md
48
+ - CHANGELOG.md
49
+ - LICENSE.txt
62
50
  files:
63
51
  - CHANGELOG.md
64
52
  - LICENSE.txt
@@ -76,7 +64,7 @@ metadata:
76
64
  documentation_uri: https://www.rubydoc.info/gems/tty-which
77
65
  homepage_uri: https://ttytoolkit.org
78
66
  source_code_uri: https://github.com/piotrmurach/tty-which
79
- post_install_message:
67
+ post_install_message:
80
68
  rdoc_options: []
81
69
  require_paths:
82
70
  - lib
@@ -92,7 +80,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
92
80
  version: '0'
93
81
  requirements: []
94
82
  rubygems_version: 3.1.2
95
- signing_key:
83
+ signing_key:
96
84
  specification_version: 4
97
85
  summary: Platform independent implementation of Unix which command.
98
86
  test_files: []