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.
- data/README.md +95 -95
- data/bin/define_cpp_string +54 -54
- data/bin/ritsu +31 -31
- data/lib/ritsu.rb +16 -16
- data/lib/ritsu/block.rb +258 -258
- data/lib/ritsu/ext/cuda.rb +5 -5
- data/lib/ritsu/ext/cuda/external_library.rb +15 -15
- data/lib/ritsu/ext/cuda/project.rb +31 -31
- data/lib/ritsu/ext/cuda/src_files/cu_file.rb +46 -46
- data/lib/ritsu/ext/cuda/src_files/target_cmake_lists.rb +110 -110
- data/lib/ritsu/ext/cuda/target.rb +16 -16
- data/lib/ritsu/ext/cuda/targets/library.rb +16 -16
- data/lib/ritsu/ext/fake_install.rb +2 -2
- data/lib/ritsu/ext/fake_install/project.rb +16 -16
- data/lib/ritsu/ext/fake_install/src_files/project_cmake_lists.rb +45 -45
- data/lib/ritsu/ext/glsl.rb +1 -1
- data/lib/ritsu/ext/glsl/src_files/frag_file.rb +70 -70
- data/lib/ritsu/ext/glsl/src_files/vert_file.rb +70 -70
- data/lib/ritsu/ext/qt.rb +4 -4
- data/lib/ritsu/ext/qt/project.rb +47 -47
- data/lib/ritsu/ext/qt/src_files/header_file.rb +60 -60
- data/lib/ritsu/ext/qt/src_files/target_cmake_lists.rb +106 -106
- data/lib/ritsu/ext/qt/src_files/ui_file.rb +46 -46
- data/lib/ritsu/ext/test_case.rb +19 -19
- data/lib/ritsu/external_library.rb +46 -46
- data/lib/ritsu/project.rb +93 -93
- data/lib/ritsu/project_generator.rb +33 -33
- data/lib/ritsu/project_generators/default_generator.rb +72 -72
- data/lib/ritsu/project_generators/default_generator_files/Thorfile.erb +8 -8
- data/lib/ritsu/project_generators/default_generator_files/meta/project.rb.erb +10 -10
- data/lib/ritsu/src_file.rb +79 -79
- data/lib/ritsu/src_files.rb +12 -12
- data/lib/ritsu/src_files/cpp_file.rb +43 -43
- data/lib/ritsu/src_files/executable_cmake_lists.rb +39 -39
- data/lib/ritsu/src_files/header_file.rb +60 -60
- data/lib/ritsu/src_files/project_cmake_lists.rb +133 -133
- data/lib/ritsu/src_files/project_config_header_file.rb +14 -14
- data/lib/ritsu/src_files/project_config_header_template_file.rb +44 -44
- data/lib/ritsu/src_files/shared_library_cmake_lists.rb +39 -39
- data/lib/ritsu/src_files/static_library_cmake_lists.rb +39 -39
- data/lib/ritsu/src_files/target_cmake_lists.rb +189 -189
- data/lib/ritsu/src_files/templated_src_file.rb +47 -47
- data/lib/ritsu/src_files/unit.rb +32 -32
- data/lib/ritsu/target.rb +154 -154
- data/lib/ritsu/targets.rb +3 -3
- data/lib/ritsu/targets/executable.rb +44 -44
- data/lib/ritsu/targets/library.rb +29 -29
- data/lib/ritsu/targets/shared_library.rb +38 -38
- data/lib/ritsu/targets/static_library.rb +32 -32
- data/lib/ritsu/template.rb +68 -68
- data/lib/ritsu/template_policies.rb +132 -132
- data/lib/ritsu/test_helpers.rb +123 -123
- data/lib/ritsu/thors/default_thor.rb +1 -1
- data/lib/ritsu/utility.rb +7 -7
- data/lib/ritsu/utility/accessors.rb +29 -29
- data/lib/ritsu/utility/check_upon_add_set.rb +34 -34
- data/lib/ritsu/utility/file_robot.rb +128 -128
- data/lib/ritsu/utility/files.rb +12 -12
- data/lib/ritsu/utility/instance_dependencies.rb +112 -112
- data/lib/ritsu/utility/instance_set.rb +28 -28
- data/lib/ritsu/utility/platform.rb +20 -20
- data/lib/ritsu/utility/simple_io.rb +64 -64
- data/lib/ritsu/utility/single_instance.rb +33 -33
- data/lib/ritsu/utility/strings.rb +40 -40
- data/test/ritsu/block_test.rb +196 -196
- data/test/ritsu/ext/cuda/src_files/cuda_static_library_cmake_lists_test.rb +63 -63
- data/test/ritsu/external_library_test.rb +41 -41
- data/test/ritsu/project_generators/default_generator_test.rb +34 -34
- data/test/ritsu/project_test.rb +127 -127
- data/test/ritsu/src_file_test.rb +69 -69
- data/test/ritsu/src_files/cpp_file_test.rb +42 -42
- data/test/ritsu/src_files/executable_cmake_lists_test.rb +92 -92
- data/test/ritsu/src_files/header_file_test.rb +57 -57
- data/test/ritsu/src_files/project_cmake_lists_test.rb +159 -159
- data/test/ritsu/src_files/shared_library_cmake_lists_test.rb +54 -54
- data/test/ritsu/src_files/static_library_cmake_lists_test.rb +54 -54
- data/test/ritsu/src_files/target_cmake_lists_test.rb +15 -15
- data/test/ritsu/target_test.rb +105 -105
- data/test/ritsu/targets/executable_test.rb +10 -10
- data/test/ritsu/targets/shared_library_test.rb +10 -10
- data/test/ritsu/targets/static_library_test.rb +10 -10
- data/test/ritsu/utility/accessors_test.rb +14 -14
- data/test/ritsu/utility/check_upon_add_set_test.rb +31 -31
- data/test/ritsu/utility/file_robot_test.rb +175 -175
- data/test/ritsu/utility/strings_test.rb +28 -28
- data/test/test_helpers.rb +3 -3
- metadata +72 -124
- data/Thorfile +0 -104
- data/VERSION +0 -1
data/lib/ritsu/ext/test_case.rb
CHANGED
@@ -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
|
data/lib/ritsu/project.rb
CHANGED
@@ -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
|