indoctrinatr-tools 0.10.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.arcconfig +9 -0
- data/.coveralls.yml +1 -0
- data/.gitignore +54 -0
- data/.rubocop.yml +10 -0
- data/.rvmrc +5 -0
- data/.travis.yml +19 -0
- data/Gemfile +4 -0
- data/LICENSE +21 -0
- data/README.md +74 -0
- data/Rakefile +32 -0
- data/assets/images/dkd_logo.png +0 -0
- data/assets/images/logo.png +0 -0
- data/bin/indoctrinatr +146 -0
- data/cucumber.yml +1 -0
- data/features/autocompletion_support.feature +9 -0
- data/features/demo.feature +17 -0
- data/features/documentation.feature +11 -0
- data/features/pack.feature +11 -0
- data/features/parse.feature +6 -0
- data/features/pdf.feature +10 -0
- data/features/scaffold.feature +23 -0
- data/features/step_definitions/common.rb +3 -0
- data/features/step_definitions/indoctrinatr_cli.rb +11 -0
- data/features/support/env.rb +1 -0
- data/features/version.feature +5 -0
- data/features/workflow.feature +8 -0
- data/indoctrinatr-tools.gemspec +39 -0
- data/lib/indoctrinatr/templates/configuration.yaml +17 -0
- data/lib/indoctrinatr/templates/documentation/indoctrinatr-technical-documentation-content.tex.erb +36 -0
- data/lib/indoctrinatr/templates/documentation/indoctrinatr-technical-documentation.sty +195 -0
- data/lib/indoctrinatr/templates/documentation/indoctrinatr-technical-documentation.tex.erb +89 -0
- data/lib/indoctrinatr/templates/documentation/indoctrinatr_letterpaper.pdf +0 -0
- data/lib/indoctrinatr/templates/template.tex.erb +8 -0
- data/lib/indoctrinatr/tools.rb +9 -0
- data/lib/indoctrinatr/tools/configuration_extractor.rb +27 -0
- data/lib/indoctrinatr/tools/default_values.rb +54 -0
- data/lib/indoctrinatr/tools/directory_helpers.rb +18 -0
- data/lib/indoctrinatr/tools/template_documentation_content.rb +52 -0
- data/lib/indoctrinatr/tools/template_documentation_helpers.rb +59 -0
- data/lib/indoctrinatr/tools/template_documentation_source_file.rb +31 -0
- data/lib/indoctrinatr/tools/template_pack_configuration.rb +7 -0
- data/lib/indoctrinatr/tools/template_pack_default_values_compiler.rb +38 -0
- data/lib/indoctrinatr/tools/template_pack_default_values_parser.rb +51 -0
- data/lib/indoctrinatr/tools/template_pack_demo.rb +23 -0
- data/lib/indoctrinatr/tools/template_pack_documentation.rb +111 -0
- data/lib/indoctrinatr/tools/template_pack_helpers.rb +38 -0
- data/lib/indoctrinatr/tools/template_pack_packer.rb +49 -0
- data/lib/indoctrinatr/tools/template_pack_scaffold.rb +57 -0
- data/lib/indoctrinatr/tools/version.rb +5 -0
- data/lib/redcloth_latex_formatter_patch/patch.rb +35 -0
- data/spec/indoctrinatr/templates/configuration_file_spec.rb +9 -0
- data/spec/indoctrinatr/templates/tex_file_spec.rb +9 -0
- data/spec/indoctrinatr/tools/textile_support_spec.rb +18 -0
- data/spec/indoctrinatr/tools/version_spec.rb +8 -0
- data/spec/redcloth_latex_formatter_patch/patch_spec.rb +30 -0
- data/spec/spec_helper.rb +2 -0
- metadata +304 -0
@@ -0,0 +1,27 @@
|
|
1
|
+
require 'indoctrinatr/tools/template_pack_configuration'
|
2
|
+
|
3
|
+
module Indoctrinatr
|
4
|
+
module Tools
|
5
|
+
class ConfigurationExtractor
|
6
|
+
include TemplatePackHelpers
|
7
|
+
|
8
|
+
attr_reader :template_pack_name
|
9
|
+
|
10
|
+
def initialize template_pack_name
|
11
|
+
@template_pack_name = template_pack_name
|
12
|
+
end
|
13
|
+
|
14
|
+
def call # rubocop:disable Metrics/AbcSize
|
15
|
+
config_file = YAML.load_file config_file_path
|
16
|
+
configuration = TemplatePackConfiguration.new
|
17
|
+
configuration.template_asset_path = assets_path.to_s
|
18
|
+
configuration.default_file_name = "#{template_pack_name}_with_default_values.pdf"
|
19
|
+
configuration.output_file_name = config_file.fetch('output_file_name', "#{template_pack_name}_with_default_values.pdf")
|
20
|
+
configuration.template_name = config_file.fetch 'template_name'
|
21
|
+
configuration.textual_description = config_file.fetch 'textual_description'
|
22
|
+
configuration.attributes_as_hashes_in_array = config_file.fetch 'fields', []
|
23
|
+
configuration
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,54 @@
|
|
1
|
+
require 'redcloth'
|
2
|
+
|
3
|
+
module Indoctrinatr
|
4
|
+
module Tools
|
5
|
+
class DefaultValues
|
6
|
+
def initialize configuration
|
7
|
+
@_configuration = configuration
|
8
|
+
_build_from_configuration
|
9
|
+
end
|
10
|
+
|
11
|
+
def textile2latex textile
|
12
|
+
RedCloth.new(textile).to_latex
|
13
|
+
end
|
14
|
+
|
15
|
+
def retrieve_binding
|
16
|
+
binding
|
17
|
+
end
|
18
|
+
|
19
|
+
def customized_output_file_name
|
20
|
+
@_customized_output_file_name ||= eval('"' + @_output_file_name + '"') # rubocop:disable Lint/Eval
|
21
|
+
end
|
22
|
+
|
23
|
+
def template_asset_path
|
24
|
+
@_template_asset_path
|
25
|
+
end
|
26
|
+
|
27
|
+
def output_file_name
|
28
|
+
@_output_file_name
|
29
|
+
end
|
30
|
+
|
31
|
+
def default_file_name
|
32
|
+
@_default_file_name
|
33
|
+
end
|
34
|
+
|
35
|
+
def _build_from_configuration # rubocop:disable Metrics/AbcSize
|
36
|
+
@_template_asset_path = @_configuration.template_asset_path
|
37
|
+
@_output_file_name = @_configuration.output_file_name
|
38
|
+
@_default_file_name = @_configuration.default_file_name
|
39
|
+
|
40
|
+
@_configuration.attributes_as_hashes_in_array.each do |attribute_hash|
|
41
|
+
instance_variable_set("@_#{attribute_hash['name']}", attribute_hash['default_value'])
|
42
|
+
|
43
|
+
define_singleton_method "raw_#{attribute_hash['name']}".to_sym do
|
44
|
+
instance_variable_get("@_#{attribute_hash['name']}")
|
45
|
+
end
|
46
|
+
|
47
|
+
define_singleton_method attribute_hash['name'].to_sym do
|
48
|
+
instance_variable_get("@_#{attribute_hash['name']}").to_latex
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module Indoctrinatr
|
2
|
+
module Tools
|
3
|
+
module DirectoryHelpers
|
4
|
+
def print_dirtree_style directory = '.'
|
5
|
+
Dir.glob("#{directory}/**/*").inject [] do |entries, entry| # list entries recursively
|
6
|
+
nesting = entry.count(File::SEPARATOR) + 1 # nesting starts with 2, because for \dirtree 1 is root
|
7
|
+
name = entry.split(File::SEPARATOR).last
|
8
|
+
entries.push ".#{nesting} #{name}. " # formatting for \dirtree: .<level><space><text-node>.<space>
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
def list_files_of_type directory = '.', types = %w(erb rb yaml sty tex) # default file types for template docs
|
13
|
+
# found and modified from http://stackoverflow.com/a/3504307/1796645
|
14
|
+
Dir.glob("#{directory}/**/*.{#{types.join(',')}}") # recursively list files of type in types array
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,52 @@
|
|
1
|
+
require 'indoctrinatr/tools/template_pack_configuration'
|
2
|
+
require 'indoctrinatr/tools/directory_helpers'
|
3
|
+
require 'indoctrinatr/tools/template_documentation_source_file'
|
4
|
+
require 'indoctrinatr/tools/default_values'
|
5
|
+
|
6
|
+
module Indoctrinatr
|
7
|
+
module Tools
|
8
|
+
class TemplateDocumentationContent
|
9
|
+
include DirectoryHelpers
|
10
|
+
include TemplatePackHelpers
|
11
|
+
|
12
|
+
attr_accessor :template_pack_name, :list_of_files
|
13
|
+
|
14
|
+
def initialize template_pack_name, configuration
|
15
|
+
@configuration = configuration
|
16
|
+
@template_pack_name = template_pack_name
|
17
|
+
@list_of_files = print_dirtree_style @template_pack_name
|
18
|
+
@attributes = configuration.attributes_as_hashes_in_array # we need: name, presentation, default_value, description
|
19
|
+
@template_name = configuration.template_name
|
20
|
+
@files = read_template_files_content
|
21
|
+
@default_values_pdf_path = pdf_with_default_values_file_path
|
22
|
+
# should have been generated automatically, error if something went wrong with it:
|
23
|
+
fail IOError, "template with default values does not exist in current directory. Run indoctrinatr pdf #{template_pack_name}" unless File.exist? @default_values_pdf_path
|
24
|
+
end
|
25
|
+
|
26
|
+
def retrieve_binding
|
27
|
+
binding
|
28
|
+
end
|
29
|
+
|
30
|
+
private
|
31
|
+
|
32
|
+
def read_template_files_content
|
33
|
+
filenames = list_files_of_type template_pack_name
|
34
|
+
filenames.inject [] do |files, filename|
|
35
|
+
files.push TemplateDocumentationSourceFile.new filename
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
def pdf_with_default_values_file_path
|
40
|
+
# TODO: this would make more sense in one of the Helpers modules, but we don't want to create a new dependency there. Move this when file path shenanigans are generally revised.
|
41
|
+
# get file path for template with default values:
|
42
|
+
default_values = DefaultValues.new @configuration
|
43
|
+
# if there is a change in where the pdf command (compiler class) saves it's output, this logic needs to be updated
|
44
|
+
if default_values.customized_output_file_name == default_values.default_file_name
|
45
|
+
Pathname.new(Dir.pwd).join default_values.customized_output_file_name
|
46
|
+
else
|
47
|
+
Pathname.new(Dir.pwd).join default_values.output_file_name
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
@@ -0,0 +1,59 @@
|
|
1
|
+
require 'tmpdir'
|
2
|
+
|
3
|
+
module Indoctrinatr
|
4
|
+
module Tools
|
5
|
+
module TemplateDocumentationHelpers
|
6
|
+
attr_accessor :documentation_compile_dir_path_name
|
7
|
+
|
8
|
+
def make_documentation_compile_dir_path_name
|
9
|
+
@documentation_compile_dir_path_name = Pathname.new Dir.mktmpdir 'indoctrinatr_tools_tmp'
|
10
|
+
end
|
11
|
+
|
12
|
+
def content_tex_file_path
|
13
|
+
documentation_files_path.join 'indoctrinatr-technical-documentation-content.tex.erb'
|
14
|
+
end
|
15
|
+
|
16
|
+
def source_latex_package_file_path
|
17
|
+
documentation_files_path.join 'indoctrinatr-technical-documentation.sty'
|
18
|
+
end
|
19
|
+
|
20
|
+
def source_letterpaper_file_path
|
21
|
+
documentation_files_path.join 'indoctrinatr_letterpaper.pdf'
|
22
|
+
end
|
23
|
+
|
24
|
+
def source_main_tex_file_path
|
25
|
+
documentation_files_path.join 'indoctrinatr-technical-documentation.tex.erb'
|
26
|
+
end
|
27
|
+
|
28
|
+
def latex_package_destination_path
|
29
|
+
documentation_compile_dir_path_name.join 'indoctrinatr-technical-documentation.sty'
|
30
|
+
end
|
31
|
+
|
32
|
+
def letterpaper_file_destination_path
|
33
|
+
documentation_compile_dir_path_name.join 'indoctrinatr_letterpaper.pdf'
|
34
|
+
end
|
35
|
+
|
36
|
+
def content_tex_file_destination_path
|
37
|
+
documentation_compile_dir_path_name.join 'indoctrinatr-technical-documentation-content.tex'
|
38
|
+
end
|
39
|
+
|
40
|
+
def main_tex_file_destination_path
|
41
|
+
documentation_compile_dir_path_name.join 'indoctrinatr-technical-documentation.tex'
|
42
|
+
end
|
43
|
+
|
44
|
+
def documentation_file_path
|
45
|
+
documentation_compile_dir_path_name.join 'indoctrinatr-technical-documentation.pdf'
|
46
|
+
end
|
47
|
+
|
48
|
+
def latex_log_file
|
49
|
+
documentation_compile_dir_path_name.join 'indoctrinatr-technical-documentation.log'
|
50
|
+
end
|
51
|
+
|
52
|
+
private
|
53
|
+
|
54
|
+
def documentation_files_path
|
55
|
+
Pathname.new(File.expand_path(File.dirname(__FILE__))).join('..', 'templates', 'documentation')
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
module Indoctrinatr
|
2
|
+
module Tools
|
3
|
+
class TemplateDocumentationSourceFile
|
4
|
+
attr_reader :name, :content, :language
|
5
|
+
|
6
|
+
def initialize filename
|
7
|
+
@name = filename
|
8
|
+
@content = File.read filename
|
9
|
+
@language = set_programming_language
|
10
|
+
end
|
11
|
+
|
12
|
+
private
|
13
|
+
|
14
|
+
def set_programming_language
|
15
|
+
case File.extname(@name)
|
16
|
+
when '.tex'
|
17
|
+
language = 'TeX'
|
18
|
+
when '.sty'
|
19
|
+
language = 'TeX'
|
20
|
+
when '.erb' # .erb files are just supposed to be tex.erb files. TODO: more correct
|
21
|
+
language = 'TeX'
|
22
|
+
when '.rb'
|
23
|
+
language = 'Ruby'
|
24
|
+
else # probably YAML
|
25
|
+
language = 'unspecified'
|
26
|
+
end
|
27
|
+
language
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
require 'indoctrinatr/tools/configuration_extractor'
|
2
|
+
require 'fileutils'
|
3
|
+
|
4
|
+
module Indoctrinatr
|
5
|
+
module Tools
|
6
|
+
class TemplatePackDefaultValuesCompiler
|
7
|
+
include TemplatePackHelpers
|
8
|
+
|
9
|
+
attr_accessor :template_pack_name
|
10
|
+
|
11
|
+
def initialize template_pack_name
|
12
|
+
@template_pack_name = template_pack_name
|
13
|
+
end
|
14
|
+
|
15
|
+
def call
|
16
|
+
check_for_folder
|
17
|
+
compile_tex_file
|
18
|
+
rename_if_necessary
|
19
|
+
end
|
20
|
+
|
21
|
+
private
|
22
|
+
|
23
|
+
def compile_tex_file
|
24
|
+
args = ['-shell-escape', '-interaction', 'batchmode', tex_with_default_values_file_path.to_s]
|
25
|
+
2.times { system('xelatex', *args) } # run two times for proper table-of-contents and page count handling. TODO: use latexmk
|
26
|
+
end
|
27
|
+
|
28
|
+
def rename_if_necessary
|
29
|
+
configuration = ConfigurationExtractor.new(template_pack_name).call
|
30
|
+
@default_values = DefaultValues.new configuration
|
31
|
+
return if @default_values.customized_output_file_name == @default_values.default_file_name
|
32
|
+
|
33
|
+
FileUtils.rm @default_values.customized_output_file_name if File.exist? @default_values.customized_output_file_name
|
34
|
+
FileUtils.mv(@default_values.default_file_name, @default_values.customized_output_file_name)
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
@@ -0,0 +1,51 @@
|
|
1
|
+
require 'indoctrinatr/tools/template_pack_helpers'
|
2
|
+
require 'indoctrinatr/tools/default_values'
|
3
|
+
require 'indoctrinatr/tools/configuration_extractor'
|
4
|
+
require 'erubis'
|
5
|
+
require 'to_latex'
|
6
|
+
|
7
|
+
module Indoctrinatr
|
8
|
+
module Tools
|
9
|
+
class TemplatePackDefaultValuesParser
|
10
|
+
include TemplatePackHelpers
|
11
|
+
|
12
|
+
attr_accessor :template_pack_name, :configuration, :default_values, :tex_file_content, :parsed_tex_file_content
|
13
|
+
|
14
|
+
def initialize template_pack_name
|
15
|
+
@template_pack_name = template_pack_name
|
16
|
+
end
|
17
|
+
|
18
|
+
def call
|
19
|
+
check_for_folder
|
20
|
+
read_config_file
|
21
|
+
read_tex_file
|
22
|
+
parse_tex_file
|
23
|
+
write_tex_file
|
24
|
+
show_success
|
25
|
+
end
|
26
|
+
|
27
|
+
private
|
28
|
+
|
29
|
+
def read_config_file
|
30
|
+
@configuration = ConfigurationExtractor.new(template_pack_name).call
|
31
|
+
@default_values = DefaultValues.new @configuration
|
32
|
+
end
|
33
|
+
|
34
|
+
def read_tex_file
|
35
|
+
@tex_file_content = File.read tex_file_path
|
36
|
+
end
|
37
|
+
|
38
|
+
def parse_tex_file
|
39
|
+
@parsed_tex_file_content = Erubis::Eruby.new(@tex_file_content).result(default_values.retrieve_binding)
|
40
|
+
end
|
41
|
+
|
42
|
+
def write_tex_file
|
43
|
+
File.write tex_with_default_values_file_path, parsed_tex_file_content
|
44
|
+
end
|
45
|
+
|
46
|
+
def show_success
|
47
|
+
puts "The template pack '#{template_pack_name}' has been successfully parsed with default values."
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require 'indoctrinatr/tools/template_pack_helpers'
|
2
|
+
|
3
|
+
module Indoctrinatr
|
4
|
+
module Tools
|
5
|
+
class TemplatePackDemo
|
6
|
+
include TemplatePackHelpers
|
7
|
+
|
8
|
+
attr_accessor :template_pack_name
|
9
|
+
|
10
|
+
def initialize template_pack_name
|
11
|
+
@template_pack_name = template_pack_name
|
12
|
+
end
|
13
|
+
|
14
|
+
def call
|
15
|
+
TemplatePackScaffold.new(template_pack_name).call
|
16
|
+
TemplatePackDefaultValuesParser.new(template_pack_name).call
|
17
|
+
TemplatePackDefaultValuesCompiler.new(template_pack_name).call
|
18
|
+
TemplatePackDocumentation.new(template_pack_name).call
|
19
|
+
TemplatePackPacker.new(template_pack_name).call
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,111 @@
|
|
1
|
+
require 'indoctrinatr/tools/template_documentation_content'
|
2
|
+
require 'indoctrinatr/tools/template_pack_helpers'
|
3
|
+
require 'indoctrinatr/tools/template_documentation_helpers'
|
4
|
+
require 'indoctrinatr/tools/configuration_extractor'
|
5
|
+
require 'erubis'
|
6
|
+
require 'to_latex'
|
7
|
+
require 'fileutils'
|
8
|
+
|
9
|
+
module Indoctrinatr
|
10
|
+
module Tools
|
11
|
+
class TemplatePackDocumentation
|
12
|
+
include TemplatePackHelpers
|
13
|
+
include TemplateDocumentationHelpers
|
14
|
+
|
15
|
+
attr_accessor :template_pack_name
|
16
|
+
|
17
|
+
def initialize template_pack_name
|
18
|
+
@template_pack_name = template_pack_name
|
19
|
+
end
|
20
|
+
|
21
|
+
def call
|
22
|
+
fill_documentation_content
|
23
|
+
read_content_tex_file
|
24
|
+
read_main_tex_file
|
25
|
+
parse_content_tex_file
|
26
|
+
parse_main_tex_file
|
27
|
+
create_temp_compile_dir
|
28
|
+
write_content_tex_file
|
29
|
+
write_main_tex_file
|
30
|
+
copy_source_files
|
31
|
+
if compile_documentation_to_pdf
|
32
|
+
copy_doc_file_to_template_pack
|
33
|
+
delete_temp_dir
|
34
|
+
show_success
|
35
|
+
else
|
36
|
+
handle_latex_error
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
private
|
41
|
+
|
42
|
+
def fill_documentation_content
|
43
|
+
configuration = ConfigurationExtractor.new(template_pack_name).call
|
44
|
+
begin
|
45
|
+
@documentation_content = TemplateDocumentationContent.new template_pack_name, configuration
|
46
|
+
rescue IOError => ex
|
47
|
+
abort ex.message
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
def read_content_tex_file
|
52
|
+
@content_tex_file_content = File.read content_tex_file_path
|
53
|
+
end
|
54
|
+
|
55
|
+
def read_main_tex_file
|
56
|
+
@main_tex_file_content = File.read source_main_tex_file_path
|
57
|
+
end
|
58
|
+
|
59
|
+
def parse_content_tex_file
|
60
|
+
@parsed_content_tex_file_content = Erubis::Eruby.new(@content_tex_file_content).result(@documentation_content.retrieve_binding)
|
61
|
+
end
|
62
|
+
|
63
|
+
def parse_main_tex_file
|
64
|
+
@parsed_main_tex_file_content = Erubis::Eruby.new(@main_tex_file_content).result(@documentation_content.retrieve_binding)
|
65
|
+
end
|
66
|
+
|
67
|
+
def create_temp_compile_dir
|
68
|
+
make_documentation_compile_dir_path_name
|
69
|
+
end
|
70
|
+
|
71
|
+
def write_content_tex_file
|
72
|
+
File.write content_tex_file_destination_path, @parsed_content_tex_file_content
|
73
|
+
end
|
74
|
+
|
75
|
+
def write_main_tex_file
|
76
|
+
File.write main_tex_file_destination_path, @parsed_main_tex_file_content
|
77
|
+
end
|
78
|
+
|
79
|
+
def copy_source_files
|
80
|
+
FileUtils.copy_file source_latex_package_file_path, latex_package_destination_path
|
81
|
+
FileUtils.copy_file source_letterpaper_file_path, letterpaper_file_destination_path
|
82
|
+
end
|
83
|
+
|
84
|
+
def compile_documentation_to_pdf
|
85
|
+
args = ['-xelatex',
|
86
|
+
'-shell-escape',
|
87
|
+
'-interaction=batchmode', # more silent output
|
88
|
+
"-output-directory=#{documentation_compile_dir_path_name}", main_tex_file_destination_path.to_s] # without this xelatex tries to use the current working directory
|
89
|
+
latexmk_successful = system('latexmk', *args) # latexmk instead of running 2.times
|
90
|
+
latexmk_successful # false if error, nil if system command unknown
|
91
|
+
end
|
92
|
+
|
93
|
+
def copy_doc_file_to_template_pack
|
94
|
+
FileUtils.copy_file documentation_file_path, pack_technical_documentation_file_path
|
95
|
+
end
|
96
|
+
|
97
|
+
def delete_temp_dir
|
98
|
+
FileUtils.remove_entry_secure documentation_compile_dir_path_name
|
99
|
+
end
|
100
|
+
|
101
|
+
def handle_latex_error
|
102
|
+
puts "possible LaTeX compilation failure! see #{latex_log_file_destination} for details. " # idea: process $CHILD_STATUS
|
103
|
+
FileUtils.copy_file latex_log_file, latex_log_file_destination
|
104
|
+
end
|
105
|
+
|
106
|
+
def show_success
|
107
|
+
puts "A documentation for '#{template_pack_name}' has been successfully generated."
|
108
|
+
end
|
109
|
+
end
|
110
|
+
end
|
111
|
+
end
|