lazylead 0.2.0 → 0.4.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.
Files changed (69) hide show
  1. checksums.yaml +4 -4
  2. data/.0pdd.yml +4 -1
  3. data/.circleci/config.yml +14 -4
  4. data/.docker/Dockerfile +5 -4
  5. data/.docker/vcs.dockerfile +10 -0
  6. data/.docs/accuracy.md +107 -0
  7. data/.docs/accuracy_email.jpg +0 -0
  8. data/.docs/accuracy_jira_comment.jpg +0 -0
  9. data/.docs/duedate_expired.md +92 -0
  10. data/.docs/propagate_down.md +89 -0
  11. data/.pdd +1 -1
  12. data/.rubocop.yml +7 -1
  13. data/.rultor.yml +2 -2
  14. data/.simplecov +0 -6
  15. data/bin/lazylead +13 -5
  16. data/lazylead.gemspec +4 -16
  17. data/lib/lazylead/cc.rb +180 -0
  18. data/lib/lazylead/cli/app.rb +4 -3
  19. data/lib/lazylead/exchange.rb +15 -2
  20. data/lib/lazylead/home.rb +38 -0
  21. data/lib/lazylead/log.rb +30 -8
  22. data/lib/lazylead/model.rb +60 -22
  23. data/lib/lazylead/opts.rb +68 -0
  24. data/lib/lazylead/postman.rb +15 -15
  25. data/lib/lazylead/schedule.rb +6 -4
  26. data/lib/lazylead/smtp.rb +1 -1
  27. data/lib/lazylead/system/fake.rb +1 -1
  28. data/lib/lazylead/system/jira.rb +51 -12
  29. data/lib/lazylead/system/synced.rb +2 -1
  30. data/lib/lazylead/task/accuracy/accuracy.rb +140 -0
  31. data/lib/lazylead/task/accuracy/affected_build.rb +43 -0
  32. data/lib/lazylead/task/accuracy/requirement.rb +40 -0
  33. data/lib/lazylead/task/alert.rb +8 -6
  34. data/lib/lazylead/task/confluence_ref.rb +4 -3
  35. data/lib/lazylead/task/echo.rb +4 -0
  36. data/lib/lazylead/task/fix_version.rb +10 -6
  37. data/lib/lazylead/task/missing_comment.rb +7 -5
  38. data/lib/lazylead/task/propagate_down.rb +126 -0
  39. data/lib/lazylead/task/savepoint.rb +58 -0
  40. data/lib/lazylead/task/touch.rb +102 -0
  41. data/lib/lazylead/version.rb +1 -1
  42. data/lib/messages/accuracy.erb +118 -0
  43. data/lib/messages/due_date_expired.erb +8 -7
  44. data/lib/messages/illegal_fixversion_change.erb +9 -8
  45. data/lib/messages/missing_comment.erb +10 -9
  46. data/lib/messages/savepoint.erb +43 -0
  47. data/lib/messages/svn_touch.erb +147 -0
  48. data/readme.md +35 -32
  49. data/test/lazylead/cc_test.rb +153 -0
  50. data/test/lazylead/cli/app_test.rb +3 -4
  51. data/test/lazylead/exchange_test.rb +22 -2
  52. data/test/lazylead/model_test.rb +14 -3
  53. data/test/lazylead/opts_test.rb +70 -0
  54. data/test/lazylead/postman_test.rb +57 -0
  55. data/test/lazylead/smtp_test.rb +1 -1
  56. data/test/lazylead/system/jira_test.rb +35 -1
  57. data/test/lazylead/task/accuracy/accuracy_test.rb +73 -0
  58. data/test/lazylead/task/accuracy/affected_build_test.rb +42 -0
  59. data/test/lazylead/task/assignee_alert_test.rb +2 -2
  60. data/test/lazylead/task/duedate_test.rb +48 -22
  61. data/test/lazylead/task/fix_version_test.rb +9 -6
  62. data/test/lazylead/task/missing_comment_test.rb +11 -9
  63. data/test/lazylead/task/propagate_down_test.rb +88 -0
  64. data/test/lazylead/task/savepoint_test.rb +51 -0
  65. data/test/lazylead/task/touch_test.rb +63 -0
  66. data/upgrades/sqlite/001-install-main-lazylead-tables.sql +0 -1
  67. data/upgrades/sqlite/999.testdata.sql +5 -1
  68. metadata +41 -176
  69. data/todo.yml +0 -6
@@ -23,5 +23,5 @@
23
23
  # OR OTHER DEALINGS IN THE SOFTWARE.
24
24
 
25
25
  module Lazylead
26
- VERSION = "0.2.0"
26
+ VERSION = "0.4.2"
27
27
  end
@@ -0,0 +1,118 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <style> /* CSS styles taken from https://github.com/yegor256/tacit */
5
+ th {
6
+ font-weight: 600
7
+ }
8
+
9
+ table tr {
10
+ border-bottom-width: 2.16px
11
+ }
12
+
13
+ table tr th {
14
+ border-bottom-width: 2.16px
15
+ }
16
+
17
+ table tr td, table tr th {
18
+ overflow: hidden;
19
+ padding: 5.4px 3.6px;
20
+ line-height: 14px;
21
+ }
22
+
23
+ #summary {
24
+ text-align: left;
25
+ }
26
+
27
+ .auto {
28
+ min-width: auto;
29
+ white-space: nowrap;
30
+ }
31
+
32
+ a {
33
+ color: #275a90;
34
+ text-decoration: none
35
+ }
36
+
37
+ a:hover {
38
+ text-decoration: underline
39
+ }
40
+
41
+ * {
42
+ border: 0;
43
+ border-collapse: separate;
44
+ border-spacing: 0;
45
+ box-sizing: border-box;
46
+ margin: 0;
47
+ max-width: 100%;
48
+ padding: 0;
49
+ vertical-align: baseline;
50
+ font-family: system-ui, "Helvetica Neue", Helvetica, Arial, sans-serif;
51
+ font-size: 13px;
52
+ font-stretch: normal;
53
+ font-style: normal;
54
+ font-weight: 400;
55
+ line-height: 29.7px
56
+ }
57
+
58
+ html, body {
59
+ width: 100%
60
+ }
61
+
62
+ html {
63
+ height: 100%
64
+ }
65
+
66
+ body {
67
+ background: #fff;
68
+ color: #1a1919;
69
+ padding: 36px
70
+ }
71
+ </style>
72
+ <title>Accuracy</title>
73
+ </head>
74
+ <body>
75
+ <p>Hi,</p>
76
+ <p>The triage score and accuracy posted to the following tickets::</p>
77
+ <table summary="table with tickets triage score">
78
+ <tr>
79
+ <th id="key">Key</th>
80
+ <th id="duedate">Due date</th>
81
+ <th id="priority">Priority</th>
82
+ <th id="score">Score</th>
83
+ <th id="accuracy">Accuracy</th>
84
+ <th id="reporter">Reporter</th>
85
+ <th id="summary">Summary</th>
86
+ </tr>
87
+ <% tickets.sort_by { |s| s.issue.fields["priority"]["id"].to_i }
88
+ .each do |score| %>
89
+ <tr>
90
+ <td>
91
+ <div class="auto">
92
+ <a href="<%= score.issue.url %>"><%= score.issue.key %></a>
93
+ </div>
94
+ </td>
95
+ <td>
96
+ <div class="auto"><%= score.issue.duedate %></div>
97
+ </td>
98
+ <td><%= score.issue.priority %></td>
99
+ <td>
100
+ <span style="color: <%= score.color %>"><%= score.score %></span>
101
+ </td>
102
+ <td>
103
+ <span style="color: <%= score.color %>"><%= score.accuracy %>%</span>
104
+ </td>
105
+ <td>
106
+ <div class="auto">
107
+ <%= score.issue.reporter.name %>
108
+ </div>
109
+ </td>
110
+ <td><%= score.issue.summary %></td>
111
+ </tr>
112
+ <% end %>
113
+ </table>
114
+ <p>Posted by
115
+ <a href="https://github.com/dgroup/lazylead">lazylead v<%= version %></a>.
116
+ </p>
117
+ </body>
118
+ </html>
@@ -1,4 +1,5 @@
1
- <html>
1
+ <!DOCTYPE html>
2
+ <html lang="en">
2
3
  <head>
3
4
  <style>
4
5
  /* CSS styles taken from https://github.com/yegor256/tacit */
@@ -68,13 +69,13 @@
68
69
  them accordingly or actualize the
69
70
  <span style="font-weight:bold">"Due date"</span> field for the following
70
71
  ticket(s):</p>
71
- <table>
72
+ <table summary="table with ticket(s) which have expired due dates">
72
73
  <tr>
73
- <th>Key</th>
74
- <th>Due date</th>
75
- <th>Priority</th>
76
- <th>Reporter</th>
77
- <th>Summary</th>
74
+ <th id="key">Key</th>
75
+ <th id="duedate">Due date</th>
76
+ <th id="priority">Priority</th>
77
+ <th id="reporter">Reporter</th>
78
+ <th id="summary">Summary</th>
78
79
  </tr>
79
80
  <% tickets.each do |ticket| %>
80
81
  <tr>
@@ -1,4 +1,5 @@
1
- <html>
1
+ <!DOCTYPE html>
2
+ <html lang="en">
2
3
  <head>
3
4
  <style>
4
5
  /* CSS styles taken from https://github.com/yegor256/tacit */
@@ -87,14 +88,14 @@
87
88
 
88
89
  <p>The <span style='font-weight:bold'>'Fix Version'</span> for the following
89
90
  ticket(s) changed by not authorized person(s):</p>
90
- <table>
91
+ <table summary="ticket(s) where fix version changed">
91
92
  <tr>
92
- <th>Key</th>
93
- <th>Priority</th>
94
- <th>When</th>
95
- <th>Who</th>
96
- <th>Reporter</th>
97
- <th>Summary</th>
93
+ <th id="key">Key</th>
94
+ <th id="priority">Priority</th>
95
+ <th id="when">When</th>
96
+ <th id="who">Who</th>
97
+ <th id="reporter">Reporter</th>
98
+ <th id="summary">Summary</th>
98
99
  </tr>
99
100
  <% versions.each do |v| %>
100
101
  <tr>
@@ -1,4 +1,5 @@
1
- <html>
1
+ <!DOCTYPE html>
2
+ <html lang="en">
2
3
  <head>
3
4
  <style> /* CSS styles taken from https://github.com/yegor256/tacit */
4
5
  th {
@@ -95,15 +96,15 @@
95
96
  <p>Hi <%= addressee %>,</p>
96
97
 
97
98
  <p>The following ticket(s) has missing <%= details %>:</p>
98
- <table>
99
+ <table summary="ticket(s) without expected comment">
99
100
  <tr>
100
- <th>Key</th>
101
- <th>Due date</th>
102
- <th>Priority</th>
103
- <th>Assignee</th>
104
- <th>Reporter</th>
105
- <th>Summary</th>
106
- <th>Last comments</th>
101
+ <th id="key">Key</th>
102
+ <th id="duedate">Due date</th>
103
+ <th id="priority">Priority</th>
104
+ <th id="assignee">Assignee</th>
105
+ <th id="reporter">Reporter</th>
106
+ <th id="summary">Summary</th>
107
+ <th id="comments">Last comments</th>
107
108
  </tr>
108
109
  <% comments.each do |comment| %>
109
110
  <tr>
@@ -0,0 +1,43 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <style> /* CSS styles taken from https://github.com/yegor256/tacit */
5
+ a {
6
+ color: #275a90;
7
+ text-decoration: none
8
+ }
9
+
10
+ a:hover {
11
+ text-decoration: underline
12
+ }
13
+
14
+ * {
15
+ box-sizing: border-box;
16
+ margin: 0;
17
+ max-width: 100%;
18
+ padding: 0;
19
+ vertical-align: baseline;
20
+ font-family: system-ui, \"Helvetica Neue\", Helvetica, Arial, sans-serif;
21
+ font-size: 13px;
22
+ font-stretch: normal;
23
+ font-style: normal;
24
+ font-weight: 400;
25
+ line-height: 29.7px
26
+ }
27
+
28
+ body {
29
+ background: #fff;
30
+ color: #1a1919;
31
+ padding: 36px
32
+ }
33
+ </style>
34
+ <title>LL <%= Date.today %></title>
35
+ </head>
36
+ <body>
37
+ <p>Hi,</p>
38
+ <p>PFA the LL configuration at <%= DateTime.now %>.</p>
39
+ <p>Posted by
40
+ <a href="https://github.com/dgroup/lazylead">lazylead v<%= version %></a>.
41
+ </p>
42
+ </body>
43
+ </html>
@@ -0,0 +1,147 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <style>
5
+ /* CSS styles taken from https://github.com/yegor256/tacit */
6
+ th {
7
+ font-weight: 600;
8
+ text-align: left;
9
+ }
10
+
11
+ td {
12
+ vertical-align: top;
13
+ }
14
+
15
+ table tr {
16
+ border-bottom-width: 2.16px
17
+ }
18
+
19
+ table tr th {
20
+ border-bottom-width: 2.16px
21
+ }
22
+
23
+ table tr td, table tr th {
24
+ overflow: hidden; /*padding: 5.4px 3.6px*/
25
+ padding-left: 2px;
26
+ padding-right: 2px;
27
+ }
28
+
29
+ td:nth-child(3) {
30
+ min-width: 120px;
31
+ max-width: 200px;
32
+ }
33
+
34
+ td:nth-child(4) {
35
+ min-width: 300px;
36
+ max-width: 500px;
37
+ }
38
+
39
+ pre, code, kbd, samp, var, output {
40
+ font-family: Menlo, Monaco, Consolas, "Courier New", monospace;
41
+ font-size: 14.4px
42
+ }
43
+
44
+ pre code {
45
+ background: none;
46
+ border: 0;
47
+ line-height: 29.7px;
48
+ padding: 0
49
+ }
50
+
51
+ code, kbd {
52
+ background: #daf1e0;
53
+ border-radius: 3.6px;
54
+ color: #2a6f3b;
55
+ display: inline-block;
56
+ line-height: 18px;
57
+ padding: 3.6px 6.3px 2.7px
58
+ }
59
+
60
+ a {
61
+ color: #275a90;
62
+ text-decoration: none
63
+ }
64
+
65
+ a:hover {
66
+ text-decoration: underline
67
+ }
68
+
69
+ * {
70
+ border: 0;
71
+ border-collapse: separate;
72
+ border-spacing: 0;
73
+ box-sizing: border-box;
74
+ margin: 0;
75
+ max-width: 100%;
76
+ padding: 0;
77
+ vertical-align: baseline;
78
+ font-family: system-ui, "Helvetica Neue", Helvetica, Arial, sans-serif;
79
+ font-size: 13px;
80
+ font-stretch: normal;
81
+ font-style: normal;
82
+ font-weight: 400;
83
+ line-height: 29.7px
84
+ }
85
+
86
+ html, body {
87
+ width: 100%
88
+ }
89
+
90
+ html {
91
+ height: 100%
92
+ }
93
+
94
+ body {
95
+ background: #fff;
96
+ color: #1a1919;
97
+ padding: 36px
98
+ }
99
+
100
+ .msg {
101
+ background: #eff6e8;
102
+ border-radius: 3.6px;
103
+ color: #2a6f3b;
104
+ display: inline-block;
105
+ line-height: 18px;
106
+ padding: 3.6px 6.3px 2.7px
107
+ }
108
+ </style>
109
+ <title>RCA</title>
110
+ </head>
111
+ <body>
112
+ <p>Hi,</p>
113
+ <p>The critical file(s) <code><%= files %></code> have been changed recently:</p>
114
+ <table summary="table with svn commits where critical files have been changed">
115
+ <tr>
116
+ <th id="rev">Revision</th>
117
+ <th id="author">Author</th>
118
+ <th id="when">When</th>
119
+ <th id="files">File(s)</th>
120
+ <th id="commit_msg">Commit</th>
121
+ </tr>
122
+ <% entries.each do |e| %>
123
+ <tr>
124
+ <td><a href="<%= commit_url %><%= e.revision %>"><%= e.revision %></a></td>
125
+ <td><a href="<%= user %><%= e.author %>"><%= e.author %></a></td>
126
+ <td><%= Time.strptime(e.date, "%Y-%m-%dT%H:%M").strftime("%Y-%m-%d %H:%M") %></td>
127
+ <td>
128
+ <% if e.paths.path.respond_to? :join %>
129
+ <%= e.paths
130
+ .path
131
+ .map { |file| "<a href='#{commit_url}#{e.revision}'>#{file}</a>" }
132
+ .join("<br/>") %>
133
+ <% else %>
134
+ <a href="<%= commit_url %><%= e.revision %>"><%= e.paths.path %></a>
135
+ <% end %>
136
+ </td>
137
+ <td>
138
+ <div class="msg"><%= e.msg %></div>
139
+ </td>
140
+ </tr>
141
+ <% end %>
142
+ </table>
143
+ <p>Posted by
144
+ <a href="https://github.com/dgroup/lazylead">lazylead v<%= version %></a>.
145
+ </p>
146
+ </body>
147
+ </html>
data/readme.md CHANGED
@@ -19,6 +19,8 @@
19
19
  [![DevOps By Rultor.com](http://www.rultor.com/b/dgroup/lazylead)](http://www.rultor.com/p/dgroup/lazylead)
20
20
  [![EO badge](http://www.elegantobjects.org/badge.svg)](http://www.elegantobjects.org/#principles)
21
21
 
22
+ ⚠️ We're still in a very early alpha version, the API may change frequently until we release version `1.0`.
23
+
22
24
  ### Overview
23
25
  Ticketing systems (Github, Jira, etc.) are strongly integrated into our processes and everyone understands their necessity. As soon as a developer becomes a lead/technical manager, he or she faces a set of routine tasks that are related to ticketing work. On large projects this becomes a problem, more and more you spend time running around on dashboards and tickets, looking for incorrect deviations in tickets and performing routine tasks instead of solving technical problems.
24
26
 
@@ -28,21 +30,22 @@ I think you remember how [static code analysis](https://en.wikipedia.org/wiki/St
28
30
 
29
31
  Join our telegram group [lazylead.org](https://t.me/lazyleads) for discussions.
30
32
 
31
- | Daily annoying task | Jira | Github | Trello |
32
- | :--------------------------------------------------------------------- | :---: | :----: | :----: |
33
- | [Notify ticket's assignee](lib/lazylead/task/alert.rb) | ✅ | ⌛ | ⌛ |
34
- | [Notify ticket's reporter](lib/lazylead/task/alert.rb) | ✅ | ⌛ | ⌛ |
35
- | [Notify ticket's manager](lib/lazylead/task/alert.rb) | ✅ | ⌛ | ⌛ |
33
+ | Daily annoying task | Jira | Github | Trello |
34
+ | :---------------------------------------------------------------------------------- | :---: | :----: | :----: |
35
+ | [Notify ticket's assignee](lib/lazylead/task/alert.rb) | ✅ | ⌛ | ⌛ |
36
+ | [Notify ticket's reporter](lib/lazylead/task/alert.rb) | ✅ | ⌛ | ⌛ |
37
+ | [Notify ticket's manager](lib/lazylead/task/alert.rb) | ✅ | ⌛ | ⌛ |
36
38
  | [Notify about illegal "Fix Version" modification](lib/lazylead/task/fix_version.rb) | ✅ | ❌ | ❌ |
37
- | [Expected comment in ticket is missing](lib/lazylead/task/missing_comment.rb) | ✅ | ⌛ | ⌛ |
38
- | Propagate some fields from parent ticket into sub-tasks | | ❌ | ❌ |
39
- | Print the current capacity of team into newly created tasks | | ⌛ | ⌛ |
40
- | Create/retrofit the defect automatically into latest release | ⌛ | ⌛ | |
41
- | Notify about expired(ing) due dates | ⌛ | ⌛ | |
42
- | Notify about absent original estimations | | | ⌛ |
43
- | Notify about 'Hot potato' tickets | ⌛ | ⌛ | ⌛ |
44
- | Notify about long live tickets (aging) | ⌛ | ⌛ | ⌛ |
45
- | Notify about tickets with invalid format (missing url/stacktrace, etc) | ⌛ | ⌛ | ⌛ |
39
+ | [Expected comment in ticket is missing](lib/lazylead/task/missing_comment.rb) | ✅ | ⌛ | ⌛ |
40
+ | [Propagate some fields from parent ticket into sub-tasks](.docs/propagate_down.md) | | ❌ | ❌ |
41
+ | [Evaluate the ticket formatting accuracy](.docs/accuracy.md) | | ⌛ | ⌛ |
42
+ | Print the current capacity of team into newly created tasks | ⌛ | ⌛ | |
43
+ | Create/retrofit the defect automatically into latest release | ⌛ | ⌛ | |
44
+ | [Notify about expired(ing) due dates](.docs/duedate_expired.md) | | | ⌛ |
45
+ | Notify about absent original estimations | ⌛ | ⌛ | ⌛ |
46
+ | Notify about 'Hot potato' tickets | ⌛ | ⌛ | ⌛ |
47
+ | Notify about long live tickets (aging) | ⌛ | ⌛ | ⌛ |
48
+ | Notify about tickets with invalid format (missing url/stacktrace, etc) | ⌛ | ⌛ | ⌛ |
46
49
  | Create a meeting(s) automatically in case some tickets appeared (group by assignee/reporters/component/ticket type/etc) | ⌛ | ⌛ | ⌛ |
47
50
 
48
51
  | Integration | Type | Status |
@@ -59,7 +62,7 @@ Join our telegram group [lazylead.org](https://t.me/lazyleads) for discussions.
59
62
  New ideas, bugs, suggestions or questions are welcome [via GitHub issues](https://github.com/dgroup/lazylead/issues/new)!
60
63
 
61
64
  ### Get started
62
- :warning: We're still in a very early alpha version, the API may change frequently until we release version 1.0.
65
+ ⚠️ We're still in a very early alpha version, the API may change frequently until we release version `1.0`.
63
66
 
64
67
  Let's assume that:
65
68
  - your team is using jira as a ticketing system
@@ -101,7 +104,7 @@ For simplicity, we are using [docker-compose](https://docs.docker.com/compose/):
101
104
  ```
102
105
  or just download the project using git
103
106
  ```bash
104
- git clone https://github.com/dgroup/lazylead.git ll && cd ll && pwd && ls -lah
107
+ git clone https://github.com/dgroup/lazylead.git ll && cd ll
105
108
  ```
106
109
 
107
110
  2. Create a container, using `docker-compose -f .github/tasks.yml up`
@@ -110,13 +113,14 @@ For simplicity, we are using [docker-compose](https://docs.docker.com/compose/):
110
113
  ll > docker-compose -f .github/tasks.yml up
111
114
  Creating lazylead ... done
112
115
  Attaching to lazylead
113
- lazylead | [2020-06-06T10:35:13] DEBUG Memory footprint at start is 52MB
114
- lazylead | [2020-06-06T10:35:13] DEBUG Database: '/lazylead/db/ll.db', sql migration dir: '/lazylead/upgrades/sqlite'
115
- lazylead | [2020-06-06T10:35:13] DEBUG Migration applied to /lazylead/db/ll.db from /lazylead/upgrades/sqlite
116
- lazylead | [2020-06-06T10:35:13] DEBUG Database connection established
117
- lazylead | [2020-06-06T10:35:13] WARN SMTP connection enabled in test mode.
118
- lazylead | [2020-06-06T10:35:13] WARN ll-001: No tasks found.
119
- lazylead | [2020-06-06T10:35:13] DEBUG Memory footprint at the end is 66MB
116
+ lazylead | [2020-08-09T06:17:32] DEBUG [main] Version: 0.4.0
117
+ lazylead | [2020-08-09T06:17:32] DEBUG [main] Memory footprint at start is 52MB
118
+ lazylead | [2020-08-09T06:17:32] DEBUG [main] Database: '/lazylead/db/ll.db', sql migration dir: '/lazylead/upgrades/sqlite'
119
+ lazylead | [2020-08-09T06:17:32] DEBUG [main] Migration applied to /lazylead/db/ll.db from /lazylead/upgrades/sqlite
120
+ lazylead | [2020-08-09T06:17:32] DEBUG [main] Database connection established
121
+ lazylead | [2020-08-09T06:17:32] DEBUG [main] SMTP connection established with {host} as {user}.
122
+ lazylead | [2020-08-09T06:17:32] WARN [main] ll-001: No tasks found.
123
+ lazylead | [2020-08-09T06:17:32] DEBUG [main] Memory footprint at the end is 67MB
120
124
  lazylead exited with code 0
121
125
  ll >
122
126
  ```
@@ -150,15 +154,14 @@ For simplicity, we are using [docker-compose](https://docs.docker.com/compose/):
150
154
  check the logs and stop container if needed
151
155
  ```bash
152
156
  ll > docker logs lazylead
153
- 2020-06-06T11:37:36] DEBUG Memory footprint at start is 52MB
154
- [2020-06-06T11:37:37] DEBUG Database: '/lazylead/db/ll.db', sql migration dir: '/lazylead/upgrades/sqlite'
155
- [2020-06-06T11:37:37] DEBUG Migration applied to /lazylead/db/ll.db from /lazylead/upgrades/sqlite
156
- [2020-06-06T11:37:37] DEBUG Database connection established
157
- [2020-06-06T11:37:37] WARN SMTP connection enabled in test mode.
158
- [2020-06-06T11:37:37] DEBUG Task scheduled: id='1', name='Expired due dates', cron='0 8 * * 1-5', system='1', action='Lazylead::Task::AssigneeAlert', team_id='1', description='', enabled='true', properties='{"sql":"filter=555", "cc":"my.email@google.com", "subject":"[LL] Expired due dates", "template":"lib/messages/due_date_expired.erb", "postman":"Lazylead::Exchange"}'
157
+ lazylead | [2020-08-09T06:17:32] DEBUG [main] Version: 0.4.0
158
+ lazylead | [2020-08-09T06:17:32] DEBUG [main] Memory footprint at start is 52MB
159
+ lazylead | [2020-08-09T06:17:32] DEBUG [main] Database: '/lazylead/db/ll.db', sql migration dir: '/lazylead/upgrades/sqlite'
160
+ lazylead | [2020-08-09T06:17:32] DEBUG [main] Migration applied to /lazylead/db/ll.db from /lazylead/upgrades/sqlite
161
+ lazylead | [2020-08-09T06:17:32] DEBUG [main] Database connection established
162
+ lazylead | [2020-08-09T06:17:32] DEBUG [main] SMTP connection established with {host} as {user}.
163
+ lazylead | [2020-08-09T06:17:32] DEBUG [main] Task scheduled: id='1', name='Expired due dates', cron='0 8 * * 1-5', system='1', action='Lazylead::Task::AssigneeAlert', team_id='1', description='', enabled='true', properties='{"sql":"filter=555", "cc":"my.email@google.com", "subject":"[LL] Expired due dates", "template":"lib/messages/due_date_expired.erb", "postman":"Lazylead::Exchange"}'
159
164
  ...
160
- ll > docker stop lazylead
161
- lazylead
162
165
  ```
163
166
 
164
167
  ### How to contribute?
@@ -171,4 +174,4 @@ bundle exec rake
171
174
  Everyone interacting in this project’s codebases, issue trackers, chat rooms is expected to follow the [code of conduct](.github/CODE_OF_CONDUCT.md).
172
175
 
173
176
  Contributors:
174
- * [dgroup](https://github.com/dgroup) as Yurii Dubinka (yurii.dubinka@gmail.com)
177
+ * [dgroup](https://github.com/dgroup) as Yurii Dubinka ([yurii.dubinka@gmail.com](mailto:yurii.dubinka@gmail.com))