PublicanCreatorsExport.export_buildscript()   B
last analyzed

Complexity

Conditions 1

Size

Total Lines 200

Duplication

Lines 0
Ratio 0 %

Importance

Changes 4
Bugs 0 Features 1
Metric Value
cc 1
c 4
b 0
f 1
dl 0
loc 200
rs 8.2857

How to fix   Long Method   

Long Method

Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.

For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.

Commonly applied refactorings include:

1
# PublicanCreatorsExport
2
# @author Sascha Manns
3
# @abstract Class for exporting bash scripts
4
#
5
# Copyright (C) 2015-2017  Sascha Manns <[email protected]>
6
# License: MIT
7
8
# Dependencies
9
10
require 'publican_creators/change'
11
require 'fileutils'
12
require 'rainbow/ext/string'
13
14
# rubocop:disable Metrics/MethodLength
15
# Module for running exports to a file
16
module PublicanCreatorsExport
17
  # Exports a predefined Shellscript to the target directory.
18
  # It returns a sucess or fail.
19
  # Description:
20
  # @param [String] title comes from the get method. This parameter represents
21
  #                 the name or title of your work. It is used in all important
22
  #                 code places.
23
  # @param [String] builds is the path to your buildscript
24
  # @param [String] language is just the ISO Code of your target language
25
  #                 like: en-GB or such things.
26
  # @param [String] xfc_brand_dir if present the path to your branded xfc
27
  #                 stylesheets (config file)
28
  # @param [String] pdfview your prefered PDF-Viewer (config file)
29
  # @return [String] true or false
30
  def self.export_buildscript(title, builds, language, xfc_brand_dir, pdfview)
31
    puts 'Export the buildscript into new directory...'
32
    FileUtils.touch "#{builds}"
33
    # rubocop:disable Metrics/LineLength
34
    File.write "#{builds}", <<EOF
35
# -*- ruby -*-
36
# encoding: utf-8
37
require 'fileutils'
38
39
task :default do
40
  puts 'usage: rake [export_docx] [export_odt] [export_rtf] [export_wml] [export_pdf] [export_html] [export_man] [export_txt] [export_txt] [export_epub]'
41
  puts
42
  puts 'Options:'
43
  puts 'export_docx : Export DocBook source to DOCX'
44
  puts ' Example: rake export_docx'
45
  puts 'export_odt : Export DocBook source to ODT'
46
  puts ' Example: rake export_odt'
47
  puts 'export_rtf : Export DocBook source to RTF'
48
  puts ' Example: rake export_rtf'
49
  puts 'export_wml: Export DocBook source to WML'
50
  puts ' Example: rake export_wml'
51
  puts 'export_pdf: Export Docbook source to PDF'
52
  puts ' Example: rake export_pdf'
53
  puts 'export_html: Export DocBook source to HTML'
54
  puts ' Example: rake export_html'
55
  puts 'export_man: Export DocBook source to MAN'
56
  puts ' Example: rake export_man'
57
  puts 'export_txt: Export DocBook source to TXT'
58
  puts ' Example: rake export_txt'
59
  puts 'export_epub: Export DocBook source to EPUB'
60
  puts ' Example: rake export_epub'
61
  puts 'export_eclipse: Export DocBook source to Eclipse Help'
62
  puts ' Example: rake export_eclipse'
63
end
64
65
require 'dir'
66
require 'fileutils'
67
desc 'Checks if temp dir is available. Otherwise it creates it'
68
task :checker do
69
  todos = "../tmp/#{language}/docx"
70
  if Dir.exist?(todos)
71
    puts 'Found directory. Im using it.'
72
  else
73
    puts 'No directory found. Im creating it.'
74
    FileUtils.mkdir_p(todos)
75
  end
76
  todos = "../tmp/#{language}/odt"
77
  if Dir.exist?(todos)
78
    puts 'Found directory. Im using it.'
79
  else
80
    puts 'No directory found. Im creating it.'
81
    FileUtils.mkdir_p(todos)
82
  end
83
  todos = "../tmp/#{language}/rtf"
84
  if Dir.exist?(todos)
85
    puts 'Found directory. Im using it.'
86
  else
87
    puts 'No directory found. Im creating it.'
88
    FileUtils.mkdir_p(todos)
89
  end
90
  todos = "../tmp/#{language}/wml"
91
  if Dir.exist?(todos)
92
    puts 'Found directory. Im using it.'
93
  else
94
    puts 'No directory found. Im creating it.'
95
    FileUtils.mkdir_p(todos)
96
  end
97
end
98
99
desc 'Convert to DOCX'
100
task :export_docx => [:checker] do
101
  puts 'Resolving all XML-Entities and XI-Includes'
102
  system("xmllint --noent --dropdtd --xinclude #{title}.xml -o #{title}-resolved.xml")
103
  puts 'Formatting XML to XSL-FO'
104
  system("saxon-xslt -o #{title}.fo #{title}-resolved.xml #{xfc_brand_dir}")
105
  puts 'Removing temporary resolved file'
106
  FileUtils.rm('#{title}-resolved.xml')
107
  puts 'Transforming to DOCX'
108
  system("fo2docx #{title}.fo > ../tmp/#{language}/docx/#{title}.docx")
109
  puts 'Launching LibreOffice Writer for Preview'
110
  system("lowriter ../tmp/#{language}/docx/#{title}.docx &")
111
end
112
113
desc 'Convert to ODT'
114
task :export_odt => [:checker] do
115
  puts 'Resolving all XML-Entities and XI-Includes'
116
  system("xmllint --noent --dropdtd --xinclude #{title}.xml -o #{title}-resolved.xml")
117
  puts 'Formatting XML to XSL-FO'
118
  system("saxon-xslt -o #{title}.fo #{title}-resolved.xml #{xfc_brand_dir}")
119
  puts 'Removing temporary resolved file'
120
  FileUtils.rm('#{title}-resolved.xml')
121
  puts 'Transforming to ODT'
122
  system("fo2odt #{title}.fo > ../tmp/#{language}/odt/#{title}.odt")
123
  puts 'Launching LibreOffice Writer for Preview'
124
  system("lowriter ../tmp/#{language}/odt/#{title}.odt &")
125
end
126
127
desc 'Convert to RTF'
128
task :export_rtf => [:checker] do
129
  puts 'Resolving all XML-Entities and XI-Includes'
130
  system("xmllint --noent --dropdtd --xinclude #{title}.xml -o #{title}-resolved.xml")
131
  puts 'Formatting XML to XSL-FO'
132
  system("saxon-xslt -o #{title}.fo #{title}-resolved.xml #{xfc_brand_dir}")
133
  puts 'Removing temporary resolved file'
134
  FileUtils.rm('#{title}-resolved.xml')
135
  puts 'Transforming to RTF'
136
  system("fo2rtf #{title}.fo > ../tmp/#{language}/rtf/#{title}.rtf")
137
  puts 'Launching LibreOffice Writer for Preview'
138
  system("lowriter ../tmp/#{language}/rtf/#{title}.rtf &")
139
end
140
141
desc 'Convert to WML'
142
task :export_wml => [:checker] do
143
  puts 'Resolving all XML-Entities and XI-Includes'
144
  system("xmllint --noent --dropdtd --xinclude #{title}.xml -o #{title}-resolved.xml")
145
  puts 'Formatting XML to XSL-FO'
146
  system("saxon-xslt -o #{title}.fo #{title}-resolved.xml #{xfc_brand_dir}")
147
  puts 'Removing temporary resolved file'
148
  FileUtils.rm('#{title}-resolved.xml')
149
  puts 'Transforming to WML'
150
  system("fo2wml #{title}.fo > ../tmp/#{language}/wml/#{title}.wml")
151
end
152
153
desc 'Convert to PDF'
154
task :export_pdf do
155
  FileUtils.cd('..')
156
  puts 'Cleaning up temp directory'
157
  system('publican clean')
158
  puts 'Formatting to PDF'
159
  system('publican build --langs=#{language} --formats=pdf --allow_network')
160
  puts 'Launching PDF-Viewer'
161
  system('#{pdfview} tmp/#{language}/pdf/*.pdf &')
162
end
163
164
desc 'Convert to HTML'
165
task :export_html do
166
  FileUtils.cd('..')
167
  puts 'Cleaning up temp directory'
168
  system('publican clean')
169
  puts 'Formatting to PDF'
170
  system('publican build --langs=#{language} --formats=html --allow_network')
171
  puts 'Launching Browser'
172
  system('firefox tmp/#{language}/html/index.html &')
173
end
174
175
desc 'Convert to MAN'
176
task :export_man do
177
  FileUtils.cd('..')
178
  puts 'Cleaning up temp directory'
179
  system('publican clean')
180
  puts 'Formatting to MAN'
181
  system('publican build --langs=#{language} --formats=man --allow_network')
182
end
183
184
desc 'Convert to TXT'
185
task :export_txt do
186
  FileUtils.cd('..')
187
  puts 'Cleaning up temp directory'
188
  system('publican clean')
189
  puts 'Formatting to TXT'
190
  system('publican build --langs=#{language} --formats=txt --allow_network')
191
  puts 'Launching Texteditor'
192
  system('gedit tmp/#{language}/txt/*.txt &')
193
end
194
195
desc 'Convert to EPUB'
196
task :export_epub do
197
  FileUtils.cd('..')
198
  puts 'Cleaning up temp directory'
199
  system('publican clean')
200
  puts 'Formatting to EPUB'
201
  system('publican build --langs=#{language} --formats=epub --allow_network')
202
  if File.exist?('/usr/bin/ebook-viewer')
203
    puts 'Launching EPUB-Viewer'
204
    system('ebook-viewer /tmp/#{language}/*.epub &')
205
  else
206
    puts 'You have to install calibre for using ebook-viewer for preview'
207
  end
208
end
209
210
desc 'Convert to ECLIPSE'
211
task :export_eclipse do
212
  FileUtils.cd('..')
213
  puts 'Cleaning up temp directory'
214
  system('publican clean')
215
  puts 'Formatting to ECLIPSE'
216
  system('publican build --langs=#{language} --formats=eclipse --allow_network')
217
end
218
219
desc 'Run convert to most used formats'
220
task :export_most => [:export_docx, :export_odt, :export_rtf, :export_html, :export_pdf] do
221
  puts 'Successful exported to DOCX, ODT, RTF, HTML and PDF'
222
end
223
224
desc 'Run convert to all formats'
225
task :export_all => [:export_most, :export_wml, :export_man, :export_txt, :export_epub, :export_eclipse] do
226
  puts 'Successfull exported to all formats'
227
end
228
EOF
229
  end
230
end
231