latex_curriculum_vitae 2.1.1 → 2.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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