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,124 +1,124 @@
1
- require 'test/unit'
2
- require File.expand_path(File.dirname(__FILE__) + "/target")
3
- require File.expand_path(File.dirname(__FILE__) + "/src_file")
4
- require File.expand_path(File.dirname(__FILE__) + "/external_library")
5
- require File.expand_path(File.dirname(__FILE__) + "/project")
6
-
7
- module Ritsu
8
- module SetupProjectAndClearEverythingElse
9
- def setup_project(name='project')
10
- Ritsu::Target.instances.clear
11
- Ritsu::SrcFile.instances.clear
12
- Ritsu::ExternalLibrary.instances.clear
13
- @project = Ritsu::Project.create(name)
14
- end
15
-
16
- def setup
17
- setup_project
18
- end
19
- end
20
-
21
- module TestCaseWithFileTestData
22
- module ClassMethods
23
- def file_test(name, &block)
24
- case_name = "test_#{name.gsub(/\s+/,'_')}".to_sym
25
- if !Ritsu::Utility::Strings::is_c_name?(case_name.to_s)
26
- raise "'#{name}' does not yield a valid test case name (i.e., a C name)"
27
- end
28
- defined = instance_method(case_name) rescue false
29
- raise "#{case_name} is already defined in #{self}" if defined
30
- if block_given?
31
- define_method(case_name) do
32
- init_data_dir
33
- instance_eval(&block)
34
- end
35
- else
36
- define_method(case_name) do
37
- flunk "No implmentation provided for #{case_name}"
38
- end
39
- end
40
- end
41
- end
42
-
43
- def self.included(base)
44
- base.extend(ClassMethods)
45
- end
46
-
47
- def init_data_dir
48
- FileUtils.mkdir_p(data_dir)
49
- FileUtils.mkdir_p(static_dir)
50
- FileUtils.mkdir_p(output_dir)
51
- FileUtils.rm_r(Dir.glob(output_dir + '/*'), :force=>true)
52
- end
53
-
54
- def data_dir
55
- raise NotImplementedError.new
56
- end
57
-
58
- def data_path(path)
59
- data_dir + '/' + path
60
- end
61
-
62
- def output_dir
63
- data_dir + '/output'
64
- end
65
-
66
- def output_path(path)
67
- output_dir + '/' + path
68
- end
69
-
70
- def static_dir
71
- data_dir + '/static'
72
- end
73
-
74
- def static_path(path)
75
- static_dir + '/' + path
76
- end
77
-
78
- def assert_file_exists(filename)
79
- assert_block "#{filename} must exists" do
80
- File.exists?(filename)
81
- end
82
- end
83
-
84
- def assert_file_not_exist(filename)
85
- assert_block "#{filename} must not exist" do
86
- !File.exists?(filename)
87
- end
88
- end
89
-
90
- def assert_data_file_exists(filename)
91
- assert_file_exists(data_path(filename))
92
- end
93
-
94
- def assert_data_file_not_exist(filename)
95
- assert_file_not_exist(data_path(filename))
96
- end
97
-
98
- def assert_output_file_exists(filename)
99
- assert_file_exists(output_path(filename))
100
- end
101
-
102
- def assert_output_file_not_exist(filename)
103
- assert_file_not_exist(output_path(filename))
104
- end
105
-
106
- def assert_file_content(content, filename)
107
- assert_equal content, IO.read(filename)
108
- "content of #{filename} differs from expected"
109
- end
110
-
111
- def assert_file_compare(expected_file, actual_file)
112
- assert_equal IO.read(expected_file), IO.read(actual_file),
113
- "content of #{actual_file} differs from #{expected_file}"
114
- end
115
-
116
- def assert_output_file_compare_to_static(path)
117
- assert_file_compare(static_path(path), output_path(path))
118
- end
119
-
120
- def assert_output_file_content(content, path)
121
- assert_file_content(content, output_path(path))
122
- end
123
- end
1
+ require 'test/unit'
2
+ require File.expand_path(File.dirname(__FILE__) + "/target")
3
+ require File.expand_path(File.dirname(__FILE__) + "/src_file")
4
+ require File.expand_path(File.dirname(__FILE__) + "/external_library")
5
+ require File.expand_path(File.dirname(__FILE__) + "/project")
6
+
7
+ module Ritsu
8
+ module SetupProjectAndClearEverythingElse
9
+ def setup_project(name='project')
10
+ Ritsu::Target.instances.clear
11
+ Ritsu::SrcFile.instances.clear
12
+ Ritsu::ExternalLibrary.instances.clear
13
+ @project = Ritsu::Project.create(name)
14
+ end
15
+
16
+ def setup
17
+ setup_project
18
+ end
19
+ end
20
+
21
+ module TestCaseWithFileTestData
22
+ module ClassMethods
23
+ def file_test(name, &block)
24
+ case_name = "test_#{name.gsub(/\s+/,'_')}".to_sym
25
+ if !Ritsu::Utility::Strings::is_c_name?(case_name.to_s)
26
+ raise "'#{name}' does not yield a valid test case name (i.e., a C name)"
27
+ end
28
+ defined = instance_method(case_name) rescue false
29
+ raise "#{case_name} is already defined in #{self}" if defined
30
+ if block_given?
31
+ define_method(case_name) do
32
+ init_data_dir
33
+ instance_eval(&block)
34
+ end
35
+ else
36
+ define_method(case_name) do
37
+ flunk "No implmentation provided for #{case_name}"
38
+ end
39
+ end
40
+ end
41
+ end
42
+
43
+ def self.included(base)
44
+ base.extend(ClassMethods)
45
+ end
46
+
47
+ def init_data_dir
48
+ FileUtils.mkdir_p(data_dir)
49
+ FileUtils.mkdir_p(static_dir)
50
+ FileUtils.mkdir_p(output_dir)
51
+ FileUtils.rm_r(Dir.glob(output_dir + '/*'), :force=>true)
52
+ end
53
+
54
+ def data_dir
55
+ raise NotImplementedError.new
56
+ end
57
+
58
+ def data_path(path)
59
+ data_dir + '/' + path
60
+ end
61
+
62
+ def output_dir
63
+ data_dir + '/output'
64
+ end
65
+
66
+ def output_path(path)
67
+ output_dir + '/' + path
68
+ end
69
+
70
+ def static_dir
71
+ data_dir + '/static'
72
+ end
73
+
74
+ def static_path(path)
75
+ static_dir + '/' + path
76
+ end
77
+
78
+ def assert_file_exists(filename)
79
+ assert_block "#{filename} must exists" do
80
+ File.exists?(filename)
81
+ end
82
+ end
83
+
84
+ def assert_file_not_exist(filename)
85
+ assert_block "#{filename} must not exist" do
86
+ !File.exists?(filename)
87
+ end
88
+ end
89
+
90
+ def assert_data_file_exists(filename)
91
+ assert_file_exists(data_path(filename))
92
+ end
93
+
94
+ def assert_data_file_not_exist(filename)
95
+ assert_file_not_exist(data_path(filename))
96
+ end
97
+
98
+ def assert_output_file_exists(filename)
99
+ assert_file_exists(output_path(filename))
100
+ end
101
+
102
+ def assert_output_file_not_exist(filename)
103
+ assert_file_not_exist(output_path(filename))
104
+ end
105
+
106
+ def assert_file_content(content, filename)
107
+ assert_equal content, IO.read(filename)
108
+ "content of #{filename} differs from expected"
109
+ end
110
+
111
+ def assert_file_compare(expected_file, actual_file)
112
+ assert_equal IO.read(expected_file), IO.read(actual_file),
113
+ "content of #{actual_file} differs from #{expected_file}"
114
+ end
115
+
116
+ def assert_output_file_compare_to_static(path)
117
+ assert_file_compare(static_path(path), output_path(path))
118
+ end
119
+
120
+ def assert_output_file_content(content, path)
121
+ assert_file_content(content, output_path(path))
122
+ end
123
+ end
124
124
  end
@@ -44,7 +44,7 @@ module Ritsu::Thors
44
44
  platform = platform.to_sym
45
45
  case platform
46
46
  when :windows
47
- "Visual Studio 9 2008"
47
+ "Visual Studio 10"
48
48
  when :mac
49
49
  "Xcode"
50
50
  when :unix
@@ -1,8 +1,8 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/utility/strings')
2
- require File.expand_path(File.dirname(__FILE__) + '/utility/accessors')
3
- require File.expand_path(File.dirname(__FILE__) + '/utility/instance_set')
4
- require File.expand_path(File.dirname(__FILE__) + '/utility/simple_io')
5
- require File.expand_path(File.dirname(__FILE__) + '/utility/file_robot')
6
- require File.expand_path(File.dirname(__FILE__) + '/utility/check_upon_add_set')
7
- require File.expand_path(File.dirname(__FILE__) + '/utility/files')
1
+ require File.expand_path(File.dirname(__FILE__) + '/utility/strings')
2
+ require File.expand_path(File.dirname(__FILE__) + '/utility/accessors')
3
+ require File.expand_path(File.dirname(__FILE__) + '/utility/instance_set')
4
+ require File.expand_path(File.dirname(__FILE__) + '/utility/simple_io')
5
+ require File.expand_path(File.dirname(__FILE__) + '/utility/file_robot')
6
+ require File.expand_path(File.dirname(__FILE__) + '/utility/check_upon_add_set')
7
+ require File.expand_path(File.dirname(__FILE__) + '/utility/files')
8
8
  require File.expand_path(File.dirname(__FILE__) + '/utility/platform')
@@ -1,30 +1,30 @@
1
- module Ritsu
2
- module Utility
3
- module Accessors
4
- def self.included(base)
5
- base.extend(ClassMethods)
6
- end
7
-
8
- module ClassMethods
9
- def attr_method_single(name)
10
- name = name.to_s
11
- module_eval <<-_RUBY
12
- def #{name}(*args)
13
- if args.length == 0
14
- @#{name} ||= nil
15
- elsif args.length == 1
16
- @#{name} = args[0]
17
- end
18
- end
19
- _RUBY
20
- end
21
-
22
- def attr_method(*names)
23
- names.each do |name|
24
- attr_method_single(name)
25
- end
26
- end
27
- end
28
- end
29
- end
1
+ module Ritsu
2
+ module Utility
3
+ module Accessors
4
+ def self.included(base)
5
+ base.extend(ClassMethods)
6
+ end
7
+
8
+ module ClassMethods
9
+ def attr_method_single(name)
10
+ name = name.to_s
11
+ module_eval <<-_RUBY
12
+ def #{name}(*args)
13
+ if args.length == 0
14
+ @#{name} ||= nil
15
+ elsif args.length == 1
16
+ @#{name} = args[0]
17
+ end
18
+ end
19
+ _RUBY
20
+ end
21
+
22
+ def attr_method(*names)
23
+ names.each do |name|
24
+ attr_method_single(name)
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
30
30
  end
@@ -1,35 +1,35 @@
1
- require 'set'
2
-
3
- module Ritsu
4
- module Utility
5
- class CheckUponAddSet < Set
6
- def initialize(*args, &block)
7
- if block_given?
8
- @check_block = block
9
- else
10
- @check_block = Proc.new { }
11
- end
12
- super(*args)
13
- end
14
-
15
- def <<(x)
16
- @check_block.call(self, x)
17
- super(x)
18
- end
19
-
20
- def add(x)
21
- @check_block.call(self, x)
22
- super(x)
23
- end
24
-
25
- def add?(x)
26
- begin
27
- @check_block.call(self, x)
28
- super(x)
29
- rescue
30
- nil
31
- end
32
- end
33
- end
34
- end
1
+ require 'set'
2
+
3
+ module Ritsu
4
+ module Utility
5
+ class CheckUponAddSet < Set
6
+ def initialize(*args, &block)
7
+ if block_given?
8
+ @check_block = block
9
+ else
10
+ @check_block = Proc.new { }
11
+ end
12
+ super(*args)
13
+ end
14
+
15
+ def <<(x)
16
+ @check_block.call(self, x)
17
+ super(x)
18
+ end
19
+
20
+ def add(x)
21
+ @check_block.call(self, x)
22
+ super(x)
23
+ end
24
+
25
+ def add?(x)
26
+ begin
27
+ @check_block.call(self, x)
28
+ super(x)
29
+ rescue
30
+ nil
31
+ end
32
+ end
33
+ end
34
+ end
35
35
  end
@@ -1,129 +1,129 @@
1
- require 'fileutils'
2
- require 'singleton'
3
- require File.expand_path(File.dirname(__FILE__) + '/../utility/simple_io')
4
-
5
- module Ritsu
6
- module Utility
7
- class FileRobot
8
- include Singleton
9
- def self.v; instance end
10
-
11
- def self.method_missing(symbol, *args, &block)
12
- instance.send(symbol, *args, &block)
13
- end
14
-
15
- attr_accessor :force
16
- attr_reader :io
17
-
18
- def initialize
19
- @io = SimpleIO.new
20
- @force = false
21
- end
22
-
23
- def output; io.output end
24
- def output=(value); io.output = value end
25
- def input; io.input end
26
- def input=(value); io.input = value end
27
- def quiet; io.quiet end
28
- def quiet=(value); io.quiet = value end
29
-
30
- def quietly(&block)
31
- old_quiet = self.quiet
32
- self.quiet = true
33
- block.call
34
- self.quiet = old_quiet
35
- end
36
-
37
- def verbosely(&block)
38
- old_quiet = self.quiet
39
- self.quiet = false
40
- block.call
41
- self.quiet = old_quiet
42
- end
43
-
44
- def forcefully(&block)
45
- old_force = self.force
46
- self.force = true
47
- block.call
48
- self.force = old_force
49
- end
50
-
51
- def create_dir(dir_name, options={})
52
- options = {:echo_exists=>true}.merge(options)
53
- if File.exists?(dir_name)
54
- if options[:echo_exists]
55
- io.log('exist', dir_name)
56
- end
57
- else
58
- FileUtils.mkdir_p(dir_name)
59
- io.log('create', dir_name)
60
- end
61
- end
62
-
63
- def create_file(filename, content="")
64
- do_create_file = Proc.new do
65
- File.open(filename, "w") { |f| f.write content }
66
- end
67
-
68
- do_overwrite = Proc.new do
69
- do_create_file.call
70
- io.log('overwrite', filename)
71
- end
72
-
73
- create_dir(File.dirname(filename), :echo_exists=>false)
74
- if File.exists?(filename)
75
- if self.force
76
- do_overwrite.call
77
- else
78
- answer = io.ask_yes_no_all("overwrite #{filename}?")
79
- case answer
80
- when :yes
81
- do_overwrite.call
82
- when :no
83
- io.log('exist', filename)
84
- when :all
85
- self.force = true
86
- do_overwrite.call
87
- end
88
- end
89
- else
90
- do_create_file.call
91
- io.log('create', filename)
92
- end
93
- end
94
-
95
- def remove_dir(dirname)
96
- if !File.exist?(dirname)
97
- io.log("not exist", dirname)
98
- elsif !File.directory?(dirname)
99
- io.log("not dir", dirname)
100
- else
101
- begin
102
- Dir.glob(dirname + "/*") { throw "not empty" }
103
- is_empty = true
104
- rescue
105
- is_empty = false
106
- end
107
-
108
- if !is_empty
109
- io.log('not empty', dirname)
110
- elsif
111
- FileUtils.remove_dir(dirname)
112
- io.log("remove", dirname)
113
- end
114
- end
115
- end
116
-
117
- def remove_file(filename)
118
- if !File.exists?(filename)
119
- io.log("not exist", filename)
120
- elsif !File.file?(filename)
121
- io.log("not file", filename)
122
- else
123
- FileUtils.remove_file(filename)
124
- io.log("remove", filename)
125
- end
126
- end
127
- end
128
- end
1
+ require 'fileutils'
2
+ require 'singleton'
3
+ require File.expand_path(File.dirname(__FILE__) + '/../utility/simple_io')
4
+
5
+ module Ritsu
6
+ module Utility
7
+ class FileRobot
8
+ include Singleton
9
+ def self.v; instance end
10
+
11
+ def self.method_missing(symbol, *args, &block)
12
+ instance.send(symbol, *args, &block)
13
+ end
14
+
15
+ attr_accessor :force
16
+ attr_reader :io
17
+
18
+ def initialize
19
+ @io = SimpleIO.new
20
+ @force = false
21
+ end
22
+
23
+ def output; io.output end
24
+ def output=(value); io.output = value end
25
+ def input; io.input end
26
+ def input=(value); io.input = value end
27
+ def quiet; io.quiet end
28
+ def quiet=(value); io.quiet = value end
29
+
30
+ def quietly(&block)
31
+ old_quiet = self.quiet
32
+ self.quiet = true
33
+ block.call
34
+ self.quiet = old_quiet
35
+ end
36
+
37
+ def verbosely(&block)
38
+ old_quiet = self.quiet
39
+ self.quiet = false
40
+ block.call
41
+ self.quiet = old_quiet
42
+ end
43
+
44
+ def forcefully(&block)
45
+ old_force = self.force
46
+ self.force = true
47
+ block.call
48
+ self.force = old_force
49
+ end
50
+
51
+ def create_dir(dir_name, options={})
52
+ options = {:echo_exists=>true}.merge(options)
53
+ if File.exists?(dir_name)
54
+ if options[:echo_exists]
55
+ io.log('exist', dir_name)
56
+ end
57
+ else
58
+ FileUtils.mkdir_p(dir_name)
59
+ io.log('create', dir_name)
60
+ end
61
+ end
62
+
63
+ def create_file(filename, content="")
64
+ do_create_file = Proc.new do
65
+ File.open(filename, "w") { |f| f.write content }
66
+ end
67
+
68
+ do_overwrite = Proc.new do
69
+ do_create_file.call
70
+ io.log('overwrite', filename)
71
+ end
72
+
73
+ create_dir(File.dirname(filename), :echo_exists=>false)
74
+ if File.exists?(filename)
75
+ if self.force
76
+ do_overwrite.call
77
+ else
78
+ answer = io.ask_yes_no_all("overwrite #{filename}?")
79
+ case answer
80
+ when :yes
81
+ do_overwrite.call
82
+ when :no
83
+ io.log('exist', filename)
84
+ when :all
85
+ self.force = true
86
+ do_overwrite.call
87
+ end
88
+ end
89
+ else
90
+ do_create_file.call
91
+ io.log('create', filename)
92
+ end
93
+ end
94
+
95
+ def remove_dir(dirname)
96
+ if !File.exist?(dirname)
97
+ io.log("not exist", dirname)
98
+ elsif !File.directory?(dirname)
99
+ io.log("not dir", dirname)
100
+ else
101
+ begin
102
+ Dir.glob(dirname + "/*") { throw "not empty" }
103
+ is_empty = true
104
+ rescue
105
+ is_empty = false
106
+ end
107
+
108
+ if !is_empty
109
+ io.log('not empty', dirname)
110
+ elsif
111
+ FileUtils.remove_dir(dirname)
112
+ io.log("remove", dirname)
113
+ end
114
+ end
115
+ end
116
+
117
+ def remove_file(filename)
118
+ if !File.exists?(filename)
119
+ io.log("not exist", filename)
120
+ elsif !File.file?(filename)
121
+ io.log("not file", filename)
122
+ else
123
+ FileUtils.remove_file(filename)
124
+ io.log("remove", filename)
125
+ end
126
+ end
127
+ end
128
+ end
129
129
  end