ffi 1.1.6.pre2 → 1.2.0.dev

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of ffi might be problematic. Click here for more details.

@@ -1,27 +0,0 @@
1
-
2
- if HAVE_BONES
3
-
4
- desc "Enumerate all annotations"
5
- task :notes do |t|
6
- id = if t.application.top_level_tasks.length > 1
7
- t.application.top_level_tasks.slice!(1..-1).join(' ')
8
- end
9
- Bones::AnnotationExtractor.enumerate(
10
- PROJ, PROJ.notes.tags.join('|'), id, :tag => true)
11
- end
12
-
13
- namespace :notes do
14
- PROJ.notes.tags.each do |tag|
15
- desc "Enumerate all #{tag} annotations"
16
- task tag.downcase.to_sym do |t|
17
- id = if t.application.top_level_tasks.length > 1
18
- t.application.top_level_tasks.slice!(1..-1).join(' ')
19
- end
20
- Bones::AnnotationExtractor.enumerate(PROJ, tag, id)
21
- end
22
- end
23
- end
24
-
25
- end # if HAVE_BONES
26
-
27
- # EOF
@@ -1,34 +0,0 @@
1
-
2
- # This file does not define any rake tasks. It is used to load some project
3
- # settings if they are not defined by the user.
4
-
5
- PROJ.exclude << ["^#{Regexp.escape(PROJ.ann.file)}$",
6
- "^#{Regexp.escape(PROJ.ignore_file)}$",
7
- "^#{Regexp.escape(PROJ.rdoc.dir)}/",
8
- "^#{Regexp.escape(PROJ.rcov.dir)}/"]
9
-
10
- flatten_arrays = lambda do |this,os|
11
- os.instance_variable_get(:@table).each do |key,val|
12
- next if key == :dependencies \
13
- or key == :development_dependencies
14
- case val
15
- when Array; val.flatten!
16
- when OpenStruct; this.call(this,val)
17
- end
18
- end
19
- end
20
- flatten_arrays.call(flatten_arrays,PROJ)
21
-
22
- PROJ.changes ||= paragraphs_of(PROJ.history_file, 0..1).join("\n\n")
23
-
24
- PROJ.description ||= paragraphs_of(PROJ.readme_file, 'description').join("\n\n")
25
-
26
- PROJ.summary ||= PROJ.description.split('.').first
27
-
28
- PROJ.gem.files ||= manifest
29
-
30
- PROJ.gem.executables ||= PROJ.gem.files.find_all {|fn| fn =~ %r/^bin/}
31
-
32
- PROJ.rdoc.main ||= PROJ.readme_file
33
-
34
- # EOF
@@ -1,50 +0,0 @@
1
-
2
- require 'rdoc/task'
3
-
4
- namespace :doc do
5
-
6
- desc 'Generate RDoc documentation'
7
- Rake::RDocTask.new do |rd|
8
- rdoc = PROJ.rdoc
9
- rd.main = rdoc.main
10
- rd.rdoc_dir = rdoc.dir
11
-
12
- incl = Regexp.new(rdoc.include.join('|'))
13
- excl = Regexp.new(rdoc.exclude.join('|'))
14
- files = PROJ.gem.files.find_all do |fn|
15
- case fn
16
- when excl; false
17
- when incl; true
18
- else false end
19
- end
20
- rd.rdoc_files.push(*files)
21
-
22
- title = "#{PROJ.name}-#{PROJ.version} Documentation"
23
-
24
- rf_name = PROJ.rubyforge.name
25
- title = "#{rf_name}'s " + title if rf_name.valid? and rf_name != title
26
-
27
- rd.options << "-t #{title}"
28
- rd.options.concat(rdoc.opts)
29
- end
30
-
31
- desc 'Generate ri locally for testing'
32
- task :ri => :clobber_ri do
33
- sh "#{RDOC} --ri -o ri ."
34
- end
35
-
36
- task :clobber_ri do
37
- rm_r 'ri' rescue nil
38
- end
39
-
40
- end # namespace :doc
41
-
42
- desc 'Alias to doc:rdoc'
43
- task :doc => 'doc:rdoc'
44
-
45
- desc 'Remove all build products'
46
- task :clobber => %w(doc:clobber_rdoc doc:clobber_ri)
47
-
48
- remove_desc_for_task %w(doc:clobber_rdoc)
49
-
50
- # EOF
@@ -1,55 +0,0 @@
1
-
2
- if PROJ.rubyforge.name.valid? && HAVE_RUBYFORGE
3
-
4
- require 'rubyforge'
5
- require 'rake/contrib/sshpublisher'
6
-
7
- namespace :gem do
8
- desc 'Package and upload to RubyForge'
9
- task :release => [:clobber, 'gem'] do |t|
10
- v = ENV['VERSION'] or abort 'Must supply VERSION=x.y.z'
11
- abort "Versions don't match #{v} vs #{PROJ.version}" if v != PROJ.version
12
- pkg = "pkg/#{PROJ.gem._spec.full_name}"
13
-
14
- if $DEBUG then
15
- puts "release_id = rf.add_release #{PROJ.rubyforge.name.inspect}, #{PROJ.name.inspect}, #{PROJ.version.inspect}, \"#{pkg}.tgz\""
16
- puts "rf.add_file #{PROJ.rubyforge.name.inspect}, #{PROJ.name.inspect}, release_id, \"#{pkg}.gem\""
17
- end
18
-
19
- rf = RubyForge.new
20
- rf.configure rescue nil
21
- puts 'Logging in'
22
- rf.login
23
-
24
- c = rf.userconfig
25
- c['release_notes'] = PROJ.description if PROJ.description
26
- c['release_changes'] = PROJ.changes if PROJ.changes
27
- c['preformatted'] = true
28
-
29
- files = Dir.glob("#{pkg}*.*")
30
-
31
- puts "Releasing #{PROJ.name} v. #{PROJ.version}"
32
- rf.add_release PROJ.rubyforge.name, PROJ.name, PROJ.version, *files
33
- end
34
- end # namespace :gem
35
-
36
-
37
- namespace :doc do
38
- desc "Publish RDoc to RubyForge"
39
- task :release => %w(doc:clobber_rdoc doc:rdoc) do
40
- config = YAML.load(
41
- File.read(File.expand_path('~/.rubyforge/user-config.yml'))
42
- )
43
-
44
- host = "#{config['username']}@rubyforge.org"
45
- remote_dir = "/var/www/gforge-projects/#{PROJ.rubyforge.name}/"
46
- remote_dir << PROJ.rdoc.remote_dir if PROJ.rdoc.remote_dir
47
- local_dir = PROJ.rdoc.dir
48
-
49
- Rake::SshDirPublisher.new(host, remote_dir, local_dir).upload
50
- end
51
- end # namespace :doc
52
-
53
- end # if HAVE_RUBYFORGE
54
-
55
- # EOF
@@ -1,301 +0,0 @@
1
-
2
- require 'rubygems'
3
- require 'rake'
4
- require 'rake/clean'
5
- require 'fileutils'
6
- require 'ostruct'
7
- require 'find'
8
-
9
- class OpenStruct; undef :gem; end
10
-
11
- # TODO: make my own openstruct type object that includes descriptions
12
- # TODO: use the descriptions to output help on the available bones options
13
-
14
- PROJ = OpenStruct.new(
15
- # Project Defaults
16
- :name => nil,
17
- :summary => nil,
18
- :description => nil,
19
- :changes => nil,
20
- :authors => nil,
21
- :email => nil,
22
- :url => "\000",
23
- :version => ENV['VERSION'] || '0.0.0',
24
- :exclude => %w(tmp$ bak$ ~$ CVS \.svn/ \.git/ ^pkg/),
25
- :release_name => ENV['RELEASE'],
26
-
27
- # System Defaults
28
- :ruby_opts => %w(-w),
29
- :libs => [],
30
- :history_file => 'History.txt',
31
- :readme_file => 'README.txt',
32
- :ignore_file => '.bnsignore',
33
-
34
- # Announce
35
- :ann => OpenStruct.new(
36
- :file => 'announcement.txt',
37
- :text => nil,
38
- :paragraphs => [],
39
- :email => {
40
- :from => nil,
41
- :to => %w(ruby-talk@ruby-lang.org),
42
- :server => 'localhost',
43
- :port => 587,
44
- :domain => ENV['HOSTNAME'],
45
- :acct => nil,
46
- :passwd => nil,
47
- :authtype => :plain
48
- }
49
- ),
50
-
51
- # Gem Packaging
52
- :gem => OpenStruct.new(
53
- :dependencies => [],
54
- :development_dependencies => [],
55
- :executables => nil,
56
- :extensions => FileList['ext/**/extconf.rb'],
57
- :files => nil,
58
- :need_tar => true,
59
- :need_zip => false,
60
- :extras => {}
61
- ),
62
-
63
- # File Annotations
64
- :notes => OpenStruct.new(
65
- :exclude => %w(^tasks/setup\.rb$),
66
- :extensions => %w(.txt .rb .erb .rdoc) << '',
67
- :tags => %w(FIXME OPTIMIZE TODO)
68
- ),
69
-
70
- # Rcov
71
- :rcov => OpenStruct.new(
72
- :dir => 'coverage',
73
- :opts => %w[--sort coverage -T],
74
- :threshold => 90.0,
75
- :threshold_exact => false
76
- ),
77
-
78
- # Rdoc
79
- :rdoc => OpenStruct.new(
80
- :opts => [],
81
- :include => %w(^lib/ ^bin/ ^ext/ \.txt$ \.rdoc$),
82
- :exclude => %w(extconf\.rb$),
83
- :main => nil,
84
- :dir => 'doc',
85
- :remote_dir => nil
86
- ),
87
-
88
- # Rubyforge
89
- :rubyforge => OpenStruct.new(
90
- :name => "\000"
91
- ),
92
-
93
- # Rspec
94
- :spec => OpenStruct.new(
95
- :files => FileList['spec/**/*_spec.rb'],
96
- :opts => []
97
- ),
98
-
99
- # Subversion Repository
100
- :svn => OpenStruct.new(
101
- :root => nil,
102
- :path => '',
103
- :trunk => 'trunk',
104
- :tags => 'tags',
105
- :branches => 'branches'
106
- ),
107
-
108
- # Test::Unit
109
- :test => OpenStruct.new(
110
- :files => FileList['test/**/test_*.rb'],
111
- :file => 'test/all.rb',
112
- :opts => []
113
- )
114
- )
115
-
116
- # Load the other rake files in the tasks folder
117
- tasks_dir = File.expand_path(File.dirname(__FILE__))
118
- post_load_fn = File.join(tasks_dir, 'post_load.rake')
119
- rakefiles = Dir.glob(File.join(tasks_dir, '*.rake')).sort
120
- rakefiles.unshift(rakefiles.delete(post_load_fn)).compact!
121
- import(*rakefiles)
122
-
123
- # Setup the project libraries
124
- %w(lib ext).each {|dir| PROJ.libs << dir if test ?d, dir}
125
-
126
- # Setup some constants
127
- WIN32 = %r/djgpp|(cyg|ms|bcc)win|mingw/ =~ RUBY_PLATFORM unless defined? WIN32
128
-
129
- DEV_NULL = WIN32 ? 'NUL:' : '/dev/null'
130
-
131
- def quiet( &block )
132
- io = [STDOUT.dup, STDERR.dup]
133
- STDOUT.reopen DEV_NULL
134
- STDERR.reopen DEV_NULL
135
- block.call
136
- ensure
137
- STDOUT.reopen io.first
138
- STDERR.reopen io.last
139
- $stdout, $stderr = STDOUT, STDERR
140
- end
141
-
142
- DIFF = if WIN32 then 'diff.exe'
143
- else
144
- if quiet {system "gdiff", __FILE__, __FILE__} then 'gdiff'
145
- else 'diff' end
146
- end unless defined? DIFF
147
-
148
- SUDO = if WIN32 then ''
149
- else
150
- if quiet {system 'which sudo'} then 'sudo'
151
- else '' end
152
- end
153
-
154
- RCOV = WIN32 ? 'rcov.bat' : 'rcov'
155
- RDOC = WIN32 ? 'rdoc.bat' : 'rdoc'
156
- GEM = WIN32 ? 'gem.bat' : 'gem'
157
-
158
- %w(rcov spec/rake/spectask rubyforge bones facets/ansicode).each do |lib|
159
- begin
160
- require lib
161
- Object.instance_eval {const_set "HAVE_#{lib.tr('/','_').upcase}", true}
162
- rescue LoadError
163
- Object.instance_eval {const_set "HAVE_#{lib.tr('/','_').upcase}", false}
164
- end
165
- end
166
- HAVE_SVN = (Dir.entries(Dir.pwd).include?('.svn') and
167
- system("svn --version 2>&1 > #{DEV_NULL}"))
168
- HAVE_GIT = (Dir.entries(Dir.pwd).include?('.git') and
169
- system("git --version 2>&1 > #{DEV_NULL}"))
170
-
171
- # Add bones as a development dependency
172
- #
173
- if HAVE_BONES
174
- bones_version = defined?(Bones::VERSION) ? Bones::VERSION : Bones.version
175
- PROJ.gem.development_dependencies << ['bones', ">= #{bones_version}"]
176
- end
177
-
178
- # Reads a file at +path+ and spits out an array of the +paragraphs+
179
- # specified.
180
- #
181
- # changes = paragraphs_of('History.txt', 0..1).join("\n\n")
182
- # summary, *description = paragraphs_of('README.txt', 3, 3..8)
183
- #
184
- def paragraphs_of( path, *paragraphs )
185
- title = String === paragraphs.first ? paragraphs.shift : nil
186
- ary = File.read(path).delete("\r").split(/\n\n+/)
187
-
188
- result = if title
189
- tmp, matching = [], false
190
- rgxp = %r/^=+\s*#{Regexp.escape(title)}/i
191
- paragraphs << (0..-1) if paragraphs.empty?
192
-
193
- ary.each do |val|
194
- if val =~ rgxp
195
- break if matching
196
- matching = true
197
- rgxp = %r/^=+/i
198
- elsif matching
199
- tmp << val
200
- end
201
- end
202
- tmp
203
- else ary end
204
-
205
- result.values_at(*paragraphs)
206
- end
207
-
208
- # Adds the given gem _name_ to the current project's dependency list. An
209
- # optional gem _version_ can be given. If omitted, the newest gem version
210
- # will be used.
211
- #
212
- def depend_on( name, version = nil )
213
- spec = Gem.source_index.find_name(name).last
214
- version = spec.version.to_s if version.nil? and !spec.nil?
215
-
216
- PROJ.gem.dependencies << case version
217
- when nil; [name]
218
- when %r/^\d/; [name, ">= #{version}"]
219
- else [name, version] end
220
- end
221
-
222
- # Adds the given arguments to the include path if they are not already there
223
- #
224
- def ensure_in_path( *args )
225
- args.each do |path|
226
- path = File.expand_path(path)
227
- $:.unshift(path) if test(?d, path) and not $:.include?(path)
228
- end
229
- end
230
-
231
- # Find a rake task using the task name and remove any description text. This
232
- # will prevent the task from being displayed in the list of available tasks.
233
- #
234
- def remove_desc_for_task( names )
235
- Array(names).each do |task_name|
236
- task = Rake.application.tasks.find {|t| t.name == task_name}
237
- next if task.nil?
238
- task.instance_variable_set :@comment, nil
239
- end
240
- end
241
-
242
- # Change working directories to _dir_, call the _block_ of code, and then
243
- # change back to the original working directory (the current directory when
244
- # this method was called).
245
- #
246
- def in_directory( dir, &block )
247
- curdir = pwd
248
- begin
249
- cd dir
250
- return block.call
251
- ensure
252
- cd curdir
253
- end
254
- end
255
-
256
- # Scans the current working directory and creates a list of files that are
257
- # candidates to be in the manifest.
258
- #
259
- def manifest
260
- files = []
261
- exclude = PROJ.exclude.dup
262
- comment = %r/^\s*#/
263
-
264
- # process the ignore file and add the items there to the exclude list
265
- if test(?f, PROJ.ignore_file)
266
- ary = []
267
- File.readlines(PROJ.ignore_file).each do |line|
268
- next if line =~ comment
269
- line.chomp!
270
- line.strip!
271
- next if line.nil? or line.empty?
272
-
273
- glob = line =~ %r/\*\./ ? File.join('**', line) : line
274
- Dir.glob(glob).each {|fn| ary << "^#{Regexp.escape(fn)}"}
275
- end
276
- exclude.concat ary
277
- end
278
-
279
- # generate a regular expression from the exclude list
280
- exclude = Regexp.new(exclude.join('|'))
281
-
282
- Find.find '.' do |path|
283
- path.sub! %r/^(\.\/|\/)/o, ''
284
- next unless test ?f, path
285
- next if path =~ exclude
286
- files << path
287
- end
288
- files.sort!
289
- end
290
-
291
- # We need a "valid" method thtat determines if a string is suitable for use
292
- # in the gem specification.
293
- #
294
- class Object
295
- def valid?
296
- return !(self.empty? or self == "\000") if self.respond_to?(:to_str)
297
- return false
298
- end
299
- end
300
-
301
- # EOF