amalgalite 1.6.3-x86-mingw32 → 1.8.0-x86-mingw32

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.
@@ -319,6 +319,46 @@ struct sqlite3_api_routines {
319
319
  void(*xDestroy)(void*));
320
320
  /* Version 3.26.0 and later */
321
321
  const char *(*normalized_sql)(sqlite3_stmt*);
322
+ /* Version 3.28.0 and later */
323
+ int (*stmt_isexplain)(sqlite3_stmt*);
324
+ int (*value_frombind)(sqlite3_value*);
325
+ /* Version 3.30.0 and later */
326
+ int (*drop_modules)(sqlite3*,const char**);
327
+ /* Version 3.31.0 and later */
328
+ sqlite3_int64 (*hard_heap_limit64)(sqlite3_int64);
329
+ const char *(*uri_key)(const char*,int);
330
+ const char *(*filename_database)(const char*);
331
+ const char *(*filename_journal)(const char*);
332
+ const char *(*filename_wal)(const char*);
333
+ /* Version 3.32.0 and later */
334
+ const char *(*create_filename)(const char*,const char*,const char*,
335
+ int,const char**);
336
+ void (*free_filename)(const char*);
337
+ sqlite3_file *(*database_file_object)(const char*);
338
+ /* Version 3.34.0 and later */
339
+ int (*txn_state)(sqlite3*,const char*);
340
+ /* Version 3.36.1 and later */
341
+ sqlite3_int64 (*changes64)(sqlite3*);
342
+ sqlite3_int64 (*total_changes64)(sqlite3*);
343
+ /* Version 3.37.0 and later */
344
+ int (*autovacuum_pages)(sqlite3*,
345
+ unsigned int(*)(void*,const char*,unsigned int,unsigned int,unsigned int),
346
+ void*, void(*)(void*));
347
+ /* Version 3.38.0 and later */
348
+ int (*error_offset)(sqlite3*);
349
+ int (*vtab_rhs_value)(sqlite3_index_info*,int,sqlite3_value**);
350
+ int (*vtab_distinct)(sqlite3_index_info*);
351
+ int (*vtab_in)(sqlite3_index_info*,int,int);
352
+ int (*vtab_in_first)(sqlite3_value*,sqlite3_value**);
353
+ int (*vtab_in_next)(sqlite3_value*,sqlite3_value**);
354
+ /* Version 3.39.0 and later */
355
+ int (*deserialize)(sqlite3*,const char*,unsigned char*,
356
+ sqlite3_int64,sqlite3_int64,unsigned);
357
+ unsigned char *(*serialize)(sqlite3*,const char *,sqlite3_int64*,
358
+ unsigned int);
359
+ const char *(*db_name)(sqlite3*,int);
360
+ /* Version 3.40.0 and later */
361
+ int (*value_encoding)(sqlite3_value*);
322
362
  };
323
363
 
324
364
  /*
@@ -608,6 +648,43 @@ typedef int (*sqlite3_loadext_entry)(
608
648
  #define sqlite3_create_window_function sqlite3_api->create_window_function
609
649
  /* Version 3.26.0 and later */
610
650
  #define sqlite3_normalized_sql sqlite3_api->normalized_sql
651
+ /* Version 3.28.0 and later */
652
+ #define sqlite3_stmt_isexplain sqlite3_api->stmt_isexplain
653
+ #define sqlite3_value_frombind sqlite3_api->value_frombind
654
+ /* Version 3.30.0 and later */
655
+ #define sqlite3_drop_modules sqlite3_api->drop_modules
656
+ /* Version 3.31.0 and later */
657
+ #define sqlite3_hard_heap_limit64 sqlite3_api->hard_heap_limit64
658
+ #define sqlite3_uri_key sqlite3_api->uri_key
659
+ #define sqlite3_filename_database sqlite3_api->filename_database
660
+ #define sqlite3_filename_journal sqlite3_api->filename_journal
661
+ #define sqlite3_filename_wal sqlite3_api->filename_wal
662
+ /* Version 3.32.0 and later */
663
+ #define sqlite3_create_filename sqlite3_api->create_filename
664
+ #define sqlite3_free_filename sqlite3_api->free_filename
665
+ #define sqlite3_database_file_object sqlite3_api->database_file_object
666
+ /* Version 3.34.0 and later */
667
+ #define sqlite3_txn_state sqlite3_api->txn_state
668
+ /* Version 3.36.1 and later */
669
+ #define sqlite3_changes64 sqlite3_api->changes64
670
+ #define sqlite3_total_changes64 sqlite3_api->total_changes64
671
+ /* Version 3.37.0 and later */
672
+ #define sqlite3_autovacuum_pages sqlite3_api->autovacuum_pages
673
+ /* Version 3.38.0 and later */
674
+ #define sqlite3_error_offset sqlite3_api->error_offset
675
+ #define sqlite3_vtab_rhs_value sqlite3_api->vtab_rhs_value
676
+ #define sqlite3_vtab_distinct sqlite3_api->vtab_distinct
677
+ #define sqlite3_vtab_in sqlite3_api->vtab_in
678
+ #define sqlite3_vtab_in_first sqlite3_api->vtab_in_first
679
+ #define sqlite3_vtab_in_next sqlite3_api->vtab_in_next
680
+ /* Version 3.39.0 and later */
681
+ #ifndef SQLITE_OMIT_DESERIALIZE
682
+ #define sqlite3_deserialize sqlite3_api->deserialize
683
+ #define sqlite3_serialize sqlite3_api->serialize
684
+ #endif
685
+ #define sqlite3_db_name sqlite3_api->db_name
686
+ /* Version 3.40.0 and later */
687
+ #define sqlite3_value_encoding sqlite3_api->value_encoding
611
688
  #endif /* !defined(SQLITE_CORE) && !defined(SQLITE_OMIT_LOAD_EXTENSION) */
612
689
 
613
690
  #if !defined(SQLITE_CORE) && !defined(SQLITE_OMIT_LOAD_EXTENSION)
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -13,6 +13,7 @@ module Amalgalite
13
13
  # implementation you must:
14
14
  #
15
15
  # * implement _initalize_ with 0 arguments
16
+ # * call super() in your _initialize_ method
16
17
  # * set the @arity data member
17
18
  # * set the @name data member
18
19
  # * implement _step_ with arity of +@arity+
@@ -25,6 +26,7 @@ module Amalgalite
25
26
  # attr_accessor :words
26
27
  #
27
28
  # def initialize
29
+ # super
28
30
  # @name = 'unique_word_count'
29
31
  # @arity = 1
30
32
  # @words = Hash.new { |h,k| h[k] = 0 }
@@ -50,6 +52,10 @@ module Amalgalite
50
52
  # The arity of the SQL function
51
53
  attr_accessor :arity
52
54
 
55
+ def initialize
56
+ @_exception = nil
57
+ end
58
+
53
59
  # finalize should return the final value of the aggregate function
54
60
  def finalize
55
61
  raise NotImplementedError, "Aggregate#finalize must be implemented"
@@ -15,14 +15,15 @@ module Amalgalite
15
15
  @database = database
16
16
  @table_name = table_name
17
17
  @table = @database.schema.tables[@table_name]
18
- @options = options
18
+ @options = options.dup
19
+ @encoding = options.delete("encoding") || "UTF-8"
19
20
  validate
20
21
  end
21
22
 
22
23
  def run
23
24
  @database.transaction do |db|
24
25
  db.prepare( insert_sql ) do |stmt|
25
- ::CSV.foreach( @csv_path, @options ) do |row|
26
+ ::CSV.foreach( @csv_path, "r:#{@encoding}", **@options ) do |row|
26
27
  stmt.execute( row )
27
28
  end
28
29
  end
@@ -339,7 +339,6 @@ module Amalgalite
339
339
  #
340
340
  def clear_taps!
341
341
  self.trace_tap = nil
342
- self.profile_tap = nil
343
342
  end
344
343
 
345
344
  ##
@@ -393,20 +392,19 @@ module Amalgalite
393
392
  #
394
393
  # db.trace_tap = nil
395
394
  #
396
- # This will unregistere the trace tap
395
+ # This will unregister the trace tap
397
396
  #
398
397
  #
399
398
  def trace_tap=( tap_obj )
400
399
 
401
400
  # unregister any previous trace tap
402
401
  #
403
- unless @trace_tap.nil?
402
+ if !@trace_tap.nil? then
404
403
  @trace_tap.trace( 'unregistered as trace tap' )
405
404
  @trace_tap = nil
406
405
  end
407
406
  return @trace_tap if tap_obj.nil?
408
407
 
409
-
410
408
  # wrap the tap if we need to
411
409
  #
412
410
  if tap_obj.respond_to?( 'trace' ) then
@@ -424,55 +422,6 @@ module Amalgalite
424
422
  @trace_tap.trace( 'registered as trace tap' )
425
423
  end
426
424
 
427
-
428
- ##
429
- # call-seq:
430
- # db.profile_tap = obj
431
- #
432
- # Register a profile tap.
433
- #
434
- # Registering a profile tap means that the +obj+ registered will have its
435
- # +profile+ method called with an Integer and a String parameter every time
436
- # a profile event happens. The Integer is the number of nanoseconds it took
437
- # for the String (SQL) to execute in wall-clock time.
438
- #
439
- # That is, every time a profile event happens in SQLite the following is
440
- # invoked:
441
- #
442
- # obj.profile( str, int )
443
- #
444
- # For instance:
445
- #
446
- # db.profile_tap = Amalgalite::ProfileTap.new( logger, 'debug' )
447
- #
448
- # This will register an instance of ProfileTap, which wraps an logger object.
449
- # On each +profile+ event the ProfileTap#profile method will be called
450
- # which in turn will call <tt>logger.debug<tt> with a formatted string containing
451
- # the String and Integer from the profile event.
452
- #
453
- # db.profile_tap = nil
454
- #
455
- # This will unregister the profile tap
456
- #
457
- #
458
- def profile_tap=( tap_obj )
459
-
460
- # unregister any previous profile tap
461
- unless @profile_tap.nil?
462
- @profile_tap.profile( 'unregistered as profile tap', 0.0 )
463
- @profile_tap = nil
464
- end
465
- return @profile_tap if tap_obj.nil?
466
-
467
- if tap_obj.respond_to?( 'profile' ) then
468
- @profile_tap = tap_obj
469
- else
470
- raise Amalgalite::Error, "#{tap_obj.class.name} cannot be used to tap. It has no 'profile' method"
471
- end
472
- @api.register_profile_tap( @profile_tap )
473
- @profile_tap.profile( 'registered as profile tap', 0.0 )
474
- end
475
-
476
425
  ##
477
426
  # call-seq:
478
427
  # db.type_map = DefaultMap.new
@@ -120,8 +120,8 @@ module Amalgalite
120
120
  # time information.
121
121
  #
122
122
  def profile( msg, time )
123
- unless sampler = @samplers[msg]
124
- msg = msg.gsub(/\s+/,' ')
123
+ msg = msg.gsub(/\s+/,' ')
124
+ unless sampler = @samplers[msg]
125
125
  sampler = @samplers[msg] = ProfileSampler.new( msg )
126
126
  end
127
127
  sampler.sample( time )
@@ -9,7 +9,7 @@ require 'stringio'
9
9
  module Amalgalite
10
10
  module Taps
11
11
  #
12
- # An IOTap is an easy way to send all top information to andy IO based
12
+ # An IOTap is an easy way to send all top information to any IO based
13
13
  # object. Both profile and trace tap information can be captured
14
14
  # This means you can send the events to STDOUT with:
15
15
  #
@@ -20,14 +20,17 @@ module Amalgalite
20
20
 
21
21
  attr_reader :profile_tap
22
22
  attr_reader :io
23
+ attr_reader :trace_count
23
24
 
24
25
  def initialize( io )
25
26
  @io = io
26
27
  @profile_tap = ProfileTap.new( self, 'output_profile_event' )
28
+ @trace_count = 0
27
29
  end
28
30
 
29
31
  def trace( msg )
30
- io.puts msg
32
+ @trace_count += 1
33
+ io.puts msg
31
34
  end
32
35
 
33
36
  # need a profile method, it routes through the profile tap which calls back
@@ -19,7 +19,7 @@ module Amalgalite
19
19
  attr_reader :delegate_method
20
20
 
21
21
  def initialize( wrapped_obj, send_to = 'trace' )
22
- unless wrapped_obj.respond_to?( send_to )
22
+ unless wrapped_obj.respond_to?( send_to )
23
23
  raise Amalgalite::Error, "#{wrapped_obj.class.name} does not respond to #{send_to.to_s} "
24
24
  end
25
25
 
@@ -4,5 +4,5 @@
4
4
  #++
5
5
 
6
6
  module Amalgalite
7
- VERSION = "1.6.3"
7
+ VERSION = "1.8.0"
8
8
  end
@@ -2,6 +2,7 @@ require 'spec_helper'
2
2
 
3
3
  class AggregateTest1 < ::Amalgalite::Aggregate
4
4
  def initialize
5
+ super
5
6
  @name = 'atest1'
6
7
  @arity = -1
7
8
  @count = 0
@@ -96,6 +97,7 @@ describe "Aggregate SQL Functions" do
96
97
  it "handles an error being thrown during the step function" do
97
98
  class AggregateTest5 < AggregateTest1
98
99
  def initialize
100
+ super
99
101
  @name = "atest5"
100
102
  @arity = -1
101
103
  @count = 0
@@ -117,6 +119,7 @@ describe "Aggregate SQL Functions" do
117
119
  it "handles an error being thrown during the finalize function" do
118
120
  class AggregateTest6 < AggregateTest1
119
121
  def initialize
122
+ super
120
123
  @name = "atest6"
121
124
  @count = 0
122
125
  @arity = -1
@@ -131,6 +134,7 @@ describe "Aggregate SQL Functions" do
131
134
 
132
135
  it "handles an error being thrown during initialization in the C extension" do
133
136
  class AggregateTest7 < AggregateTest1
137
+ @called = false
134
138
  def self.called?
135
139
  if @called then
136
140
  raise "Initialization error!"
@@ -119,9 +119,13 @@ describe Amalgalite::Database do
119
119
  sql = "CREATE TABLE trace_test( x, y, z)"
120
120
  s = db.trace_tap = ::Amalgalite::Taps::StringIO.new
121
121
  db.execute( sql )
122
- db.trace_tap.string.should eql("registered as trace tap\n#{sql}\n")
122
+ escaped_sql= Regexp.quote(sql)
123
+ db.trace_tap.string.should match(/registered as trace tap/)
124
+ db.trace_tap.string.should match(/#{escaped_sql}/)
125
+ s.trace_count.should eql(2)
123
126
  db.trace_tap = nil
124
- s.string.should eql("registered as trace tap\n#{sql}\nunregistered as trace tap\n")
127
+ s.trace_count.should eql(3)
128
+ s.string.should match(/unregistered as trace tap/)
125
129
  end
126
130
 
127
131
  it "raises an exception if the wrong type of object is used for tracing" do
@@ -129,18 +133,13 @@ describe Amalgalite::Database do
129
133
  lambda { db.trace_tap = Object.new }.should raise_error(Amalgalite::Error)
130
134
  end
131
135
 
132
- it "raises an exception if the wrong type of object is used for profile" do
133
- db = Amalgalite::Database.new( SpecInfo.test_db )
134
- lambda { db.profile_tap = Object.new }.should raise_error(Amalgalite::Error)
135
- end
136
-
137
136
  it "profiles the execution of code" do
138
137
  db = Amalgalite::Database.new( SpecInfo.test_db )
139
- s = db.profile_tap = ::Amalgalite::Taps::StringIO.new
138
+ s = db.trace_tap = ::Amalgalite::Taps::StringIO.new
140
139
  db.execute_batch( @schema )
141
- db.profile_tap.samplers.size.should eql(6)
142
- db.profile_tap = nil
143
- s.string.should =~ /unregistered as profile tap/m
140
+ db.trace_tap.samplers.size.should eql(5)
141
+ db.trace_tap = nil
142
+ s.string.should =~ /unregistered as trace tap/
144
143
  end
145
144
 
146
145
  it "#execute yields each row when called with a block" do
@@ -167,13 +166,11 @@ describe Amalgalite::Database do
167
166
 
168
167
  it "can clear all registered taps" do
169
168
  db = Amalgalite::Database.new( SpecInfo.test_db )
170
- s = db.profile_tap = ::Amalgalite::Taps::StringIO.new
171
- db.trace_tap = s
169
+ s = db.trace_tap = ::Amalgalite::Taps::StringIO.new
172
170
  db.execute_batch( @schema )
173
- db.profile_tap.samplers.size.should eql(6)
171
+ db.trace_tap.samplers.size.should eql(5)
174
172
  db.clear_taps!
175
173
  s.string.should =~ /unregistered as trace tap/m
176
- s.string.should =~ /unregistered as profile tap/m
177
174
  end
178
175
 
179
176
  it "allows nested transactions even if SQLite under the covers does not" do
@@ -7,21 +7,21 @@ describe "Amalgalite::SQLite3::Version" do
7
7
  expect(Amalgalite::SQLite3::Version.to_s).to match( /\d+\.\d+\.\d+/ )
8
8
  expect(Amalgalite::SQLite3::Version.runtime_version).to match( /\d+\.\d+\.\d+/ )
9
9
 
10
- Amalgalite::SQLite3::Version.to_i.should eql(3026000)
11
- Amalgalite::SQLite3::Version.runtime_version_number.should eql(3026000)
10
+ Amalgalite::SQLite3::Version.to_i.should eql(3040001)
11
+ Amalgalite::SQLite3::Version.runtime_version_number.should eql(3040001)
12
12
 
13
13
  Amalgalite::SQLite3::Version::MAJOR.should eql(3)
14
- Amalgalite::SQLite3::Version::MINOR.should eql(26)
15
- Amalgalite::SQLite3::Version::RELEASE.should eql(0)
14
+ Amalgalite::SQLite3::Version::MINOR.should eql(40)
15
+ Amalgalite::SQLite3::Version::RELEASE.should eql(1)
16
16
  expect(Amalgalite::SQLite3::Version.to_a.size).to eql(3)
17
17
 
18
- Amalgalite::SQLite3::Version.compiled_version.should be == "3.26.0"
19
- Amalgalite::SQLite3::Version.compiled_version_number.should be == 3026000
18
+ Amalgalite::SQLite3::Version.compiled_version.should be == "3.40.1"
19
+ Amalgalite::SQLite3::Version.compiled_version_number.should be == 3040001
20
20
  Amalgalite::SQLite3::Version.compiled_matches_runtime?.should be == true
21
21
  end
22
22
 
23
23
  it "should have the sqlite3 source id" do
24
- source_id = "2018-12-01 12:34:55 bf8c1b2b7a5960c282e543b9c293686dccff272512d08865f4600fb58238b4f9"
24
+ source_id = "2022-12-28 14:03:47 df5c253c0b3dd24916e4ec7cf77d3db5294cc9fd45ae7b9c5e82ad8197f38a24"
25
25
  Amalgalite::SQLite3::Version.compiled_source_id.should be == source_id
26
26
  Amalgalite::SQLite3::Version.runtime_source_id.should be == source_id
27
27
  end
data/tasks/custom.rake CHANGED
@@ -63,7 +63,7 @@ namespace :util do
63
63
 
64
64
  require 'uri'
65
65
  require 'open-uri'
66
- require 'zip'
66
+ require 'archive/zip'
67
67
 
68
68
  parts = version.split(".")
69
69
  next_version = [ parts.shift.to_s ]
@@ -79,22 +79,21 @@ namespace :util do
79
79
  file = "tmp/#{File.basename( url.path ) }"
80
80
  FileUtils.mkdir "tmp" unless File.directory?( "tmp" )
81
81
  File.open( file, "wb+") do |f|
82
- open(url) do |input|
82
+ url.open do |input|
83
83
  f.write( input.read )
84
84
  end
85
85
  end
86
86
 
87
87
  puts "extracting..."
88
88
  upstream_files = %w[ sqlite3.h sqlite3.c sqlite3ext.h ]
89
- Zip::ZipInputStream.open( file ) do |io|
90
- loop do
91
- entry = io.get_next_entry
92
- break unless entry
93
- bname = File.basename( entry.name )
89
+ Archive::Zip.open( file ) do |archive|
90
+ archive.each do |entry|
91
+ next unless entry.file?
92
+ bname = File.basename( entry.zip_path)
94
93
  if upstream_files.include?( bname ) then
95
94
  dest_file = File.join( "ext", "amalgalite", "c", bname )
96
95
  puts "updating #{dest_file}"
97
- entry.extract( dest_file ) { true }
96
+ entry.extract(file_path: dest_file)
98
97
  end
99
98
  end
100
99
  end
data/tasks/default.rake CHANGED
@@ -39,7 +39,11 @@ begin
39
39
  require 'rspec/core/rake_task'
40
40
  RSpec::Core::RakeTask.new( :test ) do |t|
41
41
  t.ruby_opts = %w[ -w ]
42
- t.rspec_opts = %w[ --color --format documentation ]
42
+ t.rspec_opts = %w[
43
+ --color
44
+ --format documentation
45
+ --format RspecJunitFormatter --out tmp/report.xml
46
+ ]
43
47
  end
44
48
  task :test_requirements
45
49
  task :test => :test_requirements
@@ -157,7 +161,7 @@ namespace :fixme do
157
161
  end
158
162
 
159
163
  desc "See if the fixme tools are outdated"
160
- task :outdated => :release_check do
164
+ task :outdated do
161
165
  if fixme_up_to_date? then
162
166
  puts "Fixme files are up to date."
163
167
  else
@@ -168,7 +172,7 @@ namespace :fixme do
168
172
  end
169
173
 
170
174
  desc "Update outdated fixme files"
171
- task :update => :release_check do
175
+ task :update do
172
176
  if fixme_up_to_date? then
173
177
  puts "Fixme files are already up to date."
174
178
  else
@@ -199,7 +203,7 @@ task :gemspec do
199
203
  end
200
204
 
201
205
  # .rbc files from ruby 2.0
202
- CLOBBER << FileList["**/*.rbc"]
206
+ CLOBBER << "**/*.rbc"
203
207
 
204
208
  # The standard gem packaging task, everyone has it.
205
209
  require 'rubygems/package_task'
@@ -211,19 +215,19 @@ end
211
215
  # Release - the steps we go through to do a final release, this is pulled from
212
216
  # a compbination of mojombo's rakegem, hoe and hoe-git
213
217
  #
214
- # 1) make sure we are on the master branch
218
+ # 1) make sure we are on the main branch
215
219
  # 2) make sure there are no uncommitted items
216
220
  # 3) check the manifest and make sure all looks good
217
221
  # 4) build the gem
218
222
  # 5) do an empty commit to have the commit message of the version
219
223
  # 6) tag that commit as the version
220
- # 7) push master
224
+ # 7) push main
221
225
  # 8) push the tag
222
226
  # 7) pus the gem
223
227
  #------------------------------------------------------------------------------
224
228
  task :release_check do
225
- unless `git branch` =~ /^\* master$/
226
- abort "You must be on the master branch to release!"
229
+ unless `git branch` =~ /^\* main/
230
+ abort "You must be on the main branch to release!"
227
231
  end
228
232
  unless `git status` =~ /^nothing to commit/m
229
233
  abort "Nope, sorry, you have unfinished business"
@@ -234,7 +238,7 @@ desc "Create tag v#{This.version}, build and push #{This.platform_gemspec.full_n
234
238
  task :release => [ :release_check, 'manifest:check', :gem ] do
235
239
  sh "git commit --allow-empty -a -m 'Release #{This.version}'"
236
240
  sh "git tag -a -m 'v#{This.version}' v#{This.version}"
237
- sh "git push origin master"
241
+ sh "git push origin main"
238
242
  sh "git push origin v#{This.version}"
239
243
  sh "gem push pkg/#{This.platform_gemspec.full_name}.gem"
240
244
  end
data/tasks/extension.rake CHANGED
@@ -6,27 +6,17 @@
6
6
  # in your top level rakefile
7
7
  begin
8
8
  require 'rake/extensiontask'
9
- require 'rake/javaextensiontask'
9
+ Rake::ExtensionTask.new( This.name ) do |ext|
10
+ ext.ext_dir = File.join( 'ext', This.name, "c" )
11
+ ext.lib_dir = File.join( 'lib', This.name )
12
+ ext.gem_spec = This.ruby_gemspec
10
13
 
11
- if RUBY_PLATFORM == "java" then
12
-
13
- Rake::JavaExtensionTask.new( This.name) do |ext|
14
- ext.ext_dir = File.join( 'ext', This.name, "java" )
15
- ext.lib_dir = File.join( 'lib', This.name )
16
- ext.gem_spec = This.java_gemspec
17
- end
18
-
19
- else
20
-
21
- Rake::ExtensionTask.new( This.name ) do |ext|
22
- ext.ext_dir = File.join( 'ext', This.name, "c" )
23
- ext.lib_dir = File.join( 'lib', This.name )
24
- ext.gem_spec = This.ruby_gemspec
25
-
26
- ext.cross_compile = true # enable cross compilation (requires cross compile toolchain)
27
- ext.cross_platform = %w[x86-mingw32 x64-mingw32] # forces the Windows platform instead of the default one
28
- # configure options only for cross compile
29
- end
14
+ ext.cross_compile = true # enable cross compilation (requires cross compile toolchain)
15
+ ext.cross_platform = %w[
16
+ x86-mingw32
17
+ x64-mingw-ucrt
18
+ x64-mingw32
19
+ ]
30
20
  end
31
21
 
32
22
  task :test_requirements => :compile
@@ -34,5 +24,5 @@ rescue LoadError
34
24
  This.task_warning( 'extension' )
35
25
  end
36
26
 
37
- CLOBBER << FileList["lib/**/*.{jar,so,bundle}"]
38
- CLOBBER << FileList["lib/#{This.name}/{1,2}.*/"]
27
+ CLOBBER << "lib/**/*.{jar,so,bundle}"
28
+ CLOBBER << "lib/#{This.name}/{1,2,3}.*/"
data/tasks/this.rb CHANGED
@@ -25,10 +25,10 @@ class ThisProject
25
25
  #
26
26
  # Yields self
27
27
  def initialize(&block)
28
- @exclude_from_manifest = Regexp.union(/\.(git|DS_Store|ruby-version)/,
29
- /^(doc|coverage|pkg|tmp|.semaphore|Gemfile(\.lock)?)/,
28
+ @exclude_from_manifest = Regexp.union(/\.(git|DS_Store|semaphore)/,
29
+ /^(doc|coverage|pkg|tmp|Gemfile(\.lock)?)/,
30
30
  /^[^\/]+\.gemspec/,
31
- /\.(swp|jar|bundle|so|rvmrc|travis.yml|byebug_history)$/,
31
+ /\.(swp|jar|bundle|so|rvmrc|travis.yml|byebug_history|fossa.yml|ruby-version)$/,
32
32
  /~$/)
33
33
  @gemspecs = Hash.new
34
34
  yield self if block_given?
@@ -135,7 +135,7 @@ class ThisProject
135
135
  spec.homepage = homepage
136
136
 
137
137
  spec.summary = summary
138
- spec.description = description
138
+ spec.description = summary
139
139
  spec.license = license
140
140
 
141
141
  spec.files = manifest
@@ -185,7 +185,7 @@ class ThisProject
185
185
 
186
186
  # Internal: Return the summary text from the README
187
187
  def summary
188
- description_section.first
188
+ description_section.first.gsub(/\s+/, ' ')
189
189
  end
190
190
 
191
191
  # Internal: Return the full description text from the README