dbt 1.1.5 → 1.2.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.
- checksums.yaml +4 -4
- data/README.md +43 -5
- data/lib/dbt.rb +6 -63
- data/lib/dbt/android.rb +19 -0
- data/lib/dbt/ios.rb +70 -0
- data/lib/dbt/version.rb +1 -1
- metadata +7 -8
- data/.gitignore +0 -1
- data/LICENSE +0 -26
- data/dbt.gemspec +0 -36
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fe25a13de0aa54db62876aa76a0fb8354be01525
|
4
|
+
data.tar.gz: 9fbd2c03eaba0cb009098f9bc77e467f7e8730e6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 60727b62db58afff9a18756be56ecbd83ad56a69c0fcebbd9acecdab55bcaeaae5210f31dd3de77dc2b51aad4ec7d80f5484cc824c163bc983d37594b4217a02
|
7
|
+
data.tar.gz: ea073cf767e28b1bc0bcc100f1fa0224848151b73026050161f4e536b854f5127204de1242cf2cab6bf9a3ebd73053afc9b4b68aa58c40984f36037226311c33
|
data/README.md
CHANGED
@@ -1,11 +1,16 @@
|
|
1
1
|
DBT
|
2
2
|
---
|
3
3
|
|
4
|
-
DBT (Dependencies and deBugging Tool) is a tool that
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
4
|
+
DBT (Dependencies and deBugging Tool) is a RubyMotion tool that works for iOS, OSX,
|
5
|
+
and Android to detect classes and dependencies. It will declare them in your config
|
6
|
+
so you don't have to manually manage them.
|
7
|
+
|
8
|
+
# iOS/OSX Dependency Analysis
|
9
|
+
|
10
|
+
DBT will look for `break`, `require`, and `provides` commands (and does a *teensy*
|
11
|
+
bit of code analyzing - it will detect VERY basic class and module declarations)
|
12
|
+
to make your RubyMotion `debugger_cmds` file easy to create, and declaring your file
|
13
|
+
dependencies stupid simple.
|
9
14
|
|
10
15
|
**CAUTION**: It overwrites the `debugger_cmds` file!
|
11
16
|
|
@@ -102,6 +107,31 @@ module Foo ; module Bar
|
|
102
107
|
end end
|
103
108
|
```
|
104
109
|
|
110
|
+
# Android
|
111
|
+
|
112
|
+
In Android, dependencies are handled automatically, but you need to declare your
|
113
|
+
`Android::App::Activity` classes in your config. Normally, you'd do something like
|
114
|
+
this:
|
115
|
+
|
116
|
+
```ruby
|
117
|
+
app.sub_activities = [
|
118
|
+
"FirstActivity",
|
119
|
+
"SecondActivity",
|
120
|
+
# etc
|
121
|
+
]
|
122
|
+
```
|
123
|
+
|
124
|
+
With DBT, you can now add these declarations to the top of your activities:
|
125
|
+
|
126
|
+
```ruby
|
127
|
+
# @activity FirstActivity
|
128
|
+
class FirstActivity < Android::App::Activity
|
129
|
+
# ...
|
130
|
+
end
|
131
|
+
```
|
132
|
+
|
133
|
+
That's all the functionality we have for Android at the moment, but it's pretty helpful!
|
134
|
+
|
105
135
|
# Breakpoints
|
106
136
|
|
107
137
|
Breakpoints are created using the syntax `#--> break`, with two or more dashes
|
@@ -126,3 +156,11 @@ If a line number is given to the `break` command, a breakpoint will be added at
|
|
126
156
|
*that* line, otherwise it will be added to the line below `break`. It's better
|
127
157
|
to insert the `#--> break` where you NEED it, rather than hardcode line numbers,
|
128
158
|
since line numbers are not constant.
|
159
|
+
|
160
|
+
# Running Tests
|
161
|
+
|
162
|
+
We have two simple test files, so just run them manually.
|
163
|
+
|
164
|
+
```sh-session
|
165
|
+
$ ruby spec/ios_spec.rb && ruby spec/android_spec.rb
|
166
|
+
```
|
data/lib/dbt.rb
CHANGED
@@ -1,71 +1,14 @@
|
|
1
1
|
# coding: utf-8
|
2
|
+
require 'dbt/version'
|
3
|
+
require 'dbt/android'
|
4
|
+
require 'dbt/ios'
|
2
5
|
|
3
6
|
module DBT
|
4
7
|
module_function
|
5
8
|
def analyze(app)
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
default_providers = {}
|
10
|
-
|
11
|
-
files = app.files.flatten.uniq
|
12
|
-
files.flatten.each do |filename|
|
13
|
-
File.open(filename, 'r:UTF-8') do |file|
|
14
|
-
file.each_line do |line|
|
15
|
-
command = false
|
16
|
-
|
17
|
-
if line =~ /^#--+>/
|
18
|
-
command, dep = line.rstrip.sub(/^#--+> */, '').split(' ', 2)
|
19
|
-
elsif line =~ /^[ \t]*#[ \t]*@(provides|requires)/
|
20
|
-
command, dep = line.rstrip.sub(/^[ \t]*#[ \t]*@/, '').split(' ', 2)
|
21
|
-
end
|
22
|
-
|
23
|
-
if command
|
24
|
-
case command
|
25
|
-
when 'break'
|
26
|
-
dep ||= file.lineno + 1
|
27
|
-
debugger_cmds_output += "breakpoint set --file #{File.basename filename} --line #{dep}\n"
|
28
|
-
when 'provides'
|
29
|
-
if providers.key? dep
|
30
|
-
puts "\033[1m!HAY DEMASIADOS!\033[0m \033[1;31m#{dep}\033[0m"
|
31
|
-
end
|
32
|
-
providers[dep] = filename
|
33
|
-
when 'requires'
|
34
|
-
dependers[filename] << dep
|
35
|
-
else
|
36
|
-
puts "\033[1m!NO COMPRENDO!\033[0m \"#{command} #{dep}\""
|
37
|
-
puts "\033[1;31m#{filename}:#{file.lineno}\033[0m"
|
38
|
-
end
|
39
|
-
elsif line =~ /^[ \t]*class[ \t]+(\w+)/
|
40
|
-
dep = "class:#{$1}"
|
41
|
-
default_providers[dep] = filename
|
42
|
-
elsif line =~ /^[ \t]*module[ \t]+(\w+)/
|
43
|
-
dep = "module:#{$1}"
|
44
|
-
default_providers[dep] = filename
|
45
|
-
end
|
46
|
-
end
|
47
|
-
end
|
48
|
-
end # files
|
49
|
-
|
50
|
-
default_providers.each do |dep, filename|
|
51
|
-
providers[dep] ||= filename
|
52
|
-
end
|
53
|
-
|
54
|
-
dependers.each do |filename, dependencies|
|
55
|
-
if dep = dependencies.find { |dep| ! providers.include? dep }
|
56
|
-
puts "\033[1m!NO HAY!\033[0m \033[1;31m#{dep}\033[0m"
|
57
|
-
raise "#{filename} could not find a provider for #{dep}"
|
58
|
-
else
|
59
|
-
app.files_dependencies filename => dependencies.map { |dep| providers[dep] }
|
60
|
-
end
|
61
|
-
end
|
62
|
-
|
63
|
-
unless debugger_cmds_output.empty?
|
64
|
-
File.open('debugger_cmds', 'w') do |file|
|
65
|
-
file.write "#------> Creado por el DBT <------#\n"
|
66
|
-
file.write debugger_cmds_output
|
67
|
-
end
|
68
|
-
end
|
9
|
+
android = app.respond_to?(:main_activity)
|
10
|
+
DBT::Android.analyze(app) if android
|
11
|
+
DBT::IOS.analyze(app) unless android
|
69
12
|
end
|
70
13
|
end
|
71
14
|
|
data/lib/dbt/android.rb
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
module DBT
|
2
|
+
module Android
|
3
|
+
module_function
|
4
|
+
def analyze(app)
|
5
|
+
activities = []
|
6
|
+
files = app.files.flatten.uniq
|
7
|
+
files.each do |filename|
|
8
|
+
File.open(filename, 'r:UTF-8') do |file|
|
9
|
+
file.each_line do |line|
|
10
|
+
if line =~ /^[ \t]*#[ \t]*@(activity)/
|
11
|
+
command, activity = line.rstrip.sub(/^[ \t]*#[ \t]*@/, '').split(' ', 2)
|
12
|
+
app.sub_activities << activity
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
data/lib/dbt/ios.rb
ADDED
@@ -0,0 +1,70 @@
|
|
1
|
+
module DBT
|
2
|
+
module IOS
|
3
|
+
module_function
|
4
|
+
def analyze(app)
|
5
|
+
debugger_cmds_output = ''
|
6
|
+
dependers = Hash.new { |hash,key| hash[key] = [] }
|
7
|
+
providers = {}
|
8
|
+
default_providers = {}
|
9
|
+
|
10
|
+
files = app.files.flatten.uniq
|
11
|
+
files.flatten.each do |filename|
|
12
|
+
File.open(filename, 'r:UTF-8') do |file|
|
13
|
+
file.each_line do |line|
|
14
|
+
command = false
|
15
|
+
|
16
|
+
if line =~ /^#--+>/
|
17
|
+
command, dep = line.rstrip.sub(/^#--+> */, '').split(' ', 2)
|
18
|
+
elsif line =~ /^[ \t]*#[ \t]*@(provides|requires)/
|
19
|
+
command, dep = line.rstrip.sub(/^[ \t]*#[ \t]*@/, '').split(' ', 2)
|
20
|
+
end
|
21
|
+
|
22
|
+
if command
|
23
|
+
case command
|
24
|
+
when 'break'
|
25
|
+
dep ||= file.lineno + 1
|
26
|
+
debugger_cmds_output += "breakpoint set --file #{File.basename filename} --line #{dep}\n"
|
27
|
+
when 'provides'
|
28
|
+
if providers.key? dep
|
29
|
+
puts "\033[1m!HAY DEMASIADOS!\033[0m \033[1;31m#{dep}\033[0m"
|
30
|
+
end
|
31
|
+
providers[dep] = filename
|
32
|
+
when 'requires'
|
33
|
+
dependers[filename] << dep
|
34
|
+
else
|
35
|
+
puts "\033[1m!NO COMPRENDO!\033[0m \"#{command} #{dep}\""
|
36
|
+
puts "\033[1;31m#{filename}:#{file.lineno}\033[0m"
|
37
|
+
end
|
38
|
+
elsif line =~ /^[ \t]*class[ \t]+(\w+)/
|
39
|
+
dep = "class:#{$1}"
|
40
|
+
default_providers[dep] = filename
|
41
|
+
elsif line =~ /^[ \t]*module[ \t]+(\w+)/
|
42
|
+
dep = "module:#{$1}"
|
43
|
+
default_providers[dep] = filename
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end # files
|
48
|
+
|
49
|
+
default_providers.each do |dep, filename|
|
50
|
+
providers[dep] ||= filename
|
51
|
+
end
|
52
|
+
|
53
|
+
dependers.each do |filename, dependencies|
|
54
|
+
if dep = dependencies.find { |dep| ! providers.include? dep }
|
55
|
+
puts "\033[1m!NO HAY!\033[0m \033[1;31m#{dep}\033[0m"
|
56
|
+
raise "#{filename} could not find a provider for #{dep}"
|
57
|
+
else
|
58
|
+
app.files_dependencies filename => dependencies.map { |dep| providers[dep] }
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
unless debugger_cmds_output.empty?
|
63
|
+
File.open('debugger_cmds', 'w') do |file|
|
64
|
+
file.write "#------> Creado por el DBT <------#\n"
|
65
|
+
file.write debugger_cmds_output
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
data/lib/dbt/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dbt
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Colin Thomas-Arnold <colinta@gmail.com>
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-08-11 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: |
|
14
14
|
== DBT (Dependencies and deBugging Tool)
|
@@ -31,12 +31,11 @@ executables: []
|
|
31
31
|
extensions: []
|
32
32
|
extra_rdoc_files: []
|
33
33
|
files:
|
34
|
-
- .
|
35
|
-
-
|
36
|
-
- README.md
|
37
|
-
- dbt.gemspec
|
38
|
-
- lib/dbt.rb
|
34
|
+
- lib/dbt/android.rb
|
35
|
+
- lib/dbt/ios.rb
|
39
36
|
- lib/dbt/version.rb
|
37
|
+
- lib/dbt.rb
|
38
|
+
- README.md
|
40
39
|
homepage: https://github.com/colinta/dbt
|
41
40
|
licenses:
|
42
41
|
- BSD
|
@@ -57,7 +56,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
57
56
|
version: '0'
|
58
57
|
requirements: []
|
59
58
|
rubyforge_project:
|
60
|
-
rubygems_version: 2.0.
|
59
|
+
rubygems_version: 2.0.3
|
61
60
|
signing_key:
|
62
61
|
specification_version: 4
|
63
62
|
summary: Keep your Rakefile and debugger_cmds files short and consistent
|
data/.gitignore
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
dbt-*.gem
|
data/LICENSE
DELETED
@@ -1,26 +0,0 @@
|
|
1
|
-
Copyright (c) 2012, Colin Thomas Arnold Gray
|
2
|
-
All rights reserved.
|
3
|
-
|
4
|
-
Redistribution and use in source and binary forms, with or without
|
5
|
-
modification, are permitted provided that the following conditions are met:
|
6
|
-
|
7
|
-
1. Redistributions of source code must retain the above copyright notice, this
|
8
|
-
list of conditions and the following disclaimer.
|
9
|
-
2. Redistributions in binary form must reproduce the above copyright notice,
|
10
|
-
this list of conditions and the following disclaimer in the documentation
|
11
|
-
and/or other materials provided with the distribution.
|
12
|
-
|
13
|
-
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
14
|
-
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
15
|
-
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
16
|
-
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
|
17
|
-
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
18
|
-
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
19
|
-
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
20
|
-
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
21
|
-
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
22
|
-
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
23
|
-
|
24
|
-
The views and conclusions contained in the software and documentation are those
|
25
|
-
of the authors and should not be interpreted as representing official policies,
|
26
|
-
either expressed or implied, of the DBT Project.
|
data/dbt.gemspec
DELETED
@@ -1,36 +0,0 @@
|
|
1
|
-
# -*- encoding: utf-8 -*-
|
2
|
-
require File.expand_path('../lib/dbt/version.rb', __FILE__)
|
3
|
-
|
4
|
-
Gem::Specification.new do |gem|
|
5
|
-
gem.name = 'dbt'
|
6
|
-
gem.version = DBT::VERSION
|
7
|
-
gem.email = 'colinta@gmail.com'
|
8
|
-
gem.licenses = ['BSD']
|
9
|
-
|
10
|
-
gem.authors = ['Colin Thomas-Arnold <colinta@gmail.com>']
|
11
|
-
gem.email = ['colinta@gmail.com']
|
12
|
-
|
13
|
-
gem.description = <<-DESC
|
14
|
-
== DBT (Dependencies and deBugging Tool)
|
15
|
-
|
16
|
-
DBT is a tool that helps declare dependencies (+app.files_dependencies+) and
|
17
|
-
assists with debugging in a RubyMotion project. It looks for 'break',
|
18
|
-
'requires', and 'provides' commands (it does a *teensy* bit of code analyzing to
|
19
|
-
provide some defaults) to make your RubyMotion +Rakefile+ and +debugger_cmds+
|
20
|
-
files short and consistent.
|
21
|
-
|
22
|
-
To use, include this gem, and add +DBT.analyze(app)+ to your +Rakefile+ in the
|
23
|
-
<tt>Motion::Project::App.setup</tt> block. In your source code you can add DBT
|
24
|
-
commands and those will be translated into directives for
|
25
|
-
+app.files_dependencies+ and +debugger_cmds+.
|
26
|
-
|
27
|
-
Run +rake+ or <tt>rake debug=1</tt>, and off you go!
|
28
|
-
DESC
|
29
|
-
|
30
|
-
gem.summary = 'Keep your Rakefile and debugger_cmds files short and consistent'
|
31
|
-
gem.homepage = 'https://github.com/colinta/dbt'
|
32
|
-
|
33
|
-
gem.files = `git ls-files`.split($\)
|
34
|
-
gem.require_paths = ['lib']
|
35
|
-
gem.test_files = gem.files.grep(%r{^spec/})
|
36
|
-
end
|