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.
- checksums.yaml +4 -4
- data/.circleci/config.yml +19 -7
- data/.circleci/release_image.sh +10 -7
- data/.docker/Dockerfile +10 -9
- data/.docker/docker-compose.yml +3 -3
- data/.docker/readme.md +24 -21
- data/.docker/vcs.dockerfile +10 -0
- data/.docs/duedate_expired.md +92 -0
- data/.docs/propagate_down.md +89 -0
- data/.rubocop.yml +1 -1
- data/.rultor.yml +13 -14
- data/.simplecov +0 -6
- data/CNAME +1 -0
- data/Rakefile +38 -1
- data/bin/lazylead +7 -2
- data/lazylead.gemspec +5 -17
- data/lib/lazylead/cc.rb +180 -0
- data/lib/lazylead/cli/app.rb +4 -3
- data/lib/lazylead/exchange.rb +14 -1
- data/lib/lazylead/home.rb +38 -0
- data/lib/lazylead/model.rb +29 -7
- data/lib/lazylead/postman.rb +14 -14
- data/lib/lazylead/schedule.rb +4 -2
- data/lib/lazylead/system/fake.rb +1 -1
- data/lib/lazylead/system/jira.rb +46 -5
- data/lib/lazylead/task/fix_version.rb +1 -1
- data/lib/lazylead/task/propagate_down.rb +118 -0
- data/lib/lazylead/task/savepoint.rb +58 -0
- data/lib/lazylead/version.rb +1 -1
- data/lib/messages/due_date_expired.erb +8 -7
- data/lib/messages/illegal_fixversion_change.erb +9 -8
- data/lib/messages/missing_comment.erb +10 -9
- data/lib/messages/savepoint.erb +43 -0
- data/readme.md +98 -82
- data/test/lazylead/cc_test.rb +153 -0
- data/test/lazylead/cli/app_test.rb +1 -2
- data/test/lazylead/exchange_test.rb +20 -0
- data/test/lazylead/model_test.rb +11 -0
- data/test/lazylead/postman_test.rb +57 -0
- data/test/lazylead/system/jira_test.rb +8 -0
- data/test/lazylead/task/assignee_alert_test.rb +47 -0
- data/test/lazylead/task/duedate_test.rb +20 -8
- data/test/lazylead/task/fix_version_test.rb +2 -4
- data/test/lazylead/task/missing_comment_test.rb +2 -4
- data/test/lazylead/task/propagate_down_test.rb +86 -0
- data/test/lazylead/task/savepoint_test.rb +51 -0
- data/test/test.rb +11 -0
- data/upgrades/sqlite/001-install-main-lazylead-tables.sql +3 -4
- data/upgrades/sqlite/999.testdata.sql +7 -2
- metadata +38 -175
- data/deploy.sh +0 -16
- 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
|
-
|
84
|
-
|
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
|
-
|
102
|
-
|
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
|
-
|
47
|
-
|
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
|
-
|
51
|
-
|
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
|
data/test/test.rb
CHANGED
@@ -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
|
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
|
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
|
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
|
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-
|
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.
|
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.
|
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.
|
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
|