8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
|
# File 'lib/molt/cli/create_module.rb', line 8
def self.create_module(module_name, template_set, options, xcode = false)
config = Molt::Configuration.load_or_initialize
if !xcode
config = Molt::Configuration.apply_cli_overrides config, options, module_name, template_set
else
config = Molt::Configuration.config_for_xcode config, options, module_name, template_set
end
rows = table_rows_for config, xcode
sets = ""
models = ""
[Molt::MOLT_GLOBAL, Molt::MOLT_PROJECT ].each do |path|
if Dir.exist? "#{path}/template_sets/#{template_set}"
sets = "#{path}/template_sets"
models = "#{path}/models"
Liquid::Template.file_system = Liquid::LocalFileSystem.new("#{path}/partials/", '_%s.liquid')
end
end
Dir["#{sets}/#{template_set}/**/*swift.liquid"].each do |template_file|
template_base_folder = File.dirname(template_file).gsub(/#{sets}\/#{template_set}/, "")
destination_folder = "#{options.output_folder}/#{module_name}#{template_base_folder}" if !xcode
destination_folder = File.expand_path("~/Library/Developer/Xcode/Templates/File Templates/Molt/#{template_set.gsub(/_/, " ")}.xctemplate") if xcode
base_file = File.basename(template_file.gsub(/.liquid$/, ""))
output_file = "#{destination_folder}/#{module_name}#{base_file}" if !xcode
output_file = "#{destination_folder}/___FILEBASENAME___#{base_file}" if xcode
rows << [template_file.gsub(/#{sets}\//, ""), output_file.blue]
if options.do_it
FileUtils.mkdir_p destination_folder
FileUtils.cp Dir.glob("#{Molt::ROOT}/sample_configs/Template*"), destination_folder if xcode
Molt::Exporter.liquify(template: template_file, output_file: output_file, config: config)
end
end
if options.create_model && options.model
Dir["#{models}/**/*swift.liquid"].each do |template_file|
destination_folder = "#{options.output_folder}/#{module_name}/Models"
base_file = File.basename(template_file.gsub(/.liquid$/, ""))
base_file = base_file.gsub(/Entity/, options.model)
base_file = base_file.gsub(/Model/, "#{options.model}Model")
output_file = "#{destination_folder}/#{base_file}"
rows << [template_file.gsub(/#{models}\//, ""), output_file.blue]
if options.do_it
FileUtils.mkdir_p destination_folder
Molt::Exporter.liquify(template: template_file, output_file: output_file, config: config)
end
end
end
output_table_with rows
if !options.do_it
puts "\nThat was just a dry-run. If this looks good to you, don't forget to add --do-it".green
end
end
|