yesman 0.0.4 → 0.0.5
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/bin/yesman +2 -2
- data/lib/yesman.rb +2 -0
- data/lib/yesman/cpp_creator.rb +7 -2
- data/lib/yesman/{class_generator.rb → file_generator.rb} +12 -1
- data/lib/yesman/global_config.rb +37 -2
- data/lib/yesman/rake_gen_data.rb +27 -0
- data/lib/yesman/templates/rakefile.erb +89 -0
- data/lib/yesman/version.rb +1 -1
- data/yesman.gemspec +3 -2
- metadata +29 -11
data/bin/yesman
CHANGED
@@ -14,7 +14,7 @@ def new_project
|
|
14
14
|
parser.run ARGV
|
15
15
|
parser.config[:project_name] = project_name
|
16
16
|
|
17
|
-
y = Yesman.new parser.config
|
17
|
+
y = Yesman::Yesman.new parser.config
|
18
18
|
end
|
19
19
|
|
20
20
|
def run_project
|
@@ -40,7 +40,7 @@ def generate
|
|
40
40
|
c = ConfigProxy.new
|
41
41
|
if (c.config_exists?)
|
42
42
|
info = ARGV.shift
|
43
|
-
g =
|
43
|
+
g = FileGenerator.new
|
44
44
|
puts "Creating #{info}"
|
45
45
|
g.create_class_files info
|
46
46
|
else
|
data/lib/yesman.rb
CHANGED
data/lib/yesman/cpp_creator.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
require 'yesman/file_util'
|
2
2
|
require 'yesman/logger'
|
3
|
-
require 'yesman/
|
3
|
+
require 'yesman/file_generator'
|
4
4
|
|
5
5
|
class CppCreator
|
6
6
|
attr_reader :source
|
@@ -11,7 +11,7 @@ class CppCreator
|
|
11
11
|
|
12
12
|
def initialize(params = {})
|
13
13
|
set_defaults params
|
14
|
-
@gen =
|
14
|
+
@gen = FileGenerator.new
|
15
15
|
@log = Logger.new
|
16
16
|
end
|
17
17
|
|
@@ -19,6 +19,7 @@ class CppCreator
|
|
19
19
|
create_dirs
|
20
20
|
create_source_main
|
21
21
|
create_test_main
|
22
|
+
create_build_file
|
22
23
|
end
|
23
24
|
|
24
25
|
private
|
@@ -46,4 +47,8 @@ private
|
|
46
47
|
def create_test_main
|
47
48
|
@gen.create_gtest_main
|
48
49
|
end
|
50
|
+
|
51
|
+
def create_build_file
|
52
|
+
@gen.create_build_file
|
53
|
+
end
|
49
54
|
end
|
@@ -3,8 +3,9 @@ require 'yesman/templater'
|
|
3
3
|
require 'yesman/file_util'
|
4
4
|
require 'yesman/config_proxy'
|
5
5
|
require 'yesman/logger'
|
6
|
+
require 'yesman/rake_gen_data'
|
6
7
|
|
7
|
-
class
|
8
|
+
class FileGenerator
|
8
9
|
|
9
10
|
attr_reader :templates_path
|
10
11
|
attr_reader :header_path
|
@@ -12,6 +13,7 @@ class ClassGenerator
|
|
12
13
|
attr_reader :test_path
|
13
14
|
attr_reader :main_path
|
14
15
|
attr_reader :gtest_main_path
|
16
|
+
attr_reader :rake_file_path
|
15
17
|
|
16
18
|
def initialize
|
17
19
|
@templates_path = "#{Dir.home}/.yesman/templates/"
|
@@ -20,6 +22,7 @@ class ClassGenerator
|
|
20
22
|
@test_path = create_path "test.cxx.erb"
|
21
23
|
@main_path = create_path "main.cxx.erb"
|
22
24
|
@gtest_main_path = create_path "gtest_main.cxx.erb"
|
25
|
+
@rake_file_path = create_path "rakefile.erb"
|
23
26
|
|
24
27
|
@templater = Templater.new
|
25
28
|
@log = Logger.new
|
@@ -52,6 +55,14 @@ class ClassGenerator
|
|
52
55
|
@log.log_creation "created", file_path
|
53
56
|
end
|
54
57
|
|
58
|
+
def create_build_file
|
59
|
+
rake_data = RakeGenData.new
|
60
|
+
file_contents = @templater.merge rake_data, rake_file_path
|
61
|
+
file_path = "Rakefile"
|
62
|
+
FileUtil.write_to_file file_path, file_contents
|
63
|
+
@log.log_creation "created", file_path
|
64
|
+
end
|
65
|
+
|
55
66
|
private
|
56
67
|
|
57
68
|
|
data/lib/yesman/global_config.rb
CHANGED
@@ -1,3 +1,6 @@
|
|
1
|
+
require 'yesman/version'
|
2
|
+
require 'versionomy'
|
3
|
+
|
1
4
|
class GlobalConfig
|
2
5
|
attr_reader :pre_existing
|
3
6
|
attr_reader :global_config_path
|
@@ -12,19 +15,34 @@ class GlobalConfig
|
|
12
15
|
|
13
16
|
if !pre_existing
|
14
17
|
puts "Copying file templates to #{global_config_path}"
|
15
|
-
|
16
|
-
|
18
|
+
copy_all
|
19
|
+
elsif old_version?
|
20
|
+
FileUtil.clear_directory global_config_path
|
21
|
+
copy_all
|
17
22
|
end
|
18
23
|
end
|
19
24
|
|
20
25
|
private
|
21
26
|
|
27
|
+
def copy_all
|
28
|
+
copy_templates
|
29
|
+
create_version_file
|
30
|
+
create_global_config
|
31
|
+
end
|
32
|
+
|
33
|
+
|
22
34
|
def copy_templates
|
23
35
|
FileUtil.ensure_path "#{global_config_path}/templates"
|
24
36
|
templates = File.join(File.dirname(File.expand_path(__FILE__)), 'templates');
|
25
37
|
FileUtil.recursive_copy(templates, global_config_path)
|
26
38
|
end
|
27
39
|
|
40
|
+
def create_version_file
|
41
|
+
file_path = "#{global_config_path}/version"
|
42
|
+
FileUtil.ensure_file file_path
|
43
|
+
FileUtil.write_to_file file_path, Yesman::VERSION
|
44
|
+
end
|
45
|
+
|
28
46
|
def create_global_config
|
29
47
|
params = {};
|
30
48
|
params[:source] = "src"
|
@@ -38,5 +56,22 @@ class GlobalConfig
|
|
38
56
|
def ensure_config_dir
|
39
57
|
@pre_existing = FileUtil.ensure_path global_config_path
|
40
58
|
end
|
59
|
+
|
60
|
+
def old_version?
|
61
|
+
old = false;
|
62
|
+
version_path = "#{global_config_path}/version"
|
63
|
+
if !File.exists? version_path
|
64
|
+
old = true
|
65
|
+
else
|
66
|
+
sys_version = Versionomy.parse( File.read( version_path ).to_s )
|
67
|
+
current_version = Versionomy.parse ( Yesman::VERSION )
|
68
|
+
if sys_version < Yesman::VERSION
|
69
|
+
|
70
|
+
puts "Current global yesman version: #{sys_version}, re-writting globals"
|
71
|
+
old = true
|
72
|
+
end
|
73
|
+
end
|
74
|
+
old
|
75
|
+
end
|
41
76
|
|
42
77
|
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
require 'yesman/config_proxy'
|
2
|
+
require 'erb'
|
3
|
+
|
4
|
+
class RakeGenData
|
5
|
+
|
6
|
+
attr_reader :source_dir
|
7
|
+
attr_reader :test_dir
|
8
|
+
attr_reader :output_dir
|
9
|
+
attr_reader :project_name
|
10
|
+
attr_reader :extension
|
11
|
+
|
12
|
+
def initialize(args = {})
|
13
|
+
params = ConfigProxy.new.params
|
14
|
+
@source_dir = params[:source]
|
15
|
+
@test_dir = params[:tests]
|
16
|
+
@output_dir = params[:output]
|
17
|
+
@project_name = params[:project_name]
|
18
|
+
@extension = params[:extension]
|
19
|
+
end
|
20
|
+
|
21
|
+
|
22
|
+
def get_binding
|
23
|
+
binding
|
24
|
+
end
|
25
|
+
|
26
|
+
|
27
|
+
end
|
@@ -0,0 +1,89 @@
|
|
1
|
+
SRC = FileList['<%=source_dir %>/*.<%=extension%>']
|
2
|
+
OBJ = SRC.ext('o');
|
3
|
+
|
4
|
+
TESTS = FileList['<%=test_dir %>/*.<%=extension %>']
|
5
|
+
TESTS.include('<%=source_dir %>/*.<%=extension%>')
|
6
|
+
TESTS.exclude('<%=source_dir %>/<%=project_name%>.<%=extension%>')
|
7
|
+
TOBJ = TESTS.ext('o')
|
8
|
+
|
9
|
+
namespace "main" do
|
10
|
+
|
11
|
+
desc "Compile main application"
|
12
|
+
task :compile => [ "<%=output_dir%>/<%=source_dir%>", :reset, "main"]
|
13
|
+
|
14
|
+
task :show do |t|
|
15
|
+
OBJ.each { |o| puts o }
|
16
|
+
end
|
17
|
+
|
18
|
+
task :reset do |t|
|
19
|
+
OBJ.gsub!(/<%=source_dir%>/, "<%=output_dir%>/<%=source_dir%>")
|
20
|
+
end
|
21
|
+
|
22
|
+
directory "<%=output_dir%>/<%=source_dir%>"
|
23
|
+
|
24
|
+
file "main" => OBJ do
|
25
|
+
sh "g++ -o <%=output_dir%>/main #{OBJ}"
|
26
|
+
end
|
27
|
+
|
28
|
+
desc "Run main application"
|
29
|
+
task :run do |t|
|
30
|
+
puts "Running source..."
|
31
|
+
sh "clear"
|
32
|
+
sh "./<%=output_dir%>/main"
|
33
|
+
end
|
34
|
+
|
35
|
+
desc "Build & Run main application"
|
36
|
+
task :build => [:compile]
|
37
|
+
task :build => [:run]
|
38
|
+
task :build
|
39
|
+
|
40
|
+
end
|
41
|
+
|
42
|
+
namespace "tests" do
|
43
|
+
|
44
|
+
desc "Compile all tests"
|
45
|
+
task :compile => [ "<%=output_dir %>/<%=test_dir%>", "<%= output_dir%>/<%=source_dir %>", :reset, "test_runner"]
|
46
|
+
|
47
|
+
task :show do |t|
|
48
|
+
TOBJ.each { |o| puts o }
|
49
|
+
end
|
50
|
+
|
51
|
+
task :reset do |t|
|
52
|
+
TOBJ.gsub!(/<%=test_dir%>/, "<%=output_dir%>/<%=test_dir%>")
|
53
|
+
TOBJ.gsub!(/<%= source_dir %>/, "<%= output_dir %>/<%=source_dir%>")
|
54
|
+
end
|
55
|
+
|
56
|
+
directory "<%=output_dir%>/<%=test_dir%>"
|
57
|
+
directory "<%=output_dir%>/<%=source_dir%>"
|
58
|
+
|
59
|
+
file "test_runner" => TOBJ do
|
60
|
+
sh "g++ -o <%=output_dir%>/test_runner #{TOBJ} -I<%=test_dir%>/gtest/include <%=test_dir%>/gtest/libgtest.a"
|
61
|
+
end
|
62
|
+
|
63
|
+
desc "Run test suite"
|
64
|
+
task :run do |t|
|
65
|
+
puts "Running tests..."
|
66
|
+
sh "clear"
|
67
|
+
sh "./<%=output_dir%>/test_runner"
|
68
|
+
end
|
69
|
+
|
70
|
+
desc "Build & Run all tests"
|
71
|
+
task :build => [:compile]
|
72
|
+
task :build => [:run]
|
73
|
+
task :build
|
74
|
+
|
75
|
+
rule '.o' => '.<%=extension%>' do |t|
|
76
|
+
sh "g++ #{t.source} -c -o <%=output_dir%>/#{t.name} -I<%=test_dir%>/gtest/include"
|
77
|
+
end
|
78
|
+
|
79
|
+
end
|
80
|
+
|
81
|
+
rule '.o' => '.<%=extension%>' do |t|
|
82
|
+
sh "g++ #{t.source} -c -o <%=output_dir%>/#{t.name}"
|
83
|
+
end
|
84
|
+
|
85
|
+
# Insert your file dependencies here:
|
86
|
+
# file 'FileName.o' =>[ 'FileName.c', 'Header.h', 'OtherHeader.h' ]
|
87
|
+
#
|
88
|
+
# OR include them from another file like so:
|
89
|
+
# import "your_file"
|
data/lib/yesman/version.rb
CHANGED
data/yesman.gemspec
CHANGED
@@ -12,8 +12,9 @@ Gem::Specification.new do |gem|
|
|
12
12
|
gem.summary = %q{Yesman creates project directory structures, downloads and builds GTest for C++ development projects}
|
13
13
|
gem.homepage = ""
|
14
14
|
|
15
|
-
gem.add_dependency 'mixlib-cli'
|
16
|
-
gem.add_dependency 'paint'
|
15
|
+
gem.add_dependency 'mixlib-cli', '~> 1.2.2'
|
16
|
+
gem.add_dependency 'paint', '~> 0.8.5'
|
17
|
+
gem.add_dependency 'versionomy', '~> 0.4.4'
|
17
18
|
|
18
19
|
gem.files = `git ls-files`.split($/)
|
19
20
|
gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: yesman
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.5
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,40 +9,56 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2013-01-08 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: mixlib-cli
|
16
16
|
requirement: !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
|
-
- -
|
19
|
+
- - ~>
|
20
20
|
- !ruby/object:Gem::Version
|
21
|
-
version:
|
21
|
+
version: 1.2.2
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
24
|
version_requirements: !ruby/object:Gem::Requirement
|
25
25
|
none: false
|
26
26
|
requirements:
|
27
|
-
- -
|
27
|
+
- - ~>
|
28
28
|
- !ruby/object:Gem::Version
|
29
|
-
version:
|
29
|
+
version: 1.2.2
|
30
30
|
- !ruby/object:Gem::Dependency
|
31
31
|
name: paint
|
32
32
|
requirement: !ruby/object:Gem::Requirement
|
33
33
|
none: false
|
34
34
|
requirements:
|
35
|
-
- -
|
35
|
+
- - ~>
|
36
36
|
- !ruby/object:Gem::Version
|
37
|
-
version:
|
37
|
+
version: 0.8.5
|
38
38
|
type: :runtime
|
39
39
|
prerelease: false
|
40
40
|
version_requirements: !ruby/object:Gem::Requirement
|
41
41
|
none: false
|
42
42
|
requirements:
|
43
|
-
- -
|
43
|
+
- - ~>
|
44
44
|
- !ruby/object:Gem::Version
|
45
|
-
version:
|
45
|
+
version: 0.8.5
|
46
|
+
- !ruby/object:Gem::Dependency
|
47
|
+
name: versionomy
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
50
|
+
requirements:
|
51
|
+
- - ~>
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: 0.4.4
|
54
|
+
type: :runtime
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ~>
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 0.4.4
|
46
62
|
description: CLI for quick creation of C++ projects using GTest
|
47
63
|
email:
|
48
64
|
- knomedia@gmail.com
|
@@ -58,20 +74,22 @@ files:
|
|
58
74
|
- Rakefile
|
59
75
|
- bin/yesman
|
60
76
|
- lib/yesman.rb
|
61
|
-
- lib/yesman/class_generator.rb
|
62
77
|
- lib/yesman/class_type.rb
|
63
78
|
- lib/yesman/cli_parser.rb
|
64
79
|
- lib/yesman/config_proxy.rb
|
65
80
|
- lib/yesman/cpp_creator.rb
|
81
|
+
- lib/yesman/file_generator.rb
|
66
82
|
- lib/yesman/file_util.rb
|
67
83
|
- lib/yesman/global_config.rb
|
68
84
|
- lib/yesman/gtest_installer.rb
|
69
85
|
- lib/yesman/logger.rb
|
86
|
+
- lib/yesman/rake_gen_data.rb
|
70
87
|
- lib/yesman/templater.rb
|
71
88
|
- lib/yesman/templates/class.cxx.erb
|
72
89
|
- lib/yesman/templates/gtest_main.cxx.erb
|
73
90
|
- lib/yesman/templates/header.cxx.erb
|
74
91
|
- lib/yesman/templates/main.cxx.erb
|
92
|
+
- lib/yesman/templates/rakefile.erb
|
75
93
|
- lib/yesman/templates/test.cxx.erb
|
76
94
|
- lib/yesman/version.rb
|
77
95
|
- spec/class_type_spec.rb
|