publican_creators 1.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/.autotest +25 -0
- data/.codeclimate.yml +8 -0
- data/.coveralls.yml +1 -0
- data/.gemnasium.yml +5 -0
- data/.gemrelease +4 -0
- data/.gemtest +0 -0
- data/.index +121 -0
- data/.rspec +2 -0
- data/.rubocop.yml +40 -0
- data/.scrutinizer.yml +17 -0
- data/.travis.yml +36 -0
- data/.yardopts +9 -0
- data/CODE_OF_CONDUCT.md +17 -0
- data/CONTRIBUTING.md +25 -0
- data/Gemfile +35 -0
- data/Gemfile.lock +139 -0
- data/History.rdoc +166 -0
- data/Index.yml +60 -0
- data/LICENSE.rdoc +24 -0
- data/Manifest.txt +41 -0
- data/README.rdoc +108 -0
- data/Rakefile +139 -0
- data/VERSION +1 -0
- data/bin/publican_creators.rb +6 -0
- data/bin/revision_creator.rb +9 -0
- data/config.reek +111 -0
- data/data/publican_creators/publican-revision.png +0 -0
- data/data/publican_creators/publican.png +0 -0
- data/etc/publicancreators.cfg +85 -0
- data/lib/PublicanCreators.rb +233 -0
- data/lib/publican_creators/change.rb +309 -0
- data/lib/publican_creators/checker.rb +48 -0
- data/lib/publican_creators/create.rb +125 -0
- data/lib/publican_creators/export.rb +230 -0
- data/lib/publican_creators/get.rb +66 -0
- data/lib/publican_creators/notifier.rb +26 -0
- data/lib/publican_creators/prepare.rb +82 -0
- data/lib/publican_creators/revision.rb +61 -0
- data/lib/publican_creators/testlib.rb +30 -0
- data/spec/lib_spec.rb +401 -0
- data/spec/spec_helper.rb +16 -0
- metadata +489 -0
- metadata.gz.sig +0 -0
@@ -0,0 +1,230 @@
|
|
1
|
+
# PublicanCreatorsExport
|
2
|
+
# @author Sascha Manns
|
3
|
+
# @abstract Class for exporting bash scripts
|
4
|
+
#
|
5
|
+
# Copyright (C) 2015 Sascha Manns <samannsml@directbox.com>
|
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
|
@@ -0,0 +1,66 @@
|
|
1
|
+
# PublicanCreatorsGet
|
2
|
+
# @author Sascha Manns
|
3
|
+
# @abstract Class for gathering information from config file and user input
|
4
|
+
#
|
5
|
+
# Copyright (C) 2015 Sascha Manns <samannsml@directbox.com>
|
6
|
+
# License: MIT
|
7
|
+
|
8
|
+
# Dependencies
|
9
|
+
|
10
|
+
require 'parseconfig'
|
11
|
+
|
12
|
+
# This method provides methods for user inputs
|
13
|
+
module PublicanCreatorsGet
|
14
|
+
# This method ask for the title, environment, type and optional settings.
|
15
|
+
# It returns the title variable.
|
16
|
+
# @return [String] environment, type, opt, title
|
17
|
+
def self.title
|
18
|
+
# @note Put the yad input as variable titlein
|
19
|
+
titlein = `yad --title="Create documentation" --center --on-top --form \
|
20
|
+
--item-separator=, --separator="|" --field="Environment:CBE" \
|
21
|
+
--field="Type:CBE" --field="Optional:CBE" --field="Enter a title name \
|
22
|
+
(with underscores instead of blanks and without umlauts):TEXT" \
|
23
|
+
--field="Please file bugs or feature requests \
|
24
|
+
on http://saigkill-bugs.myjetbrains.com/youtrack/:LBL" --button="Go!" "Work,Private" \
|
25
|
+
"Article,Book" "Normal,Report,Homework"`
|
26
|
+
# @note Format: Work/Private Article/Book title!Normal Report Homework
|
27
|
+
# @note Cleanup the array
|
28
|
+
environment, type, opt, titlefix = titlein.chomp.split('|')
|
29
|
+
|
30
|
+
# @note replace blanks with underscores
|
31
|
+
title = titlefix.gsub(/ /, '_')
|
32
|
+
|
33
|
+
[environment, type, opt, title]
|
34
|
+
end
|
35
|
+
|
36
|
+
# This method ask for revision information
|
37
|
+
# Description:
|
38
|
+
# @return [String] revision
|
39
|
+
def self.revision
|
40
|
+
# @note Put the yad input as variable revhistin
|
41
|
+
revhistin = `yad --title="Create Revision" --center --on-top --form \
|
42
|
+
--item-separator=, --separator="|" --field="Choose the directory where your \
|
43
|
+
project publican.cfg is:LBL" --field="Projectdir:DIR" --field="Enter your \
|
44
|
+
first revision text:TEXT" --field="Enter your second revision text:TEXT" \
|
45
|
+
--field="Enter your third revision text:TEXT" --field="Enter your fourth \
|
46
|
+
revision text:TEXT" --field="Enter your fifth revision text:TEXT" \
|
47
|
+
--field="Enter Revision number:TEXT" --field="You can use backslashes for \
|
48
|
+
entering Revision textes with blanks.:LBL" --button="Go!"`
|
49
|
+
# @note Format: Directory|One|Two|Three|Four|Five|Revision
|
50
|
+
# @note Cleanup the array
|
51
|
+
revision = revhistin.chomp.split('|')
|
52
|
+
# @note Split the variable to array revision[*]
|
53
|
+
puts revision
|
54
|
+
end
|
55
|
+
|
56
|
+
# This method gets the language from the config file for using in
|
57
|
+
# RevisionCreator
|
58
|
+
# @return [String] language
|
59
|
+
def self.config_revision
|
60
|
+
include ParseConfig
|
61
|
+
home = Dir.home
|
62
|
+
config = ParseConfig.new("#{home}/.publican_creators/publicancreators.cfg")
|
63
|
+
language = config['language']
|
64
|
+
puts language
|
65
|
+
end
|
66
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# encoding: utf-8
|
3
|
+
# @author Sascha Manns
|
4
|
+
# @abstract Notifier Module for latex_curriculum_vitae
|
5
|
+
#
|
6
|
+
# Copyright (C) 2015 Sascha Manns <samannsml@directbox.com>
|
7
|
+
# License: MIT
|
8
|
+
|
9
|
+
# Dependencies
|
10
|
+
|
11
|
+
# Module for notify the user
|
12
|
+
require 'notifier'
|
13
|
+
|
14
|
+
module Notifier
|
15
|
+
def self.run
|
16
|
+
home = Dir.home
|
17
|
+
prefix = "#{home}/.rvm/rubies/default"
|
18
|
+
datadir = "#{prefix}/share"
|
19
|
+
img = "#{datadir}/.publican_creators/publican.png"
|
20
|
+
Notifier.notify(
|
21
|
+
:image => "#{img}",
|
22
|
+
:title => "Your Documentation",
|
23
|
+
:message => "The preparation of your Documentation is finished."
|
24
|
+
)
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,82 @@
|
|
1
|
+
# PublicanCreatorsPrepare
|
2
|
+
# @author Sascha Manns
|
3
|
+
# @abstract Class for preparing the configuration
|
4
|
+
#
|
5
|
+
# Copyright (C) 2015 Sascha Manns <samannsml@directbox.com>
|
6
|
+
# License: MIT
|
7
|
+
|
8
|
+
# Dependencies
|
9
|
+
|
10
|
+
# The module Prepare contains some methods for preparing the directories. They
|
11
|
+
# will be used in the make directory function
|
12
|
+
module PublicanCreatorsPrepare
|
13
|
+
# This method sets the needed targetdir depending on the environment
|
14
|
+
# @param [String] type represents the Document-Type like Article or Book.
|
15
|
+
# @param [String] reports_dir_business contains the directory to your reports
|
16
|
+
# @param [String] articles_dir_bus represents the directory for your articles
|
17
|
+
# @param [String] report contains a true or false. There you can set if the
|
18
|
+
# new Publication is a Report or not.
|
19
|
+
# @param [String] books_dir_business contains the directory for your business
|
20
|
+
# books
|
21
|
+
# @param [String] homework contains true or false. If your present Publication
|
22
|
+
# is a homework you can set it there.
|
23
|
+
# @param [String] articles_dir_private contains the path to your private
|
24
|
+
# articles_dir
|
25
|
+
# @param [String] homework_dir_private contains the path to your homework dir.
|
26
|
+
# @param [String] books_dir_private contains the path to your private
|
27
|
+
# books_dir
|
28
|
+
# @return [String] targetdir
|
29
|
+
def self.targetdir(environment, type, report, reports_dir_business,
|
30
|
+
articles_dir_bus, books_dir_business, homework,
|
31
|
+
articles_dir_private, homework_dir_private, books_dir_private)
|
32
|
+
home = Dir.home
|
33
|
+
if environment == 'Work'
|
34
|
+
if type == 'Article'
|
35
|
+
targetdir_work(report, reports_dir_business, articles_dir_bus)
|
36
|
+
else
|
37
|
+
books_dir = "#{home}/#{books_dir_business}"
|
38
|
+
return books_dir
|
39
|
+
end
|
40
|
+
else
|
41
|
+
if type == 'Article'
|
42
|
+
targetdir_private(homework, articles_dir_private,
|
43
|
+
homework_dir_private)
|
44
|
+
else
|
45
|
+
books_dir = "#{home}/#{books_dir_private}"
|
46
|
+
return books_dir
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
# Prepares the articles_dir for work environment
|
52
|
+
# @param [String] reports_dir_business contains the directory to your reports
|
53
|
+
# @param [String] articles_dir_bus represents the directory for your articles
|
54
|
+
# @param [String] report contains a true or false. There you can set if the
|
55
|
+
# new Publication is a Report or not.
|
56
|
+
def self.targetdir_work(report, reports_dir_business, articles_dir_bus)
|
57
|
+
home = Dir.home
|
58
|
+
if report == 'TRUE'
|
59
|
+
articles_dir = "#{home}/#{reports_dir_business}"
|
60
|
+
else
|
61
|
+
articles_dir = "#{home}/#{articles_dir_bus}"
|
62
|
+
end
|
63
|
+
return articles_dir
|
64
|
+
end
|
65
|
+
|
66
|
+
# Prepares the articles_dir for home environment
|
67
|
+
# @param [String] homework contains true or false. If your present Publication
|
68
|
+
# is a homework you can set it there.
|
69
|
+
# @param [String] articles_dir_private contains the path to your private
|
70
|
+
# articles_dir
|
71
|
+
# @param [String] homework_dir_private contains the path to your homework dir.
|
72
|
+
def self.targetdir_private(homework, articles_dir_private,
|
73
|
+
homework_dir_private)
|
74
|
+
home = Dir.home
|
75
|
+
if homework == 'FALSE'
|
76
|
+
articles_dir = "#{home}/#{articles_dir_private}"
|
77
|
+
else
|
78
|
+
articles_dir = "#{home}/#{homework_dir_private}"
|
79
|
+
end
|
80
|
+
return articles_dir
|
81
|
+
end
|
82
|
+
end
|
@@ -0,0 +1,61 @@
|
|
1
|
+
# @author Sascha Manns
|
2
|
+
# @abstract Class RevisionCreator for PublicanCreator
|
3
|
+
#
|
4
|
+
# Copyright (C) 2015 Sascha Manns <samannsml@directbox.com>
|
5
|
+
# License: MIT
|
6
|
+
#
|
7
|
+
# Dependencies
|
8
|
+
require 'fileutils'
|
9
|
+
require 'rainbow/ext/string'
|
10
|
+
require File.expand_path(File.join(File.dirname(__FILE__), 'change.rb'))
|
11
|
+
require File.expand_path(File.join(File.dirname(__FILE__), 'get.rb'))
|
12
|
+
|
13
|
+
# A class for creating a revison to a publican project
|
14
|
+
class RevisionCreator
|
15
|
+
# @note Ask for the revision information
|
16
|
+
null, directory, member1, member2, member3, member4, member5,
|
17
|
+
revnumber = PublicanCreatorsGet.revision
|
18
|
+
language = PublicanCreatorsGet.config_revision
|
19
|
+
|
20
|
+
revision, edition = revnumber.split('-')
|
21
|
+
|
22
|
+
puts "Directory: #{directory}"
|
23
|
+
puts "Member1: #{member1}"
|
24
|
+
puts "Member2: #{member2}"
|
25
|
+
puts "Member3: #{member3}"
|
26
|
+
puts "Member4: #{member4}"
|
27
|
+
puts "Member5: #{member5}"
|
28
|
+
puts "Language: #{language}"
|
29
|
+
puts "Revnumber: #{revnumber}"
|
30
|
+
puts "Revision: #{revision}"
|
31
|
+
puts "Edition: #{edition}"
|
32
|
+
puts null
|
33
|
+
|
34
|
+
# This method prepares the string for adding a new revision
|
35
|
+
# @param [String] member1 is the first string into revdescription
|
36
|
+
# @param [String] member2 is the second string into revdescription
|
37
|
+
# @param [String] member3 is the third string into revdescription
|
38
|
+
# @param [String] member4 is the fourth string into revdescription
|
39
|
+
# @param [String] member5 is the fifth string into revdescription
|
40
|
+
# @param [String] revnumber is the revision number
|
41
|
+
# @param [String] language is the language. Comes from config file.
|
42
|
+
# @return [String] string is that string for creating the commit
|
43
|
+
def self.prepare_revision(member1, member2, member3, member4, member5,
|
44
|
+
revnumber, language)
|
45
|
+
string = "--member \"#{member1}\""
|
46
|
+
string << " --member \"#{member2}\"" if member2 != ''
|
47
|
+
string << " --member \"#{member3}\"" if member3 != ''
|
48
|
+
string << " --member \"#{member4}\"" if member4 != ''
|
49
|
+
string << " --member \"#{member5}\"" if member5 != ''
|
50
|
+
string << " --revnumber \"#{revnumber}\""
|
51
|
+
string << " --lang \"#{language}\""
|
52
|
+
end
|
53
|
+
|
54
|
+
# This method changes to the target directory
|
55
|
+
FileUtils.cd(directory) do
|
56
|
+
string = prepare_revision(member1, member2, member3, member4, member5,
|
57
|
+
revnumber, language)
|
58
|
+
PublicanCreatorsChange.replace_productnumber(revision, edition, language)
|
59
|
+
system("publican add_revision #{string}")
|
60
|
+
end
|
61
|
+
end
|