whichr 0.1.8
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.
- data/README +41 -0
- data/bin/whichr +26 -0
- data/lib/whichr.rb +72 -0
- metadata +67 -0
data/README
ADDED
@@ -0,0 +1,41 @@
|
|
1
|
+
ruby which: the linux "which" command re-written in ruby [and windows-friendly].
|
2
|
+
|
3
|
+
An executable locator (i.e. which or locate command) for windows that works!
|
4
|
+
|
5
|
+
Itch it scratches: there seems to be a lack of a "which" command for windows that actually work--they sometimes skip batch files entirely [batch file? what's that?] or don't list extensions, leaving you in doubt. Despite running "which yyy" you never know what you're really running when you next run yyy in the command line--is it yyy.exe or some other yyy.bat that wasn't reported by "which"?
|
6
|
+
|
7
|
+
Try it--you might really like it.
|
8
|
+
|
9
|
+
Usage:
|
10
|
+
|
11
|
+
C:\>whichr ruby
|
12
|
+
higher in the list will be executed first
|
13
|
+
./ruby.bat
|
14
|
+
C:/Ruby/bin/ruby.exe
|
15
|
+
c:/cygwin/bin/ruby.exe
|
16
|
+
|
17
|
+
C:>whichr rub*
|
18
|
+
higher in the list will be executed first
|
19
|
+
c:/ruby/bin/rubigen
|
20
|
+
c:/ruby/bin/rubigen.bat
|
21
|
+
c:/ruby/bin/ruby.exe
|
22
|
+
...
|
23
|
+
|
24
|
+
Installation:
|
25
|
+
|
26
|
+
C:\>gem install rogerdpack-whichr --source http://gems.github.com
|
27
|
+
|
28
|
+
Enjoy.
|
29
|
+
|
30
|
+
Feedback welcome rogerdpack on github/gmail
|
31
|
+
|
32
|
+
Also Related:
|
33
|
+
http://github.com/Pistos/ruby-which discovers the location of installed ruby libraries, i.e. which gem folder they're in
|
34
|
+
C:\>rwhich ruby-which
|
35
|
+
c:/ruby/lib/ruby/gems/1.9.1/gems/Pistos-ruby-which-0.5.3/lib/ruby-which.rb
|
36
|
+
|
37
|
+
Except you don't actually need it since you have
|
38
|
+
$ gem which fileutils
|
39
|
+
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/fileutils.rb
|
40
|
+
|
41
|
+
Thanks Eric!
|
data/bin/whichr
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
# whichr
|
2
|
+
# reveal executable name in path
|
3
|
+
if $0 == __FILE__
|
4
|
+
# test run
|
5
|
+
$: << '../lib'
|
6
|
+
require 'rubygems'
|
7
|
+
end
|
8
|
+
require 'sane'
|
9
|
+
require 'whichr.rb'
|
10
|
+
|
11
|
+
if ARGV[0].in? ['--help', '-h']
|
12
|
+
puts "syntax: executable_name or glob, ex: whichr or which* or whichr.bat
|
13
|
+
[-a] for all (include non executables)
|
14
|
+
ex:
|
15
|
+
$ whichr ls
|
16
|
+
$ whichr ls*
|
17
|
+
$ whichr ls.exe
|
18
|
+
$ whichr ls -a"
|
19
|
+
exit 0
|
20
|
+
end
|
21
|
+
|
22
|
+
if ARGV.include? '-a'
|
23
|
+
RubyWhich.new.process(ARGV[0..-2], true)
|
24
|
+
else
|
25
|
+
RubyWhich.new.process(ARGV, false)
|
26
|
+
end
|
data/lib/whichr.rb
ADDED
@@ -0,0 +1,72 @@
|
|
1
|
+
# stolen from the gnuplot gem
|
2
|
+
# and then modified
|
3
|
+
require 'rubygems'
|
4
|
+
require 'sane'
|
5
|
+
|
6
|
+
class RubyWhich
|
7
|
+
# search the path for the given names
|
8
|
+
# like ['abc'] (in windows, also searches for abc.bat)
|
9
|
+
# or ['ab*'] (a glob, in windows, also reveals ab*.bat)
|
10
|
+
def which( names, return_non_executables_too = false )
|
11
|
+
names = [names] unless names.is_a? Array
|
12
|
+
|
13
|
+
if RUBY_PLATFORM =~ /mswin|mingw/
|
14
|
+
for name in names.dup # avoid recursion
|
15
|
+
# windows compat.
|
16
|
+
for extension in ENV['PATHEXT'].split(';') do
|
17
|
+
names << name + extension
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
all_found = []
|
23
|
+
path = ENV['PATH']
|
24
|
+
# on windows add . [the cwd]
|
25
|
+
path += (File::PATH_SEPARATOR + '.') if RUBY_PLATFORM =~ /mswin|mingw/
|
26
|
+
path.split(File::PATH_SEPARATOR).each do |dir|
|
27
|
+
for name in names
|
28
|
+
if RUBY_PLATFORM =~ /mswin|mingw/
|
29
|
+
names2 = Dir.glob(dir.gsub("\\", "/") + '/' + name.strip)
|
30
|
+
unless return_non_executables_too
|
31
|
+
names2 = names2.select{|name| File.executable?(name)} # only real execs
|
32
|
+
end
|
33
|
+
names2.collect!{|name| File.expand_path(name)} # get the right capitalization
|
34
|
+
else
|
35
|
+
names2 = Dir.glob(dir + '/' + name.strip)
|
36
|
+
end
|
37
|
+
|
38
|
+
all_found += names2.collect{|name| File.expand_path(name)}
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
all_found.uniq
|
43
|
+
end
|
44
|
+
|
45
|
+
def process(names, all = false)
|
46
|
+
candidates = which(names, all)
|
47
|
+
if candidates == []
|
48
|
+
puts 'none found (' + names.inspect + ')'
|
49
|
+
else
|
50
|
+
print output(candidates)
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
def output all
|
55
|
+
output = "higher in the list is executed first\n"
|
56
|
+
for candidate in all
|
57
|
+
# might just match the name and not be executable
|
58
|
+
candidate = Dir.glob(candidate + '*')[0] if RUBY_PLATFORM =~ /mswin|mingw/ # get the right capitalization in doze
|
59
|
+
output << candidate
|
60
|
+
if !File.executable? candidate
|
61
|
+
output += ' (is not executable)'
|
62
|
+
if(File.directory?(candidate))
|
63
|
+
output << ' (is a directory)'
|
64
|
+
end
|
65
|
+
end
|
66
|
+
output << "\n"
|
67
|
+
end
|
68
|
+
output
|
69
|
+
end
|
70
|
+
|
71
|
+
|
72
|
+
end
|
metadata
ADDED
@@ -0,0 +1,67 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: whichr
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.8
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Roger Pack
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
|
12
|
+
date: 2009-10-29 00:00:00 -06:00
|
13
|
+
default_executable:
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: rdoc
|
17
|
+
type: :runtime
|
18
|
+
version_requirement:
|
19
|
+
version_requirements: !ruby/object:Gem::Requirement
|
20
|
+
requirements:
|
21
|
+
- - ">="
|
22
|
+
- !ruby/object:Gem::Version
|
23
|
+
version: 2.3.0
|
24
|
+
version:
|
25
|
+
description: windows friendly which command
|
26
|
+
email:
|
27
|
+
- rogerdpack@gmail.comm
|
28
|
+
executables:
|
29
|
+
- whichr
|
30
|
+
extensions: []
|
31
|
+
|
32
|
+
extra_rdoc_files: []
|
33
|
+
|
34
|
+
files:
|
35
|
+
- bin/whichr
|
36
|
+
- lib/whichr.rb
|
37
|
+
- README
|
38
|
+
has_rdoc: true
|
39
|
+
homepage: http://github.com/rogerdpack/which_ruby
|
40
|
+
licenses: []
|
41
|
+
|
42
|
+
post_install_message:
|
43
|
+
rdoc_options: []
|
44
|
+
|
45
|
+
require_paths:
|
46
|
+
- lib
|
47
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
48
|
+
requirements:
|
49
|
+
- - ">="
|
50
|
+
- !ruby/object:Gem::Version
|
51
|
+
version: "0"
|
52
|
+
version:
|
53
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
54
|
+
requirements:
|
55
|
+
- - ">="
|
56
|
+
- !ruby/object:Gem::Version
|
57
|
+
version: "0"
|
58
|
+
version:
|
59
|
+
requirements: []
|
60
|
+
|
61
|
+
rubyforge_project:
|
62
|
+
rubygems_version: 1.3.5
|
63
|
+
signing_key:
|
64
|
+
specification_version: 3
|
65
|
+
summary: windows friendly which command
|
66
|
+
test_files: []
|
67
|
+
|