latex_curriculum_vitae 2.1.1 → 2.1.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,245 +1,245 @@
1
- # Copyright (C) 2015-2018 Sascha Manns <Sascha.Manns@mailbox.org>
2
- #
3
- # This program is free software: you can redistribute it and/or modify
4
- # it under the terms of the GNU General Public License as published by
5
- # the Free Software Foundation, either version 3 of the License, or
6
- # (at your option) any later version.
7
- #
8
- # This program is distributed in the hope that it will be useful,
9
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
10
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11
- # GNU General Public License for more details.
12
- #
13
- # You should have received a copy of the GNU General Public License
14
- # along with this program. If not, see <http://www.gnu.org/licenses/>.
15
-
16
- # Dependencies
17
- require 'rainbow/ext/string'
18
- require 'pony'
19
- require 'resolv-replace.rb'
20
- require File.expand_path(File.join(File.dirname(__FILE__), 'get-config'))
21
-
22
- # Module for creating the CV
23
- module LatexCurriculumVitae
24
- # Module for creating the Email
25
- module Email
26
- # Method for creating the email
27
- # @param [String] contact Name of the contact
28
- # @param [String] email_address Email address of the contact
29
- # @param [String] job_title Title of the target job
30
- # @param [String] contact_sex Can be male, female or unknown
31
- # @param [String] proactive Can be yes or no
32
- # @param [String] letter For preparing the letter
33
- # @param [String] name_of_pdf Name of the output pdf
34
- # TODO: Try to fix this in future
35
- # rubocop:disable Metrics/MethodLength
36
- # rubocop:disable Metrics/ParameterLists
37
- # This method smells of :reek:LongParameterList
38
- # This method smells of :reek:ControlParameter
39
- def self.create_email(contact, email_address, job_title, contact_sex, proactive, letter, name_of_pdf, sysconf_dir,
40
- data_dir, mail_backend, target)
41
- own_email_address, own_smtp, own_username, own_password,
42
- own_port = LatexCurriculumVitae::GetConfig.get_smtp(sysconf_dir)
43
- introduction = introduction(contact, contact_sex)
44
- subject = subject(proactive, job_title)
45
- body = get_body(introduction, letter, proactive, job_title, target)
46
- filename = "#{data_dir}/#{name_of_pdf}.pdf"
47
-
48
- if mail_backend == 'Pony'
49
- # More information about Pony Mailer: https://github.com/benprew/pony
50
- Pony.mail(to: email_address,
51
- bcc: own_email_address,
52
- from: own_email_address,
53
- subject: subject,
54
- body: body,
55
- attachments: { 'Bewerbungsunterlagen_Manns.pdf' => File.read(filename) },
56
- via: :smtp,
57
- via_options: {
58
- address: own_smtp,
59
- port: own_port,
60
- enable_starttls_auto: true,
61
- user_name: own_username,
62
- password: own_password,
63
- authentication: :plain, # :plain, :login, :cram_md5, no auth by default
64
- domain: 'localhost.localdomain', # the HELO domain provided by the client to the server
65
- })
66
- else
67
- `evolution mailto:"#{email_address}?subject=#{subject}\&body=#{body}\&attach=#{filename}"`
68
- end
69
- end
70
-
71
- # Method for building the introduction
72
- # @param [String] contact Name of the contact
73
- # @param [String] contact_sex Can be male, female or unknown
74
- # @return [String] Returns introduction
75
- # TODO: Try to fix this in future
76
- # rubocop:disable Style/IfInsideElse
77
- # This method smells of :reek:ControlParameter
78
- def self.introduction(contact, contact_sex)
79
- introduction = if contact == ''
80
- 'Sehr geehrte Damen und Herren,'
81
- else
82
- if contact_sex == 'male'
83
- "Sehr geehrter Herr #{contact},"
84
- else
85
- "Sehr geehrte Frau #{contact},"
86
- end
87
- end
88
- return introduction
89
- end
90
-
91
- # Method for building the subject
92
- # @param [String] proactive Can be yes or no
93
- # @param [String] job_title Title of the target job
94
- # @return [Array] subject, intro
95
- # TODO: Try to fix this in future
96
- # This method smells of :reek:ControlParameter
97
- def self.subject(proactive, job_title)
98
- subject = if proactive == 'yes'
99
- "Initiativbewerbung um einen Arbeitsplatz als #{job_title}"
100
- else
101
- "Bewerbung um einen Arbeitsplatz als #{job_title}"
102
- end
103
- return subject
104
- end
105
-
106
- # Method for getting the email intro
107
- # TODO: Try to fix this in future
108
- # rubocop:disable Metrics/LineLength
109
- # This method smells of :reek:ControlParameter
110
- # @param [String] proactive Is this a proactive application yes/no
111
- # @param [String] job_title The job title
112
- # @return intro
113
- def self.get_intro(proactive, job_title)
114
- intro = if proactive == 'yes'
115
- "gerne möchte ich mich bei Ihnen um die Stelle als #{job_title} oder einer ähnlichen Position bewerben."
116
- else
117
- "mit großem Interesse bin ich auf die ausgeschriebene Position aufmerksam geworden. Aus diesem Grund bewerbe ich mich bei Ihnen als #{job_title}."
118
- end
119
- return intro
120
- end
121
-
122
- # Method for getting the target code block
123
- # @param [String] target The chosen target
124
- # @returns [String] target_block Returns a Block with the chosen Information
125
- # TODO: Try to fix this in future
126
- # This method smells of :reek:ControlParameter
127
- def self.get_target_block(target)
128
- if target == 'doku'
129
- target_block = 'Neben der Beschreibungssprache DocBook samt XSL-FO lernte ich die Satzsprache LaTeX.
130
- Selbstständig erarbeitete ich mir Kenntnisse in den Programmiersprachen Ruby, Python, sowie der Web-App-Entwicklung
131
- (TH Mittelrhein).'
132
- elsif target == 'support'
133
- target_block = 'Im IT-Support hatte ich bereits erste Führungserfahrung als Dispatcher und Controller.
134
- Selbstständig erarbeitete ich mir Kenntnisse in den Programmiersprachen Bash, Ruby und Python, sowie der
135
- Web-App-Entwicklung (TH Mittelrhein).'
136
- else
137
- target_block = 'Im kaufmännischen Bereich habe ich bereits vielfältige Erfahrungen im Einkauf, Verkauf,
138
- Öffentlichkeitsarbeit und Vertrieb gemacht und bin stets bereit neues zu lernen.'
139
- end
140
- return target_block
141
- end
142
-
143
- # Method for building the email body
144
- # @param [String] introduction EMail introduction
145
- # @param [String] letter With motivational letter? Can be yes or no
146
- # @param [String] proactive Is this a proactive application yes/no
147
- # @param [String] job_title The job title
148
- # @return [String] body Returns the messagebody for the email
149
- # TODO: Try to fix this in future
150
- # rubocop:disable Layout/IndentHeredoc
151
- # This method smells of :reek:ControlParameter
152
- def self.get_body(introduction, letter, proactive, job_title, target)
153
- intro = get_intro(proactive, job_title)
154
- target_block = get_target_block(target)
155
- body = if letter == 'no'
156
- <<BODY
157
- #{introduction}
158
-
159
- #{intro}
160
-
161
- Mit meinen vielfältigen Erfahrungen als Kaufmann, Community-
162
- Manager, Buchautor und Customer Supporter (Level 1 und 2),
163
- sowie Autor Geschäftsprozess- und Anwendungsdokumentation
164
- könnte ich Ihr neuer Mitarbeiter sein.
165
-
166
- Zuletzt war ich für die XCOM AG im Bereich der Dokumentation
167
- tätig.
168
-
169
- Seit dieser Zeit habe ich an teamgesteuerten Projekten für Kunden
170
- mitgearbeitet, wobei mein Schwerpunkt im Bereich Kundenpflege via
171
- Telefon und Email, Dispatching und Teamcontrolling lag.
172
-
173
- #{target_block}
174
-
175
- In für mich fremde Arbeitsgebiete werde ich mich rasch einarbeiten.
176
- Meine Kenntnisse in IT und Organisationsfähigkeiten kann ich für Ihr
177
- Unternehmen im Bereich des Managements gewinnbringend umsetzen.
178
- Persönlich runde ich das Profil mit den Eigenschaften: Teamfähigkeit,
179
- Kommunikationsstärke und Leistungsbereitschaft ab.
180
-
181
- Ich bin mir sicher, die von Ihnen gewünschten Kenntnisse und
182
- Fähigkeiten mitzubringen, und würde mich sehr über ein
183
- Vorstellungsgespräch freuen.
184
-
185
- --
186
-
187
-
188
- Sincerly yours
189
-
190
- Sascha Manns
191
- Maifeldstraße 10
192
- 56727 Mayen
193
- Phone: +49-1573-9242730 (mobile)
194
- Phone: +49-2651-4014045 (home)
195
- Email: Sascha.Manns@mailbox.org
196
- Web: http://saigkill.tuxfamily.org
197
- BODY
198
- else
199
- <<BODY
200
- #{introduction}
201
-
202
- gerne möchte ich mich bei Ihnen für die obige Stelle bewerben.
203
- Meine digitale Bewerbungsmappe, samt des offiziellen Anschreibens,
204
- sind der Mail als Anhang beigefügt.
205
- --
206
- Sincerly yours
207
-
208
- Sascha Manns
209
- Maifeldstraße 10
210
- 56727 Mayen
211
- Phone: +49-1573-9242730 (mobile)
212
- Phone: +49-2651-4014045 (home)
213
- Email: Sascha.Manns@mailbox.org
214
- Web: http://saigkill.tuxfamily.org
215
- BODY
216
- end
217
- return body
218
- end
219
-
220
- # Method for checking the result
221
- # @param [String] contact Name of the contact
222
- # @param [String] email_address Email address from the contact
223
- # @param [String] job_title The given jobtitle
224
- # @param [String] contact_sex Can be male, female or unknown
225
- # @param [String] proactive Can be yes or no
226
- # @param [String] letter With motivational letter? Can be yes or no
227
- # @param [String] name_of_pdf Name of the resulting PDF file
228
- # TODO: Try to fix this in future
229
- # This method smells of :reek:LongParameterList
230
- def self.result_ok(contact, email_address, job_title, contact_sex, proactive, letter, name_of_pdf, sysconf_dir,
231
- data_dir, mail_backend, target)
232
- resultfile_ok = `yad --title="Resulting file" --center --on-top --form \
233
- --item-separator=, --separator="|" \
234
- --field="Resulting file ok?:CBE" \
235
- "yes,no"`
236
- ok = resultfile_ok.chomp.split('|')
237
- if ok.include? 'yes'
238
- LatexCurriculumVitae::Email.create_email(contact, email_address, job_title, contact_sex, proactive, letter,
239
- name_of_pdf, sysconf_dir, data_dir, mail_backend, target)
240
- else
241
- abort('Aborted')
242
- end
243
- end
244
- end
245
- end
1
+ # Copyright (C) 2015-2018 Sascha Manns <Sascha.Manns@outlook.de>
2
+ #
3
+ # This program is free software: you can redistribute it and/or modify
4
+ # it under the terms of the GNU General Public License as published by
5
+ # the Free Software Foundation, either version 3 of the License, or
6
+ # (at your option) any later version.
7
+ #
8
+ # This program is distributed in the hope that it will be useful,
9
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
10
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11
+ # GNU General Public License for more details.
12
+ #
13
+ # You should have received a copy of the GNU General Public License
14
+ # along with this program. If not, see <http://www.gnu.org/licenses/>.
15
+
16
+ # Dependencies
17
+ require 'rainbow/ext/string'
18
+ require 'pony'
19
+ require 'resolv-replace.rb'
20
+ require File.expand_path(File.join(File.dirname(__FILE__), 'get-config'))
21
+
22
+ # Module for creating the CV
23
+ module LatexCurriculumVitae
24
+ # Module for creating the Email
25
+ module Email
26
+ # Method for creating the email
27
+ # @param [String] contact Name of the contact
28
+ # @param [String] email_address Email address of the contact
29
+ # @param [String] job_title Title of the target job
30
+ # @param [String] contact_sex Can be male, female or unknown
31
+ # @param [String] proactive Can be yes or no
32
+ # @param [String] letter For preparing the letter
33
+ # @param [String] name_of_pdf Name of the output pdf
34
+ # TODO: Try to fix this in future
35
+ # rubocop:disable Metrics/MethodLength
36
+ # rubocop:disable Metrics/ParameterLists
37
+ # This method smells of :reek:LongParameterList
38
+ # This method smells of :reek:ControlParameter
39
+ def self.create_email(contact, email_address, job_title, contact_sex, proactive, letter, name_of_pdf, sysconf_dir,
40
+ data_dir, mail_backend, target)
41
+ own_email_address, own_smtp, own_username, own_password,
42
+ own_port = LatexCurriculumVitae::GetConfig.get_smtp(sysconf_dir)
43
+ introduction = introduction(contact, contact_sex)
44
+ subject = subject(proactive, job_title)
45
+ body = get_body(introduction, letter, proactive, job_title, target)
46
+ filename = "#{data_dir}/#{name_of_pdf}.pdf"
47
+
48
+ if mail_backend == 'Pony'
49
+ # More information about Pony Mailer: https://github.com/benprew/pony
50
+ Pony.mail(to: email_address,
51
+ bcc: own_email_address,
52
+ from: own_email_address,
53
+ subject: subject,
54
+ body: body,
55
+ attachments: { 'Bewerbungsunterlagen_Manns.pdf' => File.read(filename) },
56
+ via: :smtp,
57
+ via_options: {
58
+ address: own_smtp,
59
+ port: own_port,
60
+ enable_starttls_auto: true,
61
+ user_name: own_username,
62
+ password: own_password,
63
+ authentication: :plain, # :plain, :login, :cram_md5, no auth by default
64
+ domain: 'localhost.localdomain', # the HELO domain provided by the client to the server
65
+ })
66
+ else
67
+ `evolution mailto:"#{email_address}?subject=#{subject}\&body=#{body}\&attach=#{filename}"`
68
+ end
69
+ end
70
+
71
+ # Method for building the introduction
72
+ # @param [String] contact Name of the contact
73
+ # @param [String] contact_sex Can be male, female or unknown
74
+ # @return [String] Returns introduction
75
+ # TODO: Try to fix this in future
76
+ # rubocop:disable Style/IfInsideElse
77
+ # This method smells of :reek:ControlParameter
78
+ def self.introduction(contact, contact_sex)
79
+ introduction = if contact == ''
80
+ 'Sehr geehrte Damen und Herren,'
81
+ else
82
+ if contact_sex == 'male'
83
+ "Sehr geehrter Herr #{contact},"
84
+ else
85
+ "Sehr geehrte Frau #{contact},"
86
+ end
87
+ end
88
+ return introduction
89
+ end
90
+
91
+ # Method for building the subject
92
+ # @param [String] proactive Can be yes or no
93
+ # @param [String] job_title Title of the target job
94
+ # @return [Array] subject, intro
95
+ # TODO: Try to fix this in future
96
+ # This method smells of :reek:ControlParameter
97
+ def self.subject(proactive, job_title)
98
+ subject = if proactive == 'yes'
99
+ "Initiativbewerbung um einen Arbeitsplatz als #{job_title}"
100
+ else
101
+ "Bewerbung um einen Arbeitsplatz als #{job_title}"
102
+ end
103
+ return subject
104
+ end
105
+
106
+ # Method for getting the email intro
107
+ # TODO: Try to fix this in future
108
+ # rubocop:disable Metrics/LineLength
109
+ # This method smells of :reek:ControlParameter
110
+ # @param [String] proactive Is this a proactive application yes/no
111
+ # @param [String] job_title The job title
112
+ # @return intro
113
+ def self.get_intro(proactive, job_title)
114
+ intro = if proactive == 'yes'
115
+ "gerne möchte ich mich bei Ihnen um die Stelle als #{job_title} oder einer ähnlichen Position bewerben."
116
+ else
117
+ "mit großem Interesse bin ich auf die ausgeschriebene Position aufmerksam geworden. Aus diesem Grund bewerbe ich mich bei Ihnen als #{job_title}."
118
+ end
119
+ return intro
120
+ end
121
+
122
+ # Method for getting the target code block
123
+ # @param [String] target The chosen target
124
+ # @returns [String] target_block Returns a Block with the chosen Information
125
+ # TODO: Try to fix this in future
126
+ # This method smells of :reek:ControlParameter
127
+ def self.get_target_block(target)
128
+ if target == 'doku'
129
+ target_block = 'Neben der Beschreibungssprache DocBook samt XSL-FO lernte ich die Satzsprache LaTeX.
130
+ Selbstständig erarbeitete ich mir Kenntnisse in den Programmiersprachen Ruby, Python, sowie der Web-App-Entwicklung
131
+ (TH Mittelrhein).'
132
+ elsif target == 'support'
133
+ target_block = 'Im IT-Support hatte ich bereits erste Führungserfahrung als Dispatcher und Controller.
134
+ Selbstständig erarbeitete ich mir Kenntnisse in den Programmiersprachen Bash, Ruby und Python, sowie der
135
+ Web-App-Entwicklung (TH Mittelrhein).'
136
+ else
137
+ target_block = 'Im kaufmännischen Bereich habe ich bereits vielfältige Erfahrungen im Einkauf, Verkauf,
138
+ Öffentlichkeitsarbeit und Vertrieb gemacht und bin stets bereit neues zu lernen.'
139
+ end
140
+ return target_block
141
+ end
142
+
143
+ # Method for building the email body
144
+ # @param [String] introduction EMail introduction
145
+ # @param [String] letter With motivational letter? Can be yes or no
146
+ # @param [String] proactive Is this a proactive application yes/no
147
+ # @param [String] job_title The job title
148
+ # @return [String] body Returns the messagebody for the email
149
+ # TODO: Try to fix this in future
150
+ # rubocop:disable Layout/IndentHeredoc
151
+ # This method smells of :reek:ControlParameter
152
+ def self.get_body(introduction, letter, proactive, job_title, target)
153
+ intro = get_intro(proactive, job_title)
154
+ target_block = get_target_block(target)
155
+ body = if letter == 'no'
156
+ <<BODY
157
+ #{introduction}
158
+
159
+ #{intro}
160
+
161
+ Mit meinen vielfältigen Erfahrungen als Kaufmann, Community-
162
+ Manager, Buchautor und Customer Supporter (Level 1 und 2),
163
+ sowie Autor Geschäftsprozess- und Anwendungsdokumentation
164
+ könnte ich Ihr neuer Mitarbeiter sein.
165
+
166
+ Zuletzt war ich für die XCOM AG im Bereich der Dokumentation
167
+ tätig.
168
+
169
+ Seit dieser Zeit habe ich an teamgesteuerten Projekten für Kunden
170
+ mitgearbeitet, wobei mein Schwerpunkt im Bereich Kundenpflege via
171
+ Telefon und Email, Dispatching und Teamcontrolling lag.
172
+
173
+ #{target_block}
174
+
175
+ In für mich fremde Arbeitsgebiete werde ich mich rasch einarbeiten.
176
+ Meine Kenntnisse in IT und Organisationsfähigkeiten kann ich für Ihr
177
+ Unternehmen im Bereich des Managements gewinnbringend umsetzen.
178
+ Persönlich runde ich das Profil mit den Eigenschaften: Teamfähigkeit,
179
+ Kommunikationsstärke und Leistungsbereitschaft ab.
180
+
181
+ Ich bin mir sicher, die von Ihnen gewünschten Kenntnisse und
182
+ Fähigkeiten mitzubringen, und würde mich sehr über ein
183
+ Vorstellungsgespräch freuen.
184
+
185
+ --
186
+
187
+
188
+ Sincerly yours
189
+
190
+ Sascha Manns
191
+ Maifeldstraße 10
192
+ 56727 Mayen
193
+ Phone: +49-172-3142738 (mobile)
194
+ Phone: +49-2651-4014045 (home)
195
+ Email: Sascha.Manns@outlook.de
196
+ Web: https://saigkills-backtrace.de
197
+ BODY
198
+ else
199
+ <<BODY
200
+ #{introduction}
201
+
202
+ gerne möchte ich mich bei Ihnen für die obige Stelle bewerben.
203
+ Meine digitale Bewerbungsmappe, samt des offiziellen Anschreibens,
204
+ sind der Mail als Anhang beigefügt.
205
+ --
206
+ Sincerly yours
207
+
208
+ Sascha Manns
209
+ Maifeldstraße 10
210
+ 56727 Mayen
211
+ Phone: +49-172-3142738 (mobile)
212
+ Phone: +49-2651-4014045 (home)
213
+ Email: Sascha.Manns@outlook.de
214
+ Web: https://saigkills-backtrace.de
215
+ BODY
216
+ end
217
+ return body
218
+ end
219
+
220
+ # Method for checking the result
221
+ # @param [String] contact Name of the contact
222
+ # @param [String] email_address Email address from the contact
223
+ # @param [String] job_title The given jobtitle
224
+ # @param [String] contact_sex Can be male, female or unknown
225
+ # @param [String] proactive Can be yes or no
226
+ # @param [String] letter With motivational letter? Can be yes or no
227
+ # @param [String] name_of_pdf Name of the resulting PDF file
228
+ # TODO: Try to fix this in future
229
+ # This method smells of :reek:LongParameterList
230
+ def self.result_ok(contact, email_address, job_title, contact_sex, proactive, letter, name_of_pdf, sysconf_dir,
231
+ data_dir, mail_backend, target)
232
+ resultfile_ok = `yad --title="Resulting file" --center --on-top --form \
233
+ --item-separator=, --separator="|" \
234
+ --field="Resulting file ok?:CBE" \
235
+ "yes,no"`
236
+ ok = resultfile_ok.chomp.split('|')
237
+ if ok.include? 'yes'
238
+ LatexCurriculumVitae::Email.create_email(contact, email_address, job_title, contact_sex, proactive, letter,
239
+ name_of_pdf, sysconf_dir, data_dir, mail_backend, target)
240
+ else
241
+ abort('Aborted')
242
+ end
243
+ end
244
+ end
245
+ end