erebus 0.0.3 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/erebus.gemspec +1 -0
- data/lib/erebus.rb +2 -0
- data/lib/erebus/actions/zip_file.rb +18 -0
- data/lib/erebus/core_ext/net_http_patch.rb +10 -0
- data/lib/erebus/generators/cpp_class.rb +8 -0
- data/lib/erebus/generators/project.rb +8 -2
- data/lib/erebus/generators/setup_test.rb +30 -0
- data/lib/erebus/generators/spec.rb +28 -0
- data/lib/erebus/generators/templates/ignore.erb +2 -1
- data/lib/erebus/generators/templates/rake.erb +2 -1
- data/lib/erebus/generators/templates/rake_test.erb +29 -0
- data/lib/erebus/generators/templates/spec.erb +15 -0
- data/lib/erebus/generators/templates/spec_alt.erb +16 -0
- data/lib/erebus/generators/templates/spec_runner.cpp.erb +7 -0
- data/lib/erebus/version.rb +1 -1
- metadata +26 -2
data/erebus.gemspec
CHANGED
data/lib/erebus.rb
CHANGED
@@ -0,0 +1,18 @@
|
|
1
|
+
require "zip/zip"
|
2
|
+
module Erebus
|
3
|
+
module Actions
|
4
|
+
module ZipFile
|
5
|
+
|
6
|
+
def extract source_file, destination
|
7
|
+
Zip::ZipFile.open(source_file) do |zip_file|
|
8
|
+
zip_file.each do |f|
|
9
|
+
f_path=File.join(destination, f.name)
|
10
|
+
FileUtils.mkdir_p(File.dirname(f_path))
|
11
|
+
zip_file.extract(f, f_path) unless File.exist?(f_path)
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -7,6 +7,8 @@ class CppClass < Erebus::NamedGenerator
|
|
7
7
|
|
8
8
|
#class_option :ext,:type => :string ,:default => "cpp", :desc => "Extention used for the source file"
|
9
9
|
|
10
|
+
class_option :testing, :type => :boolean, :default => true
|
11
|
+
|
10
12
|
def self.source_root
|
11
13
|
File.dirname(__FILE__)
|
12
14
|
end
|
@@ -19,6 +21,12 @@ class CppClass < Erebus::NamedGenerator
|
|
19
21
|
template "templates/class.cpp.erb", "src/#{file_name}.cpp"
|
20
22
|
end
|
21
23
|
|
24
|
+
def add_testing_framework
|
25
|
+
if options[:testing]
|
26
|
+
invoke "spec", ["#{class_name}"]
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
22
30
|
private
|
23
31
|
# def ext
|
24
32
|
# options[:ext]
|
@@ -1,12 +1,13 @@
|
|
1
1
|
require "erebus/generator"
|
2
|
-
|
2
|
+
require 'fileutils'
|
3
3
|
class Project < Erebus::NamedGenerator
|
4
4
|
desc "Create a C/C++ Project"
|
5
5
|
|
6
|
+
class_option :testing, :type => :boolean, :default => true
|
6
7
|
def self.source_root
|
7
8
|
File.dirname(__FILE__)
|
8
9
|
end
|
9
|
-
|
10
|
+
|
10
11
|
def create_rake_file
|
11
12
|
template "templates/rake.erb", "#{class_name}/Rakefile"
|
12
13
|
end
|
@@ -24,5 +25,10 @@ class Project < Erebus::NamedGenerator
|
|
24
25
|
template "templates/project.erebus.erb", "#{class_name}/.erebus"
|
25
26
|
end
|
26
27
|
|
28
|
+
def add_testing_framework
|
29
|
+
if options[:testing]
|
30
|
+
invoke "setup_test", ["#{class_name}"]
|
31
|
+
end
|
32
|
+
end
|
27
33
|
end
|
28
34
|
|
@@ -0,0 +1,30 @@
|
|
1
|
+
require "erebus/generator"
|
2
|
+
require "erebus/actions/zip_file"
|
3
|
+
class SetupTest < Erebus::NamedGenerator
|
4
|
+
desc "Add testing framework Igloo to project"
|
5
|
+
|
6
|
+
include Erebus::Actions::ZipFile
|
7
|
+
|
8
|
+
def self.source_root
|
9
|
+
File.dirname(__FILE__)
|
10
|
+
end
|
11
|
+
|
12
|
+
def get_test_framework
|
13
|
+
#SetupTest.validate_project
|
14
|
+
get "https://github.com/joakimkarlsson/igloo/archive/master.zip", "#{class_name}/lib/igloo.zip"
|
15
|
+
say_status :extracting, "#{class_name}/lib/igloo.zip"
|
16
|
+
extract "#{class_name}/lib/igloo.zip", "#{class_name}/lib"
|
17
|
+
remove_file "#{class_name}/lib/igloo.zip"
|
18
|
+
end
|
19
|
+
|
20
|
+
def create_test_runner
|
21
|
+
template "templates/spec_runner.cpp.erb", "#{class_name}/spec/runner.cpp"
|
22
|
+
end
|
23
|
+
|
24
|
+
def append_rake_command
|
25
|
+
if !File.exist?("#{class_name}/test.rake")
|
26
|
+
template "templates/rake_test.erb", "#{class_name}/test.rake"
|
27
|
+
append_file "#{class_name}/Rakefile", 'import "test.rake"'
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
require "erebus/generator"
|
2
|
+
|
3
|
+
class Spec < Erebus::NamedGenerator
|
4
|
+
desc "Create a Igloo testing source file"
|
5
|
+
|
6
|
+
#class_option :ext,:type => :string ,:default => "cpp", :desc => "Extention used for the source file"
|
7
|
+
|
8
|
+
class_option :use_alt, :type => :boolean, :default => true, :desc => "Use the alt syntax for igloo"
|
9
|
+
|
10
|
+
def self.source_root
|
11
|
+
File.dirname(__FILE__)
|
12
|
+
end
|
13
|
+
|
14
|
+
def create_source_file
|
15
|
+
Spec.validate_project
|
16
|
+
if(options[:use_alt])
|
17
|
+
template "templates/spec_alt.erb", "spec/#{file_name}_spec.#{ext}"
|
18
|
+
else
|
19
|
+
template "templates/spec.erb", "spec/#{file_name}_spec.#{ext}"
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
private
|
24
|
+
def ext
|
25
|
+
"cpp"
|
26
|
+
# options[:ext]
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
INCLUDES = [HEADERS_DIR]
|
2
|
+
TEST_DIR = "spec"
|
3
|
+
|
4
|
+
|
5
|
+
desc "Build the Test Application"
|
6
|
+
task :build_test do
|
7
|
+
FileUtils.mkdir File.join(PROJECT_DIR, "build") if !Dir.exist?(File.join(PROJECT_DIR, "build"))
|
8
|
+
flags = FLAGS.join(" ")
|
9
|
+
INCLUDES << "lib/igloo-master"
|
10
|
+
headers = INCLUDES.collect{|x| "-I#{File.join(PROJECT_DIR, x)}" }.join(" ")
|
11
|
+
lib_paths = LIB_PATHS.collect{|x| "-L#{x}"}.join(" ")
|
12
|
+
libs = LIBRARIES.collect{|x| "-l#{x}"}.join(" ")
|
13
|
+
source_path = File.join(PROJECT_DIR, SOURCE_DIR)
|
14
|
+
files_array = Dir.glob(File.join(SOURCE_DIR,"**", "*.{c,cpp}"))
|
15
|
+
files_array.delete "src/main.cpp"
|
16
|
+
files_array += Dir.glob(File.join(TEST_DIR,"**", "*.{c,cpp}"))
|
17
|
+
files = files_array.join(" ")
|
18
|
+
|
19
|
+
puts files
|
20
|
+
output = "-o #{File.join(PROJECT_DIR, "build")}/#{APP_NAME}_test"
|
21
|
+
command = "#{CC} #{flags} #{headers} #{lib_paths} #{libs} #{files} #{output}"
|
22
|
+
puts command
|
23
|
+
system command
|
24
|
+
end
|
25
|
+
|
26
|
+
desc "Run the test"
|
27
|
+
task :test => [:clean, :build_test] do
|
28
|
+
system "#{File.join(PROJECT_DIR, "build")}/#{APP_NAME}_test"
|
29
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
#include <igloo/igloo_alt.h>
|
2
|
+
#include "<%= "#{file_name}.h" %>"
|
3
|
+
using namespace igloo;
|
4
|
+
|
5
|
+
Describe(<%= class_name %>)
|
6
|
+
{
|
7
|
+
bool its_true;
|
8
|
+
|
9
|
+
An_entity() : its_true(true) {}
|
10
|
+
|
11
|
+
It(should_do_something)
|
12
|
+
{
|
13
|
+
Assert::That(its_true, IsTrue());
|
14
|
+
}
|
15
|
+
|
16
|
+
};
|
data/lib/erebus/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: erebus
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-02-
|
12
|
+
date: 2013-02-08 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: thor
|
@@ -75,6 +75,22 @@ dependencies:
|
|
75
75
|
- - ~>
|
76
76
|
- !ruby/object:Gem::Version
|
77
77
|
version: 1.5.0
|
78
|
+
- !ruby/object:Gem::Dependency
|
79
|
+
name: rubyzip
|
80
|
+
requirement: !ruby/object:Gem::Requirement
|
81
|
+
none: false
|
82
|
+
requirements:
|
83
|
+
- - ~>
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
version: 0.9.9
|
86
|
+
type: :runtime
|
87
|
+
prerelease: false
|
88
|
+
version_requirements: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
90
|
+
requirements:
|
91
|
+
- - ~>
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: 0.9.9
|
78
94
|
- !ruby/object:Gem::Dependency
|
79
95
|
name: pry
|
80
96
|
requirement: !ruby/object:Gem::Requirement
|
@@ -108,11 +124,15 @@ files:
|
|
108
124
|
- bin/erebus
|
109
125
|
- erebus.gemspec
|
110
126
|
- lib/erebus.rb
|
127
|
+
- lib/erebus/actions/zip_file.rb
|
128
|
+
- lib/erebus/core_ext/net_http_patch.rb
|
111
129
|
- lib/erebus/generator.rb
|
112
130
|
- lib/erebus/generators/cpp_class.rb
|
113
131
|
- lib/erebus/generators/header.rb
|
114
132
|
- lib/erebus/generators/project.rb
|
133
|
+
- lib/erebus/generators/setup_test.rb
|
115
134
|
- lib/erebus/generators/source.rb
|
135
|
+
- lib/erebus/generators/spec.rb
|
116
136
|
- lib/erebus/generators/templates/blank.erb
|
117
137
|
- lib/erebus/generators/templates/class.cpp.erb
|
118
138
|
- lib/erebus/generators/templates/class.h.erb
|
@@ -120,6 +140,10 @@ files:
|
|
120
140
|
- lib/erebus/generators/templates/main.cpp.erb
|
121
141
|
- lib/erebus/generators/templates/project.erebus.erb
|
122
142
|
- lib/erebus/generators/templates/rake.erb
|
143
|
+
- lib/erebus/generators/templates/rake_test.erb
|
144
|
+
- lib/erebus/generators/templates/spec.erb
|
145
|
+
- lib/erebus/generators/templates/spec_alt.erb
|
146
|
+
- lib/erebus/generators/templates/spec_runner.cpp.erb
|
123
147
|
- lib/erebus/version.rb
|
124
148
|
homepage: https://github.com/cajun-code/erebus
|
125
149
|
licenses: []
|