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,48 +1,48 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/../src_file')
2
- require File.expand_path(File.dirname(__FILE__) + '/../utility/file_robot')
3
- require File.expand_path(File.dirname(__FILE__) + '/../block')
4
- require File.expand_path(File.dirname(__FILE__) + '/../utility/files')
5
-
6
- module Ritsu::SrcFiles
7
- class TemplatedSrcFile < Ritsu::SrcFile
8
- attr_accessor :template
9
- attr_accessor :block_start_prefix
10
- attr_accessor :block_end_prefix
11
-
12
- def initialize(src_path, owner, options={})
13
- super(src_path, owner)
14
-
15
- options = {
16
- :block_start_prefix => "//<<",
17
- :block_end_prefix => "//>>"
18
- }.merge(options)
19
- @block_start_prefix = options[:block_start_prefix]
20
- @block_end_prefix = options[:block_end_prefix]
21
- end
22
-
23
- def create
24
- block = template.create_block(
25
- :block_start_prefix => block_start_prefix,
26
- :block_end_prefix => block_end_prefix)
27
- template.update_block(block,
28
- :block_start_prefix => block_start_prefix,
29
- :block_end_prefix => block_end_prefix)
30
- Ritsu::Utility::FileRobot.create_file(abs_path, block.to_s(:no_delimiter=>true) + "\n")
31
- end
32
-
33
- def update_content
34
- file_content = Ritsu::Utility::Files.read(abs_path)
35
- block = Ritsu::Block.parse(file_content,
36
- :block_start_prefix => block_start_prefix,
37
- :block_end_prefix => block_end_prefix)
38
- template.update_block(block,
39
- :block_start_prefix => block_start_prefix,
40
- :block_end_prefix => block_end_prefix)
41
-
42
- new_content = block.to_s(:no_delimiter=>true) + "\n"
43
- if new_content != file_content
44
- Ritsu::Utility::FileRobot.create_file(abs_path, new_content)
45
- end
46
- end
47
- end
1
+ require File.expand_path(File.dirname(__FILE__) + '/../src_file')
2
+ require File.expand_path(File.dirname(__FILE__) + '/../utility/file_robot')
3
+ require File.expand_path(File.dirname(__FILE__) + '/../block')
4
+ require File.expand_path(File.dirname(__FILE__) + '/../utility/files')
5
+
6
+ module Ritsu::SrcFiles
7
+ class TemplatedSrcFile < Ritsu::SrcFile
8
+ attr_accessor :template
9
+ attr_accessor :block_start_prefix
10
+ attr_accessor :block_end_prefix
11
+
12
+ def initialize(src_path, owner, options={})
13
+ super(src_path, owner)
14
+
15
+ options = {
16
+ :block_start_prefix => "//<<",
17
+ :block_end_prefix => "//>>"
18
+ }.merge(options)
19
+ @block_start_prefix = options[:block_start_prefix]
20
+ @block_end_prefix = options[:block_end_prefix]
21
+ end
22
+
23
+ def create
24
+ block = template.create_block(
25
+ :block_start_prefix => block_start_prefix,
26
+ :block_end_prefix => block_end_prefix)
27
+ template.update_block(block,
28
+ :block_start_prefix => block_start_prefix,
29
+ :block_end_prefix => block_end_prefix)
30
+ Ritsu::Utility::FileRobot.create_file(abs_path, block.to_s(:no_delimiter=>true) + "\n")
31
+ end
32
+
33
+ def update_content
34
+ file_content = Ritsu::Utility::Files.read(abs_path)
35
+ block = Ritsu::Block.parse(file_content,
36
+ :block_start_prefix => block_start_prefix,
37
+ :block_end_prefix => block_end_prefix)
38
+ template.update_block(block,
39
+ :block_start_prefix => block_start_prefix,
40
+ :block_end_prefix => block_end_prefix)
41
+
42
+ new_content = block.to_s(:no_delimiter=>true) + "\n"
43
+ if new_content != file_content
44
+ Ritsu::Utility::FileRobot.create_file(abs_path, new_content)
45
+ end
46
+ end
47
+ end
48
48
  end
@@ -1,33 +1,33 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/../src_file')
2
- require File.expand_path(File.dirname(__FILE__) + '/cpp_file')
3
- require File.expand_path(File.dirname(__FILE__) + '/header_file')
4
-
5
- module Ritsu
6
- module SrcFiles
7
- module AddUnit
8
- include AddCppFile
9
- include AddHeaderFile
10
-
11
- def add_unit(name, options={})
12
- add_cpp_file(name + ".cpp")
13
- add_header_file(name + ".h")
14
- end
15
-
16
- def add_units(*names)
17
- names.each do |name|
18
- add_unit(name)
19
- end
20
- end
21
- end
22
- end
23
- end
24
-
25
- module Ritsu
26
- class Target
27
- include Ritsu::SrcFiles::AddUnit
28
- end
29
-
30
- class Project
31
- include Ritsu::SrcFiles::AddUnit
32
- end
1
+ require File.expand_path(File.dirname(__FILE__) + '/../src_file')
2
+ require File.expand_path(File.dirname(__FILE__) + '/cpp_file')
3
+ require File.expand_path(File.dirname(__FILE__) + '/header_file')
4
+
5
+ module Ritsu
6
+ module SrcFiles
7
+ module AddUnit
8
+ include AddCppFile
9
+ include AddHeaderFile
10
+
11
+ def add_unit(name, options={})
12
+ add_cpp_file(name + ".cpp")
13
+ add_header_file(name + ".h")
14
+ end
15
+
16
+ def add_units(*names)
17
+ names.each do |name|
18
+ add_unit(name)
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
24
+
25
+ module Ritsu
26
+ class Target
27
+ include Ritsu::SrcFiles::AddUnit
28
+ end
29
+
30
+ class Project
31
+ include Ritsu::SrcFiles::AddUnit
32
+ end
33
33
  end
@@ -1,155 +1,155 @@
1
- require 'rubygems'
2
- require 'active_support'
3
- require 'set'
4
- require 'pathname'
5
- require File.expand_path(File.dirname(__FILE__) + '/utility/instance_set')
6
- require File.expand_path(File.dirname(__FILE__) + '/utility/strings')
7
- require File.expand_path(File.dirname(__FILE__) + '/project')
8
- require File.expand_path(File.dirname(__FILE__) + '/utility/check_upon_add_set')
9
- require File.expand_path(File.dirname(__FILE__) + '/external_library')
10
- require File.expand_path(File.dirname(__FILE__) + '/utility/instance_dependencies')
11
-
12
- module Ritsu
13
- class Target
14
- include Ritsu::Utility::InstanceSet
15
- include Ritsu::Utility::InstanceDependencies
16
- include Ritsu::Utility::Strings
17
-
18
- dependencies_between :targets
19
-
20
- attr_reader :name
21
- attr_reader :dependency_libraries
22
- attr_reader :project
23
- attr_reader :src_files
24
- attr_reader :custom_commands
25
- attr_accessor :topological_order
26
-
27
- def initialize(name, options={})
28
- options = {:project => Ritsu::Project.instance}.merge(options)
29
-
30
- if !is_c_name?(name)
31
- raise ArgumentError.new(
32
- "target name must be a valid C name")
33
- end
34
-
35
- @name = name
36
- @dependency_libraries = Set.new
37
- @project = options[:project]
38
- @src_files = Set.new
39
- @custom_commands = []
40
- @topological_order = 0
41
- @install = false
42
-
43
- Target.instances << self
44
- @project.targets << self
45
- end
46
-
47
- def self.validate_instance(instance)
48
- if instances.select { |x| x.name == instance.name }.length > 1
49
- raise "target with name '#{instance.name}' already exists"
50
- end
51
- end
52
-
53
- def install?
54
- @install
55
- end
56
-
57
- def setup_install
58
- @install = true
59
- end
60
-
61
- def src_dir
62
- self.name
63
- end
64
-
65
- def abs_dir
66
- File.expand_path(project.project_dir + "src/#{src_dir}")
67
- end
68
-
69
- def compute_src_path(path, options={})
70
- options = {:relative_to => :target}.merge(options)
71
-
72
- case options[:relative_to]
73
- when :target
74
- self.src_dir + "/" + path
75
- when :src
76
- path
77
- when :absolute
78
- src_dir = Pathname.new(project.src_dir)
79
- input_path = Pathname.new(path)
80
- input_path.relative_path_from(src_dir).to_s
81
- else
82
- raise ArgumentError.new("option :relative_to must be one of :target, :src, and :absolute")
83
- end
84
- end
85
-
86
- def include_file(filename, options={})
87
- file_content = Ritsu::Utility::Files.read(filename)
88
- instance_eval(file_content)
89
- end
90
-
91
- def update
92
- src_files.each do |src_file|
93
- src_file.update
94
- end
95
- end
96
-
97
- def self.find_by_name(name)
98
- instances.each do |instance|
99
- if instance.name == name
100
- return instance
101
- end
102
- end
103
- return nil
104
- end
105
-
106
- def add_external_library(name)
107
- external_library = Ritsu::ExternalLibrary.find_by_name(name.to_s)
108
- if !external_library.nil?
109
- dependency_libraries << external_library
110
- else
111
- raise ArgumentError.new("no external library with name '#{name}'")
112
- end
113
- end
114
-
115
- def add_external_libraries(*names)
116
- names.each do |name|
117
- add_external_library(name)
118
- end
119
- end
120
-
121
- def add_dependency_target(target_or_target_name)
122
- if target_or_target_name.kind_of?(String)
123
- dependency = Target.find_by_name(target_or_target_name)
124
- if dependency.nil?
125
- raise ArgumentError.new("no target with name '#{name}'")
126
- end
127
- else
128
- dependency = target_or_target_name
129
- end
130
- dependency_targets << dependency
131
- end
132
-
133
- def add_dependency_targets(*target_or_target_names)
134
- target_or_target_names.each do |target|
135
- add_dependency_target(target)
136
- end
137
- end
138
-
139
- def dependency_targets_sorted_by_topological_order
140
- Target.compute_topological_orders
141
- result = dependency_targets.to_a
142
- result.sort! {|x,y| x.topological_order - y.topological_order}
143
- result
144
- end
145
- end
146
-
147
- class Project
148
- def targets_sorted_by_topological_order
149
- Target.compute_topological_orders
150
- result = targets.to_a
151
- result.sort! {|x,y| x.topological_order - y.topological_order}
152
- result
153
- end
154
- end
1
+ require 'rubygems'
2
+ require 'active_support'
3
+ require 'set'
4
+ require 'pathname'
5
+ require File.expand_path(File.dirname(__FILE__) + '/utility/instance_set')
6
+ require File.expand_path(File.dirname(__FILE__) + '/utility/strings')
7
+ require File.expand_path(File.dirname(__FILE__) + '/project')
8
+ require File.expand_path(File.dirname(__FILE__) + '/utility/check_upon_add_set')
9
+ require File.expand_path(File.dirname(__FILE__) + '/external_library')
10
+ require File.expand_path(File.dirname(__FILE__) + '/utility/instance_dependencies')
11
+
12
+ module Ritsu
13
+ class Target
14
+ include Ritsu::Utility::InstanceSet
15
+ include Ritsu::Utility::InstanceDependencies
16
+ include Ritsu::Utility::Strings
17
+
18
+ dependencies_between :targets
19
+
20
+ attr_reader :name
21
+ attr_reader :dependency_libraries
22
+ attr_reader :project
23
+ attr_reader :src_files
24
+ attr_reader :custom_commands
25
+ attr_accessor :topological_order
26
+
27
+ def initialize(name, options={})
28
+ options = {:project => Ritsu::Project.instance}.merge(options)
29
+
30
+ if !is_c_name?(name)
31
+ raise ArgumentError.new(
32
+ "target name must be a valid C name")
33
+ end
34
+
35
+ @name = name
36
+ @dependency_libraries = Set.new
37
+ @project = options[:project]
38
+ @src_files = Set.new
39
+ @custom_commands = []
40
+ @topological_order = 0
41
+ @install = false
42
+
43
+ Target.instances << self
44
+ @project.targets << self
45
+ end
46
+
47
+ def self.validate_instance(instance)
48
+ if instances.select { |x| x.name == instance.name }.length > 1
49
+ raise "target with name '#{instance.name}' already exists"
50
+ end
51
+ end
52
+
53
+ def install?
54
+ @install
55
+ end
56
+
57
+ def setup_install
58
+ @install = true
59
+ end
60
+
61
+ def src_dir
62
+ self.name
63
+ end
64
+
65
+ def abs_dir
66
+ File.expand_path(project.project_dir + "src/#{src_dir}")
67
+ end
68
+
69
+ def compute_src_path(path, options={})
70
+ options = {:relative_to => :target}.merge(options)
71
+
72
+ case options[:relative_to]
73
+ when :target
74
+ self.src_dir + "/" + path
75
+ when :src
76
+ path
77
+ when :absolute
78
+ src_dir = Pathname.new(project.src_dir)
79
+ input_path = Pathname.new(path)
80
+ input_path.relative_path_from(src_dir).to_s
81
+ else
82
+ raise ArgumentError.new("option :relative_to must be one of :target, :src, and :absolute")
83
+ end
84
+ end
85
+
86
+ def include_file(filename, options={})
87
+ file_content = Ritsu::Utility::Files.read(filename)
88
+ instance_eval(file_content)
89
+ end
90
+
91
+ def update
92
+ src_files.each do |src_file|
93
+ src_file.update
94
+ end
95
+ end
96
+
97
+ def self.find_by_name(name)
98
+ instances.each do |instance|
99
+ if instance.name == name
100
+ return instance
101
+ end
102
+ end
103
+ return nil
104
+ end
105
+
106
+ def add_external_library(name)
107
+ external_library = Ritsu::ExternalLibrary.find_by_name(name.to_s)
108
+ if !external_library.nil?
109
+ dependency_libraries << external_library
110
+ else
111
+ raise ArgumentError.new("no external library with name '#{name}'")
112
+ end
113
+ end
114
+
115
+ def add_external_libraries(*names)
116
+ names.each do |name|
117
+ add_external_library(name)
118
+ end
119
+ end
120
+
121
+ def add_dependency_target(target_or_target_name)
122
+ if target_or_target_name.kind_of?(String)
123
+ dependency = Target.find_by_name(target_or_target_name)
124
+ if dependency.nil?
125
+ raise ArgumentError.new("no target with name '#{name}'")
126
+ end
127
+ else
128
+ dependency = target_or_target_name
129
+ end
130
+ dependency_targets << dependency
131
+ end
132
+
133
+ def add_dependency_targets(*target_or_target_names)
134
+ target_or_target_names.each do |target|
135
+ add_dependency_target(target)
136
+ end
137
+ end
138
+
139
+ def dependency_targets_sorted_by_topological_order
140
+ Target.compute_topological_orders
141
+ result = dependency_targets.to_a
142
+ result.sort! {|x,y| x.topological_order - y.topological_order}
143
+ result
144
+ end
145
+ end
146
+
147
+ class Project
148
+ def targets_sorted_by_topological_order
149
+ Target.compute_topological_orders
150
+ result = targets.to_a
151
+ result.sort! {|x,y| x.topological_order - y.topological_order}
152
+ result
153
+ end
154
+ end
155
155
  end