cardigan 0.0.2 → 0.0.3
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/README.rdoc +15 -10
- data/lib/cardigan/entry_context.rb +8 -2
- data/lib/cardigan/root_context.rb +36 -30
- data/lib/cardigan/text_report_formatter.rb +1 -1
- metadata +2 -32
data/README.rdoc
CHANGED
@@ -2,6 +2,12 @@
|
|
2
2
|
|
3
3
|
A simple command line project task tracking tool.
|
4
4
|
|
5
|
+
== Rationale
|
6
|
+
|
7
|
+
* command line tools are faster and cooler than any gui or web interface
|
8
|
+
* it makes sense to store work items in your source repository
|
9
|
+
* tab completion is awesome
|
10
|
+
|
5
11
|
== Installation
|
6
12
|
|
7
13
|
gem install cardigan
|
@@ -18,27 +24,26 @@ So what now?
|
|
18
24
|
|
19
25
|
== Listing mode
|
20
26
|
|
21
|
-
You
|
27
|
+
You start in listing mode.
|
22
28
|
|
23
29
|
The commands available are (with the awesome power of tab completion):
|
24
30
|
|
25
|
-
* quit
|
26
|
-
* exit
|
31
|
+
* quit or exit or ctrl-d - exit
|
27
32
|
* list - shows all cards
|
28
33
|
* filter <filter> - sets the filter for cards - this is ruby code such as card[:name].start_with?('a')
|
29
|
-
* claim <
|
30
|
-
* unclaim <
|
34
|
+
* claim <numbers> - sets the owner of the specified cards (by index number from the list view)
|
35
|
+
* unclaim <numbers> - removes the owner from the specified cards (by index number from the list view)
|
31
36
|
* create <name> - creates a card with the specified name
|
32
37
|
* open <name> - creates or opens the card and enters edit mode
|
33
|
-
* columns - changes the
|
38
|
+
* columns - lists or changes the columns to be displayed by the list command
|
34
39
|
* destroy <numbers> - deletes the specified cards (by index number from the list view)
|
35
40
|
|
36
41
|
== Editing mode
|
37
42
|
|
38
|
-
* quit
|
39
|
-
*
|
40
|
-
* set <key> - creates a new
|
43
|
+
* quit or exit or ctrl-d - exit
|
44
|
+
* show - dumps the values of all card field values
|
45
|
+
* set <key> - creates a new field and prompts for the new value
|
41
46
|
|
42
47
|
== Future plans
|
43
48
|
|
44
|
-
Refer to the .cards for detailed story breakdown but mostly importing, exporting and generating pretty html reports/charts.
|
49
|
+
Refer to the .cards for detailed story breakdown but mostly simple worflow, importing, exporting and generating pretty html reports/charts.
|
@@ -6,12 +6,18 @@ module Cardigan
|
|
6
6
|
|
7
7
|
def initialize io, entry
|
8
8
|
@io, @entry = io, entry
|
9
|
-
@prompt_text = "#{File.expand_path('.').split('/').last.slice(0..
|
10
|
-
@commands = ['set']
|
9
|
+
@prompt_text = "#{File.expand_path('.').split('/').last.slice(0..0)}/#{entry['name']} > "
|
10
|
+
@commands = ['set', 'show']
|
11
11
|
end
|
12
12
|
|
13
13
|
def set_command key
|
14
14
|
@entry[key] = @io.ask("Enter the new value for #{key}")
|
15
15
|
end
|
16
|
+
|
17
|
+
def show_command ignored=nil
|
18
|
+
@entry.keys.sort.each do |key|
|
19
|
+
@io.say "#{key}: #{@entry[key]}"
|
20
|
+
end
|
21
|
+
end
|
16
22
|
end
|
17
23
|
end
|
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'rubygems'
|
2
2
|
require 'uuidtools'
|
3
|
+
require 'set'
|
3
4
|
require 'cardigan/context'
|
4
5
|
require 'cardigan/entry_context'
|
5
6
|
require 'cardigan/text_report_formatter'
|
@@ -16,15 +17,9 @@ module Cardigan
|
|
16
17
|
|
17
18
|
def refresh_commands
|
18
19
|
@repository.refresh
|
19
|
-
@commands = ['create', 'list', 'filter', 'unfilter', 'columns']
|
20
|
+
@commands = ['create', 'list', 'filter', 'unfilter', 'columns', 'claim', 'unclaim', 'destroy']
|
20
21
|
@repository.cards.each do |card|
|
21
22
|
@commands << "open #{card['name']}"
|
22
|
-
@commands << "destroy #{card['name']}"
|
23
|
-
if card['owner'] == @name
|
24
|
-
@commands << "unclaim #{card['name']}"
|
25
|
-
else
|
26
|
-
@commands << "claim #{card['name']}"
|
27
|
-
end
|
28
23
|
end
|
29
24
|
end
|
30
25
|
|
@@ -32,16 +27,14 @@ module Cardigan
|
|
32
27
|
@repository.save @repository.find_or_create(name)
|
33
28
|
end
|
34
29
|
|
35
|
-
def open_command
|
30
|
+
def open_command name
|
36
31
|
card = @repository.find_or_create(name)
|
37
32
|
EntryContext.new(@io, card).push
|
38
33
|
@repository.save card
|
39
34
|
end
|
40
35
|
|
41
|
-
def destroy_command
|
42
|
-
|
43
|
-
text.scan(/\d+/).each do |n|
|
44
|
-
card = cards[n.to_i - 1]
|
36
|
+
def destroy_command numbers
|
37
|
+
each_card_from_indices(numbers) do |card|
|
45
38
|
@io.say "destroying \"#{card['name']}\""
|
46
39
|
@repository.destroy card
|
47
40
|
end
|
@@ -62,7 +55,16 @@ module Cardigan
|
|
62
55
|
end
|
63
56
|
|
64
57
|
def columns_command text
|
65
|
-
|
58
|
+
if text
|
59
|
+
@columns = text.scan(/\w+/)
|
60
|
+
else
|
61
|
+
@io.say "current columns: #{@columns.join(',')}"
|
62
|
+
columns = Set.new
|
63
|
+
sorted_selection.each do |card|
|
64
|
+
columns += card.keys
|
65
|
+
end
|
66
|
+
@io.say "available columns: #{columns.sort.join(',')}"
|
67
|
+
end
|
66
68
|
end
|
67
69
|
|
68
70
|
def filter_command code
|
@@ -76,32 +78,36 @@ module Cardigan
|
|
76
78
|
end
|
77
79
|
end
|
78
80
|
|
79
|
-
def claim_command
|
80
|
-
|
81
|
+
def claim_command numbers
|
82
|
+
each_card_from_indices(numbers) do |card|
|
83
|
+
@io.say "claiming \"#{card['name']}\""
|
84
|
+
card['owner'] = @name
|
85
|
+
@repository.save card
|
86
|
+
end
|
81
87
|
end
|
82
88
|
|
83
|
-
def unclaim_command
|
84
|
-
|
89
|
+
def unclaim_command numbers
|
90
|
+
each_card_from_indices(numbers) do |card|
|
91
|
+
@io.say "claiming \"#{card['name']}\""
|
92
|
+
card.delete('owner')
|
93
|
+
@repository.save card
|
94
|
+
end
|
85
95
|
end
|
86
96
|
private
|
87
|
-
def
|
88
|
-
cards
|
97
|
+
def each_card_from_indices numbers
|
98
|
+
cards = sorted_selection
|
99
|
+
numbers.scan(/\d+/).each do |n|
|
100
|
+
yield cards[n.to_i - 1]
|
101
|
+
end
|
89
102
|
end
|
90
103
|
|
104
|
+
def max_field_length cards, name
|
105
|
+
cards.map {|card| card[name] ? card[name].length : 0 }.max
|
106
|
+
end
|
107
|
+
|
91
108
|
def sorted_selection
|
92
109
|
cards = @filter ? @repository.cards.select {|card| eval @filter } : @repository.cards
|
93
110
|
cards.sort {|a,b| a['name'] <=> b['name'] }
|
94
111
|
end
|
95
|
-
|
96
|
-
def set_key name, key, value
|
97
|
-
card = @repository.find_card(name)
|
98
|
-
if card
|
99
|
-
card[key] = value
|
100
|
-
@repository.save card
|
101
|
-
else
|
102
|
-
@io.say "unknown card #{text}"
|
103
|
-
end
|
104
|
-
end
|
105
112
|
end
|
106
113
|
end
|
107
|
-
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cardigan
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mark Ryall
|
@@ -9,19 +9,9 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2010-03-
|
12
|
+
date: 2010-03-13 00:00:00 +11:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
|
-
- !ruby/object:Gem::Dependency
|
16
|
-
name: highline
|
17
|
-
type: :runtime
|
18
|
-
version_requirement:
|
19
|
-
version_requirements: !ruby/object:Gem::Requirement
|
20
|
-
requirements:
|
21
|
-
- - ~>
|
22
|
-
- !ruby/object:Gem::Version
|
23
|
-
version: 1.5.1
|
24
|
-
version:
|
25
15
|
- !ruby/object:Gem::Dependency
|
26
16
|
name: uuidtools
|
27
17
|
type: :runtime
|
@@ -32,26 +22,6 @@ dependencies:
|
|
32
22
|
- !ruby/object:Gem::Version
|
33
23
|
version: 2.1.1
|
34
24
|
version:
|
35
|
-
- !ruby/object:Gem::Dependency
|
36
|
-
name: crypt
|
37
|
-
type: :runtime
|
38
|
-
version_requirement:
|
39
|
-
version_requirements: !ruby/object:Gem::Requirement
|
40
|
-
requirements:
|
41
|
-
- - ~>
|
42
|
-
- !ruby/object:Gem::Version
|
43
|
-
version: 1.1.4
|
44
|
-
version:
|
45
|
-
- !ruby/object:Gem::Dependency
|
46
|
-
name: pathname2
|
47
|
-
type: :runtime
|
48
|
-
version_requirement:
|
49
|
-
version_requirements: !ruby/object:Gem::Requirement
|
50
|
-
requirements:
|
51
|
-
- - ~>
|
52
|
-
- !ruby/object:Gem::Version
|
53
|
-
version: 1.6.3
|
54
|
-
version:
|
55
25
|
description: |
|
56
26
|
A command line utility that manages cards as individual files so that they can be added to a version control system
|
57
27
|
|