twmail 0.0.6 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 9f8387ff67c2e8b5ee9b4061dfa36dddddd26e9b
4
- data.tar.gz: 886975f525e024cba8d9d8ec86a55eec4880c70b
2
+ SHA256:
3
+ metadata.gz: 748e85ed390994cdeddf2c241a5b6335a7e60496d158be94b73964163747cd88
4
+ data.tar.gz: f07bbac0bd59b9c83f1236573f65532276945c58b8ceb17334fb8087c0cb9b21
5
5
  SHA512:
6
- metadata.gz: d7236e1a61c4addf575f3625a3195a16fefd2fdbe24baa66d341613fc00d46e52c8a119aea257e1a9a37bd8800174f258debf72eb1c48da14e828298bbdcb849
7
- data.tar.gz: 507d2712dc34bdbe418f61b8eeb4d0d69bb28feb75ed05dfe2453add66710b5fac60f652d9d5ffb94984d18fa25f7553beb24ecf353b6ef6463c3d9e1703eb56
6
+ metadata.gz: d44ef50ea1e6f57ff3d6fb46b78a110e1ef988b04b964cbaa574fec0a129e429b4948e6522163c9991674d0c5b4b9c25e01a85328371dd55072727e9ebb653e8
7
+ data.tar.gz: 12c9faef4553825b5b5b796041e9345ec437c91a9145e2736f069731b2c2865d4ae3fde6c681b13b6438fce05378051d45ae42f4479bb2a0ecbd9722d34380d3
@@ -0,0 +1,43 @@
1
+ AllCops:
2
+ TargetRubyVersion: 2.7
3
+ Include:
4
+ - '**/Gemfile'
5
+ - '**/Rakefile'
6
+ - '**/*.rake'
7
+ Exclude:
8
+ - vendor/**/*
9
+ - db/migrations/**/*
10
+
11
+ DisplayCopNames:
12
+ Enabled: true
13
+
14
+ DisplayStyleGuide:
15
+ Enabled: true
16
+
17
+ Metrics/BlockLength:
18
+ Exclude:
19
+ - spec/**/*
20
+
21
+ Layout/LineLength:
22
+ Max: 180
23
+
24
+ Layout/SpaceAroundMethodCallOperator:
25
+ Enabled: true
26
+
27
+ Lint/RaiseException:
28
+ Enabled: true
29
+
30
+ Lint/StructNewOverride:
31
+ Enabled: true
32
+
33
+ Style/ExponentialNotation:
34
+ Enabled: true
35
+
36
+ Style/HashEachMethods:
37
+ Enabled: true
38
+
39
+ Style/HashTransformKeys:
40
+ Enabled: true
41
+
42
+ Style/HashTransformValues:
43
+ Enabled: true
@@ -1 +1 @@
1
- 2.4.1
1
+ 2.7.1
@@ -0,0 +1,13 @@
1
+ dist: xenial
2
+ language: ruby
3
+ rvm:
4
+ - 2.7.1
5
+ - 2.6.6
6
+ - 2.5.8
7
+
8
+ before_script:
9
+ - mkdir ~/.task
10
+ - echo data.location=~/.task > ~/.taskrc
11
+
12
+ before_install:
13
+ - sudo apt-get install task
data/Gemfile CHANGED
@@ -1,8 +1,10 @@
1
+ # frozen_string_literal: true
2
+
1
3
  source 'https://rubygems.org'
2
4
 
3
5
  # use local twtest while developing
4
- group :development do
5
- gem "twtest", :path => "../twtest"
6
- end
6
+ # group :development do
7
+ # gem 'twtest', path: '../twtest'
8
+ # end
7
9
 
8
10
  gemspec
data/Guardfile CHANGED
@@ -1,11 +1,13 @@
1
+ # frozen_string_literal: true
2
+
1
3
  guard 'bundler' do
2
4
  watch('Gemfile')
3
5
  watch(/^.+\.gemspec/)
4
6
  end
5
7
 
6
- guard :test, :test_paths => ['test/unit'] do
7
- watch(%r{^lib/(.+)\.rb$}){|m| "test/#{m[1]}_test.rb"}
8
+ guard :test, test_paths: ['test/unit'] do
9
+ watch(%r{^lib/(.+)\.rb$}) { |m| "test/#{m[1]}_test.rb" }
8
10
  watch(%r{^test/unit/test_(.+)\.rb$})
9
- watch('test/test_helper.rb'){"test"}
10
- watch('test/helpers/**/*'){"test"}
11
+ watch('test/test_helper.rb') { 'test' }
12
+ watch('test/helpers/**/*') { 'test' }
11
13
  end
data/README.md CHANGED
@@ -1,5 +1,7 @@
1
1
  # twmail
2
2
 
3
+ [![Build Status](https://travis-ci.org/nerab/TaskWarriorMail.svg?branch=master)](https://travis-ci.org/nerab/TaskWarriorMail)
4
+
3
5
  `twmail` allows you to mail new tasks to your TaskWarrior inbox.
4
6
 
5
7
  ## Installation
data/Rakefile CHANGED
@@ -1,10 +1,13 @@
1
- #!/usr/bin/env rake
2
- require "bundler/gem_tasks"
1
+ # frozen_string_literal: true
3
2
 
3
+ require 'bundler/gem_tasks'
4
4
  require 'rake/testtask'
5
+ require 'rubocop/rake_task'
6
+ RuboCop::RakeTask.new
7
+
5
8
  Rake::TestTask.new(:test) do |test|
6
9
  test.libs << 'lib' << 'test' << 'test/helpers'
7
10
  test.test_files = FileList['test/**/test_*.rb']
8
11
  end
9
12
 
10
- task :default => :test
13
+ task default: %i[rubocop test]
@@ -1,22 +1,24 @@
1
1
  #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
2
4
  require 'securerandom'
3
5
  require 'optparse'
4
6
  require 'twmail'
5
7
 
6
8
  OptionParser.new do |opts|
7
- banner = <<-HERE
8
- #{opts.program_name} creates a new TaskWarrior task and prints its UUID to STDOUT using the following approach:
9
+ banner = <<~HERE
10
+ #{opts.program_name} creates a new TaskWarrior task and prints its UUID to STDOUT using the following approach:
9
11
 
10
- 1. Make up a temporary tag name that is very unlikely to exist yet.
12
+ 1. Make up a temporary tag name that is very unlikely to exist yet.
11
13
 
12
- 2. Create the new task tagged with our temporary tag
14
+ 2. Create the new task tagged with our temporary tag
13
15
 
14
- 3. Use the name of our temporary tag to find the actual UUID generated by TaskWarrior
16
+ 3. Use the name of our temporary tag to find the actual UUID generated by TaskWarrior
15
17
 
16
- 4. Remove the temporary tag from the new task
18
+ 4. Remove the temporary tag from the new task
17
19
 
18
- 5. Print the UUID to STDOUT
19
- HERE
20
+ 5. Print the UUID to STDOUT
21
+ HERE
20
22
  opts.banner = banner
21
23
  opts.version = TaskWarriorMail::VERSION
22
24
  end.parse!
@@ -26,13 +28,13 @@ end.parse!
26
28
  tag = 'tag_' + SecureRandom.hex.tr('-', '')
27
29
 
28
30
  # 2. Create the new task tagged with our temporary tag
29
- %x|task rc.verbose=nothing add +#{tag} #{ARGV.join(' ')}|
31
+ `task rc.verbose=nothing add +#{tag} #{ARGV.join(' ')}`
30
32
 
31
33
  # 3. Remember the UUID generated by TaskWarrior
32
- task_uuid = %x|task rc.verbose=nothing +#{tag} _uuid|.chomp
34
+ task_uuid = `task rc.verbose=nothing +#{tag} _uuid`.chomp
33
35
 
34
36
  # 4. Remove the temporary tag from the new task
35
- %x|task rc.verbose=nothing #{task_uuid} modify -#{tag.to_s}|
37
+ `task rc.verbose=nothing #{task_uuid} modify -#{tag}`
36
38
 
37
39
  # 5. Print the UUID to STDOUT
38
40
  puts task_uuid
data/bin/twmail CHANGED
@@ -1,29 +1,30 @@
1
1
  #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
2
3
 
3
4
  require 'mail'
4
5
  require 'optparse'
5
6
  require 'twmail'
6
7
 
7
8
  OptionParser.new do |opts|
8
- banner = <<-HERE
9
- #{opts.program_name} is a simple Mail Delivery Agent (MDA) that parses received mail and creates a new TaskWarrior task from the subject of the mail.
9
+ banner = <<~HERE
10
+ #{opts.program_name} is a simple Mail Delivery Agent (MDA) that parses received mail and creates a new TaskWarrior task from the subject of the mail.
10
11
 
11
- USAGE
12
+ USAGE
12
13
 
13
- Configure fetchmail to use #{opts.program_name} as MDA:
14
+ Configure fetchmail to use #{opts.program_name} as MDA:
14
15
 
15
- # ~/.fetchmailrc
16
- mda #{opts.program_name}
17
- HERE
18
- opts.banner = banner#.wrap
16
+ # ~/.fetchmailrc
17
+ mda #{opts.program_name}
18
+ HERE
19
+ opts.banner = banner # .wrap
19
20
  opts.version = TaskWarriorMail::VERSION
20
21
  end.parse!
21
22
 
22
23
  mail = Mail.new(ARGF.read)
23
- task_uuid = %x[task-uuid \"#{mail.subject}\"]
24
+ task_uuid = `task-uuid \"#{mail.subject}\"`
24
25
  body = mail.text? ? mail.body.decoded : mail.text_part.body.decoded
25
26
 
26
27
  SEPARATOR = '-- '
27
- body = body.split(SEPARATOR)[0] if (body.include?(SEPARATOR))
28
+ body = body.split(SEPARATOR)[0] if body.include?(SEPARATOR)
28
29
 
29
- %x[task '#{task_uuid}' annotate \"#{body}\"]
30
+ `task '#{task_uuid}' annotate \"#{body}\"`
@@ -1,37 +1,39 @@
1
1
  #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
2
4
  require 'mail'
3
5
  require 'optparse'
4
6
  require 'twmail'
5
7
 
6
8
  OptionParser.new do |opts|
7
- banner = <<-HERE
8
- #{opts.program_name} is a simple Mail Delivery Agent (MDA) that that exports the parts of the received email as environment variables and calls a shell script that can make use of these variables to further process the mail.
9
+ banner = <<~HERE
10
+ #{opts.program_name} is a simple Mail Delivery Agent (MDA) that that exports the parts of the received email as environment variables and calls a shell script that can make use of these variables to further process the mail.
9
11
 
10
- USAGE
12
+ USAGE
11
13
 
12
- Configure fetchmail to use #{opts.program_name} as MDA:
14
+ Configure fetchmail to use #{opts.program_name} as MDA:
13
15
 
14
- # ~/.fetchmailrc
15
- mda #{opts.program_name}
16
+ # ~/.fetchmailrc
17
+ mda #{opts.program_name}
16
18
 
17
- HERE
18
- opts.banner = banner#.wrap
19
+ HERE
20
+ opts.banner = banner # .wrap
19
21
  opts.version = TaskWarriorMail::VERSION
20
22
  end.parse!
21
23
 
22
24
  mail = Mail.new(ARGF.read)
23
25
 
24
26
  # Expose mail properties as environment variables
25
- %w[date message_id from to subject body].each{|field|
27
+ %w[date message_id from to subject body].each do |field|
26
28
  value = mail.send(field.to_sym)
27
29
  value = value.join(',') if value.respond_to?(:join)
28
30
  ENV["TWMAIL_#{field.upcase}"] = Shellwords.escape(value.to_s)
29
- }
31
+ end
30
32
 
31
33
  # The hook to be executed is read from the environment variable TWMAIL_HOOK
32
34
  # If none is set, this script will assume that twmail_on_new_mail is in the
33
35
  # $PATH and executable.
34
- cmd = ENV.fetch("TWMAIL_HOOK", 'twmail-hook')
36
+ cmd = ENV.fetch('TWMAIL_HOOK', 'twmail-hook')
35
37
 
36
38
  # Call hook script
37
- %x[#{cmd}]
39
+ `#{cmd}`
@@ -1,6 +1,8 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class String
2
4
  # http://www.java2s.com/Code/Ruby/String/WordwrappingLinesofText.htm
3
- def wrap(width = 78)
5
+ def wrap(width=78)
4
6
  gsub(/(.{1,#{width}})(\s+|\Z)/, "\\1\n")
5
7
  end
6
8
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'twmail/version'
2
4
  require 'extensions/string'
3
5
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module TaskWarriorMail
2
- VERSION = '0.0.6'
4
+ VERSION = '1.0.0'
3
5
  end
@@ -1,5 +1,4 @@
1
- require 'bundler'
2
- #Bundler.require
1
+ # frozen_string_literal: true
3
2
 
4
3
  require 'twtest'
5
4
  require 'test/unit'
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'test_helper'
2
4
  require 'mail'
3
5
 
@@ -1,10 +1,12 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'shellwords'
2
4
  require 'open3'
3
5
  require 'test/unit'
4
6
 
5
7
  class Command
6
- def exec(cmd = '', args = {})
7
- env.each{|k,v| ENV[k.to_s] = v.to_s}
8
+ def exec(cmd='', args={})
9
+ env.each { |k, v| ENV[k.to_s] = v.to_s }
8
10
  line = build_line(cmd, args)
9
11
  Open3.capture3(line)
10
12
  end
@@ -23,18 +25,18 @@ class Command
23
25
 
24
26
  private
25
27
 
26
- def build_line(cmd = '', args = {})
27
- [].tap{|line|
28
+ def build_line(cmd='', args={})
29
+ [].tap { |line|
28
30
  line << executable
29
- line << default_args.merge(args).map{|k,v| "#{Shellwords.escape(k.strip)}=#{Shellwords.escape(v.strip)}"}.join(' ')
31
+ line << default_args.merge(args).map { |k, v| "#{Shellwords.escape(k.strip)}=#{Shellwords.escape(v.strip)}" }.join(' ')
30
32
  line << cmd.strip
31
- line.reject!{|part| part.empty?}
33
+ line.reject!(&:empty?)
32
34
  }.join(' ')
33
35
  end
34
36
 
35
37
  def overrides(env)
36
38
  intersection = env.keys.to_set & ENV.keys.to_set
37
- ENV.select{|k,v| intersection.include?(k)}
39
+ ENV.select { |k, v| intersection.include?(k) }
38
40
  end
39
41
  end
40
42
 
@@ -51,11 +53,11 @@ class TaskWarriorCommand < Command
51
53
 
52
54
  def env
53
55
  raise "data_dir must not be empty for '#{executable}'" if @data_dir.nil? || data_dir.empty?
54
- {TASKDATA: @data_dir}
56
+ { TASKDATA: @data_dir }
55
57
  end
56
58
 
57
59
  def default_args
58
- {'rc.verbose' => 'nothing', 'rc.json.array' => 'on'}
60
+ { 'rc.verbose' => 'nothing', 'rc.json.array' => 'on' }
59
61
  end
60
62
 
61
63
  def executable
@@ -70,7 +72,7 @@ class TaskUUID < TaskWarriorCommand
70
72
 
71
73
  def executable
72
74
  # The gem version that uses the binstub fails if the script is not Ruby
73
- #'task-uuid'
75
+ # 'task-uuid'
74
76
 
75
77
  # The local version, called directly, works fine even if it's a Bash script
76
78
  File.join(File.dirname(__FILE__), '..', '..', 'bin', 'task-uuid')
@@ -1,6 +1,8 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'test_helper'
2
4
 
3
- class TestHelpers < TaskWarrior::Test::Integration::TestCase
5
+ class TestHelpers < TaskWarrior::Test::Integration::Test
4
6
  def teardown
5
7
  ENV['TASKRC'] = nil
6
8
  super
@@ -67,8 +69,8 @@ class TestHelpers < TaskWarrior::Test::Integration::TestCase
67
69
  def deliver_fixture(status, fixture)
68
70
  twmail = File.join(File.dirname(__FILE__), '..', '..', 'bin', 'twmail')
69
71
  ENV['TASKRC'] = @taskrc_file
70
- output = %x[cat #{fixture} | #{twmail}]
71
- assert_equal(status, $?.exitstatus)
72
+ output = `cat #{fixture} | #{twmail}`
73
+ assert_equal(status, $CHILD_STATUS.exitstatus)
72
74
  output
73
75
  end
74
76
 
@@ -1,25 +1,29 @@
1
1
  # -*- encoding: utf-8 -*-
2
+ # frozen_string_literal: true
3
+
4
+ require 'English'
2
5
  require File.expand_path('../lib/twmail/version', __FILE__)
3
6
 
4
7
  Gem::Specification.new do |gem|
5
- gem.authors = ["Nicholas E. Rabenau"]
6
- gem.email = ["nerab@gmx.net"]
7
- gem.description = %q{Mail new tasks to your TaskWarrior inbox}
8
- gem.summary = %q{Use fetchmail and the scripts in this project to mail tasks to your local TaskWarrior installation}
8
+ gem.authors = ['Nicholas E. Rabenau']
9
+ gem.email = ['nerab@gmx.net']
10
+ gem.description = 'Mail new tasks to your TaskWarrior inbox'
11
+ gem.summary = 'Use fetchmail and the scripts in this project to mail tasks to your local TaskWarrior installation'
9
12
  gem.homepage = 'https://github.com/nerab/TaskWarriorMail'
10
13
 
11
- gem.files = `git ls-files`.split($\)
12
- gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
14
+ gem.files = `git ls-files`.split($OUTPUT_RECORD_SEPARATOR)
15
+ gem.executables = gem.files.grep(%r{^bin/}).map { |f| File.basename(f) }
13
16
  gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
14
- gem.name = "twmail"
15
- gem.require_paths = ["lib"]
17
+ gem.name = 'twmail'
18
+ gem.require_paths = ['lib']
16
19
  gem.version = TaskWarriorMail::VERSION
17
20
 
18
21
  gem.add_dependency 'mail'
19
22
 
20
- gem.add_development_dependency 'twtest', '> 0.0.6'
23
+ gem.add_development_dependency 'twtest', '~> 1.1.0'
21
24
  gem.add_development_dependency 'guard-test'
22
25
  gem.add_development_dependency 'guard-bundler'
23
26
  gem.add_development_dependency 'pry'
24
27
  gem.add_development_dependency 'rake'
28
+ gem.add_development_dependency 'rubocop'
25
29
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: twmail
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.6
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nicholas E. Rabenau
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-06-05 00:00:00.000000000 Z
11
+ date: 2020-04-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: mail
@@ -28,16 +28,16 @@ dependencies:
28
28
  name: twtest
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ">"
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: 0.0.6
33
+ version: 1.1.0
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ">"
38
+ - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: 0.0.6
40
+ version: 1.1.0
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: guard-test
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -94,6 +94,20 @@ dependencies:
94
94
  - - ">="
95
95
  - !ruby/object:Gem::Version
96
96
  version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: rubocop
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
97
111
  description: Mail new tasks to your TaskWarrior inbox
98
112
  email:
99
113
  - nerab@gmx.net
@@ -105,7 +119,9 @@ extensions: []
105
119
  extra_rdoc_files: []
106
120
  files:
107
121
  - ".gitignore"
122
+ - ".rubocop.yml"
108
123
  - ".ruby-version"
124
+ - ".travis.yml"
109
125
  - CONTRIBUTING.markdown
110
126
  - Gemfile
111
127
  - Guardfile
@@ -153,8 +169,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
153
169
  - !ruby/object:Gem::Version
154
170
  version: '0'
155
171
  requirements: []
156
- rubyforge_project:
157
- rubygems_version: 2.6.11
172
+ rubygems_version: 3.1.2
158
173
  signing_key:
159
174
  specification_version: 4
160
175
  summary: Use fetchmail and the scripts in this project to mail tasks to your local