twkb 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
@@ -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
-