todo_or_die 0.0.4 → 0.1.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: 720068aa6be87b431d7bb5edd809ae84999347b553f8182de6f580bb5bd4b033
4
- data.tar.gz: 58f7bff93dcee49e91c0ad7c51a2e0ffd633d77e6057eec380ac80e508f9308b
3
+ metadata.gz: '0491e8c47bb1f59f0b38966bb65a8dbd6d31a18aa9044ca9445cce8962c55e62'
4
+ data.tar.gz: c82c1ce0e56afbfb197ff4d7a66d7187003ef085b58d7096c510696faca4dbc9
5
5
  SHA512:
6
- metadata.gz: 83ad0bedfafe54e42295a2b1f6f414bcd11302062261b87fb4d544037fd36e008b8c5dee3374a66fa8bd3dd03ba2c53978d943d2fd4168bb5eebc3726556d878
7
- data.tar.gz: 8608b6a2259e145936a642e8f4d8fb585fa0cba8bcb07ec7a2fe4e9182455cd17c35529bb40070459b321d9d5f6cf7757a68e2ceac89c0dd67220870dc36ca7b
6
+ metadata.gz: 18751ea8ecfeb4e50ddbdc42229b721957a86bd5d6535655264dec37a46f99f68596fd98be14eb2d585395956cf0b1c01712610750664fae8c8bfa910ac4e0b2
7
+ data.tar.gz: 6fdf682b441ce3edf280f1322cc4a88bf6af9c84057334eef449e894fcd41ff20a3a2164ccd80a13bbe0214787101c0ff38e24cff1f73ae2353853eaf1563c4c
data/.circleci/config.yml CHANGED
@@ -6,7 +6,9 @@ version: 2
6
6
  jobs:
7
7
  build:
8
8
  docker:
9
- - image: circleci/ruby:2.4.1-node-browsers
9
+ - image: circleci/ruby:2.7-node-browsers
10
+ environment:
11
+ RUBYOPT: "-W:no-deprecated -W:no-experimental"
10
12
 
11
13
  working_directory: ~/repo
12
14
 
@@ -16,6 +18,7 @@ jobs:
16
18
  - run:
17
19
  name: install dependencies
18
20
  command: |
21
+ bundle update --bundler
19
22
  bundle install --retry=3
20
23
 
21
24
  - run:
data/CHANGELOG.md CHANGED
@@ -4,21 +4,23 @@ All notable changes to this project will be documented in this file.
4
4
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
5
5
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
6
6
 
7
- ## [Unreleased]
7
+ ## [0.1.0] - 2022-06-27
8
+
9
+ - Add `warn_by` option [#14](https://github.com/searls/todo_or_die/pull/14)
8
10
 
9
11
  ## [0.0.3] - 2019-11-26
10
12
  ### Added
11
- - Boolean-returning conditionals or callables (Proc, Block, Lambda) can be passed to the
13
+ - Boolean-returning conditionals or callables (Proc, Block, Lambda) can be passed to the
12
14
  new `if` argument. `if` can be used instead of or in conjunction with the `by` argument
13
15
  to die on a specific date OR when a specific condition becomes true.
14
16
 
15
17
  ### Changed
16
- - Date strings can now be parsed parsed internally without calling `Time` or `Date`
18
+ - Date strings can now be parsed parsed internally without calling `Time` or `Date`
17
19
  classes explicitely.
18
20
 
19
21
  ## [0.0.2] - 2019-02-15
20
22
  ### Changed
21
- - Exclude this gem's backtrace location from exceptions thrown to make it easier to find
23
+ - Exclude this gem's backtrace location from exceptions thrown to make it easier to find
22
24
  TODOs.
23
25
 
24
26
  ## [0.0.1] - 2019-01-01
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- todo_or_die (0.0.4)
4
+ todo_or_die (0.1.0)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
@@ -1,3 +1,3 @@
1
1
  module TodoOrDie
2
- VERSION = "0.0.4"
2
+ VERSION = "0.1.0"
3
3
  end
data/lib/todo_or_die.rb CHANGED
@@ -19,6 +19,20 @@ module TodoOrDie
19
19
  else
20
20
  raise TodoOrDie::OverdueTodo, error_message, TodoOrDie.__clean_backtrace(caller)
21
21
  end
22
+ },
23
+
24
+ warn: lambda { |message, due_at, warn_at, condition|
25
+ error_message = [
26
+ "TODO: \"#{message}\"",
27
+ (" is due on #{due_at.strftime("%Y-%m-%d")}" if due_at),
28
+ (" and" if warn_at && condition),
29
+ (" has met the conditions to be acted upon" if condition),
30
+ ". Don't forget!"
31
+ ].compact.join("")
32
+
33
+ puts error_message
34
+
35
+ Rails.logger.warn(error_message) if defined?(Rails)
22
36
  }
23
37
  }.freeze
24
38
 
@@ -38,14 +52,21 @@ module TodoOrDie
38
52
  end
39
53
 
40
54
  # The main event
41
- def TodoOrDie(message, by: by_omitted = true, if: if_omitted = true) # rubocop:disable Naming/MethodName
55
+ def TodoOrDie(message, by: by_omitted = true, if: if_omitted = true, warn_by: warn_by_omitted = true) # rubocop:disable Naming/MethodName
42
56
  due_at = Time.parse(by.to_s) unless by_omitted
43
- is_due = by_omitted || Time.now > due_at
57
+ warn_at = Time.parse(warn_by.to_s) unless warn_by_omitted
44
58
  condition = binding.local_variable_get(:if) unless if_omitted
45
- condition_met = if_omitted || (condition.respond_to?(:call) ? condition.call : condition)
46
59
 
47
- if is_due && condition_met
60
+ should_warn = !warn_by_omitted && Time.now > warn_at
61
+ is_due = by_omitted || Time.now > due_at
62
+ die_condition_met = if_omitted || (condition.respond_to?(:call) ? condition.call : condition)
63
+ should_die = is_due && die_condition_met
64
+
65
+ if should_die
48
66
  die = TodoOrDie.config[:die]
49
67
  die.call(*[message, due_at, condition].take(die.arity.abs))
68
+ elsif should_warn
69
+ warn = TodoOrDie.config[:warn]
70
+ warn.call(*[message, due_at, warn_at, condition].take(warn.arity.abs))
50
71
  end
51
72
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: todo_or_die
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Justin Searls
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-05-16 00:00:00.000000000 Z
11
+ date: 2022-06-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -80,7 +80,7 @@ dependencies:
80
80
  - - ">="
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
- description:
83
+ description:
84
84
  email:
85
85
  - searls@gmail.com
86
86
  executables: []
@@ -104,7 +104,7 @@ files:
104
104
  homepage: https://github.com/searls/todo_or_die
105
105
  licenses: []
106
106
  metadata: {}
107
- post_install_message:
107
+ post_install_message:
108
108
  rdoc_options: []
109
109
  require_paths:
110
110
  - lib
@@ -119,8 +119,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
119
119
  - !ruby/object:Gem::Version
120
120
  version: '0'
121
121
  requirements: []
122
- rubygems_version: 3.1.2
123
- signing_key:
122
+ rubygems_version: 3.3.7
123
+ signing_key:
124
124
  specification_version: 4
125
125
  summary: Write TO​DOs in code that ensure you actually do them
126
126
  test_files: []