create_task 0.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 +7 -0
- data/.gitignore +1 -0
- data/.ruby-version +1 -0
- data/Gemfile +8 -0
- data/Gemfile.lock +48 -0
- data/README.md +28 -0
- data/bin/create_task +8 -0
- data/create_task.gemspec +27 -0
- data/lib/create_task.rb +28 -0
- data/lib/create_task/_helper.rb +25 -0
- data/lib/create_task/due_app.rb +21 -0
- data/lib/create_task/omnifocus.rb +21 -0
- data/lib/create_task/reminders.rb +14 -0
- data/lib/create_task/things.rb +17 -0
- data/lib/create_task/version.rb +3 -0
- metadata +143 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 72e2e4d087b94b6a90d2d176b357f009aa4d2647
|
4
|
+
data.tar.gz: d87bf6e7c8025a93a626924050ef8f72dd8823ac
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: f96d769a6a4264481fb13ef579cb413b68987a8a7184d22b37642a746939f6d28efe0691e6f6fd4812d35b47e70ae248761a0a1b4d1cdd6f445d10706a3c021c
|
7
|
+
data.tar.gz: 5fe39aa087e10fd23e3d10c5832adea6b29f281a50a3cfd47a6dd95acd980d538bf0545fc11dff57bf509ed51086835932d512972cfc089cfe65aeb5768c3d3d
|
data/.gitignore
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
*.gem
|
data/.ruby-version
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
ruby-2.0
|
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
@@ -0,0 +1,48 @@
|
|
1
|
+
GEM
|
2
|
+
remote: https://rubygems.org/
|
3
|
+
specs:
|
4
|
+
amatch (0.3.0)
|
5
|
+
tins (~> 1.0)
|
6
|
+
chronic (0.10.2)
|
7
|
+
domain_name (0.5.24)
|
8
|
+
unf (>= 0.0.5, < 1.0.0)
|
9
|
+
highline (1.7.3)
|
10
|
+
http-cookie (1.0.2)
|
11
|
+
domain_name (~> 0.5)
|
12
|
+
mechanize (2.7.3)
|
13
|
+
domain_name (~> 0.5, >= 0.5.1)
|
14
|
+
http-cookie (~> 1.0)
|
15
|
+
mime-types (~> 2.0)
|
16
|
+
net-http-digest_auth (~> 1.1, >= 1.1.1)
|
17
|
+
net-http-persistent (~> 2.5, >= 2.5.2)
|
18
|
+
nokogiri (~> 1.4)
|
19
|
+
ntlm-http (~> 0.1, >= 0.1.1)
|
20
|
+
webrobots (>= 0.0.9, < 0.2)
|
21
|
+
mime-types (2.6.1)
|
22
|
+
mini_portile (0.6.2)
|
23
|
+
net-http-digest_auth (1.4)
|
24
|
+
net-http-persistent (2.9.4)
|
25
|
+
nokogiri (1.6.6.2)
|
26
|
+
mini_portile (~> 0.6.0)
|
27
|
+
ntlm-http (0.1.1)
|
28
|
+
rb-appscript (0.6.1)
|
29
|
+
sqlite3 (1.3.10)
|
30
|
+
tins (1.6.0)
|
31
|
+
unf (0.1.4)
|
32
|
+
unf_ext
|
33
|
+
unf_ext (0.0.7.1)
|
34
|
+
webrobots (0.1.1)
|
35
|
+
|
36
|
+
PLATFORMS
|
37
|
+
ruby
|
38
|
+
|
39
|
+
DEPENDENCIES
|
40
|
+
amatch
|
41
|
+
chronic
|
42
|
+
highline
|
43
|
+
mechanize
|
44
|
+
rb-appscript
|
45
|
+
sqlite3
|
46
|
+
|
47
|
+
BUNDLED WITH
|
48
|
+
1.10.4
|
data/README.md
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
#Create Task
|
2
|
+
_A module for creating tasks in OmniFocus, Things, DueApp, and Apple Reminders on the Mac_
|
3
|
+
|
4
|
+
I created this module for easy integration from my ruby apps into the Big 4 of Task Managers.
|
5
|
+
|
6
|
+
To use this in your app, simply include
|
7
|
+
lib/create_todo.rb
|
8
|
+
in your source.
|
9
|
+
|
10
|
+
__Creating tasks is as easy as__
|
11
|
+
|
12
|
+
CreateTask::OmniFocus.new(name: "Task name", note: "Task note", start_date: "7/17/2013", due_date: "7/29/2013")
|
13
|
+
|
14
|
+
CreateTask::Things.new(name: "Task name", note: "Task note", due_date: "7/17/2013", tags: "github, gtd")
|
15
|
+
|
16
|
+
CreateTask::DueApp.new(name: "Task name", due_date: "7/17/2013")
|
17
|
+
|
18
|
+
CreateTask::Reminders.new(name: "Task name", due_date: "7/17/2013")
|
19
|
+
|
20
|
+
|
21
|
+
###Requirements:
|
22
|
+
|
23
|
+
- AppScript (for OmniFocus)
|
24
|
+
- Chronic (for date parsing)
|
25
|
+
- A Mac (no brainer)
|
26
|
+
|
27
|
+
Credits:
|
28
|
+
Brett Terpstra (@ttscoff) for OmniFocus task inspiration and his date parser method
|
data/bin/create_task
ADDED
data/create_task.gemspec
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'create_task/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = 'create_task'
|
8
|
+
spec.version = CreateTask::VERSION
|
9
|
+
spec.authors = ['Nick Prokesch']
|
10
|
+
spec.email = ['nick@prokes.ch']
|
11
|
+
spec.summary = 'Handles task creation for a variety of todo apps'
|
12
|
+
spec.description = 'Creates tasks for omnifocus, things, reminders'
|
13
|
+
spec.homepage = 'https://github.com/prokizzle/create_task'
|
14
|
+
spec.license = 'MIT'
|
15
|
+
|
16
|
+
spec.files = `git ls-files`.split($RS)
|
17
|
+
spec.require_paths = ['lib']
|
18
|
+
spec.bindir = 'bin'
|
19
|
+
spec.executables << 'create_task'
|
20
|
+
|
21
|
+
spec.add_dependency 'mechanize', '~> 2.7'
|
22
|
+
spec.add_dependency 'amatch', '~> 0.2'
|
23
|
+
spec.add_dependency 'rb-appscript', '~> 0.6'
|
24
|
+
spec.add_dependency 'highline', '~> 1.6'
|
25
|
+
spec.add_dependency 'chronic', '~> 0.10'
|
26
|
+
spec.add_dependency 'sqlite3', '~> 1.3'
|
27
|
+
end
|
data/lib/create_task.rb
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
require 'yaml'
|
2
|
+
require 'highline/import'
|
3
|
+
require 'appscript'
|
4
|
+
class Appscript::Reference # :nodoc:
|
5
|
+
# HACK: There is apparently a bug in ruby 1.9 where if you have
|
6
|
+
# method_missing defined and do some action that calls to_ary, then
|
7
|
+
# to_ary will be called on your instance REGARDLESS of whether
|
8
|
+
# respond_to_(:to_ary) returns true or not.
|
9
|
+
#
|
10
|
+
# http://tenderlovemaking.com/2011/06/28/til-its-ok-to-return-nil-from-to_ary/
|
11
|
+
|
12
|
+
def to_ary # :nodoc:
|
13
|
+
nil
|
14
|
+
end
|
15
|
+
end if RUBY_VERSION >= "1.9"
|
16
|
+
include Appscript
|
17
|
+
require 'amatch'
|
18
|
+
include Amatch
|
19
|
+
require 'chronic'
|
20
|
+
require 'mechanize'
|
21
|
+
require 'open-uri'
|
22
|
+
|
23
|
+
# Requires all gem files
|
24
|
+
module CreateTask
|
25
|
+
Dir[File.dirname(__FILE__) + '/create_task/*.rb'].each do |file|
|
26
|
+
require file
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
# CreateTask gem
|
2
|
+
module CreateTask
|
3
|
+
# Helper for creating tasks
|
4
|
+
class Helper
|
5
|
+
def self.new_task(task, app)
|
6
|
+
CreateTask::OmniFocus.create(task) if app == 'omnifocus'
|
7
|
+
CreateTask::Reminders.create(task) if app == 'reminders'
|
8
|
+
CreateTask::Things.create(task) if app == 'things'
|
9
|
+
CreateTask::DueApp.create(task) if app == 'dueapp'
|
10
|
+
end
|
11
|
+
|
12
|
+
def default_parsed_date(datestring)
|
13
|
+
Chronic.parse(
|
14
|
+
datestring.to_s,
|
15
|
+
context: :future, ambiguous_time_range: 8
|
16
|
+
)
|
17
|
+
end
|
18
|
+
|
19
|
+
def parse_date(datestring)
|
20
|
+
return default_parsed_date(datestring) unless datestring =~ /^\+(\d+)$/
|
21
|
+
days = (60 * 60 * 24 * Regexp.last_match[1].to_i)
|
22
|
+
Time.now + days
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
# CreateTask Gem
|
2
|
+
module CreateTask
|
3
|
+
# Creates a task in Due App
|
4
|
+
class DueApp < CreateTask::Helper
|
5
|
+
# include 'helper'
|
6
|
+
def self.create(args)
|
7
|
+
name = args[:name]
|
8
|
+
due_date = args[:due_date]
|
9
|
+
`osascript << 'APPLESCRIPT'
|
10
|
+
set d_date to date "#{due_date}"
|
11
|
+
set theURl to "due:///add?title=#{name}&due_date=" & d_date
|
12
|
+
tell application "Finder" to open location theURl
|
13
|
+
tell application "Due" to activate
|
14
|
+
delay 0.5 -- This delay can be tweaked for your system
|
15
|
+
tell application "Due" to activate
|
16
|
+
tell application "System Events" to key code 36
|
17
|
+
delay 1 -- This delay can be tweaked for your system
|
18
|
+
APPLESCRIPT`
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
# CreateTask Gem
|
2
|
+
module CreateTask
|
3
|
+
# Creates a task in OmniFocus
|
4
|
+
class OmniFocus < CreateTask::Helper
|
5
|
+
def self.create(args)
|
6
|
+
of = app('OmniFocus')
|
7
|
+
dd= of.default_document
|
8
|
+
dd.make(new: :inbox_task, with_properties: processed_args(args))
|
9
|
+
end
|
10
|
+
|
11
|
+
def self.processed_args(args)
|
12
|
+
args.each{ |k,v| args.delete(k) if v.nil? }
|
13
|
+
args[:defer_date] = args[:start_date] if args[:start_date]
|
14
|
+
args.delete(:start_date)
|
15
|
+
args[:due_date] = parse_date(args[:due_date]) if args[:due_date]
|
16
|
+
args[:defer_date] = parse_date(args[:defer_date]) if args[:defer_date]
|
17
|
+
puts args
|
18
|
+
args
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
# CreateTask gem
|
2
|
+
module CreateTask
|
3
|
+
# Creates a task in Reminders for Mac
|
4
|
+
class Reminders < CreateTask::Helper
|
5
|
+
def self.create(args)
|
6
|
+
name = args[:name]
|
7
|
+
`osascript <<'APPLESCRIPT'
|
8
|
+
set d_date to date "#{args[:due_date]}"
|
9
|
+
tell application "Reminders" to show
|
10
|
+
(make new reminder with properties {name:"#{name}", due date:(d_date)})
|
11
|
+
APPLESCRIPT`
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
# CreateTask Gem
|
2
|
+
module CreateTask
|
3
|
+
# Creates a task in Things app
|
4
|
+
class Things < CreateTask::Helper
|
5
|
+
def self.create(args)
|
6
|
+
`osascript << 'APPLESCRIPT'
|
7
|
+
set d_date to date "#{args[:due_date]}"
|
8
|
+
tell application "Things"
|
9
|
+
set newToDo to make new to do with properties {name: "#{args[:name]}"}
|
10
|
+
set newToDo's notes to "#{args[:due_date]}"
|
11
|
+
set newToDo's due date to d_date
|
12
|
+
set tag names of newToDo to "#{args[:tag]}"
|
13
|
+
end tell
|
14
|
+
APPLESCRIPT`
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
metadata
ADDED
@@ -0,0 +1,143 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: create_task
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: '0.1'
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Nick Prokesch
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2015-09-11 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: mechanize
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '2.7'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '2.7'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: amatch
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0.2'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0.2'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rb-appscript
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0.6'
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0.6'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: highline
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '1.6'
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '1.6'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: chronic
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0.10'
|
76
|
+
type: :runtime
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0.10'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: sqlite3
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - "~>"
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '1.3'
|
90
|
+
type: :runtime
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - "~>"
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '1.3'
|
97
|
+
description: Creates tasks for omnifocus, things, reminders
|
98
|
+
email:
|
99
|
+
- nick@prokes.ch
|
100
|
+
executables:
|
101
|
+
- create_task
|
102
|
+
extensions: []
|
103
|
+
extra_rdoc_files: []
|
104
|
+
files:
|
105
|
+
- ".gitignore"
|
106
|
+
- ".ruby-version"
|
107
|
+
- Gemfile
|
108
|
+
- Gemfile.lock
|
109
|
+
- README.md
|
110
|
+
- bin/create_task
|
111
|
+
- create_task.gemspec
|
112
|
+
- lib/create_task.rb
|
113
|
+
- lib/create_task/_helper.rb
|
114
|
+
- lib/create_task/due_app.rb
|
115
|
+
- lib/create_task/omnifocus.rb
|
116
|
+
- lib/create_task/reminders.rb
|
117
|
+
- lib/create_task/things.rb
|
118
|
+
- lib/create_task/version.rb
|
119
|
+
homepage: https://github.com/prokizzle/create_task
|
120
|
+
licenses:
|
121
|
+
- MIT
|
122
|
+
metadata: {}
|
123
|
+
post_install_message:
|
124
|
+
rdoc_options: []
|
125
|
+
require_paths:
|
126
|
+
- lib
|
127
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - ">="
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '0'
|
132
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
133
|
+
requirements:
|
134
|
+
- - ">="
|
135
|
+
- !ruby/object:Gem::Version
|
136
|
+
version: '0'
|
137
|
+
requirements: []
|
138
|
+
rubyforge_project:
|
139
|
+
rubygems_version: 2.4.8
|
140
|
+
signing_key:
|
141
|
+
specification_version: 4
|
142
|
+
summary: Handles task creation for a variety of todo apps
|
143
|
+
test_files: []
|