taskwarrior-web 0.0.10 → 0.0.11
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.
- data/.travis.yml +5 -0
- data/CHANGELOG.md +5 -0
- data/Gemfile.lock +18 -6
- data/README.md +2 -0
- data/Rakefile +5 -0
- data/lib/taskwarrior-web/app.rb +5 -0
- data/lib/taskwarrior-web/runner.rb +12 -0
- data/lib/taskwarrior-web/task.rb +13 -14
- data/lib/taskwarrior-web/version.rb +1 -1
- data/spec/models/task_spec.rb +17 -0
- data/taskwarrior-web.gemspec +2 -0
- data/views/listing.erb +10 -1
- metadata +39 -13
data/.travis.yml
ADDED
data/CHANGELOG.md
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,22 +1,33 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
taskwarrior-web (0.0.
|
4
|
+
taskwarrior-web (0.0.11)
|
5
5
|
parseconfig
|
6
|
+
rinku
|
6
7
|
sinatra
|
7
8
|
vegas
|
8
9
|
|
9
10
|
GEM
|
10
11
|
remote: http://rubygems.org/
|
11
12
|
specs:
|
13
|
+
diff-lcs (1.1.3)
|
12
14
|
parseconfig (0.5.2)
|
13
|
-
rack (1.
|
14
|
-
rack-protection (1.
|
15
|
+
rack (1.4.0)
|
16
|
+
rack-protection (1.2.0)
|
15
17
|
rack
|
16
18
|
rake (0.9.2.2)
|
17
|
-
|
18
|
-
|
19
|
-
|
19
|
+
rinku (1.5.0)
|
20
|
+
rspec (2.8.0)
|
21
|
+
rspec-core (~> 2.8.0)
|
22
|
+
rspec-expectations (~> 2.8.0)
|
23
|
+
rspec-mocks (~> 2.8.0)
|
24
|
+
rspec-core (2.8.0)
|
25
|
+
rspec-expectations (2.8.0)
|
26
|
+
diff-lcs (~> 1.1.2)
|
27
|
+
rspec-mocks (2.8.0)
|
28
|
+
sinatra (1.3.2)
|
29
|
+
rack (~> 1.3, >= 1.3.6)
|
30
|
+
rack-protection (~> 1.2)
|
20
31
|
tilt (~> 1.3, >= 1.3.3)
|
21
32
|
tilt (1.3.3)
|
22
33
|
vegas (0.1.8)
|
@@ -27,4 +38,5 @@ PLATFORMS
|
|
27
38
|
|
28
39
|
DEPENDENCIES
|
29
40
|
rake
|
41
|
+
rspec
|
30
42
|
taskwarrior-web!
|
data/README.md
CHANGED
@@ -3,6 +3,8 @@
|
|
3
3
|
A lightweight, Sinatra-based web interface for the
|
4
4
|
wonderful [Taskwarrior](http://taskwarrior.org/) todo application.
|
5
5
|
|
6
|
+
[](http://travis-ci.org/theunraveler/taskwarrior-web)
|
7
|
+
|
6
8
|
## Installation
|
7
9
|
|
8
10
|
`gem install taskwarrior-web`
|
data/Rakefile
CHANGED
data/lib/taskwarrior-web/app.rb
CHANGED
@@ -5,6 +5,7 @@ require 'erb'
|
|
5
5
|
require 'parseconfig'
|
6
6
|
require 'json'
|
7
7
|
require 'time'
|
8
|
+
require 'rinku'
|
8
9
|
|
9
10
|
module TaskwarriorWeb
|
10
11
|
class App < Sinatra::Base
|
@@ -47,6 +48,10 @@ module TaskwarriorWeb
|
|
47
48
|
end
|
48
49
|
end
|
49
50
|
|
51
|
+
def auto_link(text)
|
52
|
+
Rinku.auto_link(text, :all, 'target="_blank"')
|
53
|
+
end
|
54
|
+
|
50
55
|
def subnav(type)
|
51
56
|
case type
|
52
57
|
when 'tasks' then
|
data/lib/taskwarrior-web/task.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
require 'taskwarrior-web/runner'
|
2
|
+
|
1
3
|
module TaskwarriorWeb
|
2
4
|
|
3
5
|
#################
|
@@ -5,10 +7,9 @@ module TaskwarriorWeb
|
|
5
7
|
#################
|
6
8
|
class Task
|
7
9
|
|
8
|
-
TASK_BIN = 'task'
|
9
|
-
|
10
10
|
attr_accessor :id, :entry, :project, :priority, :uuid, :description, :status,
|
11
|
-
:due, :start, :end, :tags, :depends, :wait
|
11
|
+
:due, :start, :end, :tags, :depends, :wait, :annotations
|
12
|
+
alias :annotate= :annotations=
|
12
13
|
|
13
14
|
####################################
|
14
15
|
# MODEL METHODS FOR INDIVIDUAL TASKS
|
@@ -22,7 +23,7 @@ module TaskwarriorWeb
|
|
22
23
|
|
23
24
|
def save!
|
24
25
|
exclude = ['@description', '@tags']
|
25
|
-
command =
|
26
|
+
command = 'add'
|
26
27
|
command << " '#{description}'"
|
27
28
|
instance_variables.each do |ivar|
|
28
29
|
subbed = ivar.to_s.gsub('@', '')
|
@@ -33,8 +34,7 @@ module TaskwarriorWeb
|
|
33
34
|
command << " +#{tag}"
|
34
35
|
end
|
35
36
|
end
|
36
|
-
|
37
|
-
`#{command}`
|
37
|
+
TaskwarriorWeb::Runner.run(command)
|
38
38
|
end
|
39
39
|
|
40
40
|
##################################
|
@@ -46,15 +46,15 @@ module TaskwarriorWeb
|
|
46
46
|
tasks = []
|
47
47
|
count = 1
|
48
48
|
|
49
|
-
|
49
|
+
command = '_query'
|
50
50
|
args.each do |param|
|
51
51
|
param.each do |attr, value|
|
52
|
-
|
52
|
+
command << " #{attr.to_s}:#{value}"
|
53
53
|
end
|
54
54
|
end
|
55
55
|
|
56
56
|
# Process the JSON data.
|
57
|
-
json =
|
57
|
+
json = TaskwarriorWeb::Runner.run(command)
|
58
58
|
json.strip!
|
59
59
|
json = '[' + json + ']'
|
60
60
|
results = json == '[No matches.]' ? [] : JSON.parse(json)
|
@@ -88,13 +88,13 @@ module TaskwarriorWeb
|
|
88
88
|
|
89
89
|
# Get the number of tasks for some paramters
|
90
90
|
def self.count(*args)
|
91
|
-
|
91
|
+
command = 'count'
|
92
92
|
args.each do |param|
|
93
93
|
param.each do |attr, value|
|
94
|
-
|
94
|
+
command << " #{attr.to_s}:#{value}"
|
95
95
|
end
|
96
96
|
end
|
97
|
-
return
|
97
|
+
return TaskwarriorWeb::Runner.run(command).strip!
|
98
98
|
end
|
99
99
|
|
100
100
|
###############################################
|
@@ -105,8 +105,7 @@ module TaskwarriorWeb
|
|
105
105
|
# Mark a task as complete
|
106
106
|
# TODO: Make into instance method when `task` supports finding by UUID.
|
107
107
|
def self.complete!(task_id)
|
108
|
-
|
109
|
-
`#{statement}`
|
108
|
+
TaskwarriorWeb::Runner.run("#{task_id} done")
|
110
109
|
end
|
111
110
|
|
112
111
|
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
require 'taskwarrior-web/task'
|
2
|
+
|
3
|
+
describe TaskwarriorWeb::Task do
|
4
|
+
|
5
|
+
describe '#initialize' do
|
6
|
+
it 'should assign the passed attributes' do
|
7
|
+
task = TaskwarriorWeb::Task.new({:entry => 'Testing', :project => 'Project'})
|
8
|
+
task.entry.should eq('Testing')
|
9
|
+
task.project.should eq('Project')
|
10
|
+
end
|
11
|
+
|
12
|
+
it 'should not assign bogus attributes' do
|
13
|
+
task = TaskwarriorWeb::Task.new({:bogus => 'Testing'})
|
14
|
+
task.respond_to?(:bogus).should be_false
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
data/taskwarrior-web.gemspec
CHANGED
@@ -17,8 +17,10 @@ Gem::Specification.new do |s|
|
|
17
17
|
s.add_dependency('sinatra')
|
18
18
|
s.add_dependency('parseconfig')
|
19
19
|
s.add_dependency('vegas')
|
20
|
+
s.add_dependency('rinku')
|
20
21
|
|
21
22
|
s.add_development_dependency('rake')
|
23
|
+
s.add_development_dependency('rspec')
|
22
24
|
|
23
25
|
s.files = `git ls-files`.split("\n")
|
24
26
|
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
data/views/listing.erb
CHANGED
@@ -19,7 +19,16 @@
|
|
19
19
|
<tr class="<%= task.status %>">
|
20
20
|
<td></td>
|
21
21
|
<% end %>
|
22
|
-
<td
|
22
|
+
<td>
|
23
|
+
<%= task.description %>
|
24
|
+
<% unless task.annotations.nil? || task.annotations.empty? %>
|
25
|
+
<ul>
|
26
|
+
<% task.annotations.each do |annotation| %>
|
27
|
+
<li><%= format_date(annotation['entry']) %>: <%= auto_link(annotation['description']) %></li>
|
28
|
+
<% end %>
|
29
|
+
</ul>
|
30
|
+
<% end %>
|
31
|
+
</td>
|
23
32
|
<td><a href="/projects/<%= linkify(task.project, :project) %>"><%= task.project %></a></td>
|
24
33
|
<td><%= format_date(task.due) unless task.due.nil? %></td>
|
25
34
|
<td><%= task.tags.join(', ') unless task.tags.nil? %></td>
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: taskwarrior-web
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.11
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2012-01-11 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: sinatra
|
16
|
-
requirement: &
|
16
|
+
requirement: &2160998820 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *2160998820
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: parseconfig
|
27
|
-
requirement: &
|
27
|
+
requirement: &2160996680 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *2160996680
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: vegas
|
38
|
-
requirement: &
|
38
|
+
requirement: &2161049040 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,10 +43,32 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :runtime
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *2161049040
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: rinku
|
49
|
+
requirement: &2161047100 !ruby/object:Gem::Requirement
|
50
|
+
none: false
|
51
|
+
requirements:
|
52
|
+
- - ! '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
type: :runtime
|
56
|
+
prerelease: false
|
57
|
+
version_requirements: *2161047100
|
47
58
|
- !ruby/object:Gem::Dependency
|
48
59
|
name: rake
|
49
|
-
requirement: &
|
60
|
+
requirement: &2161045180 !ruby/object:Gem::Requirement
|
61
|
+
none: false
|
62
|
+
requirements:
|
63
|
+
- - ! '>='
|
64
|
+
- !ruby/object:Gem::Version
|
65
|
+
version: '0'
|
66
|
+
type: :development
|
67
|
+
prerelease: false
|
68
|
+
version_requirements: *2161045180
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: rspec
|
71
|
+
requirement: &2161043240 !ruby/object:Gem::Requirement
|
50
72
|
none: false
|
51
73
|
requirements:
|
52
74
|
- - ! '>='
|
@@ -54,7 +76,7 @@ dependencies:
|
|
54
76
|
version: '0'
|
55
77
|
type: :development
|
56
78
|
prerelease: false
|
57
|
-
version_requirements: *
|
79
|
+
version_requirements: *2161043240
|
58
80
|
description: This gem provides a graphical frontend for the Taskwarrior task manager.
|
59
81
|
It is based on Sinatra.
|
60
82
|
email:
|
@@ -65,6 +87,7 @@ extensions: []
|
|
65
87
|
extra_rdoc_files: []
|
66
88
|
files:
|
67
89
|
- .gitignore
|
90
|
+
- .travis.yml
|
68
91
|
- CHANGELOG.md
|
69
92
|
- Gemfile
|
70
93
|
- Gemfile.lock
|
@@ -75,6 +98,7 @@ files:
|
|
75
98
|
- lib/taskwarrior-web.rb
|
76
99
|
- lib/taskwarrior-web/app.rb
|
77
100
|
- lib/taskwarrior-web/config.rb
|
101
|
+
- lib/taskwarrior-web/runner.rb
|
78
102
|
- lib/taskwarrior-web/task.rb
|
79
103
|
- lib/taskwarrior-web/version.rb
|
80
104
|
- public/css/gh-buttons.css
|
@@ -105,6 +129,7 @@ files:
|
|
105
129
|
- public/js/jquery.min.js
|
106
130
|
- public/js/jquery.tagsinput.js
|
107
131
|
- public/js/jquery.tipsy.js
|
132
|
+
- spec/models/task_spec.rb
|
108
133
|
- taskwarrior-web.gemspec
|
109
134
|
- views/404.erb
|
110
135
|
- views/_navigation.erb
|
@@ -127,7 +152,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
127
152
|
version: '0'
|
128
153
|
segments:
|
129
154
|
- 0
|
130
|
-
hash:
|
155
|
+
hash: 3125701978170363258
|
131
156
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
132
157
|
none: false
|
133
158
|
requirements:
|
@@ -136,11 +161,12 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
136
161
|
version: '0'
|
137
162
|
segments:
|
138
163
|
- 0
|
139
|
-
hash:
|
164
|
+
hash: 3125701978170363258
|
140
165
|
requirements: []
|
141
166
|
rubyforge_project: taskwarrior-web
|
142
167
|
rubygems_version: 1.8.11
|
143
168
|
signing_key:
|
144
169
|
specification_version: 3
|
145
170
|
summary: Web frontend for taskwarrior command line task manager.
|
146
|
-
test_files:
|
171
|
+
test_files:
|
172
|
+
- spec/models/task_spec.rb
|