lazylead 0.8.3 → 0.9.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 81d974a6e2fd3b5417524a420005f1d12714fabab71ead5dd7c9fc6e04582981
4
- data.tar.gz: a181d093106c36c8d57a47a802fd21bd2a7c0b9ce4bbf09622721ed648481c07
3
+ metadata.gz: 6dd70c73ff657c4598583180a4c21a497e6b303f2eaf7e832aadf966957d363f
4
+ data.tar.gz: 4f5c7ef058b9861e9d17ffbc97aec9651f974fe808ab7a3ee4832c0800f1e50e
5
5
  SHA512:
6
- metadata.gz: 82388742ae4f14b8012b034631beb488ecdef5632c189ffa45fc1cc1947992051eef45d4444a2bef7d950b71e7e634f1c1ab8a63be77e355596ec87a3879cfd4
7
- data.tar.gz: c1d297f36c42b0e4676211c52da716d05cca80561706d2e38406076d4b5ccd83834f431919803fd576428dae1d422c95f79473c3643e95d1a54bbf8278ec9fbd
6
+ metadata.gz: 5419ceb30c1122db9afe8051f7587dbc2cfc78896c7c83312ee2160bf8a1556a305df1dee41839048cea736a1904373aa3e8a62cbeb345c293bbb146cbd2d7ed
7
+ data.tar.gz: 4fcdb20ab35edaf4f1530680ab19378ae751b8b5964e63b9061fad447ff210ff2f43548f6be3afa5e298c8800391e6fac5f07f124d21c59c509bce3579dfd329
@@ -20,4 +20,4 @@ services:
20
20
  volumes:
21
21
  - .local/dumps:/lazylead/dumps
22
22
  - .local/logs:/lazylead/logs
23
- entrypoint: bin/lazylead --trace --verbose
23
+ entrypoint: bin/lazylead --trace --verbose --log-file /lazylead/logs/ll{{.%Y-%m-%dT%H:%M:%S}}.log
data/.rubocop.yml CHANGED
@@ -15,6 +15,7 @@ Layout/LineLength:
15
15
  Exclude:
16
16
  - "*.gemspec"
17
17
  - "test/**/*"
18
+ - "bin/lazylead"
18
19
 
19
20
  Metrics/AbcSize:
20
21
  Max: 21
data/Rakefile CHANGED
@@ -45,7 +45,7 @@ def version
45
45
  Gem::Specification.load(Dir["*.gemspec"].first).version
46
46
  end
47
47
 
48
- task default: %i[clean test rubocop sqlint xcop copyright docker]
48
+ task default: %i[clean rubocop test sqlint xcop copyright docker]
49
49
 
50
50
  require "rake/testtask"
51
51
  desc "Run all unit tests"
data/bin/lazylead CHANGED
@@ -70,6 +70,9 @@ Available options:"
70
70
  o.bool "--testdata",
71
71
  "Apply the database VCS migration with test data",
72
72
  default: false
73
+ o.string "--log-file", "The path to the log file"
74
+ o.string "--rolling-age", "The maximum age (in seconds) of a log file before it is rolled. The age can also be given as 'daily', 'weekly', or 'monthly'"
75
+ o.string "--rolling-files", "The number of rolled log files to keep."
73
76
  o.on "--verbose", "Enable extra logging information" do
74
77
  log.verbose
75
78
  end
data/lazylead.gemspec CHANGED
@@ -32,7 +32,7 @@ Gem::Specification.new do |s|
32
32
  s.rubygems_version = "2.2"
33
33
  s.required_ruby_version = ">=2.6.5"
34
34
  s.name = "lazylead"
35
- s.version = "0.8.3"
35
+ s.version = "0.9.0"
36
36
  s.license = "MIT"
37
37
  s.summary = "Eliminate the annoying work within bug-trackers."
38
38
  s.description = "Ticketing systems (Github, Jira, etc.) are strongly
@@ -45,7 +45,7 @@ tasks instead of solving technical problems."
45
45
  s.authors = ["Yurii Dubinka"]
46
46
  s.email = "yurii.dubinka@gmail.com"
47
47
  s.homepage = "http://github.com/dgroup/lazylead"
48
- s.post_install_message = "Thanks for installing Lazylead v0.8.3!
48
+ s.post_install_message = "Thanks for installing Lazylead v0.9.0!
49
49
  Read our blog posts: https://lazylead.org
50
50
  Stay in touch with the community in Telegram: https://t.me/lazylead
51
51
  Follow us on Twitter: https://twitter.com/lazylead
@@ -58,7 +58,7 @@ tasks instead of solving technical problems."
58
58
  s.add_runtime_dependency "activerecord", "6.1.3"
59
59
  s.add_runtime_dependency "backtrace", "0.3"
60
60
  s.add_runtime_dependency "colorize", "0.8.1"
61
- s.add_runtime_dependency "faraday", "1.3.0"
61
+ s.add_runtime_dependency "faraday", "1.4.1"
62
62
  s.add_runtime_dependency "get_process_mem", "0.2.7"
63
63
  s.add_runtime_dependency "inifile", "3.0.0"
64
64
  s.add_runtime_dependency "jira-ruby", "2.1.5"
@@ -90,9 +90,9 @@ tasks instead of solving technical problems."
90
90
  s.add_development_dependency "rake", "13.0.3"
91
91
  s.add_development_dependency "random-port", "0.5.1"
92
92
  s.add_development_dependency "rdoc", "6.3.0"
93
- s.add_development_dependency "rubocop", "1.12.1"
93
+ s.add_development_dependency "rubocop", "1.13.0"
94
94
  s.add_development_dependency "rubocop-minitest", "0.11.1"
95
- s.add_development_dependency "rubocop-performance", "1.10.2"
95
+ s.add_development_dependency "rubocop-performance", "1.11.0"
96
96
  s.add_development_dependency "rubocop-rake", "0.5.1"
97
97
  s.add_development_dependency "rubocop-rspec", "2.2.0"
98
98
  s.add_development_dependency "sqlint", "0.2.0"
data/lib/lazylead/log.rb CHANGED
@@ -74,6 +74,15 @@ module Lazylead
74
74
  )
75
75
  )
76
76
 
77
+ if ARGV.include? "--log-file"
78
+ name = ARGV[ARGV.find_index("--log-file") + 1]
79
+ age = "daily"
80
+ age = ARGV[ARGV.find_index("--rolling-age") + 1] if ARGV.include? "--rolling-age"
81
+ files = 7
82
+ files = ARGV[ARGV.find_index("--rolling-files") + 1] if ARGV.include? "--rolling-files"
83
+ FILE_APPENDER = Logging.appenders.rolling_file("file", filename: name, age: age, keep: files)
84
+ end
85
+
77
86
  # Nothing to log
78
87
  NOTHING = Logging.logger["nothing"]
79
88
  NOTHING.level = :off
@@ -83,12 +92,14 @@ module Lazylead
83
92
  DEBUG = Logging.logger["debug"]
84
93
  DEBUG.level = :debug
85
94
  DEBUG.add_appenders "stdout"
95
+ DEBUG.add_appenders(FILE_APPENDER) if ARGV.include? "--log-file"
86
96
  DEBUG.freeze
87
97
 
88
98
  # Alerts/errors
89
99
  ERRORS = Logging.logger["errors"]
90
100
  ERRORS.level = :error
91
101
  ERRORS.add_appenders "stdout"
102
+ ERRORS.add_appenders(FILE_APPENDER) if ARGV.include? "--log-file"
92
103
  ERRORS.freeze
93
104
  end
94
105
  end
@@ -129,11 +129,7 @@ module Lazylead
129
129
  end
130
130
 
131
131
  def to_s
132
- inspect
133
- end
134
-
135
- def inspect
136
- "#{@opts['site']} (#{@opts['username']})"
132
+ "#{name} (#{id})"
137
133
  end
138
134
  end
139
135
 
@@ -257,13 +253,20 @@ module Lazylead
257
253
 
258
254
  # Update the labels for a particular issue
259
255
  def labels!(lbl)
260
- return if lbl.nil? || lbl.empty?
261
- save!("fields" => { "labels" => lbl.uniq })
256
+ save!("fields" => { "labels" => lbl.uniq }) unless lbl.empty?
262
257
  end
263
258
 
264
259
  def save!(opts)
265
260
  @issue.save(opts)
266
261
  end
262
+
263
+ def sprint(field = "customfield_10480")
264
+ @sprint ||= if fields[field].nil? || fields[field].empty?
265
+ ""
266
+ else
267
+ fields[field].first.split(",").find { |text| text.starts_with? "name=" }[5..]
268
+ end
269
+ end
267
270
  end
268
271
 
269
272
  # The jira issue comments
@@ -139,11 +139,11 @@ module Lazylead
139
139
  # If ticket created by some automatic/admin user account then reporter is the first non-system
140
140
  # user account who modified the ticket.
141
141
  def reporter
142
- return @issue.reporter.id unless @opts.key? "system-users"
143
142
  sys = @opts.slice("system-users", ",")
144
- return @issue.reporter.id if sys.empty? || sys.none? { |susr| @issue.reporter.id.eql? susr }
145
- @issue.history
146
- .find { |h| sys.none? { |susr| susr.eql? h["author"]["key"] } }["author"]["key"]
143
+ return @issue.reporter.id if sys.empty? || sys.none? { |susr| susr.eql? @issue.reporter.id }
144
+ first = @issue.history.find { |h| sys.none? { |susr| susr.eql? h["author"]["key"] } }
145
+ return @issue.reporter.id if first.nil?
146
+ first["author"]["key"]
147
147
  end
148
148
  end
149
149
  end
@@ -67,10 +67,8 @@ module Lazylead
67
67
  # Gives true when last change of "Assignee" field was done
68
68
  # by not authorized person.
69
69
  def illegal?
70
- @allowed.none? do |a|
71
- return false if last.nil?
72
- a == last["author"]["name"]
73
- end
70
+ return false if last.nil? || @issue.assignee.id.eql?(last["author"]["name"])
71
+ @allowed.none? { |a| a.eql? last["author"]["name"] }
74
72
  end
75
73
 
76
74
  # Detect details about last change of "Assignee" to non-null value
@@ -36,7 +36,7 @@ module Lazylead
36
36
  end
37
37
 
38
38
  def run(sys, postman, opts)
39
- assignments = sys.issues(opts["jql"])
39
+ assignments = sys.issues(opts["jql"], opts.jira_defaults)
40
40
  .group_by(&:assignee)
41
41
  .map { |user, tasks| [user.id, Teammate.new(user, tasks)] }
42
42
  .to_h
@@ -71,6 +71,10 @@ module Lazylead
71
71
  def to_s
72
72
  "#{id} has #{total} tasks"
73
73
  end
74
+
75
+ def sprints
76
+ @tasks.group_by(&:sprint).sort
77
+ end
74
78
  end
75
79
 
76
80
  # The teammate without tasks.
@@ -0,0 +1,87 @@
1
+ # frozen_string_literal: true
2
+
3
+ # The MIT License
4
+ #
5
+ # Copyright (c) 2019-2021 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 "date"
26
+ require_relative "../log"
27
+ require_relative "../opts"
28
+ require_relative "../system/jira"
29
+
30
+ module Lazylead
31
+ module Task
32
+ #
33
+ # Email alerts about due date modification by not-authorized persons.
34
+ #
35
+ # Author:: Yurii Dubinka (yurii.dubinka@gmail.com)
36
+ # Copyright:: Copyright (c) 2019-2020 Yurii Dubinka
37
+ # License:: MIT
38
+ class Micromanager
39
+ def initialize(log = Log.new)
40
+ @log = log
41
+ end
42
+
43
+ def run(sys, postman, opts)
44
+ allowed = opts.slice "allowed", ","
45
+ dues = sys.issues(opts["jql"], opts.jira_defaults.merge(expand: "changelog"))
46
+ .map { |i| Due.new(i, allowed) }
47
+ .select(&:illegal?)
48
+ return if dues.empty?
49
+ postman.send opts.merge(dues: dues)
50
+ end
51
+ end
52
+
53
+ # Instance of "Due" history item for the particular ticket.
54
+ class Due
55
+ attr_reader :issue, :when
56
+
57
+ def initialize(issue, allowed)
58
+ @issue = issue
59
+ @allowed = allowed
60
+ end
61
+
62
+ # Gives true when last change of "Due Date" field was done
63
+ # by not authorized person.
64
+ def illegal?
65
+ return false if @issue.assignee.id.eql?(last.id)
66
+ @allowed.none? { |a| a.eql? last.id }
67
+ end
68
+
69
+ # Detect details about last change of "Due Date" to non-null value
70
+ def last
71
+ @last ||= begin
72
+ dd = @issue.history
73
+ .reverse
74
+ .find { |h| h["items"].any? { |i| i["field"] == "duedate" } }
75
+ if dd.nil? && !@issue.duedate.nil?
76
+ @when = @issue["created"]
77
+ dd = @issue.reporter
78
+ else
79
+ @when = dd["created"].to_date
80
+ dd = Lazylead::User.new(dd["author"])
81
+ end
82
+ dd
83
+ end
84
+ end
85
+ end
86
+ end
87
+ end
@@ -50,6 +50,7 @@ module Lazylead
50
50
  "-r#{opts['since_rev']}:HEAD #{opts['svn_url']}"
51
51
  ]
52
52
  stdout = `#{cmd.join(" ")}`
53
+ stdout.scrub!
53
54
  send_email postman, opts.merge(stdout: stdout) unless stdout.blank?
54
55
  end
55
56
 
@@ -60,8 +61,7 @@ module Lazylead
60
61
  Dir.mktmpdir do |dir|
61
62
  name = "svn-log-#{Date.today.strftime('%d-%b-%Y')}.html"
62
63
  begin
63
- to_f(File.join(dir, name), opts)
64
- postman.send opts.merge(attachments: [File.join(dir, name)])
64
+ postman.send opts.merge(attachments: [to_f(File.join(dir, name), opts)])
65
65
  ensure
66
66
  FileUtils.rm_rf("#{dir}/*")
67
67
  end
@@ -91,7 +91,7 @@ module Lazylead
91
91
  end
92
92
  f.write body
93
93
  f.close
94
- f
94
+ f.path
95
95
  end
96
96
  end
97
97
  end
@@ -23,5 +23,5 @@
23
23
  # OR OTHER DEALINGS IN THE SOFTWARE.
24
24
 
25
25
  module Lazylead
26
- VERSION = "0.8.3"
26
+ VERSION = "0.9.0"
27
27
  end
@@ -0,0 +1,120 @@
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
+ }
9
+
10
+ table tr {
11
+ border-bottom-width: 2.16px
12
+ }
13
+
14
+ table tr th {
15
+ border-bottom-width: 2.16px
16
+ }
17
+
18
+ table tr td, table tr th {
19
+ overflow: hidden;
20
+ padding: 5.4px 3.6px
21
+ }
22
+
23
+ a {
24
+ color: #275a90;
25
+ text-decoration: none
26
+ }
27
+
28
+ a:hover {
29
+ text-decoration: underline
30
+ }
31
+
32
+ pre, code, kbd, samp, var, output {
33
+ font-family: Menlo, Monaco, Consolas, "Courier New", monospace;
34
+ font-size: 13px
35
+ }
36
+
37
+ pre code {
38
+ background: none;
39
+ border: 0;
40
+ line-height: 29.7px;
41
+ padding: 0
42
+ }
43
+
44
+ code, kbd {
45
+ background: #daf1e0;
46
+ border-radius: 3.6px;
47
+ color: #2a6f3b;
48
+ display: inline-block;
49
+ line-height: 18px;
50
+ padding: 3.6px 6.3px 2.7px
51
+ }
52
+
53
+ * {
54
+ border: 0;
55
+ border-collapse: separate;
56
+ border-spacing: 0;
57
+ box-sizing: border-box;
58
+ margin: 0;
59
+ max-width: 100%;
60
+ padding: 0;
61
+ vertical-align: baseline;
62
+ font-family: system-ui, "Helvetica Neue", Helvetica, Arial, sans-serif;
63
+ font-size: 13px;
64
+ font-stretch: normal;
65
+ font-style: normal;
66
+ font-weight: 400;
67
+ line-height: 29.7px
68
+ }
69
+
70
+ html, body {
71
+ width: 100%
72
+ }
73
+
74
+ html {
75
+ height: 100%
76
+ }
77
+
78
+ body {
79
+ background: #fff;
80
+ color: #1a1919;
81
+ padding: 36px
82
+ }
83
+ </style>
84
+ <title>Not authorized "Assignee" change</title>
85
+ </head>
86
+ <body>
87
+ <p>Hi,</p>
88
+
89
+ <p>The <span style='font-weight:bold'>'Duedate'</span> for the following
90
+ ticket(s) changed by not authorized person(s):</p>
91
+ <table summary="ticket(s) where duedate changed">
92
+ <tr>
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="to">To</th>
98
+ <th id="summary">Summary</th>
99
+ <th id="reporter">Reporter</th>
100
+ </tr>
101
+ <% dues.each do |d| %>
102
+ <tr>
103
+ <td><a href='<%= d.issue.url %>'><%= d.issue.key %></a></td>
104
+ <td><%= d.issue.priority %></td>
105
+ <td><%= d.when %></td>
106
+ <td><span style='color: red'><%= d.last.name %></span> (<%= d.last.id %>)</td>
107
+ <td><span style='color: red'><%= d.issue.duedate %></span></td>
108
+ <td><%= d.issue.summary %></td>
109
+ <td><%= d.issue.reporter.name %></td>
110
+ </tr>
111
+ <% end %>
112
+ </table>
113
+
114
+ <p>Authorized person(s) are: <code><%= allowed %></code>.</p>
115
+
116
+ <p>Posted by
117
+ <a href="https://github.com/dgroup/lazylead">lazylead v<%= version %></a>.
118
+ </p>
119
+ </body>
120
+ </html>
@@ -93,7 +93,12 @@
93
93
  <% if assignment.free? %>
94
94
  <span style="color: red">0</span>
95
95
  <% else %>
96
- <a href="https://jira.spring.io/issues/?jql=<%= CGI.escape("#{jql} and assignee=#{teammate}") %>"><%= assignment.size %></a>
96
+ <% assignment.sprints.each do |s| %>
97
+ <a href="<%= search_link %><%= CGI.escape("#{jql} and assignee=#{teammate}") %>">
98
+ <%= s.first.blank? ? "No sprint" : s.first %>: <%= s.last.size %>
99
+ </a>
100
+ <br/>
101
+ <% end %>
97
102
  <% end %>
98
103
  </div>
99
104
  </td>
@@ -40,10 +40,11 @@ module Lazylead
40
40
  Opts.new(
41
41
  "to" => "lead@company.com",
42
42
  "from" => "ll@company.com",
43
- "jql" => "key=STS-3599",
43
+ "jql" => "key in (STS-3599, XD-3739, XD-3744)",
44
44
  "team" => "mclaren:Tom McLaren,milesparker:Mi Pa",
45
45
  "user_link" => "https://user.com?id=",
46
- "fields" => "description,assignee,component,priority,summary,duedate",
46
+ "search_link" => "https://jira.spring.io/issues/?jql=",
47
+ "fields" => "assignee,duedate,customfield_10480",
47
48
  "subject" => "[LL] Team loading",
48
49
  "template" => "lib/messages/loading.erb"
49
50
  )
@@ -0,0 +1,54 @@
1
+ # frozen_string_literal: true
2
+
3
+ # The MIT License
4
+ #
5
+ # Copyright (c) 2019-2021 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 "mail"
26
+
27
+ require_relative "../../test"
28
+ require_relative "../../../lib/lazylead/smtp"
29
+ require_relative "../../../lib/lazylead/opts"
30
+ require_relative "../../../lib/lazylead/postman"
31
+ require_relative "../../../lib/lazylead/task/micromanager"
32
+
33
+ module Lazylead
34
+ class MicromanagerTest < Lazylead::Test
35
+ test "alert in case duedate changed by not authorized person" do
36
+ Lazylead::Smtp.new.enable
37
+ Task::Micromanager.new.run(
38
+ NoAuthJira.new("https://jira.spring.io"),
39
+ Postman.new,
40
+ Opts.new(
41
+ "to" => "lead@company.com",
42
+ "from" => "ll@company.com",
43
+ "jql" => "key in ('STS-3599','SPR-6541') and duedate is not empty",
44
+ "fields" => "assignee,duedate,priority,created,summary,reporter",
45
+ "allowed" => "tom,mike,bob",
46
+ "subject" => "DD: How dare you?",
47
+ "template" => "lib/messages/illegal_duedate_change.erb"
48
+ )
49
+ )
50
+ assert_email "DD: How dare you?",
51
+ %w[SPR-6541 Major (kdonald) 2009-12-10 Spring's\ Maven\ Central tom,mike,bob]
52
+ end
53
+ end
54
+ end
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.8.3
4
+ version: 0.9.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yurii Dubinka
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-04-10 00:00:00.000000000 Z
11
+ date: 2021-04-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
@@ -58,14 +58,14 @@ dependencies:
58
58
  requirements:
59
59
  - - '='
60
60
  - !ruby/object:Gem::Version
61
- version: 1.3.0
61
+ version: 1.4.1
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - '='
67
67
  - !ruby/object:Gem::Version
68
- version: 1.3.0
68
+ version: 1.4.1
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: get_process_mem
71
71
  requirement: !ruby/object:Gem::Requirement
@@ -506,14 +506,14 @@ dependencies:
506
506
  requirements:
507
507
  - - '='
508
508
  - !ruby/object:Gem::Version
509
- version: 1.12.1
509
+ version: 1.13.0
510
510
  type: :development
511
511
  prerelease: false
512
512
  version_requirements: !ruby/object:Gem::Requirement
513
513
  requirements:
514
514
  - - '='
515
515
  - !ruby/object:Gem::Version
516
- version: 1.12.1
516
+ version: 1.13.0
517
517
  - !ruby/object:Gem::Dependency
518
518
  name: rubocop-minitest
519
519
  requirement: !ruby/object:Gem::Requirement
@@ -534,14 +534,14 @@ dependencies:
534
534
  requirements:
535
535
  - - '='
536
536
  - !ruby/object:Gem::Version
537
- version: 1.10.2
537
+ version: 1.11.0
538
538
  type: :development
539
539
  prerelease: false
540
540
  version_requirements: !ruby/object:Gem::Requirement
541
541
  requirements:
542
542
  - - '='
543
543
  - !ruby/object:Gem::Version
544
- version: 1.10.2
544
+ version: 1.11.0
545
545
  - !ruby/object:Gem::Dependency
546
546
  name: rubocop-rake
547
547
  requirement: !ruby/object:Gem::Requirement
@@ -709,6 +709,7 @@ files:
709
709
  - lib/lazylead/task/echo.rb
710
710
  - lib/lazylead/task/fix_version.rb
711
711
  - lib/lazylead/task/loading.rb
712
+ - lib/lazylead/task/micromanager.rb
712
713
  - lib/lazylead/task/missing_comment.rb
713
714
  - lib/lazylead/task/propagate_down.rb
714
715
  - lib/lazylead/task/savepoint.rb
@@ -721,6 +722,7 @@ files:
721
722
  - lib/messages/created_recently.erb
722
723
  - lib/messages/due_date_expired.erb
723
724
  - lib/messages/illegal_assignee_change.erb
725
+ - lib/messages/illegal_duedate_change.erb
724
726
  - lib/messages/illegal_fixversion_change.erb
725
727
  - lib/messages/loading.erb
726
728
  - lib/messages/missing_comment.erb
@@ -767,6 +769,7 @@ files:
767
769
  - test/lazylead/task/echo_test.rb
768
770
  - test/lazylead/task/fix_version_test.rb
769
771
  - test/lazylead/task/loading_test.rb
772
+ - test/lazylead/task/micromanager_test.rb
770
773
  - test/lazylead/task/missing_comment_test.rb
771
774
  - test/lazylead/task/propagate_down_test.rb
772
775
  - test/lazylead/task/savepoint_test.rb
@@ -783,7 +786,7 @@ licenses:
783
786
  - MIT
784
787
  metadata: {}
785
788
  post_install_message: |-
786
- Thanks for installing Lazylead v0.8.3!
789
+ Thanks for installing Lazylead v0.9.0!
787
790
  Read our blog posts: https://lazylead.org
788
791
  Stay in touch with the community in Telegram: https://t.me/lazylead
789
792
  Follow us on Twitter: https://twitter.com/lazylead
@@ -843,6 +846,7 @@ test_files:
843
846
  - test/lazylead/task/echo_test.rb
844
847
  - test/lazylead/task/fix_version_test.rb
845
848
  - test/lazylead/task/loading_test.rb
849
+ - test/lazylead/task/micromanager_test.rb
846
850
  - test/lazylead/task/missing_comment_test.rb
847
851
  - test/lazylead/task/propagate_down_test.rb
848
852
  - test/lazylead/task/savepoint_test.rb