ritsu 0.7.0 → 0.7.1

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.
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