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.
@@ -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
@@ -0,0 +1,6 @@
1
+ source "https://rubygems.org"
2
+
3
+ gem 'terminal-table', '~>1.4.5'
4
+ gem 'parseconfig', '~>1.0.2'
5
+ gem 'rainbow', '~>1.1.4'
6
+ gem 'gli', '~>2.5.6'
@@ -0,0 +1,10 @@
1
+ $LOAD_PATH.unshift File.expand_path("../lib", __FILE__)
2
+ require "twkb/version"
3
+
4
+ task :build do
5
+ system "gem build twkb.gemspec"
6
+ end
7
+
8
+ task :release => :build do
9
+ system "gem push twkb-#{TWKB::VERSION}.gem"
10
+ end
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
- twkb = TWKB::App.new( :board_name => ARGV.first )
6
- twkb.print_table
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)
@@ -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
 
@@ -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
@@ -1,3 +1,3 @@
1
1
  module TWKB
2
- VERSION = '0.0.3'
2
+ VERSION = '0.0.4'
3
3
  end
@@ -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
- prerelease: false
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
- - "Kim N\xC3\xB8rgaard"
6
+ authors:
7
+ - Kim Nørgaard
13
8
  autorequire:
14
9
  bindir: bin
15
10
  cert_chain: []
16
-
17
- date: 2013-05-03 00:00:00 +02:00
18
- default_executable:
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
- prerelease: false
23
- requirement: &id001 !ruby/object:Gem::Requirement
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
- requirement: &id002 !ruby/object:Gem::Requirement
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
- version_requirements: *id002
48
- - !ruby/object:Gem::Dependency
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
- requirement: &id003 !ruby/object:Gem::Requirement
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
- version_requirements: *id003
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
- segments:
94
- - 0
95
- version: "0"
96
- required_rubygems_version: !ruby/object:Gem::Requirement
97
- requirements:
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: 1.3.6
106
+ rubygems_version: 2.0.3
107
107
  signing_key:
108
- specification_version: 3
108
+ specification_version: 4
109
109
  summary: TaskWarrior Kanban
110
110
  test_files: []
111
-