dm-is-reflective 1.3.1 → 1.3.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.
- checksums.yaml +5 -5
- data/.gitignore +1 -6
- data/.travis.yml +25 -12
- data/CHANGES.md +10 -0
- data/Gemfile +7 -0
- data/README.md +4 -1
- data/Rakefile +11 -20
- data/dm-is-reflective.gemspec +63 -62
- data/lib/dm-is-reflective/adapters/postgres_adapter.rb +1 -1
- data/lib/dm-is-reflective/reflective.rb +10 -4
- data/lib/dm-is-reflective/runner.rb +3 -2
- data/lib/dm-is-reflective/version.rb +1 -1
- data/task/README.md +54 -0
- data/task/gemgem.rb +239 -169
- metadata +21 -21
- data/task/.gitignore +0 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 972e519551e2031e811a3e88abca4ae417993dfd88c14c3470784f2abe5ddeaa
|
4
|
+
data.tar.gz: ffc5f2f1637e6fd97304a40533326361226661693038e0a30ef333f05ed522cd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 31ca16bc14df04ad99fc3b4141d5730e123e81fd64304b188f54cd576045856b8441dd14f537755d7a7dd846a6d99aafa0206a0c7cfd21bc32a4109097406b7f
|
7
|
+
data.tar.gz: 8cd3bb490db9d397b02ae9b1e78424547ad6cbd4885ccb991f527a372265104157b034bb5e3b74336f9ff1278bb207545d2eff1d269839fa88aef6572a807be6
|
data/.gitignore
CHANGED
data/.travis.yml
CHANGED
@@ -1,15 +1,28 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
1
|
+
sudo: false
|
2
|
+
language: ruby
|
3
|
+
|
4
|
+
install: 'gem install bundler; bundle install --retry=3'
|
5
|
+
script: 'ruby -vr bundler/setup -S rake test'
|
5
6
|
|
6
|
-
|
7
|
+
matrix:
|
8
|
+
include:
|
9
|
+
- rvm: 2.2
|
10
|
+
- rvm: 2.3
|
11
|
+
- rvm: 2.4
|
12
|
+
- rvm: ruby-head
|
13
|
+
- rvm: jruby
|
14
|
+
env: JRUBY_OPTS=--debug
|
15
|
+
- rvm: rbx
|
7
16
|
|
8
|
-
|
9
|
-
|
17
|
+
allow_failures:
|
18
|
+
- rvm: rbx
|
19
|
+
- rvm: jruby
|
10
20
|
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
-
|
21
|
+
addons:
|
22
|
+
postgresql: 9.3
|
23
|
+
|
24
|
+
before_install:
|
25
|
+
- sudo apt-get update
|
26
|
+
- sudo apt-get install postgresql-server-dev-9.3 libpq-dev
|
27
|
+
- mysql -e 'create database myapp_test;'
|
28
|
+
- psql -c 'create database myapp_test;' -U postgres
|
data/CHANGES.md
CHANGED
@@ -1,5 +1,15 @@
|
|
1
1
|
# CHANGES
|
2
2
|
|
3
|
+
## dm-is-reflective 1.3.2 -- 2017-12-29
|
4
|
+
|
5
|
+
* Prefix an underscore whenever the property begins with a number, which
|
6
|
+
cannot be used as a method name. See:
|
7
|
+
[#9](https://github.com/godfat/dm-is-reflective/pull/9)
|
8
|
+
Thanks Mischa Molhoek (@mmolhoek)
|
9
|
+
* Don't create the model for PostgreSQL views. See:
|
10
|
+
[#10](https://github.com/godfat/dm-is-reflective/pull/10)
|
11
|
+
Thanks @philfine
|
12
|
+
|
3
13
|
## dm-is-reflective 1.3.1, 2013-05-22
|
4
14
|
|
5
15
|
* Introduce `indices` method which would return all indices in the storage.
|
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -140,12 +140,15 @@ puts User.to_source
|
|
140
140
|
|
141
141
|
* Andrew Kreps (@onewheelskyward)
|
142
142
|
* Lin Jen-Shin (@godfat)
|
143
|
+
* Mischa Molhoek (@mmolhoek)
|
144
|
+
* @philfine
|
145
|
+
* Sebastian Marr (@sebastianmarr)
|
143
146
|
|
144
147
|
## LICENSE:
|
145
148
|
|
146
149
|
Apache License 2.0
|
147
150
|
|
148
|
-
Copyright (c) 2008-
|
151
|
+
Copyright (c) 2008-2017, Lin Jen-Shin (godfat)
|
149
152
|
|
150
153
|
Licensed under the Apache License, Version 2.0 (the "License");
|
151
154
|
you may not use this file except in compliance with the License.
|
data/Rakefile
CHANGED
@@ -1,28 +1,19 @@
|
|
1
|
-
# encoding: utf-8
|
2
1
|
|
3
2
|
begin
|
4
3
|
require "#{dir = File.dirname(__FILE__)}/task/gemgem"
|
5
4
|
rescue LoadError
|
6
|
-
sh
|
7
|
-
exec Gem.ruby,
|
5
|
+
sh 'git submodule update --init'
|
6
|
+
exec Gem.ruby, '-S', $PROGRAM_NAME, *ARGV
|
8
7
|
end
|
9
8
|
|
10
|
-
Gemgem.dir
|
11
|
-
|
9
|
+
Gemgem.init(dir) do |s|
|
10
|
+
require 'dm-is-reflective/version'
|
11
|
+
s.name = 'dm-is-reflective'
|
12
|
+
s.version = DmIsReflective::VERSION
|
12
13
|
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
s.version = DmIsReflective::VERSION
|
19
|
-
|
20
|
-
%w[dm-core dm-do-adapter].each{ |g| s.add_runtime_dependency(g) }
|
21
|
-
%w[dm-migrations
|
22
|
-
dm-sqlite-adapter
|
23
|
-
dm-mysql-adapter
|
24
|
-
dm-postgres-adapter].each{ |g| s.add_development_dependency(g) }
|
25
|
-
end
|
26
|
-
|
27
|
-
Gemgem.write
|
14
|
+
%w[dm-core dm-do-adapter].each{ |g| s.add_runtime_dependency(g) }
|
15
|
+
%w[dm-migrations
|
16
|
+
dm-sqlite-adapter
|
17
|
+
dm-mysql-adapter
|
18
|
+
dm-postgres-adapter].each{ |g| s.add_development_dependency(g) }
|
28
19
|
end
|
data/dm-is-reflective.gemspec
CHANGED
@@ -1,78 +1,79 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
|
+
# stub: dm-is-reflective 1.3.2 ruby lib
|
2
3
|
|
3
4
|
Gem::Specification.new do |s|
|
4
|
-
s.name = "dm-is-reflective"
|
5
|
-
s.version = "1.3.
|
5
|
+
s.name = "dm-is-reflective".freeze
|
6
|
+
s.version = "1.3.2"
|
6
7
|
|
7
|
-
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
8
|
-
s.
|
9
|
-
s.
|
10
|
-
s.
|
11
|
-
s.
|
12
|
-
s.
|
8
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
|
9
|
+
s.require_paths = ["lib".freeze]
|
10
|
+
s.authors = ["Lin Jen-Shin (godfat)".freeze]
|
11
|
+
s.date = "2017-12-29"
|
12
|
+
s.description = "DataMapper plugin that helps you manipulate an existing database.\nIt creates mappings between existing columns and model's properties.".freeze
|
13
|
+
s.email = ["godfat (XD) godfat.org".freeze]
|
14
|
+
s.executables = ["dm-is-reflective".freeze]
|
13
15
|
s.files = [
|
14
|
-
".gitignore",
|
15
|
-
".gitmodules",
|
16
|
-
".travis.yml",
|
17
|
-
"CHANGES.md",
|
18
|
-
"Gemfile",
|
19
|
-
"LICENSE",
|
20
|
-
"README.md",
|
21
|
-
"Rakefile",
|
22
|
-
"TODO.md",
|
23
|
-
"bin/dm-is-reflective",
|
24
|
-
"dm-is-reflective.gemspec",
|
25
|
-
"lib/dm-is-reflective.rb",
|
26
|
-
"lib/dm-is-reflective/adapters/data_objects_adapter.rb",
|
27
|
-
"lib/dm-is-reflective/adapters/mysql_adapter.rb",
|
28
|
-
"lib/dm-is-reflective/adapters/postgres_adapter.rb",
|
29
|
-
"lib/dm-is-reflective/adapters/sqlite_adapter.rb",
|
30
|
-
"lib/dm-is-reflective/reflective.rb",
|
31
|
-
"lib/dm-is-reflective/runner.rb",
|
32
|
-
"lib/dm-is-reflective/test.rb",
|
33
|
-
"lib/dm-is-reflective/version.rb",
|
34
|
-
"task
|
35
|
-
"task/gemgem.rb",
|
36
|
-
"test/setup_db.sh",
|
37
|
-
"test/test_mysql.rb",
|
38
|
-
"test/test_postgres.rb",
|
39
|
-
"test/test_sqlite.rb",
|
40
|
-
"test/test_to_source.rb"]
|
41
|
-
s.homepage = "https://github.com/godfat/dm-is-reflective"
|
42
|
-
s.licenses = ["Apache License 2.0"]
|
43
|
-
s.
|
44
|
-
s.
|
45
|
-
s.summary = "DataMapper plugin that helps you manipulate an existing database."
|
16
|
+
".gitignore".freeze,
|
17
|
+
".gitmodules".freeze,
|
18
|
+
".travis.yml".freeze,
|
19
|
+
"CHANGES.md".freeze,
|
20
|
+
"Gemfile".freeze,
|
21
|
+
"LICENSE".freeze,
|
22
|
+
"README.md".freeze,
|
23
|
+
"Rakefile".freeze,
|
24
|
+
"TODO.md".freeze,
|
25
|
+
"bin/dm-is-reflective".freeze,
|
26
|
+
"dm-is-reflective.gemspec".freeze,
|
27
|
+
"lib/dm-is-reflective.rb".freeze,
|
28
|
+
"lib/dm-is-reflective/adapters/data_objects_adapter.rb".freeze,
|
29
|
+
"lib/dm-is-reflective/adapters/mysql_adapter.rb".freeze,
|
30
|
+
"lib/dm-is-reflective/adapters/postgres_adapter.rb".freeze,
|
31
|
+
"lib/dm-is-reflective/adapters/sqlite_adapter.rb".freeze,
|
32
|
+
"lib/dm-is-reflective/reflective.rb".freeze,
|
33
|
+
"lib/dm-is-reflective/runner.rb".freeze,
|
34
|
+
"lib/dm-is-reflective/test.rb".freeze,
|
35
|
+
"lib/dm-is-reflective/version.rb".freeze,
|
36
|
+
"task/README.md".freeze,
|
37
|
+
"task/gemgem.rb".freeze,
|
38
|
+
"test/setup_db.sh".freeze,
|
39
|
+
"test/test_mysql.rb".freeze,
|
40
|
+
"test/test_postgres.rb".freeze,
|
41
|
+
"test/test_sqlite.rb".freeze,
|
42
|
+
"test/test_to_source.rb".freeze]
|
43
|
+
s.homepage = "https://github.com/godfat/dm-is-reflective".freeze
|
44
|
+
s.licenses = ["Apache License 2.0".freeze]
|
45
|
+
s.rubygems_version = "2.7.3".freeze
|
46
|
+
s.summary = "DataMapper plugin that helps you manipulate an existing database.".freeze
|
46
47
|
s.test_files = [
|
47
|
-
"test/test_mysql.rb",
|
48
|
-
"test/test_postgres.rb",
|
49
|
-
"test/test_sqlite.rb",
|
50
|
-
"test/test_to_source.rb"]
|
48
|
+
"test/test_mysql.rb".freeze,
|
49
|
+
"test/test_postgres.rb".freeze,
|
50
|
+
"test/test_sqlite.rb".freeze,
|
51
|
+
"test/test_to_source.rb".freeze]
|
51
52
|
|
52
53
|
if s.respond_to? :specification_version then
|
53
54
|
s.specification_version = 4
|
54
55
|
|
55
56
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
56
|
-
s.add_runtime_dependency(%q<dm-core
|
57
|
-
s.add_runtime_dependency(%q<dm-do-adapter
|
58
|
-
s.add_development_dependency(%q<dm-migrations
|
59
|
-
s.add_development_dependency(%q<dm-sqlite-adapter
|
60
|
-
s.add_development_dependency(%q<dm-mysql-adapter
|
61
|
-
s.add_development_dependency(%q<dm-postgres-adapter
|
57
|
+
s.add_runtime_dependency(%q<dm-core>.freeze, [">= 0"])
|
58
|
+
s.add_runtime_dependency(%q<dm-do-adapter>.freeze, [">= 0"])
|
59
|
+
s.add_development_dependency(%q<dm-migrations>.freeze, [">= 0"])
|
60
|
+
s.add_development_dependency(%q<dm-sqlite-adapter>.freeze, [">= 0"])
|
61
|
+
s.add_development_dependency(%q<dm-mysql-adapter>.freeze, [">= 0"])
|
62
|
+
s.add_development_dependency(%q<dm-postgres-adapter>.freeze, [">= 0"])
|
62
63
|
else
|
63
|
-
s.add_dependency(%q<dm-core
|
64
|
-
s.add_dependency(%q<dm-do-adapter
|
65
|
-
s.add_dependency(%q<dm-migrations
|
66
|
-
s.add_dependency(%q<dm-sqlite-adapter
|
67
|
-
s.add_dependency(%q<dm-mysql-adapter
|
68
|
-
s.add_dependency(%q<dm-postgres-adapter
|
64
|
+
s.add_dependency(%q<dm-core>.freeze, [">= 0"])
|
65
|
+
s.add_dependency(%q<dm-do-adapter>.freeze, [">= 0"])
|
66
|
+
s.add_dependency(%q<dm-migrations>.freeze, [">= 0"])
|
67
|
+
s.add_dependency(%q<dm-sqlite-adapter>.freeze, [">= 0"])
|
68
|
+
s.add_dependency(%q<dm-mysql-adapter>.freeze, [">= 0"])
|
69
|
+
s.add_dependency(%q<dm-postgres-adapter>.freeze, [">= 0"])
|
69
70
|
end
|
70
71
|
else
|
71
|
-
s.add_dependency(%q<dm-core
|
72
|
-
s.add_dependency(%q<dm-do-adapter
|
73
|
-
s.add_dependency(%q<dm-migrations
|
74
|
-
s.add_dependency(%q<dm-sqlite-adapter
|
75
|
-
s.add_dependency(%q<dm-mysql-adapter
|
76
|
-
s.add_dependency(%q<dm-postgres-adapter
|
72
|
+
s.add_dependency(%q<dm-core>.freeze, [">= 0"])
|
73
|
+
s.add_dependency(%q<dm-do-adapter>.freeze, [">= 0"])
|
74
|
+
s.add_dependency(%q<dm-migrations>.freeze, [">= 0"])
|
75
|
+
s.add_dependency(%q<dm-sqlite-adapter>.freeze, [">= 0"])
|
76
|
+
s.add_dependency(%q<dm-mysql-adapter>.freeze, [">= 0"])
|
77
|
+
s.add_dependency(%q<dm-postgres-adapter>.freeze, [">= 0"])
|
77
78
|
end
|
78
79
|
end
|
@@ -5,7 +5,7 @@ module DmIsReflective::PostgresAdapter
|
|
5
5
|
def storages
|
6
6
|
sql = <<-SQL
|
7
7
|
SELECT table_name FROM "information_schema"."tables"
|
8
|
-
WHERE table_schema = current_schema()
|
8
|
+
WHERE table_schema = current_schema() AND table_type = 'BASE TABLE'
|
9
9
|
SQL
|
10
10
|
|
11
11
|
select(Ext::String.compress_lines(sql))
|
@@ -55,13 +55,19 @@ module DmIsReflective
|
|
55
55
|
|
56
56
|
reflected = targets.each{ |target|
|
57
57
|
case target
|
58
|
-
when Regexp
|
59
|
-
|
58
|
+
when Regexp
|
59
|
+
if name.to_s =~ target
|
60
|
+
if name.to_s =~ /^\d/
|
61
|
+
break :"_#{name}" # TODO: missing test for this
|
62
|
+
else
|
63
|
+
break name
|
64
|
+
end
|
65
|
+
end
|
60
66
|
|
61
|
-
when Symbol, String
|
67
|
+
when Symbol, String
|
62
68
|
break name if name == target.to_sym
|
63
69
|
|
64
|
-
when Class
|
70
|
+
when Class
|
65
71
|
break name if type == target
|
66
72
|
|
67
73
|
else
|
@@ -73,8 +73,9 @@ module DmIsReflective::Runner
|
|
73
73
|
end
|
74
74
|
|
75
75
|
def help
|
76
|
-
|
77
|
-
|
76
|
+
optt = options.transpose
|
77
|
+
maxn = optt.first.map(&:size).max
|
78
|
+
maxd = optt.last .map(&:size).max
|
78
79
|
"Usage: dm-is-reflective DATABASE_URI\n" +
|
79
80
|
options.map{ |(name, desc)|
|
80
81
|
if desc.empty?
|
data/task/README.md
ADDED
@@ -0,0 +1,54 @@
|
|
1
|
+
# Gemgem
|
2
|
+
|
3
|
+
## DESCRIPTION:
|
4
|
+
|
5
|
+
Provided tasks:
|
6
|
+
|
7
|
+
rake clean # Trash ignored files
|
8
|
+
rake gem:build # Build gem
|
9
|
+
rake gem:install # Install gem
|
10
|
+
rake gem:release # Release gem
|
11
|
+
rake gem:spec # Generate gemspec
|
12
|
+
rake test # Run tests
|
13
|
+
|
14
|
+
## REQUIREMENTS:
|
15
|
+
|
16
|
+
* Tested with MRI (official CRuby), Rubinius and JRuby.
|
17
|
+
|
18
|
+
## INSTALLATION:
|
19
|
+
|
20
|
+
git submodule add git://github.com/godfat/gemgem.git task
|
21
|
+
|
22
|
+
And in Rakefile:
|
23
|
+
|
24
|
+
``` ruby
|
25
|
+
begin
|
26
|
+
require "#{__dir__}/task/gemgem"
|
27
|
+
rescue LoadError
|
28
|
+
sh 'git submodule update --init --recursive'
|
29
|
+
exec Gem.ruby, '-S', $PROGRAM_NAME, *ARGV
|
30
|
+
end
|
31
|
+
|
32
|
+
Gemgem.init(__dir__, :submodules => %w[your-dep]) do |s|
|
33
|
+
s.name = 'your-gem'
|
34
|
+
s.version = '0.1.0'
|
35
|
+
end
|
36
|
+
```
|
37
|
+
|
38
|
+
## LICENSE:
|
39
|
+
|
40
|
+
Apache License 2.0 (Apache-2.0)
|
41
|
+
|
42
|
+
Copyright (c) 2011-2017, Lin Jen-Shin (godfat)
|
43
|
+
|
44
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
45
|
+
you may not use this file except in compliance with the License.
|
46
|
+
You may obtain a copy of the License at
|
47
|
+
|
48
|
+
<http://www.apache.org/licenses/LICENSE-2.0>
|
49
|
+
|
50
|
+
Unless required by applicable law or agreed to in writing, software
|
51
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
52
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
53
|
+
See the License for the specific language governing permissions and
|
54
|
+
limitations under the License.
|
data/task/gemgem.rb
CHANGED
@@ -1,107 +1,150 @@
|
|
1
1
|
|
2
|
-
require 'pathname'
|
3
|
-
|
4
2
|
module Gemgem
|
5
3
|
class << self
|
6
|
-
attr_accessor :dir, :spec
|
4
|
+
attr_accessor :dir, :spec, :submodules, :spec_create
|
7
5
|
end
|
8
6
|
|
9
7
|
module_function
|
8
|
+
def gem_tag ; "#{spec.name}-#{spec.version}" ; end
|
9
|
+
def gem_path ; "#{pkg_dir}/#{gem_tag}.gem" ; end
|
10
|
+
def spec_path ; "#{dir}/#{spec.name}.gemspec" ; end
|
11
|
+
def pkg_dir ; "#{dir}/pkg" ; end
|
12
|
+
def escaped_dir; @escaped_dir ||= Regexp.escape(dir); end
|
13
|
+
|
14
|
+
def init dir, options={}, &block
|
15
|
+
self.dir = dir
|
16
|
+
ENV['RUBYLIB'] = "#{dir}/lib:#{ENV['RUBYLIB']}"
|
17
|
+
ENV['PATH'] = "#{dir}/bin:#{ENV['PATH']}"
|
18
|
+
self.submodules = options[:submodules] || []
|
19
|
+
self.spec_create = block
|
20
|
+
|
21
|
+
$LOAD_PATH.unshift("#{dir}/lib", *submodules_libs)
|
22
|
+
end
|
23
|
+
|
10
24
|
def create
|
11
|
-
|
25
|
+
spec = Gem::Specification.new do |s|
|
12
26
|
s.authors = ['Lin Jen-Shin (godfat)']
|
13
27
|
s.email = ['godfat (XD) godfat.org']
|
14
28
|
|
15
29
|
s.description = description.join
|
16
30
|
s.summary = description.first
|
17
|
-
s.license =
|
18
|
-
|
19
|
-
s.
|
20
|
-
s.
|
21
|
-
s.
|
22
|
-
s.
|
23
|
-
|
24
|
-
|
25
|
-
})
|
31
|
+
s.license = license
|
32
|
+
|
33
|
+
s.date = Time.now.strftime('%Y-%m-%d')
|
34
|
+
s.files = gem_files
|
35
|
+
s.test_files = test_files
|
36
|
+
s.executables = bin_files
|
37
|
+
end
|
38
|
+
spec_create.call(spec)
|
26
39
|
spec.homepage ||= "https://github.com/godfat/#{spec.name}"
|
27
|
-
spec
|
40
|
+
self.spec = spec
|
28
41
|
end
|
29
42
|
|
30
|
-
def
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
end
|
43
|
+
def gem_install
|
44
|
+
require 'rubygems/commands/install_command'
|
45
|
+
# read ~/.gemrc
|
46
|
+
Gem.use_paths(Gem.configuration[:gemhome], Gem.configuration[:gempath])
|
47
|
+
Gem::Command.extra_args = Gem.configuration[:gem]
|
48
|
+
|
49
|
+
# setup install options
|
50
|
+
cmd = Gem::Commands::InstallCommand.new
|
51
|
+
cmd.handle_options([])
|
52
|
+
|
53
|
+
# install
|
54
|
+
install = Gem::Installer.new(gem_path, cmd.options)
|
55
|
+
install.install
|
56
|
+
puts "\e[35mGem installed: \e[33m#{strip_path(install.gem_dir)}\e[0m"
|
45
57
|
end
|
46
58
|
|
47
|
-
def
|
48
|
-
|
59
|
+
def gem_spec
|
60
|
+
create
|
61
|
+
write
|
49
62
|
end
|
50
63
|
|
51
|
-
def
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
''
|
62
|
-
end
|
64
|
+
def gem_build
|
65
|
+
require 'fileutils'
|
66
|
+
require 'rubygems/package'
|
67
|
+
gem = nil
|
68
|
+
Dir.chdir(dir) do
|
69
|
+
gem = Gem::Package.build(Gem::Specification.load(spec_path))
|
70
|
+
FileUtils.mkdir_p(pkg_dir)
|
71
|
+
FileUtils.mv(gem, pkg_dir) # gem is relative path, but might be ok
|
72
|
+
end
|
73
|
+
puts "\e[35mGem built: \e[33m#{strip_path("#{pkg_dir}/#{gem}")}\e[0m"
|
63
74
|
end
|
64
75
|
|
65
|
-
def
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
"##{readme['INSTALLATION']}\n\n" +
|
71
|
-
if readme['SYNOPSIS'] then "##{readme['SYNOPSIS'][/[^\n]+\n\n[^\n]+/]}"
|
72
|
-
else '' end
|
76
|
+
def gem_release
|
77
|
+
sh_git('tag', gem_tag)
|
78
|
+
sh_git('push')
|
79
|
+
sh_git('push', '--tags')
|
80
|
+
sh_gem('push', gem_path)
|
73
81
|
end
|
74
82
|
|
75
|
-
def
|
76
|
-
|
77
|
-
|
83
|
+
def gem_check
|
84
|
+
unless git('status', '--porcelain').empty?
|
85
|
+
puts("\e[35mWorking copy is not clean.\e[0m")
|
86
|
+
exit(3)
|
87
|
+
end
|
88
|
+
|
89
|
+
ver = spec.version.to_s
|
78
90
|
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
91
|
+
if ENV['VERSION'].nil?
|
92
|
+
puts("\e[35mExpected " \
|
93
|
+
"\e[33mVERSION\e[35m=\e[33m#{ver}\e[0m")
|
94
|
+
exit(1)
|
95
|
+
|
96
|
+
elsif ENV['VERSION'] != ver
|
97
|
+
puts("\e[35mExpected \e[33mVERSION\e[35m=\e[33m#{ver} " \
|
98
|
+
"\e[35mbut got\n " \
|
99
|
+
"\e[33mVERSION\e[35m=\e[33m#{ENV['VERSION']}\e[0m")
|
100
|
+
exit(2)
|
86
101
|
end
|
87
102
|
end
|
88
103
|
|
89
|
-
def
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
104
|
+
def test
|
105
|
+
return if test_files.empty?
|
106
|
+
|
107
|
+
if ENV['COV'] || ENV['CI']
|
108
|
+
require 'simplecov'
|
109
|
+
if ENV['CI']
|
110
|
+
begin
|
111
|
+
require 'coveralls'
|
112
|
+
SimpleCov.formatter = Coveralls::SimpleCov::Formatter
|
113
|
+
rescue LoadError => e
|
114
|
+
puts "Cannot load coveralls, skip: #{e}"
|
115
|
+
end
|
116
|
+
end
|
117
|
+
SimpleCov.start do
|
118
|
+
add_filter('test/')
|
119
|
+
add_filter('test.rb')
|
120
|
+
submodules_libs.each(&method(:add_filter))
|
121
|
+
end
|
122
|
+
end
|
123
|
+
|
124
|
+
test_files.each{ |file| require "#{dir}/#{file[0..-4]}" }
|
96
125
|
end
|
97
126
|
|
98
|
-
def
|
99
|
-
|
127
|
+
def clean
|
128
|
+
return if ignored_files.empty?
|
129
|
+
|
130
|
+
require 'fileutils'
|
131
|
+
trash = File.expand_path("~/.Trash/#{spec.name}")
|
132
|
+
puts "Move the following files into: \e[35m#{strip_path(trash)}\e[33m"
|
133
|
+
|
134
|
+
ignored_files.each do |file|
|
135
|
+
from = "#{dir}/#{file}"
|
136
|
+
to = "#{trash}/#{File.dirname(file)}"
|
137
|
+
puts strip_path(from)
|
138
|
+
|
139
|
+
FileUtils.mkdir_p(to)
|
140
|
+
FileUtils.mv(from, to)
|
141
|
+
end
|
142
|
+
|
143
|
+
print "\e[0m"
|
100
144
|
end
|
101
145
|
|
102
146
|
def write
|
103
|
-
File.open(
|
104
|
-
f << split_lines(spec.to_ruby) }
|
147
|
+
File.open(spec_path, 'w'){ |f| f << split_lines(spec.to_ruby) }
|
105
148
|
end
|
106
149
|
|
107
150
|
def split_lines ruby
|
@@ -114,65 +157,139 @@ module Gemgem
|
|
114
157
|
}
|
115
158
|
end
|
116
159
|
|
160
|
+
def strip_path path
|
161
|
+
strip_home_path(strip_cwd_path(path))
|
162
|
+
end
|
163
|
+
|
164
|
+
def strip_home_path path
|
165
|
+
path.sub(/\A#{Regexp.escape(ENV['HOME'])}\//, '~/')
|
166
|
+
end
|
167
|
+
|
168
|
+
def strip_cwd_path path
|
169
|
+
path.sub(/\A#{Regexp.escape(Dir.pwd)}\//, '')
|
170
|
+
end
|
171
|
+
|
172
|
+
def submodules_libs
|
173
|
+
submodules.map{ |path| "#{dir}/#{path}/lib" }
|
174
|
+
end
|
175
|
+
|
176
|
+
def git *args
|
177
|
+
`git --git-dir=#{dir}/.git #{args.join(' ')}`
|
178
|
+
end
|
179
|
+
|
180
|
+
def sh_git *args
|
181
|
+
Rake.sh('git', "--git-dir=#{dir}/.git", *args)
|
182
|
+
end
|
183
|
+
|
184
|
+
def sh_gem *args
|
185
|
+
Rake.sh(Gem.ruby, '-S', 'gem', *args)
|
186
|
+
end
|
187
|
+
|
188
|
+
def glob path=dir
|
189
|
+
Dir.glob("#{path}/**/*", File::FNM_DOTMATCH)
|
190
|
+
end
|
191
|
+
|
192
|
+
def readme
|
193
|
+
@readme ||=
|
194
|
+
if (path = "#{Gemgem.dir}/README.md") && File.exist?(path)
|
195
|
+
ps = "##{File.read(path)}".
|
196
|
+
scan(/((#+)[^\n]+\n\n.+?(?=(\n\n\2[^#\n]+\n)|\Z))/m).map(&:first)
|
197
|
+
ps.inject('HEADER' => ps.first){ |r, s, i|
|
198
|
+
r[s[/\w+/]] = s
|
199
|
+
r
|
200
|
+
}
|
201
|
+
else
|
202
|
+
{}
|
203
|
+
end
|
204
|
+
end
|
205
|
+
|
206
|
+
def description
|
207
|
+
# JRuby String#lines is returning an enumerator
|
208
|
+
@description ||= (readme['DESCRIPTION']||'').sub(/.+\n\n/, '').lines.to_a
|
209
|
+
end
|
210
|
+
|
211
|
+
def license
|
212
|
+
readme['LICENSE'].sub(/.+\n\n/, '').lines.first.
|
213
|
+
split(/[()]/).map(&:strip).reject(&:empty?).last
|
214
|
+
end
|
215
|
+
|
117
216
|
def all_files
|
118
|
-
@all_files ||=
|
119
|
-
|
120
|
-
|
217
|
+
@all_files ||= fold_files(glob).sort
|
218
|
+
end
|
219
|
+
|
220
|
+
def fold_files files
|
221
|
+
files.inject([]){ |r, path|
|
222
|
+
if File.file?(path) && path !~ %r{/\.git(/|$)} &&
|
223
|
+
(rpath = path[%r{^#{escaped_dir}/(.*$)}, 1])
|
224
|
+
r << rpath
|
225
|
+
elsif File.symlink?(path) # walk into symlinks...
|
226
|
+
r.concat(fold_files(glob(File.expand_path(path,
|
227
|
+
File.readlink(path)))))
|
121
228
|
else
|
122
|
-
|
229
|
+
r
|
123
230
|
end
|
124
|
-
}
|
231
|
+
}
|
125
232
|
end
|
126
233
|
|
127
234
|
def gem_files
|
128
|
-
@gem_files ||= all_files
|
235
|
+
@gem_files ||= all_files.reject{ |f|
|
236
|
+
f =~ submodules_pattern ||
|
237
|
+
(f =~ ignored_pattern && !git_files.include?(f))
|
238
|
+
}
|
129
239
|
end
|
130
240
|
|
131
|
-
def
|
132
|
-
@
|
133
|
-
|
241
|
+
def test_files
|
242
|
+
@test_files ||= gem_files.grep(%r{^test/(.+?/)*test_.+?\.rb$})
|
243
|
+
end
|
244
|
+
|
245
|
+
def bin_files
|
246
|
+
@bin_files ||= gem_files.grep(%r{^bin/}).map{ |f| File.basename(f) }
|
134
247
|
end
|
135
248
|
|
136
249
|
def git_files
|
137
250
|
@git_files ||= if File.exist?("#{dir}/.git")
|
138
|
-
|
251
|
+
git('ls-files').split("\n")
|
139
252
|
else
|
140
253
|
[]
|
141
254
|
end
|
142
255
|
end
|
143
256
|
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
257
|
+
def ignored_files
|
258
|
+
@ignored_files ||= all_files.grep(ignored_pattern)
|
259
|
+
end
|
260
|
+
|
261
|
+
def ignored_pattern
|
262
|
+
@ignored_pattern ||= if gitignore.empty?
|
263
|
+
/^$/
|
264
|
+
else
|
265
|
+
Regexp.new(expand_patterns(gitignore).join('|'))
|
266
|
+
end
|
148
267
|
end
|
149
268
|
|
150
|
-
def
|
151
|
-
@
|
152
|
-
|
153
|
-
|
154
|
-
|
269
|
+
def submodules_pattern
|
270
|
+
@submodules_pattern ||= if submodules.empty?
|
271
|
+
/^$/
|
272
|
+
else
|
273
|
+
Regexp.new(submodules.map{ |path|
|
274
|
+
"^#{Regexp.escape(path)}/" }.join('|'))
|
275
|
+
end
|
155
276
|
end
|
156
277
|
|
157
278
|
def expand_patterns pathes
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
Dir[path] +
|
164
|
-
Pathname.new(File.dirname(path)).children.select(&:directory?).
|
165
|
-
map{ |prefix| "#{prefix}/#{File.basename(path)}" })
|
166
|
-
end
|
167
|
-
}.flatten
|
279
|
+
# http://git-scm.com/docs/gitignore
|
280
|
+
pathes.flat_map{ |path|
|
281
|
+
# we didn't implement negative pattern for now
|
282
|
+
Regexp.escape(path).sub(%r{^/}, '^').gsub(/\\\*/, '[^/]*')
|
283
|
+
}
|
168
284
|
end
|
169
285
|
|
170
286
|
def gitignore
|
171
|
-
if File.exist?(path = "#{dir}/.gitignore")
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
287
|
+
@gitignore ||= if File.exist?(path = "#{dir}/.gitignore")
|
288
|
+
File.read(path).lines.
|
289
|
+
reject{ |l| l == /^\s*(#|\s+$)/ }.map(&:strip)
|
290
|
+
else
|
291
|
+
[]
|
292
|
+
end
|
176
293
|
end
|
177
294
|
end
|
178
295
|
|
@@ -180,89 +297,42 @@ namespace :gem do
|
|
180
297
|
|
181
298
|
desc 'Install gem'
|
182
299
|
task :install => [:build] do
|
183
|
-
|
300
|
+
Gemgem.gem_install
|
184
301
|
end
|
185
302
|
|
186
303
|
desc 'Build gem'
|
187
304
|
task :build => [:spec] do
|
188
|
-
|
189
|
-
|
190
|
-
|
305
|
+
Gemgem.gem_build
|
306
|
+
end
|
307
|
+
|
308
|
+
desc 'Generate gemspec'
|
309
|
+
task :spec do
|
310
|
+
Gemgem.gem_spec
|
191
311
|
end
|
192
312
|
|
193
313
|
desc 'Release gem'
|
194
314
|
task :release => [:spec, :check, :build] do
|
195
|
-
|
196
|
-
sh("git push")
|
197
|
-
sh("git push --tags")
|
198
|
-
sh("#{Gem.ruby} -S gem push pkg/#{Gemgem.gem_tag}.gem")
|
315
|
+
Gemgem.gem_release
|
199
316
|
end
|
200
317
|
|
201
318
|
task :check do
|
202
|
-
|
203
|
-
|
204
|
-
if ENV['VERSION'].nil?
|
205
|
-
puts("\e[35mExpected " \
|
206
|
-
"\e[33mVERSION\e[35m=\e[33m#{ver}\e[0m")
|
207
|
-
exit(1)
|
208
|
-
|
209
|
-
elsif ENV['VERSION'] != ver
|
210
|
-
puts("\e[35mExpected \e[33mVERSION\e[35m=\e[33m#{ver} " \
|
211
|
-
"\e[35mbut got\n " \
|
212
|
-
"\e[33mVERSION\e[35m=\e[33m#{ENV['VERSION']}\e[0m")
|
213
|
-
exit(2)
|
214
|
-
end
|
319
|
+
Gemgem.gem_check
|
215
320
|
end
|
216
321
|
|
217
322
|
end # of gem namespace
|
218
323
|
|
219
|
-
desc 'Run tests
|
324
|
+
desc 'Run tests'
|
220
325
|
task :test do
|
221
|
-
|
222
|
-
Bacon.extend(Bacon::TestUnitOutput)
|
223
|
-
Bacon.summary_on_exit
|
224
|
-
$LOAD_PATH.unshift('lib')
|
225
|
-
Dir['./test/**/test_*.rb'].each{ |file| require file[0..-4] }
|
226
|
-
end
|
227
|
-
|
228
|
-
desc 'Run tests with shell'
|
229
|
-
task 'test:shell', :RUBY_OPTS do |t, args|
|
230
|
-
files = Dir['test/**/test_*.rb'].join(' ')
|
231
|
-
|
232
|
-
cmd = [Gem.ruby, args[:RUBY_OPTS],
|
233
|
-
'-I', 'lib', '-S', 'bacon', '--quiet', files]
|
234
|
-
|
235
|
-
sh(cmd.compact.join(' '))
|
236
|
-
end
|
237
|
-
|
238
|
-
desc 'Generate ann markdown'
|
239
|
-
task 'ann:md' => ['gem:spec'] do
|
240
|
-
puts Gemgem.ann_md
|
241
|
-
end
|
242
|
-
|
243
|
-
desc 'Generate ann html'
|
244
|
-
task 'ann:html' => ['gem:spec'] do
|
245
|
-
puts Gemgem.ann_html
|
246
|
-
end
|
247
|
-
|
248
|
-
desc 'Generate ann email'
|
249
|
-
task 'ann:email' => ['gem:spec'] do
|
250
|
-
puts Gemgem.ann_email
|
251
|
-
end
|
252
|
-
|
253
|
-
desc 'Generate rdoc'
|
254
|
-
task :doc => ['gem:spec'] do
|
255
|
-
sh("yardoc -o rdoc --main README.md" \
|
256
|
-
" --files #{Gemgem.spec.extra_rdoc_files.join(',')}")
|
326
|
+
Gemgem.test
|
257
327
|
end
|
258
328
|
|
259
|
-
desc '
|
329
|
+
desc 'Trash ignored files'
|
260
330
|
task :clean => ['gem:spec'] do
|
261
|
-
|
262
|
-
sh "mkdir -p #{trash}" unless File.exist?(File.expand_path(trash))
|
263
|
-
Gemgem.ignored_files.each{ |file| sh "mv #{file} #{trash}" }
|
331
|
+
Gemgem.clean
|
264
332
|
end
|
265
333
|
|
266
334
|
task :default do
|
267
|
-
|
335
|
+
# Is there a reliable way to do this in the current process?
|
336
|
+
# It failed miserably before between Rake versions...
|
337
|
+
exec "#{Gem.ruby} -S #{$PROGRAM_NAME} -f #{Rake.application.rakefile} -T"
|
268
338
|
end
|
metadata
CHANGED
@@ -1,97 +1,97 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dm-is-reflective
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.3.
|
4
|
+
version: 1.3.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Lin Jen-Shin (godfat)
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2017-12-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: dm-core
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '0'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- -
|
24
|
+
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: dm-do-adapter
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- -
|
31
|
+
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '0'
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- -
|
38
|
+
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: dm-migrations
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- -
|
45
|
+
- - ">="
|
46
46
|
- !ruby/object:Gem::Version
|
47
47
|
version: '0'
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- -
|
52
|
+
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: dm-sqlite-adapter
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- -
|
59
|
+
- - ">="
|
60
60
|
- !ruby/object:Gem::Version
|
61
61
|
version: '0'
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- -
|
66
|
+
- - ">="
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '0'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: dm-mysql-adapter
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
|
-
- -
|
73
|
+
- - ">="
|
74
74
|
- !ruby/object:Gem::Version
|
75
75
|
version: '0'
|
76
76
|
type: :development
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
|
-
- -
|
80
|
+
- - ">="
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: '0'
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
84
|
name: dm-postgres-adapter
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
|
-
- -
|
87
|
+
- - ">="
|
88
88
|
- !ruby/object:Gem::Version
|
89
89
|
version: '0'
|
90
90
|
type: :development
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
|
-
- -
|
94
|
+
- - ">="
|
95
95
|
- !ruby/object:Gem::Version
|
96
96
|
version: '0'
|
97
97
|
description: |-
|
@@ -104,9 +104,9 @@ executables:
|
|
104
104
|
extensions: []
|
105
105
|
extra_rdoc_files: []
|
106
106
|
files:
|
107
|
-
- .gitignore
|
108
|
-
- .gitmodules
|
109
|
-
- .travis.yml
|
107
|
+
- ".gitignore"
|
108
|
+
- ".gitmodules"
|
109
|
+
- ".travis.yml"
|
110
110
|
- CHANGES.md
|
111
111
|
- Gemfile
|
112
112
|
- LICENSE
|
@@ -124,7 +124,7 @@ files:
|
|
124
124
|
- lib/dm-is-reflective/runner.rb
|
125
125
|
- lib/dm-is-reflective/test.rb
|
126
126
|
- lib/dm-is-reflective/version.rb
|
127
|
-
- task
|
127
|
+
- task/README.md
|
128
128
|
- task/gemgem.rb
|
129
129
|
- test/setup_db.sh
|
130
130
|
- test/test_mysql.rb
|
@@ -141,17 +141,17 @@ require_paths:
|
|
141
141
|
- lib
|
142
142
|
required_ruby_version: !ruby/object:Gem::Requirement
|
143
143
|
requirements:
|
144
|
-
- -
|
144
|
+
- - ">="
|
145
145
|
- !ruby/object:Gem::Version
|
146
146
|
version: '0'
|
147
147
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
148
148
|
requirements:
|
149
|
-
- -
|
149
|
+
- - ">="
|
150
150
|
- !ruby/object:Gem::Version
|
151
151
|
version: '0'
|
152
152
|
requirements: []
|
153
153
|
rubyforge_project:
|
154
|
-
rubygems_version: 2.
|
154
|
+
rubygems_version: 2.7.3
|
155
155
|
signing_key:
|
156
156
|
specification_version: 4
|
157
157
|
summary: DataMapper plugin that helps you manipulate an existing database.
|
data/task/.gitignore
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
*.rbc
|