1
|
|
|
#!/usr/bin/env ruby |
2
|
|
|
# @author Sascha Manns |
3
|
|
|
# @abstract Main Class for PublicanCreators |
4
|
|
|
# |
5
|
|
|
# Copyright (C) 2015-2017 Sascha Manns <[email protected]> |
6
|
|
|
# License: MIT |
7
|
|
|
|
8
|
|
|
# Dependencies |
9
|
|
|
require 'publican_creators/checker' |
10
|
|
|
require 'publican_creators/get' |
11
|
|
|
require 'publican_creators/change' |
12
|
|
|
require 'publican_creators/export' |
13
|
|
|
require 'publican_creators/prepare' |
14
|
|
|
require 'publican_creators/notifier' |
15
|
|
|
require 'fileutils' |
16
|
|
|
require 'nokogiri' |
17
|
|
|
require 'rainbow/ext/string' |
18
|
|
|
require 'bundler/setup' |
19
|
|
|
require 'manns_shared' |
20
|
|
|
|
21
|
|
|
# Main Class of PublicanCreators |
22
|
|
|
# @return [String] true or false |
23
|
|
|
class PublicanCreators |
24
|
|
|
# Versionizing |
25
|
|
|
VERSION = '1.1.2' |
26
|
|
|
|
27
|
|
|
my_name = File.basename($PROGRAM_NAME) |
28
|
|
|
|
29
|
|
|
puts "Script: #{my_name}" |
30
|
|
|
puts "Version: #{VERSION}" |
31
|
|
|
puts |
32
|
|
|
puts 'Copyright (C) 2015-2016 Sascha Manns <[email protected]>' |
33
|
|
|
puts 'Description: This script creates a article or book set with' |
34
|
|
|
puts 'Publican. Then it modifies it for your needs.' |
35
|
|
|
puts 'License: GPL-3' |
36
|
|
|
puts 'Bugs: Please file bugs on https://gitlab.com/saigkill/publican_creators/issues' |
37
|
|
|
|
38
|
|
|
puts 'Reading the config file in publicancreators.cfg' |
39
|
|
|
# @note Run config method who reads in the config file and puts the variables |
40
|
|
|
# in an array |
41
|
|
|
# name, email, language, use_brand, title_logo, legal, brand, company_name, |
42
|
|
|
# company_division, email_business, brand_dir, glob_entities, |
43
|
|
|
# articles_dir_business, reports_dir_business, books_dir_business, |
44
|
|
|
# articles_dir_private, homework_dir_private, books_dir_private, |
45
|
|
|
# brand_private, brand_homework, db5, conf_ver, xfc_brand_dir, |
46
|
|
|
# pdfview = PublicanCreatorsGet.config |
47
|
|
|
|
48
|
|
|
home = Dir.home |
49
|
|
|
config = ParseConfig.new("#{home}/.publican_creators/publicancreators.cfg") |
50
|
|
|
conf_ver = config['conf_ver'] |
51
|
|
|
name = config['name'] |
52
|
|
|
email = config['email_private'] |
53
|
|
|
language = config['language'] |
54
|
|
|
use_brand = config['use_brand'] |
55
|
|
|
title_logo = config['title_logo'] |
56
|
|
|
legal = config['legal'] |
57
|
|
|
brand = config['brand'] |
58
|
|
|
company_name = config['company_name'] |
59
|
|
|
company_division = config['company_division'] |
60
|
|
|
email_business = config['email_business'] |
61
|
|
|
brand_dir = config['brand_dir'] |
62
|
|
|
glob_entities = config['globalentities'] |
63
|
|
|
articles_dir_business = config['articles_dir'] |
64
|
|
|
reports_dir_business = config['reports_dir'] |
65
|
|
|
books_dir_business = config['books_dir'] |
66
|
|
|
articles_dir_private = config['articles_dir_priv'] |
67
|
|
|
homework_dir_private = config['homework_dir'] |
68
|
|
|
books_dir_private = config['books_dir_priv'] |
69
|
|
|
brand_private = config['brand_private'] |
70
|
|
|
brand_homework = config['brand_homework'] |
71
|
|
|
db5 = config['db5'] |
72
|
|
|
xfc_brand_dir = config['xfc_brand_dir'] |
73
|
|
|
pdfview = config['pdfview'] |
74
|
|
|
|
75
|
|
|
puts 'Your configuration is:' |
76
|
|
|
puts "Your Name: #{name}" |
77
|
|
|
puts "Your private emailaddress: #{email}" |
78
|
|
|
puts "Your choosen language: #{language}" |
79
|
|
|
puts "Using an own brand: #{use_brand}" |
80
|
|
|
puts "Leave title_logo: #{title_logo}" |
81
|
|
|
puts "Leave legalnotice in article: #{legal}" |
82
|
|
|
puts "Choosen brand: #{brand}" |
83
|
|
|
puts "Your company name: #{company_name}" |
84
|
|
|
puts "Your company division: #{company_division}" |
85
|
|
|
puts "Your business email address: #{email_business}" |
86
|
|
|
puts "Your brand dir: #{brand_dir}" |
87
|
|
|
puts "Your global entities: #{glob_entities}" |
88
|
|
|
puts "Your business articles dir: #{articles_dir_business}" |
89
|
|
|
puts "Your business reports dir: #{reports_dir_business}" |
90
|
|
|
puts "Your business books dir: #{books_dir_business}" |
91
|
|
|
puts "Your private articles dir: #{articles_dir_private}" |
92
|
|
|
puts "Your homework dir: #{homework_dir_private}" |
93
|
|
|
puts "Your private books dir: #{books_dir_private}" |
94
|
|
|
puts "Your private brand: #{brand_private}" |
95
|
|
|
puts "Your homework brand: #{brand_homework}" |
96
|
|
|
puts "DocBook5 as default: #{db5}" |
97
|
|
|
puts "Config version: #{conf_ver}" |
98
|
|
|
puts "XFC brand dir: #{xfc_brand_dir}" |
99
|
|
|
puts "Your prefered PDF-Viewer: #{pdfview}" |
100
|
|
|
|
101
|
|
|
global_entities = "#{brand_dir}/#{glob_entities}" |
102
|
|
|
puts "Your global entities file is there: #{global_entities}" |
103
|
|
|
|
104
|
|
|
# @note Ask for the title and other settings via yad and put them into a array |
105
|
|
|
environment, type, opt, title = PublicanCreatorsGet.title |
106
|
|
|
|
107
|
|
|
puts "Environment: #{environment}" |
108
|
|
|
puts "Type: #{type}" |
109
|
|
|
puts "Optional: #{opt}" |
110
|
|
|
puts "Title: #{title}" |
111
|
|
|
|
112
|
|
|
# This method sets the default value for report |
113
|
|
|
# @param [String] opt Can be Report or Homework or Normal |
114
|
|
|
# @return [String] report |
115
|
|
|
|
116
|
|
|
report = 'FALSE' |
117
|
|
|
homework = 'FALSE' |
118
|
|
|
report = 'TRUE' if opt == 'Report' |
119
|
|
|
homework = 'TRUE' if opt == 'Homework' |
120
|
|
|
|
121
|
|
|
# @note Hardcoded variables |
122
|
|
|
artinfo = "#{title}/#{language}/Article_Info.xml" |
123
|
|
|
bookinfo = "#{title}/#{language}/Book_Info.xml" |
124
|
|
|
revhist = "#{title}/#{language}/Revision_History.xml" |
125
|
|
|
agroup = "#{title}/#{language}/Author_Group.xml" |
126
|
|
|
ent = "#{title}/#{language}/#{title}.ent" |
127
|
|
|
builds = "#{title}/#{language}/Rakefile" |
128
|
|
|
|
129
|
|
|
# @note Run one of the both methods to get the variable targetdir |
130
|
|
|
# @param [String] type Book or Article |
131
|
|
|
# @param [String] reports_dir_business path to that dir where you store your |
132
|
|
|
# reports |
133
|
|
|
# @param [String] articles_dir_business path to that dir where you store |
134
|
|
|
# business articles |
135
|
|
|
# @param [String] report true or false |
136
|
|
|
# @param [String] books_dir_business path to that dir where you store your |
137
|
|
|
# business books |
138
|
|
|
# @param [String] true or false |
139
|
|
|
# @param [String] articles_dir_private path to your private articles directory |
140
|
|
|
# @param [String] homework path to your homework directory |
141
|
|
|
# @param [String] books_dir_private path to your private books directory |
142
|
|
|
targetdir = PublicanCreatorsPrepare.targetdir(environment, type, report, |
143
|
|
|
reports_dir_business, |
144
|
|
|
articles_dir_business, |
145
|
|
|
books_dir_business, homework, |
146
|
|
|
articles_dir_private, |
147
|
|
|
homework_dir_private, |
148
|
|
|
books_dir_private) |
149
|
|
|
|
150
|
|
|
# @note Checks if the needed directory targetdir is available. Otherwise it |
151
|
|
|
# creates one. |
152
|
|
|
puts "Creating directory #{targetdir}" |
153
|
|
|
# @param [String] targetdir comes from PublicanCreatorsPrepare.prepare_work or |
154
|
|
|
# .prepare_private |
155
|
|
|
MannsShared.check_dir(targetdir) |
156
|
|
|
|
157
|
|
|
# @note Change to target directory |
158
|
|
|
puts 'Change to this directory' |
159
|
|
|
# @param [String] targetdir comes from PublicanCreatorsPrepare.prepare_work or |
160
|
|
|
# .prepare_private |
161
|
|
|
FileUtils.cd(targetdir) do |
162
|
|
|
# @param [String] title comes from titleget[3] |
163
|
|
|
# @param [String] type Book or Article |
164
|
|
|
# @param [String] language comes from config file in format de-DE |
165
|
|
|
# @param [String] brand e.g. Debian or nothing for using publicans default |
166
|
|
|
# brand (config file) |
167
|
|
|
# @param [String] db5 DocBook5 as default? (config file) |
168
|
|
|
# @param [String] homework true or false |
169
|
|
|
# @param [String] brand_homework e.g. ils (config file) |
170
|
|
|
# @param [String] brand_private e.g. manns (config file) |
171
|
|
|
PublicanCreatorsChange.check_environment(environment, title, type, language, |
172
|
|
|
brand, db5, homework, |
173
|
|
|
brand_homework, brand_private) |
174
|
|
|
|
175
|
|
|
# @param [String] title comes from titleget[3] |
176
|
|
|
# @param [String] environment Work or Private |
177
|
|
|
# @param [String] global_entities path to a global entities file |
178
|
|
|
# (config file) |
179
|
|
|
# @param [String] brand e.g. Debian or nothing for using publicans default |
180
|
|
|
# brand (config file) |
181
|
|
|
PublicanCreatorsChange.add_entity(environment, global_entities, ent) |
182
|
|
|
|
183
|
|
|
# @param [String] title comes from titleget[3] |
184
|
|
|
# @param [String] environment Work or Private |
185
|
|
|
# @param [String] name your name (config file) |
186
|
|
|
# @param [String] company_name (config file) |
187
|
|
|
PublicanCreatorsChange.change_holder(title, environment, name, company_name, |
188
|
|
|
ent) |
189
|
|
|
|
190
|
|
|
# @param [String] title comes from titleget[3] |
191
|
|
|
# @param [String] environment Work or Private |
192
|
|
|
# @param [String] type Book or Article |
193
|
|
|
# @param [String] legal remove legalnotice from article? (config file) |
194
|
|
|
PublicanCreatorsChange.remove_legal(environment, type, legal, artinfo) |
195
|
|
|
|
196
|
|
|
# @param [String] artinfo path to Article_Info (hardcoded) |
197
|
|
|
# @param [String] bookinfo path to Book_Info (hardcoded) |
198
|
|
|
# @param [String] title_logo remove titlelogo from articlepage (config file) |
199
|
|
|
# @param [String] type Book or Article |
200
|
|
|
PublicanCreatorsChange.remove_orgname_prepare(bookinfo, artinfo, title_logo, |
201
|
|
|
type) |
202
|
|
|
|
203
|
|
|
# @param [String] environment Work or Private |
204
|
|
|
# @param [String] name your name (config file) |
205
|
|
|
# @param [String] email_business business email address (config file) |
206
|
|
|
# @param [String] title comes from titleget[3] |
207
|
|
|
PublicanCreatorsChange.fix_revhist(environment, name, email_business, email, |
208
|
|
|
revhist) |
209
|
|
|
|
210
|
|
|
# @param [String] title comes from titleget[3] |
211
|
|
|
# @param [String] name your name (config file) |
212
|
|
|
# @param [String] email_business business email address (config file) |
213
|
|
|
# @param [String] company_name your company's name (config file) |
214
|
|
|
# @param [String] company_division your companiy's division |
215
|
|
|
# @param [String] email your private email address |
216
|
|
|
PublicanCreatorsChange.fix_authorgroup(name, email_business, company_name, |
217
|
|
|
company_division, email, environment, |
218
|
|
|
agroup) |
219
|
|
|
|
220
|
|
|
# @param [String] title comes from titleget[3] |
221
|
|
|
# @param [String] builds path to buildscript (hardcoded) |
222
|
|
|
# @param [String] language comes from config file in format de-DE |
223
|
|
|
# @param [String] xfc_brand_dir if present the path to your branded xfc |
224
|
|
|
# stylesheets (config file) |
225
|
|
|
# @param [String] pdfview your prefered PDF-Viewer (config file) |
226
|
|
|
PublicanCreatorsExport.export_buildscript(title, builds, language, |
227
|
|
|
xfc_brand_dir, pdfview) |
228
|
|
|
|
229
|
|
|
puts "Now you can find your documentation there: #{targetdir}/#{title}" |
230
|
|
|
Notifier.run |
231
|
|
|
puts "Thanks for using: #{my_name} #{VERSION}" |
232
|
|
|
end |
233
|
|
|
end |
234
|
|
|
|