Class: Bake::Create

Inherits:
Object
  • Object
show all
Defined in:
lib/bake/options/create.rb

Class Method Summary collapse

Class Method Details

.checkFile(name) ⇒ Object



77
78
79
80
81
82
# File 'lib/bake/options/create.rb', line 77

def self.checkFile(name)
  if File.exist?(name)
    puts "#{name} already exists"
    ExitHelper.exit(1)
  end
end

.customTemplateObject



59
60
61
62
63
64
65
66
67
68
# File 'lib/bake/options/create.rb', line 59

def self.customTemplate
  "Project default: Lib {\n"+
  self.header+
  "\n"+
  "  CustomConfig Lib {\n"+
  "    Dependency config: IncludeOnly\n"+
  "  }\n"+
  self.unitTestBase +
  "\n}\n"
end

.exeTemplateObject



33
34
35
36
37
38
39
40
41
42
43
44
# File 'lib/bake/options/create.rb', line 33

def self.exeTemplate
  "Project default: Main {\n"+
  self.header +
  self.includeOnly+
  "\n"+
  "  ExecutableConfig Main {\n"+
  "    Files \"src/**/*.cpp\"\n"+
  "    Dependency config: IncludeOnly\n"+
  "    DefaultToolchain GCC\n"+
  "  }\n"+
  "\n}\n"
end

.headerObject



8
9
10
11
12
13
14
15
# File 'lib/bake/options/create.rb', line 8

def self.header
  "\n"+
  "  RequiredBakeVersion minimum: \"#{Bake::Version.number}\"\n"+
  "\n"+
  "  Responsible {\n"+
  "    Person \"#{ENV["USER"]}\"\n"+
  "  }\n"
end

.includeOnlyObject



17
18
19
20
21
22
# File 'lib/bake/options/create.rb', line 17

def self.includeOnly
  "\n"+
  "  CustomConfig IncludeOnly {\n"+
  "    IncludeDir include, inherit: true\n"+
  "  }\n"
end

.libTemplateObject



46
47
48
49
50
51
52
53
54
55
56
57
# File 'lib/bake/options/create.rb', line 46

def self.libTemplate
  "Project default: Lib {\n"+
  self.header +
  self.includeOnly+
  "\n"+
  "  LibraryConfig Lib {\n"+
  "    Files \"src/**/*.cpp\"\n"+
  "    Dependency config: IncludeOnly\n"+
  "  }\n"+
  self.unitTestBase +
  "\n}\n"
end

.mainTemplateObject



70
71
72
73
74
75
# File 'lib/bake/options/create.rb', line 70

def self.mainTemplate
  "int main()\n"+
  "{\n"+
  "  return 0;\n"+
  "}\n"
end

.proj(type) ⇒ Object



84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
# File 'lib/bake/options/create.rb', line 84

def self.proj(type)
  checkFile("Project.meta")
  checkFile("src/main.cpp") if (type == "exe")
  FileUtils::mkdir_p "src"
  FileUtils::mkdir_p "include"

  if (type == "lib")
    File.write("Project.meta", libTemplate);
  elsif (type == "exe")
    File.write("Project.meta", exeTemplate);
    File.write("src/main.cpp", mainTemplate);
  elsif (type == "custom")
    File.write("Project.meta", customTemplate);
  else
    puts "'--create' must be followed by 'lib', 'exe' or 'custom'"
    ExitHelper.exit(1)
  end

  puts "Project created."
  ExitHelper.exit(0)
end

.unitTestBaseObject



24
25
26
27
28
29
30
31
# File 'lib/bake/options/create.rb', line 24

def self.unitTestBase
  "\n"+
  "  ExecutableConfig UnitTestBase {\n"+
  "    Files \"test/src/**/*.cpp\"\n"+
  "    Dependency config: Lib\n"+
  "    DefaultToolchain GCC\n"+
  "  }\n"
end