dbt 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 6b0184ee78207b1c1bab0405b741d061480160ec
4
+ data.tar.gz: 184709d851ad68ca44ad667848558b051ec88fd5
5
+ SHA512:
6
+ metadata.gz: c7c6d8853ffb4ae849ca8cad52ebeede8095adaea0757dceb6bade4de121b81316dafaf198b5c89c0c2f84ec930de689551bd27292ff6597cac01051d3a3d5fb
7
+ data.tar.gz: 138fc508e6636a95760b687b1f3208b6f6f468e2680352bfa4d841933bacaf200df8779f953572b44852a6eafcea6f7ba5b2143e12ab69dc969019b4c0fb8eb3
@@ -0,0 +1 @@
1
+ dbt-*.gem
data/LICENSE ADDED
@@ -0,0 +1,26 @@
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.
@@ -0,0 +1,59 @@
1
+ DBT
2
+ ----------
3
+
4
+ DBT (Dependencies and deBugging Tool) is a tool that looks for `break`,
5
+ `require`, and `provides` commands (and does a *teensy* bit of code analyzing -
6
+ it will detect VERY basic class and module declarations) to make your RubyMotion
7
+ `Rakefile` and `debugger_cmds` files short and consistent.
8
+
9
+ **CAUTION**: It overwrites the `debugger_cmds` file!
10
+
11
+ To use, include this gem (`gem 'depdep'`), and add `app.analyze` to your
12
+ `Rakefile`, after you have added your libraries and whatnot. It looks at
13
+ `app.files` and scans those files, so I mean it when I say "after you have added
14
+ your libraries and whatnot". In your source code you add DBT commands:
15
+
16
+ ```ruby
17
+ # @provides Foo
18
+ # @requires Bar
19
+ def scary_method
20
+ #-----> break
21
+ doing
22
+ interesting
23
+ stuff
24
+ end
25
+ ```
26
+
27
+ When you run `rake`, these commands will be found and translated into directives
28
+ for `app.files_dependencies` and `debugger_cmds`. Run `rake` or `rake debug=1`,
29
+ and off you go!
30
+
31
+ Your files will be grep'd for `^\w*(class|module)`, and these will be registered
32
+ automatically as:
33
+
34
+ ```ruby
35
+ # @provides class:ClassName
36
+ class ClassName
37
+ end
38
+
39
+ # @provides module:ModuleName
40
+ class ModuleName
41
+ end
42
+ ```
43
+
44
+ So right out of the box, you can add `# @requires class:Foo` if you're having
45
+ trouble with dependencies and want a quick fix without having to add
46
+ `# @provides` declarations all over the place.
47
+
48
+ The syntax for a command is:
49
+
50
+ ```regex
51
+ ^#[ \t]*@(provides|requires)
52
+ or for break points:
53
+ ^#--+> *(break)( *(\w+|[0-9]+))?$
54
+ ```
55
+
56
+ If a line number is given to the `break` command, a breakpoint will be added *at
57
+ that line*, otherwise it will be added to the line below `break`. It's better to
58
+ insert the `#--> break` where you NEED it, rather than hardcode line numbers,
59
+ since line numbers are not constant.
@@ -0,0 +1,34 @@
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) is a tool that helps declare and declare
15
+ dependencies (+app.files_dependencies+), and assists with debugging, in
16
+ RubyMotion project. It looks for 'break', 'requires', and 'provides' commands
17
+ (it does a *teensy* bit of code analyzing to provide some defaults) to make your
18
+ RubyMotion +Rakefile+ and +debugger_cmds+ files short and consistent.
19
+
20
+ To use, include this gem, and add +app.analyze+ to your +Rakefile+ in the
21
+ +Motion::Project::App.setup+ block. In your source code you can add DBT
22
+ commands and those will be translated into directives for
23
+ `app.files_dependencies` and `debugger_cmds`.
24
+
25
+ Run +rake+ or +rake debug=1+, and off you go!
26
+ DESC
27
+
28
+ gem.summary = 'Keep your Rakefile and debugger_cmds files short and consistent'
29
+ gem.homepage = 'https://github.com/colinta/dbt'
30
+
31
+ gem.files = `git ls-files`.split($\)
32
+ gem.require_paths = ['lib']
33
+ gem.test_files = gem.files.grep(%r{^spec/})
34
+ end
@@ -0,0 +1,63 @@
1
+ # coding: utf-8
2
+
3
+ Motion::Project::App.setup do |app|
4
+ def app.analyze
5
+ debugger_cmds_output = "#------> Creado por el Analizarruptor <------#\n"
6
+ dependers = Hash.new { |hash,key| hash[key] = [] }
7
+ providers = {}
8
+
9
+ files.uniq!
10
+ files.each do |filename|
11
+ File.open(filename, 'r') do |file|
12
+ file.each_line do |line|
13
+ command = false
14
+
15
+ if line =~ /^#--+>/
16
+ command, dep = line.rstrip.sub(/^#--+> */, '').split(' ', 2)
17
+ elsif line =~ /^#[ \t]*@(provides|requires)/
18
+ command, dep = line.rstrip.sub(/^#[ \t]*@/, '').split(' ', 2)
19
+ end
20
+
21
+ if command
22
+ case command
23
+ when 'break'
24
+ dep ||= file.lineno + 1
25
+ debugger_cmds_output += "break #{File.basename filename}:#{dep}\n"
26
+ when 'provides'
27
+ if providers.key? dep
28
+ puts "\033[1m!HAY DEMASIADOS!\033[0m \033[1;31m#{dep}\033[0m"
29
+ end
30
+ providers[dep] = filename
31
+ when 'requires'
32
+ dependers[filename] << dep
33
+ else
34
+ puts "\033[1m!NO COMPRENDO!\033[0m \"#{command} #{dep}\""
35
+ puts "\033[1;31m#{filename}:#{file.lineno}\033[0m"
36
+ end
37
+ elsif line =~ /^\s*class\s+(\w+)/
38
+ dep = "class:#{$1}"
39
+ providers[dep] = filename
40
+ elsif line =~ /^\s*module\s+(\w+)/
41
+ dep = "module:#{$1}"
42
+ providers[dep] = filename
43
+ end
44
+ end
45
+ end
46
+ end # files
47
+
48
+ dependers.each do |filename, dependencies|
49
+ if dep = dependencies.find { |dep| ! providers.include? dep }
50
+ puts "\033[1m!NO HAY!\033[0m \033[1;31m#{dep}\033[0m"
51
+ raise "#{filename} could not find a provider for #{dep}"
52
+ else
53
+ self.files_dependencies filename => dependencies.map{|dep| providers[dep] }
54
+ end
55
+ end
56
+
57
+ unless debugger_cmds_output.empty?
58
+ File.open('debugger_cmds', 'w') do |file|
59
+ file.write debugger_cmds_output
60
+ end
61
+ end
62
+ end
63
+ end
@@ -0,0 +1,3 @@
1
+ module DBT
2
+ VERSION = '1.0.0'
3
+ end
metadata ADDED
@@ -0,0 +1,62 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: dbt
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Colin Thomas-Arnold <colinta@gmail.com>
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-02-28 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: |
14
+ DBT (Dependencies and deBugging Tool) is a tool that helps declare and declare
15
+ dependencies (+app.files_dependencies+), and assists with debugging, in
16
+ RubyMotion project. It looks for 'break', 'requires', and 'provides' commands
17
+ (it does a *teensy* bit of code analyzing to provide some defaults) to make your
18
+ RubyMotion +Rakefile+ and +debugger_cmds+ files short and consistent.
19
+
20
+ To use, include this gem, and add +app.analyze+ to your +Rakefile+ in the
21
+ +Motion::Project::App.setup+ block. In your source code you can add DBT
22
+ commands and those will be translated into directives for
23
+ `app.files_dependencies` and `debugger_cmds`.
24
+
25
+ Run +rake+ or +rake debug=1+, and off you go!
26
+ email:
27
+ - colinta@gmail.com
28
+ executables: []
29
+ extensions: []
30
+ extra_rdoc_files: []
31
+ files:
32
+ - .gitignore
33
+ - LICENSE
34
+ - README.md
35
+ - dbt.gemspec
36
+ - lib/dbt.rb
37
+ - lib/dbt/version.rb
38
+ homepage: https://github.com/colinta/dbt
39
+ licenses:
40
+ - BSD
41
+ metadata: {}
42
+ post_install_message:
43
+ rdoc_options: []
44
+ require_paths:
45
+ - lib
46
+ required_ruby_version: !ruby/object:Gem::Requirement
47
+ requirements:
48
+ - - '>='
49
+ - !ruby/object:Gem::Version
50
+ version: '0'
51
+ required_rubygems_version: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - '>='
54
+ - !ruby/object:Gem::Version
55
+ version: '0'
56
+ requirements: []
57
+ rubyforge_project:
58
+ rubygems_version: 2.0.3
59
+ signing_key:
60
+ specification_version: 4
61
+ summary: Keep your Rakefile and debugger_cmds files short and consistent
62
+ test_files: []