twkb 0.0.3 → 0.0.4
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/Gemfile +6 -0
- data/Rakefile +10 -0
- data/bin/twkb +106 -2
- data/lib/twkb.rb +1 -1
- data/lib/twkb/formatter.rb +2 -1
- data/lib/twkb/version.rb +1 -1
- data/twkb.gemspec +1 -0
- metadata +68 -69
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 088cef4b7297e511896fdd9f827bb6dbef4f9865
|
4
|
+
data.tar.gz: b699939cc577a8305297b369f49350e6207e46ad
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 54d8312b91d064f51c75aeb745a81eca489d13d1d6341adfcbf25d6260e3ad77f8a0f202feafd48535622c32f5a2b52a0372c4c7188854d1943e8b3b831cd7a3
|
7
|
+
data.tar.gz: f732ec4b428dcd0e96f247f30b457e0a454626884587b62ebce6264643edd65f6f60e5f007ec1eadbf342119a061d3ea47d85f1eaba13a3b7a0c850c3cb04845
|
data/Gemfile
ADDED
data/Rakefile
ADDED
data/bin/twkb
CHANGED
@@ -1,6 +1,110 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
|
+
require 'rubygems'
|
4
|
+
require 'open3'
|
5
|
+
require 'gli'
|
3
6
|
require 'twkb'
|
4
7
|
|
5
|
-
|
6
|
-
|
8
|
+
include GLI::App
|
9
|
+
|
10
|
+
# Cross-platform way of finding an executable in the $PATH.
|
11
|
+
#
|
12
|
+
# which('ruby') #=> /usr/bin/ruby
|
13
|
+
# source: http://stackoverflow.com/questions/2108727/which-in-ruby-checking-if-program-exists-in-path-from-ruby
|
14
|
+
def which(cmd)
|
15
|
+
exts = ENV['PATHEXT'] ? ENV['PATHEXT'].split(';') : ['']
|
16
|
+
ENV['PATH'].split(File::PATH_SEPARATOR).each do |path|
|
17
|
+
exts.each { |ext|
|
18
|
+
exe = File.join(path, "#{cmd}#{ext}")
|
19
|
+
return exe if File.executable? exe
|
20
|
+
}
|
21
|
+
end
|
22
|
+
return nil
|
23
|
+
end
|
24
|
+
|
25
|
+
program_desc 'Kanban boards for TaskWarrior'
|
26
|
+
|
27
|
+
exit_now!("The taskwarrior binary 'task' was not found in PATH.") unless which('task')
|
28
|
+
|
29
|
+
default_command :show
|
30
|
+
|
31
|
+
desc "Add task"
|
32
|
+
long_desc "Add a task to a given board and stage."
|
33
|
+
arg_name 'task_description'
|
34
|
+
command :add do |c|
|
35
|
+
c.desc 'Board to use'
|
36
|
+
c.flag [:b, :board], :default_value => 'personal'
|
37
|
+
|
38
|
+
c.desc 'Stage to use'
|
39
|
+
c.flag [:s, :stage], :default_value=> 'backlog'
|
40
|
+
|
41
|
+
c.action do |global_options, options, args|
|
42
|
+
help_now!('Task description is required') if args.empty?
|
43
|
+
o, e, s = Open3.capture3("task add board:#{options[:board]} stage:#{options[:stage]} #{args.join(' ')}")
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
desc 'Move task to stage'
|
48
|
+
long_desc <<EOF
|
49
|
+
Move a task to a stage. If no stage is set, the task will be moved to the
|
50
|
+
next one as defined in uda.stage.values. If the current stage is the last one
|
51
|
+
the task will be set to completed.
|
52
|
+
EOF
|
53
|
+
command :move do |c|
|
54
|
+
c.desc 'ID of task'
|
55
|
+
c.flag [:i, :id]
|
56
|
+
|
57
|
+
c.desc 'Stage to move task to'
|
58
|
+
c.flag [:s, :stage]
|
59
|
+
|
60
|
+
c.action do |global_options, options, args|
|
61
|
+
help_now!('-i <ID> is required') unless options[:id]
|
62
|
+
help_now!('-i <ID> is required') if options[:id].empty?
|
63
|
+
|
64
|
+
o, e, s = Open3.capture3("task #{options[:id]} info")
|
65
|
+
exit_now!("There was an error getting info stage ID #{options[:id]}.") unless s.success?
|
66
|
+
|
67
|
+
if options[:stage]
|
68
|
+
puts "Task ID #{options[:id]} - setting stage to \"#{options[:stage]}\"."
|
69
|
+
o, e, s = Open3.capture3("task #{options[:id]} modify stage:#{options[:stage]}")
|
70
|
+
exit_now!(nil, 0)
|
71
|
+
end
|
72
|
+
|
73
|
+
stage_line = o.split("\n").grep(/^Stage/)
|
74
|
+
exit_now!("Task ID #{options[:id]} has no stage set. Aborting.") unless stage_line.count > 0
|
75
|
+
current_stage = stage_line.first.split(" ").pop
|
76
|
+
|
77
|
+
taskrc_file = File.join(Dir.home, ".taskrc")
|
78
|
+
exit_now!('Could not read ~/.taskrc. Aborting.') unless File.readable? taskrc_file
|
79
|
+
taskrc = File.open(taskrc_file).readlines
|
80
|
+
stages_line = taskrc.grep(/^uda.stage.values=/)
|
81
|
+
exit_now!('Could not find uda.stage.values in ~/.taskrc. Aborting.') unless stages_line.count > 0
|
82
|
+
stages = stages_line.first.split("=").pop.split(",")
|
83
|
+
|
84
|
+
current_stage.chomp!
|
85
|
+
last_stage = stages.last
|
86
|
+
last_stage.chomp!
|
87
|
+
if current_stage == stages.last
|
88
|
+
puts "Already at last stage. Completing task..."
|
89
|
+
o, e, s = Open3.capture3("task #{options[:id]} done")
|
90
|
+
else
|
91
|
+
next_stage = stages[stages.index(current_stage)+1]
|
92
|
+
puts "Task ID #{options[:id]} - Setting stage to #{next_stage}..."
|
93
|
+
o, e, s = Open3.capture3("task #{options[:id]} modify stage:#{next_stage}")
|
94
|
+
end
|
95
|
+
end
|
96
|
+
end
|
97
|
+
|
98
|
+
desc "Show board"
|
99
|
+
long_desc "Show all tasks belonging to a given (or the default) kankab board."
|
100
|
+
command :show do |c|
|
101
|
+
c.desc 'Board to use'
|
102
|
+
c.flag [:b, :board]
|
103
|
+
|
104
|
+
c.action do |global_options, options, args|
|
105
|
+
twkb = TWKB::App.new( :board_name => options[:board] )
|
106
|
+
twkb.print_table
|
107
|
+
end
|
108
|
+
end
|
109
|
+
|
110
|
+
exit run(ARGV)
|
data/lib/twkb.rb
CHANGED
@@ -14,7 +14,7 @@ module TWKB
|
|
14
14
|
end
|
15
15
|
|
16
16
|
def print_table
|
17
|
-
formatter = TWKB::Formatter.new(:stages => @config.stages, :cell_width => @config['view.cell_width'])
|
17
|
+
formatter = TWKB::Formatter.new(:title => @board_name, :stages => @config.stages, :cell_width => @config['view.cell_width'])
|
18
18
|
puts formatter.table
|
19
19
|
end
|
20
20
|
|
data/lib/twkb/formatter.rb
CHANGED
@@ -9,12 +9,13 @@ module TWKB
|
|
9
9
|
@cell_width = options[:cell_width]
|
10
10
|
@cell_width ||= 15
|
11
11
|
@stages = options[:stages]
|
12
|
+
@title = options[:title]
|
12
13
|
prepare
|
13
14
|
end
|
14
15
|
|
15
16
|
def table
|
16
17
|
stage_labels = @stages.keys.map{|k,v| @stages[k][:label]}
|
17
|
-
Terminal::Table.new :headings => stage_labels, :rows => [@lanes]
|
18
|
+
Terminal::Table.new :title => @title, :headings => stage_labels, :rows => [@lanes]
|
18
19
|
end
|
19
20
|
|
20
21
|
private
|
data/lib/twkb/version.rb
CHANGED
data/twkb.gemspec
CHANGED
@@ -14,6 +14,7 @@ Gem::Specification.new do |s|
|
|
14
14
|
s.add_runtime_dependency 'terminal-table', '~>1.4.5'
|
15
15
|
s.add_runtime_dependency 'parseconfig', '~>1.0.2'
|
16
16
|
s.add_runtime_dependency 'rainbow', '~>1.1.4'
|
17
|
+
s.add_runtime_dependency 'gli', '~>2.5.6'
|
17
18
|
|
18
19
|
s.files = `git ls-files`.split("\n")
|
19
20
|
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
metadata
CHANGED
@@ -1,75 +1,82 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: twkb
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
segments:
|
6
|
-
- 0
|
7
|
-
- 0
|
8
|
-
- 3
|
9
|
-
version: 0.0.3
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.4
|
10
5
|
platform: ruby
|
11
|
-
authors:
|
12
|
-
-
|
6
|
+
authors:
|
7
|
+
- Kim Nørgaard
|
13
8
|
autorequire:
|
14
9
|
bindir: bin
|
15
10
|
cert_chain: []
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
dependencies:
|
20
|
-
- !ruby/object:Gem::Dependency
|
11
|
+
date: 2013-05-06 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
21
14
|
name: terminal-table
|
22
|
-
|
23
|
-
|
24
|
-
requirements:
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
25
17
|
- - ~>
|
26
|
-
- !ruby/object:Gem::Version
|
27
|
-
segments:
|
28
|
-
- 1
|
29
|
-
- 4
|
30
|
-
- 5
|
18
|
+
- !ruby/object:Gem::Version
|
31
19
|
version: 1.4.5
|
32
20
|
type: :runtime
|
33
|
-
version_requirements: *id001
|
34
|
-
- !ruby/object:Gem::Dependency
|
35
|
-
name: parseconfig
|
36
21
|
prerelease: false
|
37
|
-
|
38
|
-
requirements:
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ~>
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 1.4.5
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: parseconfig
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
39
31
|
- - ~>
|
40
|
-
- !ruby/object:Gem::Version
|
41
|
-
segments:
|
42
|
-
- 1
|
43
|
-
- 0
|
44
|
-
- 2
|
32
|
+
- !ruby/object:Gem::Version
|
45
33
|
version: 1.0.2
|
46
34
|
type: :runtime
|
47
|
-
|
48
|
-
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ~>
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 1.0.2
|
41
|
+
- !ruby/object:Gem::Dependency
|
49
42
|
name: rainbow
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ~>
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: 1.1.4
|
48
|
+
type: :runtime
|
50
49
|
prerelease: false
|
51
|
-
|
52
|
-
requirements:
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
53
52
|
- - ~>
|
54
|
-
- !ruby/object:Gem::Version
|
55
|
-
segments:
|
56
|
-
- 1
|
57
|
-
- 1
|
58
|
-
- 4
|
53
|
+
- !ruby/object:Gem::Version
|
59
54
|
version: 1.1.4
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: gli
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ~>
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 2.5.6
|
60
62
|
type: :runtime
|
61
|
-
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ~>
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: 2.5.6
|
62
69
|
description: A command line utility based on task warrior to create kanban boards.
|
63
70
|
email: jasen@jasen.dk
|
64
|
-
executables:
|
71
|
+
executables:
|
65
72
|
- twkb
|
66
73
|
extensions: []
|
67
|
-
|
68
74
|
extra_rdoc_files: []
|
69
|
-
|
70
|
-
files:
|
75
|
+
files:
|
71
76
|
- .rvmrc
|
77
|
+
- Gemfile
|
72
78
|
- README.md
|
79
|
+
- Rakefile
|
73
80
|
- bin/twkb
|
74
81
|
- lib/twkb.rb
|
75
82
|
- lib/twkb/config.rb
|
@@ -77,35 +84,27 @@ files:
|
|
77
84
|
- lib/twkb/task.rb
|
78
85
|
- lib/twkb/version.rb
|
79
86
|
- twkb.gemspec
|
80
|
-
has_rdoc: true
|
81
87
|
homepage: https://github.com/KimNorgaard/twkb
|
82
88
|
licenses: []
|
83
|
-
|
89
|
+
metadata: {}
|
84
90
|
post_install_message:
|
85
91
|
rdoc_options: []
|
86
|
-
|
87
|
-
require_paths:
|
92
|
+
require_paths:
|
88
93
|
- lib
|
89
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
90
|
-
requirements:
|
91
|
-
- -
|
92
|
-
- !ruby/object:Gem::Version
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
- !ruby/object:Gem::Version
|
100
|
-
segments:
|
101
|
-
- 0
|
102
|
-
version: "0"
|
94
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
95
|
+
requirements:
|
96
|
+
- - '>='
|
97
|
+
- !ruby/object:Gem::Version
|
98
|
+
version: '0'
|
99
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - '>='
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0'
|
103
104
|
requirements: []
|
104
|
-
|
105
105
|
rubyforge_project:
|
106
|
-
rubygems_version:
|
106
|
+
rubygems_version: 2.0.3
|
107
107
|
signing_key:
|
108
|
-
specification_version:
|
108
|
+
specification_version: 4
|
109
109
|
summary: TaskWarrior Kanban
|
110
110
|
test_files: []
|
111
|
-
|