-
Notifications
You must be signed in to change notification settings - Fork 2
/
inochi.rb
103 lines (91 loc) · 2.43 KB
/
inochi.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
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
module Rumai
##
# Official name of this project.
#
PROJECT = "Rumai"
##
# Short single-line description of this project.
#
TAGLINE = "Ruby interface to the wmii window manager"
##
# Address of this project's official home page.
#
WEBSITE = "http://snk.tuxfamily.org/lib/rumai/"
##
# Number of this release of this project.
#
VERSION = "3.2.2"
##
# Date of this release of this project.
#
RELDATE = "2010-04-01"
##
# Description of this release of this project.
#
def self.inspect
"#{PROJECT} #{VERSION} (#{RELDATE})"
end
##
# Location of this release of this project.
#
INSTDIR = File.expand_path('../../..', __FILE__)
##
# RubyGems required by this project during runtime.
#
# @example
#
# RUNTIME = {
# # this project needs exactly version 1.2.3 of the "an_example" gem
# "an_example" => [ "1.2.3" ],
#
# # this project needs at least version 1.2 (but not
# # version 1.2.4 or newer) of the "another_example" gem
# "another_example" => [ ">= 1.2" , "< 1.2.4" ],
#
# # this project needs any version of the "yet_another_example" gem
# "yet_another_example" => [],
# }
#
RUNTIME = {}
##
# RubyGems required by this project during development.
#
# @example
#
# DEVTIME = {
# # this project needs exactly version 1.2.3 of the "an_example" gem
# "an_example" => [ "1.2.3" ],
#
# # this project needs at least version 1.2 (but not
# # version 1.2.4 or newer) of the "another_example" gem
# "another_example" => [ ">= 1.2" , "< 1.2.4" ],
#
# # this project needs any version of the "yet_another_example" gem
# "yet_another_example" => [],
# }
#
DEVTIME = {
"inochi" => [ "~> 2" ], # for managing this project
"dfect" => [ "~> 2" ], # for unit testing
}
##
# Loads the correct version (as defined by the {RUNTIME} or {DEVTIME}
# constant in this module) of the given gem or the gem that contains
# the given library.
#
def self.require gem_name_or_library
# prepare the correct version of the gem for loading
if respond_to? :gem
gem_name = gem_name_or_library.to_s.sub(%r{/.*$}, '')
if gem_version = RUNTIME[gem_name] || DEVTIME[gem_name]
begin
gem gem_name, *gem_version
rescue LoadError => error
warn "#{self.inspect}: #{error}"
end
end
end
# do the loading
super
end
end