ritsu 0.7.0 → 0.7.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (89) hide show
  1. data/README.md +95 -95
  2. data/bin/define_cpp_string +54 -54
  3. data/bin/ritsu +31 -31
  4. data/lib/ritsu.rb +16 -16
  5. data/lib/ritsu/block.rb +258 -258
  6. data/lib/ritsu/ext/cuda.rb +5 -5
  7. data/lib/ritsu/ext/cuda/external_library.rb +15 -15
  8. data/lib/ritsu/ext/cuda/project.rb +31 -31
  9. data/lib/ritsu/ext/cuda/src_files/cu_file.rb +46 -46
  10. data/lib/ritsu/ext/cuda/src_files/target_cmake_lists.rb +110 -110
  11. data/lib/ritsu/ext/cuda/target.rb +16 -16
  12. data/lib/ritsu/ext/cuda/targets/library.rb +16 -16
  13. data/lib/ritsu/ext/fake_install.rb +2 -2
  14. data/lib/ritsu/ext/fake_install/project.rb +16 -16
  15. data/lib/ritsu/ext/fake_install/src_files/project_cmake_lists.rb +45 -45
  16. data/lib/ritsu/ext/glsl.rb +1 -1
  17. data/lib/ritsu/ext/glsl/src_files/frag_file.rb +70 -70
  18. data/lib/ritsu/ext/glsl/src_files/vert_file.rb +70 -70
  19. data/lib/ritsu/ext/qt.rb +4 -4
  20. data/lib/ritsu/ext/qt/project.rb +47 -47
  21. data/lib/ritsu/ext/qt/src_files/header_file.rb +60 -60
  22. data/lib/ritsu/ext/qt/src_files/target_cmake_lists.rb +106 -106
  23. data/lib/ritsu/ext/qt/src_files/ui_file.rb +46 -46
  24. data/lib/ritsu/ext/test_case.rb +19 -19
  25. data/lib/ritsu/external_library.rb +46 -46
  26. data/lib/ritsu/project.rb +93 -93
  27. data/lib/ritsu/project_generator.rb +33 -33
  28. data/lib/ritsu/project_generators/default_generator.rb +72 -72
  29. data/lib/ritsu/project_generators/default_generator_files/Thorfile.erb +8 -8
  30. data/lib/ritsu/project_generators/default_generator_files/meta/project.rb.erb +10 -10
  31. data/lib/ritsu/src_file.rb +79 -79
  32. data/lib/ritsu/src_files.rb +12 -12
  33. data/lib/ritsu/src_files/cpp_file.rb +43 -43
  34. data/lib/ritsu/src_files/executable_cmake_lists.rb +39 -39
  35. data/lib/ritsu/src_files/header_file.rb +60 -60
  36. data/lib/ritsu/src_files/project_cmake_lists.rb +133 -133
  37. data/lib/ritsu/src_files/project_config_header_file.rb +14 -14
  38. data/lib/ritsu/src_files/project_config_header_template_file.rb +44 -44
  39. data/lib/ritsu/src_files/shared_library_cmake_lists.rb +39 -39
  40. data/lib/ritsu/src_files/static_library_cmake_lists.rb +39 -39
  41. data/lib/ritsu/src_files/target_cmake_lists.rb +189 -189
  42. data/lib/ritsu/src_files/templated_src_file.rb +47 -47
  43. data/lib/ritsu/src_files/unit.rb +32 -32
  44. data/lib/ritsu/target.rb +154 -154
  45. data/lib/ritsu/targets.rb +3 -3
  46. data/lib/ritsu/targets/executable.rb +44 -44
  47. data/lib/ritsu/targets/library.rb +29 -29
  48. data/lib/ritsu/targets/shared_library.rb +38 -38
  49. data/lib/ritsu/targets/static_library.rb +32 -32
  50. data/lib/ritsu/template.rb +68 -68
  51. data/lib/ritsu/template_policies.rb +132 -132
  52. data/lib/ritsu/test_helpers.rb +123 -123
  53. data/lib/ritsu/thors/default_thor.rb +1 -1
  54. data/lib/ritsu/utility.rb +7 -7
  55. data/lib/ritsu/utility/accessors.rb +29 -29
  56. data/lib/ritsu/utility/check_upon_add_set.rb +34 -34
  57. data/lib/ritsu/utility/file_robot.rb +128 -128
  58. data/lib/ritsu/utility/files.rb +12 -12
  59. data/lib/ritsu/utility/instance_dependencies.rb +112 -112
  60. data/lib/ritsu/utility/instance_set.rb +28 -28
  61. data/lib/ritsu/utility/platform.rb +20 -20
  62. data/lib/ritsu/utility/simple_io.rb +64 -64
  63. data/lib/ritsu/utility/single_instance.rb +33 -33
  64. data/lib/ritsu/utility/strings.rb +40 -40
  65. data/test/ritsu/block_test.rb +196 -196
  66. data/test/ritsu/ext/cuda/src_files/cuda_static_library_cmake_lists_test.rb +63 -63
  67. data/test/ritsu/external_library_test.rb +41 -41
  68. data/test/ritsu/project_generators/default_generator_test.rb +34 -34
  69. data/test/ritsu/project_test.rb +127 -127
  70. data/test/ritsu/src_file_test.rb +69 -69
  71. data/test/ritsu/src_files/cpp_file_test.rb +42 -42
  72. data/test/ritsu/src_files/executable_cmake_lists_test.rb +92 -92
  73. data/test/ritsu/src_files/header_file_test.rb +57 -57
  74. data/test/ritsu/src_files/project_cmake_lists_test.rb +159 -159
  75. data/test/ritsu/src_files/shared_library_cmake_lists_test.rb +54 -54
  76. data/test/ritsu/src_files/static_library_cmake_lists_test.rb +54 -54
  77. data/test/ritsu/src_files/target_cmake_lists_test.rb +15 -15
  78. data/test/ritsu/target_test.rb +105 -105
  79. data/test/ritsu/targets/executable_test.rb +10 -10
  80. data/test/ritsu/targets/shared_library_test.rb +10 -10
  81. data/test/ritsu/targets/static_library_test.rb +10 -10
  82. data/test/ritsu/utility/accessors_test.rb +14 -14
  83. data/test/ritsu/utility/check_upon_add_set_test.rb +31 -31
  84. data/test/ritsu/utility/file_robot_test.rb +175 -175
  85. data/test/ritsu/utility/strings_test.rb +28 -28
  86. data/test/test_helpers.rb +3 -3
  87. metadata +72 -124
  88. data/Thorfile +0 -104
  89. data/VERSION +0 -1
@@ -1,13 +1,13 @@
1
- module Ritsu
2
- module Utility
3
- module Files
4
- def read(filename)
5
- f = File.new(filename)
6
- result = f.read
7
- f.close
8
- result
9
- end
10
- module_function :read
11
- end
12
- end
1
+ module Ritsu
2
+ module Utility
3
+ module Files
4
+ def read(filename)
5
+ f = File.new(filename)
6
+ result = f.read
7
+ f.close
8
+ result
9
+ end
10
+ module_function :read
11
+ end
12
+ end
13
13
  end
@@ -1,113 +1,113 @@
1
- require 'rubygems'
2
- require 'active_support/core_ext/string/inflections'
3
- require 'active_support/inflector'
4
- require File.expand_path(File.dirname(__FILE__) + "/instance_set")
5
-
6
- module Ritsu
7
- module Utility
8
- module InstanceDependencies
9
- def self.included(base)
10
- base.extend(ClassMethods)
11
- end
12
-
13
- module ClassMethods
14
- def dependencies_between(name)
15
- name = name.to_s.singularize
16
- dependency_set_name = "dependency_#{name.pluralize}"
17
-
18
- module_eval <<-RUBY
19
- attr_reader :#{dependency_set_name}
20
- attr_accessor :topological_order
21
-
22
- def #{dependency_set_name}
23
- @#{dependency_set_name} ||= Ritsu::Utility::CheckUponAddSet.new do |s,dependency|
24
- validate_dependency_#{name}(dependency)
25
- self.class.invalidate_topological_orders
26
- end
27
- end
28
-
29
- def depends_directly_on_#{name}?(instance)
30
- #{dependency_set_name}.include?(instance)
31
- end
32
-
33
- def depends_on_#{name}?(instance)
34
- visited = Set.new [self]
35
- queue = [self]
36
-
37
- # Perform a breadth first search
38
- while !visited.include?(instance) && !queue.empty?
39
- u = queue.shift
40
- u.#{dependency_set_name}.each do |v|
41
- if !visited.include?(v)
42
- queue << v
43
- visited << v
44
- end
45
- end
46
- end
47
-
48
- visited.delete(self)
49
- visited.include?(instance)
50
- end
51
-
52
- def validate_dependency_#{name}(instance)
53
- instance_name = instance.name
54
- if instance == self
55
- raise ArgumentError.new("'\#{instance.name}' is the same as the dependent #{name}")
56
- end
57
- if instance.depends_on_#{name}?(self)
58
- raise ArgumentError.new("including '\#{instance.name}' will create a circular dependency")
59
- end
60
- if !instance.can_be_depended_on?
61
- raise ArgumentError.new("'\#{instance.name}' cannot be dependend on")
62
- end
63
- end
64
-
65
- def self.recompute_topological_orders
66
- indegrees = {}
67
- instances.each { |instance| indegrees[instance] = 0 }
68
- instances.each do |instance|
69
- instance.#{dependency_set_name}.each do |dependency|
70
- indegrees[dependency] += 1
71
- end
72
- end
73
-
74
- last_order = instances.length-1
75
- indegree_zero = instances.select { |instance| indegrees[instance] == 0 }
76
- while !indegree_zero.empty?
77
- u = indegree_zero.shift
78
- u.topological_order = last_order
79
- last_order -= 1
80
- u.#{dependency_set_name}.each do |v|
81
- indegrees[v] -= 1
82
- if indegrees[v] == 0
83
- indegree_zero << v
84
- end
85
- end
86
- end
87
-
88
- @topological_orders_computed = true
89
- end
90
-
91
- def self.topological_orders_computed?
92
- @topological_order_computed ||= false
93
- end
94
-
95
- def self.compute_topological_orders
96
- if !topological_orders_computed?
97
- recompute_topological_orders
98
- end
99
- end
100
-
101
- def self.invalidate_topological_orders
102
- @topological_order_computed = false
103
- end
104
-
105
- def can_be_depended_on?
106
- raise NotImplementedError.new
107
- end
108
- RUBY
109
- end
110
- end
111
- end
112
- end
1
+ require 'rubygems'
2
+ require 'active_support/core_ext/string/inflections'
3
+ require 'active_support/inflector'
4
+ require File.expand_path(File.dirname(__FILE__) + "/instance_set")
5
+
6
+ module Ritsu
7
+ module Utility
8
+ module InstanceDependencies
9
+ def self.included(base)
10
+ base.extend(ClassMethods)
11
+ end
12
+
13
+ module ClassMethods
14
+ def dependencies_between(name)
15
+ name = name.to_s.singularize
16
+ dependency_set_name = "dependency_#{name.pluralize}"
17
+
18
+ module_eval <<-RUBY
19
+ attr_reader :#{dependency_set_name}
20
+ attr_accessor :topological_order
21
+
22
+ def #{dependency_set_name}
23
+ @#{dependency_set_name} ||= Ritsu::Utility::CheckUponAddSet.new do |s,dependency|
24
+ validate_dependency_#{name}(dependency)
25
+ self.class.invalidate_topological_orders
26
+ end
27
+ end
28
+
29
+ def depends_directly_on_#{name}?(instance)
30
+ #{dependency_set_name}.include?(instance)
31
+ end
32
+
33
+ def depends_on_#{name}?(instance)
34
+ visited = Set.new [self]
35
+ queue = [self]
36
+
37
+ # Perform a breadth first search
38
+ while !visited.include?(instance) && !queue.empty?
39
+ u = queue.shift
40
+ u.#{dependency_set_name}.each do |v|
41
+ if !visited.include?(v)
42
+ queue << v
43
+ visited << v
44
+ end
45
+ end
46
+ end
47
+
48
+ visited.delete(self)
49
+ visited.include?(instance)
50
+ end
51
+
52
+ def validate_dependency_#{name}(instance)
53
+ instance_name = instance.name
54
+ if instance == self
55
+ raise ArgumentError.new("'\#{instance.name}' is the same as the dependent #{name}")
56
+ end
57
+ if instance.depends_on_#{name}?(self)
58
+ raise ArgumentError.new("including '\#{instance.name}' will create a circular dependency")
59
+ end
60
+ if !instance.can_be_depended_on?
61
+ raise ArgumentError.new("'\#{instance.name}' cannot be dependend on")
62
+ end
63
+ end
64
+
65
+ def self.recompute_topological_orders
66
+ indegrees = {}
67
+ instances.each { |instance| indegrees[instance] = 0 }
68
+ instances.each do |instance|
69
+ instance.#{dependency_set_name}.each do |dependency|
70
+ indegrees[dependency] += 1
71
+ end
72
+ end
73
+
74
+ last_order = instances.length-1
75
+ indegree_zero = instances.select { |instance| indegrees[instance] == 0 }
76
+ while !indegree_zero.empty?
77
+ u = indegree_zero.shift
78
+ u.topological_order = last_order
79
+ last_order -= 1
80
+ u.#{dependency_set_name}.each do |v|
81
+ indegrees[v] -= 1
82
+ if indegrees[v] == 0
83
+ indegree_zero << v
84
+ end
85
+ end
86
+ end
87
+
88
+ @topological_orders_computed = true
89
+ end
90
+
91
+ def self.topological_orders_computed?
92
+ @topological_order_computed ||= false
93
+ end
94
+
95
+ def self.compute_topological_orders
96
+ if !topological_orders_computed?
97
+ recompute_topological_orders
98
+ end
99
+ end
100
+
101
+ def self.invalidate_topological_orders
102
+ @topological_order_computed = false
103
+ end
104
+
105
+ def can_be_depended_on?
106
+ raise NotImplementedError.new
107
+ end
108
+ RUBY
109
+ end
110
+ end
111
+ end
112
+ end
113
113
  end
@@ -1,29 +1,29 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/../utility/check_upon_add_set')
2
-
3
- module Ritsu
4
- module Utility
5
- module InstanceSet
6
- module ClassMethods
7
- def instances
8
- @instances ||= Ritsu::Utility::CheckUponAddSet.new do |s, instance|
9
- validate_instance(instance)
10
- end
11
- end
12
-
13
- def validate_instance(instance)
14
- end
15
- end
16
-
17
- def self.included(base)
18
- base.extend(ClassMethods)
19
- end
20
-
21
- def initialize(*args, &block)
22
- self.class.instances << self
23
- end
24
-
25
- def initialize_instance(*args, &block)
26
- end
27
- end
28
- end
1
+ require File.expand_path(File.dirname(__FILE__) + '/../utility/check_upon_add_set')
2
+
3
+ module Ritsu
4
+ module Utility
5
+ module InstanceSet
6
+ module ClassMethods
7
+ def instances
8
+ @instances ||= Ritsu::Utility::CheckUponAddSet.new do |s, instance|
9
+ validate_instance(instance)
10
+ end
11
+ end
12
+
13
+ def validate_instance(instance)
14
+ end
15
+ end
16
+
17
+ def self.included(base)
18
+ base.extend(ClassMethods)
19
+ end
20
+
21
+ def initialize(*args, &block)
22
+ self.class.instances << self
23
+ end
24
+
25
+ def initialize_instance(*args, &block)
26
+ end
27
+ end
28
+ end
29
29
  end
@@ -1,21 +1,21 @@
1
- module Ritsu
2
- module Utility
3
- def platform
4
- case RUBY_PLATFORM.downcase
5
- when /linux|bsd|solaris|hpux/
6
- :unix
7
- when /darwin/
8
- :mac
9
- when /mswin32|mingw32|bccwin32/
10
- :windows
11
- when /cygwin/
12
- :cygwin
13
- when /java/
14
- :java
15
- else
16
- :other
17
- end
18
- end
19
- module_function :platform
20
- end
1
+ module Ritsu
2
+ module Utility
3
+ def platform
4
+ case RUBY_PLATFORM.downcase
5
+ when /linux|bsd|solaris|hpux/
6
+ :unix
7
+ when /darwin/
8
+ :mac
9
+ when /mswin32|mingw32|bccwin32/
10
+ :windows
11
+ when /cygwin/
12
+ :cygwin
13
+ when /java/
14
+ :java
15
+ else
16
+ :other
17
+ end
18
+ end
19
+ module_function :platform
20
+ end
21
21
  end
@@ -1,65 +1,65 @@
1
- module Ritsu
2
- module Utility
3
- ##
4
- # This class is lifted from rubigen's SimpleLogger
5
- class SimpleIO
6
- attr_accessor :input
7
- attr_accessor :output
8
- attr_accessor :quiet
9
-
10
- def initialize(input = $stdin, output = $stdout)
11
- @input = input
12
- @output = output
13
- @quiet = false
14
- @level = 0
15
- end
16
-
17
- def log(status, message, &block)
18
- @output.print("%12s %s%s\n" % [status, ' ' * @level, message]) unless quiet
19
- indent(&block) if block_given?
20
- end
21
-
22
- def indent(&block)
23
- @level += 1
24
- if block_given?
25
- begin
26
- block.call
27
- ensure
28
- outdent
29
- end
30
- end
31
- end
32
-
33
- def outdent
34
- @level -= 1
35
- if block_given?
36
- begin
37
- block.call
38
- ensure
39
- indent
40
- end
41
- end
42
- end
43
-
44
- def ask_yes_no_all(message)
45
- @output.print("#{message} (yes/no/all): ")
46
- answer = @input.gets.strip
47
- case answer
48
- when /^y(es)?$/i
49
- return :yes
50
- when /^no?$/i
51
- return :no
52
- when /^a(ll)?$/i
53
- return :all
54
- else
55
- ask_yes_no_all(message)
56
- end
57
- end
58
-
59
- private
60
- def method_missing(method, *args, &block)
61
- log(method.to_s, args.first, &block)
62
- end
63
- end
64
- end
1
+ module Ritsu
2
+ module Utility
3
+ ##
4
+ # This class is lifted from rubigen's SimpleLogger
5
+ class SimpleIO
6
+ attr_accessor :input
7
+ attr_accessor :output
8
+ attr_accessor :quiet
9
+
10
+ def initialize(input = $stdin, output = $stdout)
11
+ @input = input
12
+ @output = output
13
+ @quiet = false
14
+ @level = 0
15
+ end
16
+
17
+ def log(status, message, &block)
18
+ @output.print("%12s %s%s\n" % [status, ' ' * @level, message]) unless quiet
19
+ indent(&block) if block_given?
20
+ end
21
+
22
+ def indent(&block)
23
+ @level += 1
24
+ if block_given?
25
+ begin
26
+ block.call
27
+ ensure
28
+ outdent
29
+ end
30
+ end
31
+ end
32
+
33
+ def outdent
34
+ @level -= 1
35
+ if block_given?
36
+ begin
37
+ block.call
38
+ ensure
39
+ indent
40
+ end
41
+ end
42
+ end
43
+
44
+ def ask_yes_no_all(message)
45
+ @output.print("#{message} (yes/no/all): ")
46
+ answer = @input.gets.strip
47
+ case answer
48
+ when /^y(es)?$/i
49
+ return :yes
50
+ when /^no?$/i
51
+ return :no
52
+ when /^a(ll)?$/i
53
+ return :all
54
+ else
55
+ ask_yes_no_all(message)
56
+ end
57
+ end
58
+
59
+ private
60
+ def method_missing(method, *args, &block)
61
+ log(method.to_s, args.first, &block)
62
+ end
63
+ end
64
+ end
65
65
  end