development 1.0.8 → 1.1.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.
- data/CHANGELOG.md +3 -0
- data/README.md +59 -82
- data/lib/development/configuration_interface.rb +123 -0
- data/lib/development/directory/directory_interface.rb +165 -0
- data/lib/development/directory.rb +9 -0
- data/lib/development/gem/gem_interface.rb +191 -0
- data/lib/development/gem.rb +9 -0
- data/lib/development/gemset/gemset_interface.rb +314 -0
- data/lib/development/gemset.rb +9 -0
- data/lib/development.rb +428 -783
- data/lib/namespaces.rb +9 -0
- data/lib/requires.rb +23 -0
- data/lib/setup.rb +15 -0
- data/spec/development/directory_spec.rb +75 -0
- data/spec/development/gem_spec.rb +63 -0
- data/spec/development/gemset_spec.rb +105 -0
- data/spec/development_spec.rb +142 -277
- data/spec/{require_mock → mock/require_mock}/lib/require_mock.rb +0 -0
- data/spec/mock/require_mock-submock/lib/require_mock/submock.rb +3 -0
- data/spec/{require_mock2 → mock/require_mock2}/lib/require_mock2.rb +0 -0
- data/spec/mock/require_mock3/lib/require_mock3.rb +4 -0
- data/spec/mock/require_mock4/lib/require_mock4.rb +4 -0
- metadata +20 -19
- data/lib/development/exception/expression_error/unknown_directory_name.rb +0 -14
- data/lib/development/exception/expression_error/unknown_gem_or_gemset_name.rb +0 -14
- data/lib/development/exception/expression_error.rb +0 -18
- data/lib/development/exception/malformed_expression/malformed_enable_disable_expression.rb +0 -15
- data/lib/development/exception/malformed_expression/malformed_gemset_expression.rb +0 -15
- data/lib/development/exception/malformed_expression/malformed_general_directory_expression.rb +0 -15
- data/lib/development/exception/malformed_expression/malformed_location_expression.rb +0 -15
- data/lib/development/exception/malformed_expression/malformed_named_directory_expression.rb +0 -15
- data/lib/development/exception/malformed_expression/malformed_remove_general_directory_expression.rb +0 -15
- data/lib/development/exception/malformed_expression.rb +0 -16
- data/spec/mock_gem/lib/mock_gem.rb +0 -4
- data/spec/mock_gem-subgem/lib/mock_gem/subgem.rb +0 -4
- data/spec/mock_gem-subgem2/lib/mock_gem/subgem2.rb +0 -4
- data/spec/mock_gem2/lib/mock_gem2.rb +0 -4
- data/spec/other_require_mock/lib/other_require_mock.rb +0 -4
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -45,88 +45,65 @@ I would make project-specific .development files a requirement (to avoid acciden
|
|
45
45
|
|
46
46
|
### Configuration File Example ###
|
47
47
|
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
# Declare lookup locations for specific gems.
|
108
|
-
#
|
109
|
-
# Named paths listed on there own
|
110
|
-
#
|
111
|
-
|
112
|
-
@hooked_objects hooked_objects
|
113
|
-
@compositing_objects compositing_objects
|
114
|
-
|
115
|
-
@ridiculous_power ridiculous_power
|
116
|
-
|
117
|
-
###
|
118
|
-
# !enable and !disable can be used to cause production gems to be used.
|
119
|
-
#
|
120
|
-
# * !enable or !disable on its own will enable or disable all gems and change the default (enabled/disabled),
|
121
|
-
# after which individual gems can be enabled or disabled.
|
122
|
-
#
|
123
|
-
# * !enable or !disable followed by a gem name or a gemset name will enable or disable that gem/gemset.
|
124
|
-
#
|
125
|
-
# Nothing is enabled to start. Call !enable to use .development specifications in all cases; after
|
126
|
-
# !enable individual gems/sets/paths can be enabled/disabled.
|
127
|
-
#
|
128
|
-
|
129
|
-
!enable
|
48
|
+
#### Short Example ####
|
49
|
+
|
50
|
+
```ruby
|
51
|
+
enable! :parallel_ancestry => '~/Projects/rp/ruby/parallel_ancestry'
|
52
|
+
```
|
53
|
+
|
54
|
+
#### Extended Example ####
|
55
|
+
|
56
|
+
```ruby
|
57
|
+
###
|
58
|
+
# Declare named locations to associate gems or gemsets with specific locations.
|
59
|
+
# If a directory exists by name of gem or gemset it will be used automatically.
|
60
|
+
# Otherwise the directory will have to be declared explicitly.
|
61
|
+
#
|
62
|
+
directory( :code, '~/Projects' )
|
63
|
+
|
64
|
+
###
|
65
|
+
# Paths can start with names of other paths.
|
66
|
+
#
|
67
|
+
directory( :ridiculous_power, :code, 'rp' )
|
68
|
+
|
69
|
+
directory( :ruby, :ridiculous_power, 'ruby' )
|
70
|
+
directory( :hooked_objects, :ruby, 'hooked_objects' )
|
71
|
+
directory( :compositing_objects, :ruby, 'compositing_objects' )
|
72
|
+
|
73
|
+
###
|
74
|
+
# Add gems or gemsets to directory.
|
75
|
+
#
|
76
|
+
directory( :ridiculous_power ).add( 'persistence', 'magnets' )
|
77
|
+
|
78
|
+
###
|
79
|
+
# Declare a gemset to group a set of gems and configure them by a single reference.
|
80
|
+
#
|
81
|
+
gemset( :ruby, 'module-cluster',
|
82
|
+
'parallel_ancestry',
|
83
|
+
'identifies_as' )
|
84
|
+
|
85
|
+
gemset( :hooked_objects, 'hash-hooked',
|
86
|
+
'array-hooked',
|
87
|
+
'array-sorted',
|
88
|
+
'array-unique',
|
89
|
+
'array-sorted-unique' )
|
90
|
+
|
91
|
+
gemset( :compositing_objects, 'hash-compositing',
|
92
|
+
'array-compositing',
|
93
|
+
'array-sorted-compositing',
|
94
|
+
'array-unique-compositing',
|
95
|
+
'array-sorted-unique-compositing' )
|
96
|
+
|
97
|
+
###
|
98
|
+
# Specify directory by gem or gemset.
|
99
|
+
#
|
100
|
+
gem( 'to_lambda' ).directory( :ruby )
|
101
|
+
|
102
|
+
###
|
103
|
+
# Enable all (no parameters) or specific gems.
|
104
|
+
#
|
105
|
+
enable! :ruby, :hooked_objects, :compositing_objects, :parallel_ancestry
|
106
|
+
```
|
130
107
|
|
131
108
|
# License #
|
132
109
|
|
@@ -0,0 +1,123 @@
|
|
1
|
+
|
2
|
+
###
|
3
|
+
# @private
|
4
|
+
#
|
5
|
+
# Interface with Object instance methods for use from configuration file since
|
6
|
+
# load cannot load into a context line by line.
|
7
|
+
#
|
8
|
+
module ::Development::ConfigurationInterface
|
9
|
+
|
10
|
+
################
|
11
|
+
# gem_method #
|
12
|
+
################
|
13
|
+
|
14
|
+
###
|
15
|
+
# Define a gem or retrieve defined gem.
|
16
|
+
#
|
17
|
+
# @param name
|
18
|
+
#
|
19
|
+
# Name of gem.
|
20
|
+
#
|
21
|
+
# @param directory_or_path
|
22
|
+
#
|
23
|
+
# Development::Directory or String describing path.
|
24
|
+
#
|
25
|
+
# @return [::Development::Gem]
|
26
|
+
#
|
27
|
+
def gem_method( name, directory_or_path = nil )
|
28
|
+
return ::Development.gem( name, directory_or_path )
|
29
|
+
end
|
30
|
+
|
31
|
+
############
|
32
|
+
# gemset #
|
33
|
+
############
|
34
|
+
|
35
|
+
###
|
36
|
+
# Define a gem or retrieve defined gem.
|
37
|
+
#
|
38
|
+
# @overload self.gemset( name, gem_or_gemset, ... )
|
39
|
+
#
|
40
|
+
# @param name
|
41
|
+
#
|
42
|
+
# Name of gemset.
|
43
|
+
#
|
44
|
+
# @param gem_or_gemset
|
45
|
+
#
|
46
|
+
# Gem or Gemset name or instance.
|
47
|
+
#
|
48
|
+
# @return [::Development::Gemset]
|
49
|
+
#
|
50
|
+
def gemset( name, *gems_or_gemsets )
|
51
|
+
return ::Development.gemset( name, *gems_or_gemsets )
|
52
|
+
end
|
53
|
+
|
54
|
+
###############
|
55
|
+
# directory #
|
56
|
+
###############
|
57
|
+
|
58
|
+
###
|
59
|
+
# Return path for directory name.
|
60
|
+
#
|
61
|
+
# @overload self.directory( name, path, gem_or_gemset, ... )
|
62
|
+
#
|
63
|
+
# @param directory_name
|
64
|
+
#
|
65
|
+
# Name of named directory.
|
66
|
+
#
|
67
|
+
# @param path
|
68
|
+
#
|
69
|
+
# String describing directory path.
|
70
|
+
#
|
71
|
+
# @param gem_or_gemset
|
72
|
+
#
|
73
|
+
# Gem or Gemset or String or Symbol describing Gem or Gemset.
|
74
|
+
#
|
75
|
+
# @return [::Development::Directory] Directory.
|
76
|
+
#
|
77
|
+
def directory( name, *path_parts )
|
78
|
+
return ::Development.directory( name, *path_parts )
|
79
|
+
end
|
80
|
+
|
81
|
+
#############
|
82
|
+
# enable! #
|
83
|
+
#############
|
84
|
+
|
85
|
+
###
|
86
|
+
# Enable gems.
|
87
|
+
#
|
88
|
+
# @overload enable!
|
89
|
+
#
|
90
|
+
# @overload enable( gem_or_gemset, ... )
|
91
|
+
#
|
92
|
+
# @param gem_or_gemset
|
93
|
+
#
|
94
|
+
# Gem or Gemset instance or name to enable.
|
95
|
+
#
|
96
|
+
# @return [::Development] Self.
|
97
|
+
#
|
98
|
+
def enable!( *gem_or_gemset_names )
|
99
|
+
return ::Development.enable!( *gem_or_gemset_names )
|
100
|
+
end
|
101
|
+
|
102
|
+
##############
|
103
|
+
# disable! #
|
104
|
+
##############
|
105
|
+
|
106
|
+
###
|
107
|
+
# Disable gems.
|
108
|
+
#
|
109
|
+
# @overload disable!
|
110
|
+
#
|
111
|
+
# @overload disable( gem_or_gemset, ... )
|
112
|
+
#
|
113
|
+
# @param gem_or_gemset
|
114
|
+
#
|
115
|
+
# Gem or Gemset instance or name to disable.
|
116
|
+
#
|
117
|
+
# @return [::Development] Self.
|
118
|
+
#
|
119
|
+
def disable!( *gem_or_gemset_names )
|
120
|
+
return ::Development.disable!( *gem_or_gemset_names )
|
121
|
+
end
|
122
|
+
|
123
|
+
end
|
@@ -0,0 +1,165 @@
|
|
1
|
+
|
2
|
+
###
|
3
|
+
# Interface for directory implementation. Implementation provided separately for ease of overloading.
|
4
|
+
#
|
5
|
+
module ::Development::Directory::DirectoryInterface
|
6
|
+
|
7
|
+
################
|
8
|
+
# initialize #
|
9
|
+
################
|
10
|
+
|
11
|
+
###
|
12
|
+
#
|
13
|
+
# @overload initialize( name, path_part, ... )
|
14
|
+
#
|
15
|
+
# @param name
|
16
|
+
#
|
17
|
+
# Reference name for directory.
|
18
|
+
#
|
19
|
+
# @param path_part
|
20
|
+
#
|
21
|
+
# Part of path; the first can be a symbol referring to a named path or a string,
|
22
|
+
# all other parts must be strings.
|
23
|
+
#
|
24
|
+
def initialize( name, *path_parts )
|
25
|
+
|
26
|
+
@name = name
|
27
|
+
|
28
|
+
self.set_path( *path_parts )
|
29
|
+
|
30
|
+
# a directory is also a gemset
|
31
|
+
@gemset = ::Development.gemset( name )
|
32
|
+
@gemset.set_directory( self )
|
33
|
+
|
34
|
+
# if there's a gem or gemset name by this directory name,
|
35
|
+
# we use it unless gem or gemset already has a directory
|
36
|
+
if name
|
37
|
+
if gem_instance = ::Development.get_gem( name )
|
38
|
+
gem_instance.set_directory( self )
|
39
|
+
end
|
40
|
+
|
41
|
+
if gemset_instance = ::Development.get_gemset( name )
|
42
|
+
gemset_instance.set_directory( self )
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
end
|
47
|
+
|
48
|
+
##########
|
49
|
+
# name #
|
50
|
+
##########
|
51
|
+
|
52
|
+
###
|
53
|
+
# Name.
|
54
|
+
#
|
55
|
+
# @!attribute [reader] Name.
|
56
|
+
#
|
57
|
+
attr_reader :name
|
58
|
+
|
59
|
+
#############
|
60
|
+
# members #
|
61
|
+
#############
|
62
|
+
|
63
|
+
###
|
64
|
+
# Gems or Gemsets with self as their directory.
|
65
|
+
#
|
66
|
+
# @return [Array<::Development::Gem,::Development::Gemset>] Members
|
67
|
+
#
|
68
|
+
def members
|
69
|
+
|
70
|
+
return @gemset.members
|
71
|
+
|
72
|
+
end
|
73
|
+
|
74
|
+
##########
|
75
|
+
# path #
|
76
|
+
##########
|
77
|
+
|
78
|
+
###
|
79
|
+
# Path.
|
80
|
+
#
|
81
|
+
# @!attribute [reader] Name.
|
82
|
+
#
|
83
|
+
attr_reader :path
|
84
|
+
|
85
|
+
##############
|
86
|
+
# set_path #
|
87
|
+
##############
|
88
|
+
|
89
|
+
###
|
90
|
+
# Set Path.
|
91
|
+
#
|
92
|
+
# @param path
|
93
|
+
#
|
94
|
+
# Path string.
|
95
|
+
#
|
96
|
+
# @return [::Development::Directory] Self.
|
97
|
+
#
|
98
|
+
def set_path( *path_parts )
|
99
|
+
|
100
|
+
if path_parts[ 0 ].is_a?( ::Symbol )
|
101
|
+
base_directory_name = path_parts[ 0 ]
|
102
|
+
base_directory = ::Development.get_directory( base_directory_name )
|
103
|
+
path_parts[ 0 ] = base_directory.path
|
104
|
+
end
|
105
|
+
|
106
|
+
path_parts.collect!( & :to_s )
|
107
|
+
|
108
|
+
if path_parts[ 0 ].nil?
|
109
|
+
@path = nil
|
110
|
+
else
|
111
|
+
@path = ::File.expand_path( ::File.join( *path_parts ) )
|
112
|
+
end
|
113
|
+
|
114
|
+
return self
|
115
|
+
|
116
|
+
end
|
117
|
+
|
118
|
+
#########
|
119
|
+
# add #
|
120
|
+
#########
|
121
|
+
|
122
|
+
###
|
123
|
+
# Add gems or gemsets to directory.
|
124
|
+
#
|
125
|
+
# @overload add( gem_or_gemset, ... )
|
126
|
+
#
|
127
|
+
# @param gem_or_gemset
|
128
|
+
#
|
129
|
+
# Gem or Gemset instance or name to add to directory.
|
130
|
+
#
|
131
|
+
# @return [::Development::Directory] Self.
|
132
|
+
#
|
133
|
+
def add( *gems_or_gemsets )
|
134
|
+
|
135
|
+
@gemset.add( *gems_or_gemsets )
|
136
|
+
|
137
|
+
return self
|
138
|
+
|
139
|
+
end
|
140
|
+
|
141
|
+
############
|
142
|
+
# delete #
|
143
|
+
# remove #
|
144
|
+
############
|
145
|
+
|
146
|
+
###
|
147
|
+
# Remove gems or gemsets from directory.
|
148
|
+
#
|
149
|
+
# @overload delete( gem_or_gemset, ... )
|
150
|
+
#
|
151
|
+
# @param gem_or_gemset
|
152
|
+
#
|
153
|
+
# Gem or Gemset instance or name to add to directory.
|
154
|
+
#
|
155
|
+
# @return [::Development::Directory] Self.
|
156
|
+
#
|
157
|
+
def delete( *gems_or_gemsets )
|
158
|
+
|
159
|
+
return @gemset.delete( *gems_or_gemsets )
|
160
|
+
|
161
|
+
end
|
162
|
+
|
163
|
+
alias_method :remove, :delete
|
164
|
+
|
165
|
+
end
|