lazylead 0.1.0 → 0.3.1

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 (52) hide show
  1. checksums.yaml +4 -4
  2. data/.circleci/config.yml +19 -7
  3. data/.circleci/release_image.sh +10 -7
  4. data/.docker/Dockerfile +10 -9
  5. data/.docker/docker-compose.yml +3 -3
  6. data/.docker/readme.md +24 -21
  7. data/.docker/vcs.dockerfile +10 -0
  8. data/.docs/duedate_expired.md +92 -0
  9. data/.docs/propagate_down.md +89 -0
  10. data/.rubocop.yml +1 -1
  11. data/.rultor.yml +13 -14
  12. data/.simplecov +0 -6
  13. data/CNAME +1 -0
  14. data/Rakefile +38 -1
  15. data/bin/lazylead +7 -2
  16. data/lazylead.gemspec +5 -17
  17. data/lib/lazylead/cc.rb +180 -0
  18. data/lib/lazylead/cli/app.rb +4 -3
  19. data/lib/lazylead/exchange.rb +14 -1
  20. data/lib/lazylead/home.rb +38 -0
  21. data/lib/lazylead/model.rb +29 -7
  22. data/lib/lazylead/postman.rb +14 -14
  23. data/lib/lazylead/schedule.rb +4 -2
  24. data/lib/lazylead/system/fake.rb +1 -1
  25. data/lib/lazylead/system/jira.rb +46 -5
  26. data/lib/lazylead/task/fix_version.rb +1 -1
  27. data/lib/lazylead/task/propagate_down.rb +118 -0
  28. data/lib/lazylead/task/savepoint.rb +58 -0
  29. data/lib/lazylead/version.rb +1 -1
  30. data/lib/messages/due_date_expired.erb +8 -7
  31. data/lib/messages/illegal_fixversion_change.erb +9 -8
  32. data/lib/messages/missing_comment.erb +10 -9
  33. data/lib/messages/savepoint.erb +43 -0
  34. data/readme.md +98 -82
  35. data/test/lazylead/cc_test.rb +153 -0
  36. data/test/lazylead/cli/app_test.rb +1 -2
  37. data/test/lazylead/exchange_test.rb +20 -0
  38. data/test/lazylead/model_test.rb +11 -0
  39. data/test/lazylead/postman_test.rb +57 -0
  40. data/test/lazylead/system/jira_test.rb +8 -0
  41. data/test/lazylead/task/assignee_alert_test.rb +47 -0
  42. data/test/lazylead/task/duedate_test.rb +20 -8
  43. data/test/lazylead/task/fix_version_test.rb +2 -4
  44. data/test/lazylead/task/missing_comment_test.rb +2 -4
  45. data/test/lazylead/task/propagate_down_test.rb +86 -0
  46. data/test/lazylead/task/savepoint_test.rb +51 -0
  47. data/test/test.rb +11 -0
  48. data/upgrades/sqlite/001-install-main-lazylead-tables.sql +3 -4
  49. data/upgrades/sqlite/999.testdata.sql +7 -2
  50. metadata +38 -175
  51. data/deploy.sh +0 -16
  52. data/todo.yml +0 -16
@@ -0,0 +1,57 @@
1
+ # frozen_string_literal: true
2
+
3
+ # The MIT License
4
+ #
5
+ # Copyright (c) 2019-2020 Yurii Dubinka
6
+ #
7
+ # Permission is hereby granted, free of charge, to any person obtaining a copy
8
+ # of this software and associated documentation files (the "Software"),
9
+ # to deal in the Software without restriction, including without limitation
10
+ # the rights to use, copy, modify, merge, publish, distribute, sublicense,
11
+ # and/or sell copies of the Software, and to permit persons to whom
12
+ # the Software is furnished to do so, subject to the following conditions:
13
+ #
14
+ # The above copyright notice and this permission notice shall be included
15
+ # in all copies or substantial portions of the Software.
16
+ #
17
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19
+ # FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE
20
+ # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21
+ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
22
+ # ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE
23
+ # OR OTHER DEALINGS IN THE SOFTWARE.
24
+
25
+ require_relative "../test"
26
+ require_relative "../../lib/lazylead/log"
27
+ require_relative "../../lib/lazylead/salt"
28
+ require_relative "../../lib/lazylead/smtp"
29
+ require_relative "../../lib/lazylead/postman"
30
+
31
+ module Lazylead
32
+ class PostmanTest < Lazylead::Test
33
+ test "email with attachment" do
34
+ skip "No postman credentials provided" unless env? "LL_SMTP_HOST",
35
+ "LL_SMTP_PORT",
36
+ "LL_SMTP_USER",
37
+ "LL_SMTP_PASS",
38
+ "LL_SMTP_TO",
39
+ "LL_SMTP_FROM"
40
+ Smtp.new(
41
+ Log::NOTHING,
42
+ NoSalt.new,
43
+ smtp_host: ENV["LL_SMTP_HOST"],
44
+ smtp_port: ENV["LL_SMTP_PORT"],
45
+ smtp_user: ENV["LL_SMTP_USER"],
46
+ smtp_pass: ENV["LL_SMTP_PASS"]
47
+ ).enable
48
+ Postman.new.send(
49
+ "to" => ENV["LL_SMTP_TO"],
50
+ "from" => ENV["LL_SMTP_FROM"],
51
+ "attachments" => ["readme.md"],
52
+ "subject" => "[LL] Attachments",
53
+ "template" => "lib/messages/savepoint.erb"
54
+ )
55
+ end
56
+ end
57
+ end
@@ -106,5 +106,13 @@ module Lazylead
106
106
  .first
107
107
  .history[2]["id"]
108
108
  end
109
+
110
+ test "issue has expected status" do
111
+ assert_equal "Closed",
112
+ NoAuthJira.new("https://jira.spring.io")
113
+ .issues("key='DATAJDBC-480'")
114
+ .first
115
+ .status
116
+ end
109
117
  end
110
118
  end
@@ -0,0 +1,47 @@
1
+ # frozen_string_literal: true
2
+
3
+ # The MIT License
4
+ #
5
+ # Copyright (c) 2019-2020 Yurii Dubinka
6
+ #
7
+ # Permission is hereby granted, free of charge, to any person obtaining a copy
8
+ # of this software and associated documentation files (the "Software"),
9
+ # to deal in the Software without restriction, including without limitation
10
+ # the rights to use, copy, modify, merge, publish, distribute, sublicense,
11
+ # and/or sell copies of the Software, and to permit persons to whom
12
+ # the Software is furnished to do so, subject to the following conditions:
13
+ #
14
+ # The above copyright notice and this permission notice shall be included
15
+ # in all copies or substantial portions of the Software.
16
+ #
17
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19
+ # FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE
20
+ # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21
+ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
22
+ # ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE
23
+ # OR OTHER DEALINGS IN THE SOFTWARE.
24
+
25
+ require_relative "../../test"
26
+ require_relative "../../../lib/lazylead/log"
27
+ require_relative "../../../lib/lazylead/smtp"
28
+ require_relative "../../../lib/lazylead/postman"
29
+ require_relative "../../../lib/lazylead/schedule"
30
+ require_relative "../../../lib/lazylead/model"
31
+ require_relative "../../../lib/lazylead/cli/app"
32
+ require_relative "../../../lib/lazylead/system/jira"
33
+ require_relative "../../../lib/lazylead/task/alert"
34
+
35
+ module Lazylead
36
+ class AssigneeAlertTest < Lazylead::Test
37
+ test "issue #154: undefined method to_hash for nil object" do
38
+ CLI::App.new(Log::NOTHING, NoSchedule.new).run(
39
+ home: ".",
40
+ sqlite: "test/resources/#{no_ext(__FILE__)}.#{__method__}.db",
41
+ vcs4sql: "upgrades/sqlite",
42
+ testdata: true
43
+ )
44
+ assert_equal "lead@fake.com", ORM::Task.find(154).props["cc"]
45
+ end
46
+ end
47
+ end
@@ -80,10 +80,8 @@ module Lazylead
80
80
  "subject" => "[DD] HMCHT!",
81
81
  "template" => "lib/messages/due_date_expired.erb"
82
82
  )
83
- assert_words %w[STS-3599 2013-11-08 Major Miles\ Parker Use JavaFX WebView],
84
- Mail::TestMailer.deliveries
85
- .filter { |m| m.subject.eql? "[DD] HMCHT!" }
86
- .first.body.parts.first.body
83
+ assert_email "[DD] HMCHT!",
84
+ %w[STS-3599 2013-11-08 Major Miles\ Parker Use JavaFX WebView]
87
85
  end
88
86
 
89
87
  test "send notification about bunch of tickets" do
@@ -98,10 +96,8 @@ module Lazylead
98
96
  "to" => "big.boss@example.com",
99
97
  "addressee" => "Boss"
100
98
  )
101
- assert_words %w[Hi Boss STS-3599 2013-11-08 Major Miles\ Parker Use JavaFX WebView],
102
- Mail::TestMailer.deliveries
103
- .filter { |m| m.subject.eql? "ALRT: Frozen" }
104
- .first.body.parts.first.body
99
+ assert_email "ALRT: Frozen",
100
+ %w[Hi Boss STS-3599 2013-11-08 Major Miles\ Parker Use JavaFX WebView]
105
101
  end
106
102
 
107
103
  test "cc got notification" do
@@ -122,5 +118,21 @@ module Lazylead
122
118
  .filter { |m| m.subject.eql? "CC: Watching" }
123
119
  .first.cc
124
120
  end
121
+
122
+ test "reporter got alert about his/her tickets with expired DD" do
123
+ Smtp.new.enable
124
+ Task::ReporterAlert.new.run(
125
+ NoAuthJira.new("https://jira.spring.io"),
126
+ Postman.new,
127
+ "from" => "fake@email.com",
128
+ "sql" => "filter=16743",
129
+ "subject" => "DD Expired!",
130
+ "template" => "lib/messages/due_date_expired.erb"
131
+ )
132
+ assert_equal 2,
133
+ Mail::TestMailer.deliveries
134
+ .filter { |m| m.subject.eql? "DD Expired!" }
135
+ .length
136
+ end
125
137
  end
126
138
  end
@@ -43,10 +43,8 @@ module Lazylead
43
43
  "subject" => "FixVersion: How dare you?",
44
44
  "template" => "lib/messages/illegal_fixversion_change.erb"
45
45
  )
46
- assert_words %w[DATAJDBC-480 01-Apr-2020 Minor Mark\ Paluch tom,mike,bob EntityInstantiators],
47
- Mail::TestMailer.deliveries
48
- .filter { |m| m.subject.eql? "FixVersion: How dare you?" }
49
- .first.body.parts.first.body
46
+ assert_email "FixVersion: How dare you?",
47
+ %w[DATAJDBC-480 01-Apr-2020 Minor Mark\ Paluch tom,mike,bob EntityInstantiators]
50
48
  end
51
49
  end
52
50
  end
@@ -47,10 +47,8 @@ module Lazylead
47
47
  "template" => "lib/messages/missing_comment.erb",
48
48
  "template_details" => "reference to <a href='file://ftp/path'>ftp</a>"
49
49
  )
50
- assert_words %w[DATAJDBC-523 Major Mark\ Paluch https://github.com/spring-projects/spring-data-jdbc/commit/aadbb667ed1d61139d5ac51a06eb3dd1b39316db#diff-510a5041bb8a0575e97fedf105606b83R130],
51
- Mail::TestMailer.deliveries
52
- .filter { |m| m.subject.eql? "Expected ftp link is missing" }
53
- .first.body.parts.first.body
50
+ assert_email "Expected ftp link is missing",
51
+ %w[DATAJDBC-523 Major Mark\ Paluch https://github.com/spring-projects/spring-data-jdbc/commit/aadbb667ed1d61139d5ac51a06eb3dd1b39316db#diff-510a5041bb8a0575e97fedf105606b83R130]
54
52
  end
55
53
  end
56
54
  end
@@ -0,0 +1,86 @@
1
+ # frozen_string_literal: true
2
+
3
+ # The MIT License
4
+ #
5
+ # Copyright (c) 2019-2020 Yurii Dubinka
6
+ #
7
+ # Permission is hereby granted, free of charge, to any person obtaining a copy
8
+ # of this software and associated documentation files (the "Software"),
9
+ # to deal in the Software without restriction, including without limitation
10
+ # the rights to use, copy, modify, merge, publish, distribute, sublicense,
11
+ # and/or sell copies of the Software, and to permit persons to whom
12
+ # the Software is furnished to do so, subject to the following conditions:
13
+ #
14
+ # The above copyright notice and this permission notice shall be included
15
+ # in all copies or substantial portions of the Software.
16
+ #
17
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19
+ # FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE
20
+ # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21
+ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
22
+ # ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE
23
+ # OR OTHER DEALINGS IN THE SOFTWARE.
24
+
25
+ require_relative "../../test"
26
+ require_relative "../../../lib/lazylead/system/jira"
27
+ require_relative "../../../lib/lazylead/task/propagate_down"
28
+
29
+ module Lazylead
30
+ class PropagateDownTest < Lazylead::Test
31
+ test "propagate fields from parent ticket to sub-tasks" do
32
+ parent = OpenStruct.new(
33
+ id: 1,
34
+ key: "PRJ-1",
35
+ fields: {
36
+ subtasks: [{ id: 2 }.stringify_keys],
37
+ customfield_101: "Tomorrow",
38
+ customfield_102: "Yesterday"
39
+ }.stringify_keys
40
+ )
41
+ Child = Struct.new(:id, :key, :fields, :comment) do
42
+ def save(diff)
43
+ fields.merge! diff[:fields]
44
+ end
45
+
46
+ def comments
47
+ self
48
+ end
49
+
50
+ def build
51
+ self
52
+ end
53
+
54
+ def save!(body)
55
+ self[:comment] = body[:body]
56
+ end
57
+ end
58
+ child = Child.new(
59
+ 2, "PRJ-2",
60
+ {
61
+ subtasks: [],
62
+ customfield_101: nil,
63
+ customfield_102: nil
64
+ }.stringify_keys
65
+ )
66
+ Task::PropagateDown.new.run(
67
+ Fake.new([parent, child]),
68
+ [],
69
+ "jql" => "type=Defect and updated>-1h and has subtasks without fields",
70
+ "fields" => "customfield_101,customfield_102"
71
+ )
72
+ assert_entries(
73
+ {
74
+ "customfield_101" => "Tomorrow",
75
+ "customfield_102" => "Yesterday"
76
+ },
77
+ child.fields
78
+ )
79
+ assert_words %w[The following fields were propagated from PRJ-1:
80
+ ||Field||Value||
81
+ |customfield_101|Tomorrow|
82
+ |customfield_102|Yesterday|],
83
+ child.comment
84
+ end
85
+ end
86
+ end
@@ -0,0 +1,51 @@
1
+ # frozen_string_literal: true
2
+
3
+ # The MIT License
4
+ #
5
+ # Copyright (c) 2019-2020 Yurii Dubinka
6
+ #
7
+ # Permission is hereby granted, free of charge, to any person obtaining a copy
8
+ # of this software and associated documentation files (the "Software"),
9
+ # to deal in the Software without restriction, including without limitation
10
+ # the rights to use, copy, modify, merge, publish, distribute, sublicense,
11
+ # and/or sell copies of the Software, and to permit persons to whom
12
+ # the Software is furnished to do so, subject to the following conditions:
13
+ #
14
+ # The above copyright notice and this permission notice shall be included
15
+ # in all copies or substantial portions of the Software.
16
+ #
17
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19
+ # FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE
20
+ # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21
+ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
22
+ # ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE
23
+ # OR OTHER DEALINGS IN THE SOFTWARE.
24
+
25
+ require_relative "../../test"
26
+ require_relative "../../../lib/lazylead/smtp"
27
+ require_relative "../../../lib/lazylead/postman"
28
+ require_relative "../../../lib/lazylead/task/savepoint"
29
+
30
+ module Lazylead
31
+ class SavepointTest < Lazylead::Test
32
+ test "send lazylead config as a mail attachment" do
33
+ Smtp.new.enable
34
+ ARGV[2] = "--sqlite"
35
+ ARGV[3] = "readme.md"
36
+ Task::Savepoint.new.run(
37
+ [],
38
+ Postman.new,
39
+ "from" => "fake@email.com",
40
+ "subject" => "[LL] Configuration backup",
41
+ "template" => "lib/messages/savepoint.erb",
42
+ "to" => "big.boss@example.com"
43
+ )
44
+ assert_equal 'text/markdown; filename="readme.md"',
45
+ Mail::TestMailer.deliveries
46
+ .filter { |m| m.subject.eql? "[LL] Configuration backup" }
47
+ .first.attachments.first.header.fields[0]
48
+ .unparsed_value
49
+ end
50
+ end
51
+ end
@@ -37,6 +37,7 @@ require "minitest/reporters"
37
37
  require "concurrent"
38
38
  require "timeout"
39
39
  require "active_support"
40
+ require "mail"
40
41
 
41
42
  STDOUT.sync = true
42
43
  Minitest::Reporters.use! [Minitest::Reporters::SpecReporter.new]
@@ -99,5 +100,15 @@ module Lazylead
99
100
  !ENV[keys].blank?
100
101
  end
101
102
  end
103
+
104
+ # Assert that email sent using 'mail' gem in test mode
105
+ # has expected subject and words
106
+ def assert_email(subject, words)
107
+ assert_words words,
108
+ Mail::TestMailer.deliveries
109
+ .filter { |m| m.subject.eql? subject }
110
+ .first
111
+ .body.parts.first.body.raw_source
112
+ end
102
113
  end
103
114
  end
@@ -32,19 +32,19 @@
32
32
  PRAGMA foreign_keys = ON;
33
33
  create table if not exists teams
34
34
  (
35
- id integer primary key autoincrement,
35
+ id integer primary key,
36
36
  name text not null,
37
37
  properties text
38
38
  );
39
39
  create table if not exists systems
40
40
  (
41
- id integer primary key autoincrement,
41
+ id integer primary key,
42
42
  properties text not null
43
43
  );
44
44
  -- @todo #/DEV task.cron - add regexp verification of cron expression.
45
45
  create table if not exists tasks
46
46
  (
47
- id integer primary key autoincrement,
47
+ id integer primary key,
48
48
  name text not null,
49
49
  cron text not null,
50
50
  -- @todo #/DEV task.cron - add support for non-cron based schedule like at, once, every.
@@ -54,7 +54,6 @@ create table if not exists tasks
54
54
  system integer not null,
55
55
  action text not null,
56
56
  team_id integer not null,
57
- description text,
58
57
  enabled text,
59
58
  properties text not null,
60
59
  -- @todo #/DEV tasks.enabled - add index for future search. Research is required.
@@ -27,7 +27,8 @@ values (1,
27
27
  (2,
28
28
  '{"type":"Lazylead::Jira", "username":"${jsi_usr}", "password":"${jsi_psw}", "site":"https://jira.spring.io", "context_path":""}');
29
29
  insert into teams(id, name, properties)
30
- values (1, 'BA squad', '{"from":"basquad@fake.com", "usr":"${usr}"}');
30
+ values (1, 'BA squad', '{"from":"basquad@fake.com", "usr":"${usr}"}'),
31
+ (154, 'Team for issue #154', '{"cc":"lead@fake.com"}');
31
32
  insert into tasks(name, cron, enabled, id, system, team_id, action, properties)
32
33
  values ('echo', '* * * * *', 'false', 1, 1, 1, 'Lazylead::Task::Echo', '{}'),
33
34
  ('expired due date', '* * * * *', 'false', 2, 1, 1,
@@ -36,4 +37,8 @@ values ('echo', '* * * * *', 'false', 1, 1, 1, 'Lazylead::Task::Echo', '{}'),
36
37
  ('task with cc', '* * * * *', 'false', 3, 1, 1, 'Lazylead::Task::Echo',
37
38
  '{"cc":"leelakenny@mail.com,maciecrane@mail.com"}'),
38
39
  ('task', '* * * * *', 'false', 4, 2, 1, 'Lazylead::Task::Echo', '{}'),
39
- ('pman', '', '', 5, 2, 1, '', '{"postman":"Lazylead::Postman"}');
40
+ ('pman', '', '', 5, 2, 1, '', '{"postman":"Lazylead::Postman"}'),
41
+ ('issue 154', '* * * * *', 'false', 154, 1, 154, 'Lazylead::Task::AssigneeAlert', '{}'),
42
+ ('task with complex cc', '* * * * *', 'false', 165, 1, 1, 'Lazylead::Task::Echo',
43
+ '{"cc":{"type":"Lazylead::PredefinedCC","opts": {"jvm":"tom@fake.com","jdbc":"mike@fake.com"}}}'),
44
+ ('issue 171', '* * * * *', 'false', 171, 1, 1, 'Lazylead::Task::Echo', '{"envkey":"${key171}"}');
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lazylead
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yurii Dubinka
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-06-06 00:00:00.000000000 Z
11
+ date: 2020-07-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
@@ -38,34 +38,6 @@ dependencies:
38
38
  - - '='
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0.3'
41
- - !ruby/object:Gem::Dependency
42
- name: concurrent-ruby
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - '='
46
- - !ruby/object:Gem::Version
47
- version: 1.1.5
48
- type: :runtime
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - '='
53
- - !ruby/object:Gem::Version
54
- version: 1.1.5
55
- - !ruby/object:Gem::Dependency
56
- name: diffy
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - '='
60
- - !ruby/object:Gem::Version
61
- version: 3.3.0
62
- type: :runtime
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - '='
67
- - !ruby/object:Gem::Version
68
- version: 3.3.0
69
41
  - !ruby/object:Gem::Dependency
70
42
  name: faraday
71
43
  requirement: !ruby/object:Gem::Requirement
@@ -80,20 +52,6 @@ dependencies:
80
52
  - - '='
81
53
  - !ruby/object:Gem::Version
82
54
  version: 1.0.1
83
- - !ruby/object:Gem::Dependency
84
- name: futex
85
- requirement: !ruby/object:Gem::Requirement
86
- requirements:
87
- - - '='
88
- - !ruby/object:Gem::Version
89
- version: 0.8.5
90
- type: :runtime
91
- prerelease: false
92
- version_requirements: !ruby/object:Gem::Requirement
93
- requirements:
94
- - - '='
95
- - !ruby/object:Gem::Version
96
- version: 0.8.5
97
55
  - !ruby/object:Gem::Dependency
98
56
  name: get_process_mem
99
57
  requirement: !ruby/object:Gem::Requirement
@@ -108,20 +66,6 @@ dependencies:
108
66
  - - '='
109
67
  - !ruby/object:Gem::Version
110
68
  version: 0.2.5
111
- - !ruby/object:Gem::Dependency
112
- name: haml
113
- requirement: !ruby/object:Gem::Requirement
114
- requirements:
115
- - - '='
116
- - !ruby/object:Gem::Version
117
- version: 5.0.4
118
- type: :runtime
119
- prerelease: false
120
- version_requirements: !ruby/object:Gem::Requirement
121
- requirements:
122
- - - '='
123
- - !ruby/object:Gem::Version
124
- version: 5.0.4
125
69
  - !ruby/object:Gem::Dependency
126
70
  name: jira-ruby
127
71
  requirement: !ruby/object:Gem::Requirement
@@ -248,34 +192,6 @@ dependencies:
248
192
  - - '='
249
193
  - !ruby/object:Gem::Version
250
194
  version: 3.6.0
251
- - !ruby/object:Gem::Dependency
252
- name: semantic
253
- requirement: !ruby/object:Gem::Requirement
254
- requirements:
255
- - - '='
256
- - !ruby/object:Gem::Version
257
- version: 1.6.1
258
- type: :runtime
259
- prerelease: false
260
- version_requirements: !ruby/object:Gem::Requirement
261
- requirements:
262
- - - '='
263
- - !ruby/object:Gem::Version
264
- version: 1.6.1
265
- - !ruby/object:Gem::Dependency
266
- name: sinatra
267
- requirement: !ruby/object:Gem::Requirement
268
- requirements:
269
- - - '='
270
- - !ruby/object:Gem::Version
271
- version: 2.0.5
272
- type: :runtime
273
- prerelease: false
274
- version_requirements: !ruby/object:Gem::Requirement
275
- requirements:
276
- - - '='
277
- - !ruby/object:Gem::Version
278
- version: 2.0.5
279
195
  - !ruby/object:Gem::Dependency
280
196
  name: slop
281
197
  requirement: !ruby/object:Gem::Requirement
@@ -304,34 +220,6 @@ dependencies:
304
220
  - - '='
305
221
  - !ruby/object:Gem::Version
306
222
  version: 1.4.2
307
- - !ruby/object:Gem::Dependency
308
- name: sys-proctable
309
- requirement: !ruby/object:Gem::Requirement
310
- requirements:
311
- - - '='
312
- - !ruby/object:Gem::Version
313
- version: 1.2.1
314
- type: :runtime
315
- prerelease: false
316
- version_requirements: !ruby/object:Gem::Requirement
317
- requirements:
318
- - - '='
319
- - !ruby/object:Gem::Version
320
- version: 1.2.1
321
- - !ruby/object:Gem::Dependency
322
- name: threads
323
- requirement: !ruby/object:Gem::Requirement
324
- requirements:
325
- - - '='
326
- - !ruby/object:Gem::Version
327
- version: '0.3'
328
- type: :runtime
329
- prerelease: false
330
- version_requirements: !ruby/object:Gem::Requirement
331
- requirements:
332
- - - '='
333
- - !ruby/object:Gem::Version
334
- version: '0.3'
335
223
  - !ruby/object:Gem::Dependency
336
224
  name: tilt
337
225
  requirement: !ruby/object:Gem::Requirement
@@ -346,34 +234,6 @@ dependencies:
346
234
  - - '='
347
235
  - !ruby/object:Gem::Version
348
236
  version: 2.0.10
349
- - !ruby/object:Gem::Dependency
350
- name: total
351
- requirement: !ruby/object:Gem::Requirement
352
- requirements:
353
- - - '='
354
- - !ruby/object:Gem::Version
355
- version: '0.3'
356
- type: :runtime
357
- prerelease: false
358
- version_requirements: !ruby/object:Gem::Requirement
359
- requirements:
360
- - - '='
361
- - !ruby/object:Gem::Version
362
- version: '0.3'
363
- - !ruby/object:Gem::Dependency
364
- name: typhoeus
365
- requirement: !ruby/object:Gem::Requirement
366
- requirements:
367
- - - '='
368
- - !ruby/object:Gem::Version
369
- version: 1.3.1
370
- type: :runtime
371
- prerelease: false
372
- version_requirements: !ruby/object:Gem::Requirement
373
- requirements:
374
- - - '='
375
- - !ruby/object:Gem::Version
376
- version: 1.3.1
377
237
  - !ruby/object:Gem::Dependency
378
238
  name: tzinfo
379
239
  requirement: !ruby/object:Gem::Requirement
@@ -402,20 +262,6 @@ dependencies:
402
262
  - - '='
403
263
  - !ruby/object:Gem::Version
404
264
  version: 1.2019.3
405
- - !ruby/object:Gem::Dependency
406
- name: usagewatch_ext
407
- requirement: !ruby/object:Gem::Requirement
408
- requirements:
409
- - - '='
410
- - !ruby/object:Gem::Version
411
- version: 0.2.1
412
- type: :runtime
413
- prerelease: false
414
- version_requirements: !ruby/object:Gem::Requirement
415
- requirements:
416
- - - '='
417
- - !ruby/object:Gem::Version
418
- version: 0.2.1
419
265
  - !ruby/object:Gem::Dependency
420
266
  name: vcs4sql
421
267
  requirement: !ruby/object:Gem::Requirement
@@ -444,20 +290,6 @@ dependencies:
444
290
  - - '='
445
291
  - !ruby/object:Gem::Version
446
292
  version: 1.1.0
447
- - !ruby/object:Gem::Dependency
448
- name: zache
449
- requirement: !ruby/object:Gem::Requirement
450
- requirements:
451
- - - '='
452
- - !ruby/object:Gem::Version
453
- version: '0.12'
454
- type: :runtime
455
- prerelease: false
456
- version_requirements: !ruby/object:Gem::Requirement
457
- requirements:
458
- - - '='
459
- - !ruby/object:Gem::Version
460
- version: '0.12'
461
293
  - !ruby/object:Gem::Dependency
462
294
  name: codecov
463
295
  requirement: !ruby/object:Gem::Requirement
@@ -562,14 +394,14 @@ dependencies:
562
394
  requirements:
563
395
  - - '='
564
396
  - !ruby/object:Gem::Version
565
- version: 12.3.2
397
+ version: 12.3.3
566
398
  type: :development
567
399
  prerelease: false
568
400
  version_requirements: !ruby/object:Gem::Requirement
569
401
  requirements:
570
402
  - - '='
571
403
  - !ruby/object:Gem::Version
572
- version: 12.3.2
404
+ version: 12.3.3
573
405
  - !ruby/object:Gem::Dependency
574
406
  name: random-port
575
407
  requirement: !ruby/object:Gem::Requirement
@@ -654,6 +486,20 @@ dependencies:
654
486
  - - '='
655
487
  - !ruby/object:Gem::Version
656
488
  version: 1.33.0
489
+ - !ruby/object:Gem::Dependency
490
+ name: sqlint
491
+ requirement: !ruby/object:Gem::Requirement
492
+ requirements:
493
+ - - '='
494
+ - !ruby/object:Gem::Version
495
+ version: 0.1.10
496
+ type: :development
497
+ prerelease: false
498
+ version_requirements: !ruby/object:Gem::Requirement
499
+ requirements:
500
+ - - '='
501
+ - !ruby/object:Gem::Version
502
+ version: 0.1.10
657
503
  - !ruby/object:Gem::Dependency
658
504
  name: xcop
659
505
  requirement: !ruby/object:Gem::Requirement
@@ -694,6 +540,9 @@ files:
694
540
  - ".docker/build.sh"
695
541
  - ".docker/docker-compose.yml"
696
542
  - ".docker/readme.md"
543
+ - ".docker/vcs.dockerfile"
544
+ - ".docs/duedate_expired.md"
545
+ - ".docs/propagate_down.md"
697
546
  - ".gitattributes"
698
547
  - ".github/CODE_OF_CONDUCT.md"
699
548
  - ".github/CONTRIBUTING.md"
@@ -710,6 +559,7 @@ files:
710
559
  - ".rultor.yml"
711
560
  - ".simplecov"
712
561
  - ".travis.yml"
562
+ - CNAME
713
563
  - Gemfile
714
564
  - Guardfile
715
565
  - Rakefile
@@ -717,14 +567,15 @@ files:
717
567
  - bin/.ruby-version
718
568
  - bin/lazylead
719
569
  - build.sh
720
- - deploy.sh
721
570
  - lazylead.gemspec
722
571
  - lib/lazylead.rb
723
572
  - lib/lazylead/allocated.rb
573
+ - lib/lazylead/cc.rb
724
574
  - lib/lazylead/cli/app.rb
725
575
  - lib/lazylead/confluence.rb
726
576
  - lib/lazylead/email.rb
727
577
  - lib/lazylead/exchange.rb
578
+ - lib/lazylead/home.rb
728
579
  - lib/lazylead/log.rb
729
580
  - lib/lazylead/model.rb
730
581
  - lib/lazylead/postman.rb
@@ -740,30 +591,37 @@ files:
740
591
  - lib/lazylead/task/echo.rb
741
592
  - lib/lazylead/task/fix_version.rb
742
593
  - lib/lazylead/task/missing_comment.rb
594
+ - lib/lazylead/task/propagate_down.rb
595
+ - lib/lazylead/task/savepoint.rb
743
596
  - lib/lazylead/version.rb
744
597
  - lib/messages/due_date_expired.erb
745
598
  - lib/messages/illegal_fixversion_change.erb
746
599
  - lib/messages/missing_comment.erb
600
+ - lib/messages/savepoint.erb
747
601
  - license.txt
748
602
  - readme.md
749
603
  - test/lazylead/allocated_test.rb
604
+ - test/lazylead/cc_test.rb
750
605
  - test/lazylead/cli/app_test.rb
751
606
  - test/lazylead/confluence_test.rb
752
607
  - test/lazylead/exchange_test.rb
753
608
  - test/lazylead/model_test.rb
609
+ - test/lazylead/postman_test.rb
754
610
  - test/lazylead/salt_test.rb
755
611
  - test/lazylead/smoke_test.rb
756
612
  - test/lazylead/smtp_test.rb
757
613
  - test/lazylead/system/jira_test.rb
614
+ - test/lazylead/task/assignee_alert_test.rb
758
615
  - test/lazylead/task/confluence_ref_test.rb
759
616
  - test/lazylead/task/duedate_test.rb
760
617
  - test/lazylead/task/echo_test.rb
761
618
  - test/lazylead/task/fix_version_test.rb
762
619
  - test/lazylead/task/missing_comment_test.rb
620
+ - test/lazylead/task/propagate_down_test.rb
621
+ - test/lazylead/task/savepoint_test.rb
763
622
  - test/lazylead/version_test.rb
764
623
  - test/sqlite_test.rb
765
624
  - test/test.rb
766
- - todo.yml
767
625
  - upgrades/sqlite/001-install-main-lazylead-tables.sql
768
626
  - upgrades/sqlite/999.testdata.sql
769
627
  homepage: http://github.com/dgroup/lazylead
@@ -771,7 +629,7 @@ licenses:
771
629
  - MIT
772
630
  metadata: {}
773
631
  post_install_message: |-
774
- Thanks for installing Lazylead v0.0.0!
632
+ Thanks for installing Lazylead v0.3.1!
775
633
  Read our blog posts: https://lazylead.org
776
634
  Stay in touch with the community in Telegram: https://t.me/lazylead
777
635
  Follow us on Twitter: https://twitter.com/lazylead
@@ -797,19 +655,24 @@ specification_version: 2
797
655
  summary: Eliminate the annoying work within bug-trackers.
798
656
  test_files:
799
657
  - test/lazylead/allocated_test.rb
658
+ - test/lazylead/cc_test.rb
800
659
  - test/lazylead/cli/app_test.rb
801
660
  - test/lazylead/confluence_test.rb
802
661
  - test/lazylead/exchange_test.rb
803
662
  - test/lazylead/model_test.rb
663
+ - test/lazylead/postman_test.rb
804
664
  - test/lazylead/salt_test.rb
805
665
  - test/lazylead/smoke_test.rb
806
666
  - test/lazylead/smtp_test.rb
807
667
  - test/lazylead/system/jira_test.rb
668
+ - test/lazylead/task/assignee_alert_test.rb
808
669
  - test/lazylead/task/confluence_ref_test.rb
809
670
  - test/lazylead/task/duedate_test.rb
810
671
  - test/lazylead/task/echo_test.rb
811
672
  - test/lazylead/task/fix_version_test.rb
812
673
  - test/lazylead/task/missing_comment_test.rb
674
+ - test/lazylead/task/propagate_down_test.rb
675
+ - test/lazylead/task/savepoint_test.rb
813
676
  - test/lazylead/version_test.rb
814
677
  - test/sqlite_test.rb
815
678
  - test/test.rb