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