qwandry 0.1.0 → 0.1.2
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/VERSION +1 -1
- data/lib/qwandry/configuration.rb +13 -1
- data/lib/qwandry/configuration/default.rb +22 -4
- data/lib/qwandry/flat_repository.rb +1 -1
- data/lib/qwandry/launcher.rb +16 -1
- data/lib/qwandry/library_repository.rb +1 -1
- data/lib/qwandry/package.rb +3 -3
- metadata +4 -4
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1.
|
1
|
+
0.1.2
|
@@ -14,6 +14,18 @@ module Qwandry
|
|
14
14
|
builders[name] << block
|
15
15
|
end
|
16
16
|
|
17
|
+
# Registers a configuration is a specific binary is available. If `binary` is not specified,
|
18
|
+
# it is assumed to be the same as the configuration name.
|
19
|
+
def register_if_present name, binary=nil, &block
|
20
|
+
binary ||= name
|
21
|
+
register(name, &block) if present? binary
|
22
|
+
end
|
23
|
+
|
24
|
+
# Returns true if binary `name` is present.
|
25
|
+
def present? name
|
26
|
+
system("which #{name}", STDOUT=>"/dev/null")
|
27
|
+
end
|
28
|
+
|
17
29
|
# Sets the default configuration to launch, if no `configurations` are passed
|
18
30
|
# in, it returns their names.
|
19
31
|
def default(*configurations)
|
@@ -30,7 +42,7 @@ module Qwandry
|
|
30
42
|
end
|
31
43
|
|
32
44
|
# Loads a configuration file, and executes it in the context of the Qwandry::Configuration
|
33
|
-
# class. See
|
45
|
+
# class. See `configuration/default.rb` for an example, or run:
|
34
46
|
#
|
35
47
|
# qw --customize
|
36
48
|
#
|
@@ -9,7 +9,7 @@ register :ruby do
|
|
9
9
|
end
|
10
10
|
|
11
11
|
# Register the default ruby gems configuration:
|
12
|
-
|
12
|
+
register_if_present :gem do
|
13
13
|
# Get the gem paths from the ruby load paths:
|
14
14
|
paths = ($:).grep(/gems/).map{|p| p[/.+\/gems\//]}.uniq
|
15
15
|
|
@@ -18,7 +18,7 @@ register :gem do
|
|
18
18
|
end
|
19
19
|
|
20
20
|
# Register a perl configuration:
|
21
|
-
|
21
|
+
register_if_present :perl do
|
22
22
|
# Execute a perl script to find all of the perl load paths:
|
23
23
|
perl_paths = `perl -e 'foreach $k (@INC){print $k,"\n";}'` rescue ''
|
24
24
|
|
@@ -30,7 +30,7 @@ register :perl do
|
|
30
30
|
end
|
31
31
|
|
32
32
|
# Add python repositories:
|
33
|
-
|
33
|
+
register_if_present :python do
|
34
34
|
# Execute a python script to find all of the python load paths:
|
35
35
|
python_paths = `python -c 'import sys;print(\"\\n\".join(sys.path))'` rescue ''
|
36
36
|
|
@@ -42,7 +42,7 @@ register :python do
|
|
42
42
|
end
|
43
43
|
|
44
44
|
# Add node.js repositories:
|
45
|
-
|
45
|
+
register_if_present :node do
|
46
46
|
# Execute a node script to find all of the load paths:
|
47
47
|
node_script_path = File.join(File.dirname(__FILE__),'probe_node.js')
|
48
48
|
node_paths = `node #{node_script_path}` rescue ''
|
@@ -52,6 +52,24 @@ register :node do
|
|
52
52
|
add node_paths
|
53
53
|
end
|
54
54
|
|
55
|
+
# If this is mri ruby and we can figure out where the user's ruby source directory is, add it.
|
56
|
+
# This might not be quite right...
|
57
|
+
#
|
58
|
+
# TODO figure out how to identify different ruby variants.
|
59
|
+
if RUBY_ENGINE == 'ruby'
|
60
|
+
register_if_present :mri, :rvm do
|
61
|
+
# If present, use the current rvm's ruby source.
|
62
|
+
paths = []
|
63
|
+
root = File.join(ENV['rvm_src_path'], ENV['rvm_ruby_string'])
|
64
|
+
paths << root # core objects: String, etc
|
65
|
+
paths << File.join(root, 'ext') # c extensions: Fiber, IO, etc.
|
66
|
+
paths << File.join(root, 'lib') # pure ruby libraries
|
67
|
+
|
68
|
+
# Add the sources, use a LibraryRepository to bundle .h and .c files
|
69
|
+
add paths, :reject=>/\.(o|a|s|inc|def|dylib)$/, :class=>Qwandry::LibraryRepository
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
55
73
|
# Qwandry is a ruby app after all, so activate ruby and gem by default. Other defaults can be set
|
56
74
|
# with a custom init.rb
|
57
75
|
default :ruby, :gem
|
@@ -11,7 +11,7 @@ module Qwandry
|
|
11
11
|
def scan(pattern)
|
12
12
|
results = []
|
13
13
|
all_paths.select do |path|
|
14
|
-
if File.fnmatch?(pattern, File.basename(path))
|
14
|
+
if File.fnmatch?(pattern, File.basename(path), File::FNM_CASEFOLD)
|
15
15
|
results << package(File.basename(path), [path])
|
16
16
|
end
|
17
17
|
end
|
data/lib/qwandry/launcher.rb
CHANGED
@@ -18,6 +18,7 @@ module Qwandry
|
|
18
18
|
packages.concat(repo.scan(pattern))
|
19
19
|
end
|
20
20
|
|
21
|
+
differentiate packages
|
21
22
|
packages
|
22
23
|
end
|
23
24
|
|
@@ -38,6 +39,20 @@ module Qwandry
|
|
38
39
|
# Launch the editor with its options and any paths that we have been passed
|
39
40
|
system(*(editor_and_options + paths))
|
40
41
|
end
|
41
|
-
|
42
|
+
|
43
|
+
private
|
44
|
+
|
45
|
+
# If there are multiple packages named the same, append their path to the name.
|
46
|
+
# This could later be handled in other ways, for instance by merging the paths.
|
47
|
+
def differentiate(packages)
|
48
|
+
named_groups = Hash.new{|h,k| h[k] = []}
|
49
|
+
packages.each{|p| named_groups[p.name] << p }
|
50
|
+
named_groups.each do |name, packages|
|
51
|
+
if packages.length > 1
|
52
|
+
packages.each{|p| p.name = "#{p.name} (#{p.paths.first})"}
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
42
57
|
end
|
43
58
|
end
|
@@ -14,7 +14,7 @@ module Qwandry
|
|
14
14
|
results = Hash.new{|h,k| h[k] = package(k)}
|
15
15
|
all_paths.select do |path|
|
16
16
|
basename = File.basename(path)
|
17
|
-
if File.fnmatch?(pattern, basename)
|
17
|
+
if File.fnmatch?(pattern, basename, File::FNM_CASEFOLD)
|
18
18
|
# strip any file extension
|
19
19
|
basename.sub! /\.\w+$/,'' unless File.directory?(path)
|
20
20
|
results[basename].paths << path
|
data/lib/qwandry/package.rb
CHANGED
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: qwandry
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 31
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 1
|
9
|
-
-
|
10
|
-
version: 0.1.
|
9
|
+
- 2
|
10
|
+
version: 0.1.2
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Adam Sanderson
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date:
|
18
|
+
date: 2011-01-01 00:00:00 -07:00
|
19
19
|
default_executable: qw
|
20
20
|
dependencies: []
|
21
21
|
|