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,20 +1,20 @@
1
- require 'test/unit'
2
-
3
- module Test
4
- module Unit
5
- class TestCase
6
- def self.must(name, &block)
7
- test_name = "test_#{name.gsub(/\s+/,'_')}".to_sym
8
- defined = instance_method(test_name) rescue false
9
- raise "#{test_name} is already defined in #{self}" if defined
10
- if block_given?
11
- define_method(test_name, &block)
12
- else
13
- define_method(test_name) do
14
- flunk "No implementation provided for #{name}"
15
- end
16
- end
17
- end
18
- end
19
- end
1
+ require 'test/unit'
2
+
3
+ module Test
4
+ module Unit
5
+ class TestCase
6
+ def self.must(name, &block)
7
+ test_name = "test_#{name.gsub(/\s+/,'_')}".to_sym
8
+ defined = instance_method(test_name) rescue false
9
+ raise "#{test_name} is already defined in #{self}" if defined
10
+ if block_given?
11
+ define_method(test_name, &block)
12
+ else
13
+ define_method(test_name) do
14
+ flunk "No implementation provided for #{name}"
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
20
20
  end
@@ -1,47 +1,47 @@
1
- require 'rubygems'
2
- require 'active_support'
3
- require File.expand_path(File.dirname(__FILE__) + '/utility/accessors')
4
- require File.expand_path(File.dirname(__FILE__) + '/utility/instance_set')
5
-
6
- module Ritsu
7
- class ExternalLibrary
8
- include Ritsu::Utility::Accessors
9
- include Ritsu::Utility::InstanceSet
10
-
11
- attr_reader :name
12
- attr_accessor :cmake_name
13
- attr_accessor :cmake_find_script
14
- attr_accessor :cmake_depend_script
15
-
16
- attr_method :cmake_name
17
- attr_method :cmake_find_script
18
- attr_method :cmake_depend_script
19
-
20
- def initialize(name, options={})
21
- options = {
22
- :cmake_name => '',
23
- :cmake_find_script => '',
24
- :cmake_depend_script => ''}.merge(options)
25
- @name = name
26
- @cmake_name = options[:cmake_name]
27
- @cmake_find_script = options[:cmake_find_script]
28
- @cmake_depend_script = options[:cmake_depend_script]
29
- ExternalLibrary.instances << self
30
- end
31
-
32
- def self.validate_instance(instance)
33
- if instances.select { |x| x.name == instance.name }.length > 0
34
- raise ArgumentError.new("external library with name '#{instance.name}' already exists")
35
- end
36
- end
37
-
38
- def self.find_by_name(name)
39
- instances.each do |instance|
40
- if instance.name == name
41
- return instance
42
- end
43
- end
44
- return nil
45
- end
46
- end
1
+ require 'rubygems'
2
+ require 'active_support'
3
+ require File.expand_path(File.dirname(__FILE__) + '/utility/accessors')
4
+ require File.expand_path(File.dirname(__FILE__) + '/utility/instance_set')
5
+
6
+ module Ritsu
7
+ class ExternalLibrary
8
+ include Ritsu::Utility::Accessors
9
+ include Ritsu::Utility::InstanceSet
10
+
11
+ attr_reader :name
12
+ attr_accessor :cmake_name
13
+ attr_accessor :cmake_find_script
14
+ attr_accessor :cmake_depend_script
15
+
16
+ attr_method :cmake_name
17
+ attr_method :cmake_find_script
18
+ attr_method :cmake_depend_script
19
+
20
+ def initialize(name, options={})
21
+ options = {
22
+ :cmake_name => '',
23
+ :cmake_find_script => '',
24
+ :cmake_depend_script => ''}.merge(options)
25
+ @name = name
26
+ @cmake_name = options[:cmake_name]
27
+ @cmake_find_script = options[:cmake_find_script]
28
+ @cmake_depend_script = options[:cmake_depend_script]
29
+ ExternalLibrary.instances << self
30
+ end
31
+
32
+ def self.validate_instance(instance)
33
+ if instances.select { |x| x.name == instance.name }.length > 0
34
+ raise ArgumentError.new("external library with name '#{instance.name}' already exists")
35
+ end
36
+ end
37
+
38
+ def self.find_by_name(name)
39
+ instances.each do |instance|
40
+ if instance.name == name
41
+ return instance
42
+ end
43
+ end
44
+ return nil
45
+ end
46
+ end
47
47
  end
@@ -1,94 +1,94 @@
1
- require 'rubygems'
2
- require 'active_support'
3
- require File.expand_path(File.dirname(__FILE__) + '/external_library')
4
- require File.expand_path(File.dirname(__FILE__) + '/utility/single_instance')
5
- require File.expand_path(File.dirname(__FILE__) + '/utility/strings')
6
- require File.expand_path(File.dirname(__FILE__) + '/src_files/project_cmake_lists')
7
- require File.expand_path(File.dirname(__FILE__) + '/src_files/project_config_header_file')
8
- require File.expand_path(File.dirname(__FILE__) + '/src_files/project_config_header_template_file')
9
- require File.expand_path(File.dirname(__FILE__) + "/utility/accessors")
10
-
11
- module Ritsu
12
- class Project
13
- include Ritsu::Utility::SingleInstance
14
- include Ritsu::Utility::Strings
15
- include Ritsu::Utility::Accessors
16
-
17
- attr_reader :name
18
- attr_reader :targets
19
- attr_reader :external_libraries
20
- attr_reader :src_files
21
- attr_accessor :project_dir
22
- attr_reader :cmake_lists
23
- attr_reader :config_header_file
24
- attr_reader :config_header_template_file
25
- attr_accessor :custom_script
26
- attr_method :custom_script
27
-
28
- def initialize_instance(name)
29
- if !is_c_name?(name)
30
- raise ArgumentError.new(
31
- "the project name must be a valid C name")
32
- end
33
-
34
- @name = name
35
- @targets = Set.new
36
- @external_libraries = Set.new
37
- @src_files = Set.new
38
- @project_dir = File.expand_path('.')
39
- @custom_script = ""
40
-
41
- @cmake_lists = Ritsu::SrcFiles::ProjectCmakeLists.new(self)
42
- @config_header_file = Ritsu::SrcFiles::ProjectConfigHeaderFile.new(self)
43
- @config_header_template_file = Ritsu::SrcFiles::ProjectConfigHeaderTemplateFile.new(self)
44
- end
45
-
46
- def self.create(name)
47
- project = Project.new(name)
48
- yield project if block_given?
49
- project
50
- end
51
-
52
- def add_external_library(name)
53
- library = ExternalLibrary.new(name)
54
- yield library if block_given?
55
- @external_libraries << library
56
- end
57
-
58
- def project
59
- self
60
- end
61
-
62
- def src_dir
63
- project_dir + "/src"
64
- end
65
-
66
- def compute_src_path(path, options={})
67
- options = {:relative_to => :src}.merge(options)
68
- case options[:reltavie_to]
69
- when :src
70
- path
71
- when :absolute
72
- src_dir = Pathname.new(self.src_dir)
73
- input_path = Pathname.new(path)
74
- input_path.relative_path_from(src_dir).to_s
75
- else
76
- raise ArgumentError.new("option :relative_to must be either :src or :absolute")
77
- end
78
- end
79
-
80
- def include_file(filename, options={})
81
- file_content = Ritsu::Utility::Files.read(filename)
82
- instance_eval(file_content)
83
- end
84
-
85
- def update
86
- src_files.each do |src_file|
87
- src_file.update
88
- end
89
- targets.each do |target|
90
- target.update
91
- end
92
- end
93
- end
1
+ require 'rubygems'
2
+ require 'active_support'
3
+ require File.expand_path(File.dirname(__FILE__) + '/external_library')
4
+ require File.expand_path(File.dirname(__FILE__) + '/utility/single_instance')
5
+ require File.expand_path(File.dirname(__FILE__) + '/utility/strings')
6
+ require File.expand_path(File.dirname(__FILE__) + '/src_files/project_cmake_lists')
7
+ require File.expand_path(File.dirname(__FILE__) + '/src_files/project_config_header_file')
8
+ require File.expand_path(File.dirname(__FILE__) + '/src_files/project_config_header_template_file')
9
+ require File.expand_path(File.dirname(__FILE__) + "/utility/accessors")
10
+
11
+ module Ritsu
12
+ class Project
13
+ include Ritsu::Utility::SingleInstance
14
+ include Ritsu::Utility::Strings
15
+ include Ritsu::Utility::Accessors
16
+
17
+ attr_reader :name
18
+ attr_reader :targets
19
+ attr_reader :external_libraries
20
+ attr_reader :src_files
21
+ attr_accessor :project_dir
22
+ attr_reader :cmake_lists
23
+ attr_reader :config_header_file
24
+ attr_reader :config_header_template_file
25
+ attr_accessor :custom_script
26
+ attr_method :custom_script
27
+
28
+ def initialize_instance(name)
29
+ if !is_c_name?(name)
30
+ raise ArgumentError.new(
31
+ "the project name must be a valid C name")
32
+ end
33
+
34
+ @name = name
35
+ @targets = Set.new
36
+ @external_libraries = Set.new
37
+ @src_files = Set.new
38
+ @project_dir = File.expand_path('.')
39
+ @custom_script = ""
40
+
41
+ @cmake_lists = Ritsu::SrcFiles::ProjectCmakeLists.new(self)
42
+ @config_header_file = Ritsu::SrcFiles::ProjectConfigHeaderFile.new(self)
43
+ @config_header_template_file = Ritsu::SrcFiles::ProjectConfigHeaderTemplateFile.new(self)
44
+ end
45
+
46
+ def self.create(name)
47
+ project = Project.new(name)
48
+ yield project if block_given?
49
+ project
50
+ end
51
+
52
+ def add_external_library(name)
53
+ library = ExternalLibrary.new(name)
54
+ yield library if block_given?
55
+ @external_libraries << library
56
+ end
57
+
58
+ def project
59
+ self
60
+ end
61
+
62
+ def src_dir
63
+ project_dir + "/src"
64
+ end
65
+
66
+ def compute_src_path(path, options={})
67
+ options = {:relative_to => :src}.merge(options)
68
+ case options[:reltavie_to]
69
+ when :src
70
+ path
71
+ when :absolute
72
+ src_dir = Pathname.new(self.src_dir)
73
+ input_path = Pathname.new(path)
74
+ input_path.relative_path_from(src_dir).to_s
75
+ else
76
+ raise ArgumentError.new("option :relative_to must be either :src or :absolute")
77
+ end
78
+ end
79
+
80
+ def include_file(filename, options={})
81
+ file_content = Ritsu::Utility::Files.read(filename)
82
+ instance_eval(file_content)
83
+ end
84
+
85
+ def update
86
+ src_files.each do |src_file|
87
+ src_file.update
88
+ end
89
+ targets.each do |target|
90
+ target.update
91
+ end
92
+ end
93
+ end
94
94
  end
@@ -1,34 +1,34 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/utility/file_robot')
2
- require File.expand_path(File.dirname(__FILE__) + '/utility/instance_set')
3
- require File.expand_path(File.dirname(__FILE__) + '/utility/strings')
4
-
5
- module Ritsu
6
- class ProjectGenerator
7
- attr_reader :name
8
-
9
- def self.generator_classes
10
- @generator_classes ||= {}
11
- end
12
-
13
- def self.is_valid_generator_name?(name)
14
- Ritsu::Utility::Strings::is_c_name?(name)
15
- end
16
-
17
- def initialize(name)
18
- if !ProjectGenerator.is_valid_generator_name?(name)
19
- raise ArgumentError.new("'#{name}' is not a valid project name (i.e., a C name)")
20
- end
21
- @name = name
22
- end
23
-
24
- def self.validate_instance(instance)
25
- if instances.select { |x| x.name == instance.name }.length > 0
26
- raise ArgumentError.new("project generator with name '#{instance.name}' already exists")
27
- end
28
- end
29
-
30
- def generate(*args)
31
- raise NotImplementedError.new
32
- end
33
- end
1
+ require File.expand_path(File.dirname(__FILE__) + '/utility/file_robot')
2
+ require File.expand_path(File.dirname(__FILE__) + '/utility/instance_set')
3
+ require File.expand_path(File.dirname(__FILE__) + '/utility/strings')
4
+
5
+ module Ritsu
6
+ class ProjectGenerator
7
+ attr_reader :name
8
+
9
+ def self.generator_classes
10
+ @generator_classes ||= {}
11
+ end
12
+
13
+ def self.is_valid_generator_name?(name)
14
+ Ritsu::Utility::Strings::is_c_name?(name)
15
+ end
16
+
17
+ def initialize(name)
18
+ if !ProjectGenerator.is_valid_generator_name?(name)
19
+ raise ArgumentError.new("'#{name}' is not a valid project name (i.e., a C name)")
20
+ end
21
+ @name = name
22
+ end
23
+
24
+ def self.validate_instance(instance)
25
+ if instances.select { |x| x.name == instance.name }.length > 0
26
+ raise ArgumentError.new("project generator with name '#{instance.name}' already exists")
27
+ end
28
+ end
29
+
30
+ def generate(*args)
31
+ raise NotImplementedError.new
32
+ end
33
+ end
34
34
  end
@@ -1,73 +1,73 @@
1
- require 'rubygems'
2
- require 'singleton'
3
- require 'erb'
4
- require 'active_support/core_ext/string/inflections'
5
- require File.expand_path(File.dirname(__FILE__) + '/../project_generator')
6
- require File.expand_path(File.dirname(__FILE__) + '/../utility/file_robot')
7
- require File.expand_path(File.dirname(__FILE__) + '/../utility/files')
8
-
9
- module Ritsu
10
- module ProjectGenerators
11
- class DefaultGenerator < Ritsu::ProjectGenerator
12
- include Ritsu::Utility
13
-
14
- Ritsu::ProjectGenerator.generator_classes["default"] = self
15
-
16
- def initialize
17
- super("default")
18
- end
19
-
20
- def source_dir
21
- File.dirname(__FILE__) + "/default_generator_files"
22
- end
23
-
24
- def source_path(path)
25
- source_dir + "/" + path
26
- end
27
-
28
- def target_dir
29
- return @location + "/" + @project_name
30
- end
31
-
32
- def target_path(path)
33
- target_dir + "/" + path
34
- end
35
-
36
- def create_dir(dirname)
37
- FileRobot.create_dir(target_path(dirname))
38
- end
39
-
40
- def create_file(filename, content)
41
- FileRobot.create_file(target_path(filename), content)
42
- end
43
-
44
- def create_file_from_erb(filename)
45
- template_filename = source_path(filename + ".erb")
46
- template_content = Files.read(template_filename)
47
- template = ERB.new(template_content)
48
- create_file(filename, template.result(binding))
49
- end
50
-
51
- def copy_file(filename)
52
- source_filename = source_path(filename)
53
- source_content = Files.read(source_filename)
54
- create_file(filename, source_content)
55
- end
56
-
57
- def generate(project_name, location, options={})
58
- @location = File.expand_path(location)
59
- @project_name = project_name
60
-
61
- create_dir("")
62
-
63
- create_dir("build")
64
- create_dir("meta")
65
- create_dir("src")
66
- create_dir("src/cmake_modules")
67
-
68
- create_file_from_erb("Thorfile")
69
- create_file_from_erb("meta/project.rb")
70
- end
71
- end
72
- end
1
+ require 'rubygems'
2
+ require 'singleton'
3
+ require 'erb'
4
+ require 'active_support/core_ext/string/inflections'
5
+ require File.expand_path(File.dirname(__FILE__) + '/../project_generator')
6
+ require File.expand_path(File.dirname(__FILE__) + '/../utility/file_robot')
7
+ require File.expand_path(File.dirname(__FILE__) + '/../utility/files')
8
+
9
+ module Ritsu
10
+ module ProjectGenerators
11
+ class DefaultGenerator < Ritsu::ProjectGenerator
12
+ include Ritsu::Utility
13
+
14
+ Ritsu::ProjectGenerator.generator_classes["default"] = self
15
+
16
+ def initialize
17
+ super("default")
18
+ end
19
+
20
+ def source_dir
21
+ File.dirname(__FILE__) + "/default_generator_files"
22
+ end
23
+
24
+ def source_path(path)
25
+ source_dir + "/" + path
26
+ end
27
+
28
+ def target_dir
29
+ return @location + "/" + @project_name
30
+ end
31
+
32
+ def target_path(path)
33
+ target_dir + "/" + path
34
+ end
35
+
36
+ def create_dir(dirname)
37
+ FileRobot.create_dir(target_path(dirname))
38
+ end
39
+
40
+ def create_file(filename, content)
41
+ FileRobot.create_file(target_path(filename), content)
42
+ end
43
+
44
+ def create_file_from_erb(filename)
45
+ template_filename = source_path(filename + ".erb")
46
+ template_content = Files.read(template_filename)
47
+ template = ERB.new(template_content)
48
+ create_file(filename, template.result(binding))
49
+ end
50
+
51
+ def copy_file(filename)
52
+ source_filename = source_path(filename)
53
+ source_content = Files.read(source_filename)
54
+ create_file(filename, source_content)
55
+ end
56
+
57
+ def generate(project_name, location, options={})
58
+ @location = File.expand_path(location)
59
+ @project_name = project_name
60
+
61
+ create_dir("")
62
+
63
+ create_dir("build")
64
+ create_dir("meta")
65
+ create_dir("src")
66
+ create_dir("src/cmake_modules")
67
+
68
+ create_file_from_erb("Thorfile")
69
+ create_file_from_erb("meta/project.rb")
70
+ end
71
+ end
72
+ end
73
73
  end