trello_cli 0.3.0 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 67d3269ab8c44f68e1ecdadb52a096162df122d3
4
- data.tar.gz: 0995679927099f04e253b604d145f8d414665c18
3
+ metadata.gz: 40df02ef5553721b45c97fbcab9439acd9877248
4
+ data.tar.gz: 7400fe025f43fce5f77b373abb012eda3d39a0f2
5
5
  SHA512:
6
- metadata.gz: a52aaeac10cf59ac1fdf54e614c83bcd3cbf0703ce545e3b699cdbc146ac74705847dd9b4701e1ab5d771c0789f31dac790d23349de5de56b6f8fe9c716dd21c
7
- data.tar.gz: 01a9dcce612760fd26d7e3c3b83efff6cb683df5d9d394d73c81dd9430aab96a374d01303d3a7610064353b9bdbbdad13ffbd1e152e46a7adba33b1f60ae689b
6
+ metadata.gz: 57ef11ccd5519f117c77d8dbd1e949005a7582d07b0afabd50aae9e4d6df448e288ede1386cb6a1e1bdaaf1c22d9b78f10461a31a6be49b5bfcc068f7b56a964
7
+ data.tar.gz: 4a479da7c1e9559ab8d7532cb3220b818a42a9d477998664d3f6b983a61578248da24c8025da37f6dbe13f1f1cae001cc783833c07b0e70dc2355badb57204fd
data/CHANGELOG.md CHANGED
@@ -1,3 +1,7 @@
1
+ ## 0.4.0:
2
+
3
+ * Adding JSON and TSV output formatters
4
+
1
5
  ## 0.3.0:
2
6
 
3
7
  * Add ability to assign member to card on creation
data/README.md CHANGED
@@ -62,19 +62,39 @@ To see help for a specific command:
62
62
  -l, --list [LIST] List Of Card
63
63
  -n, --name [NAME] Name Of Card
64
64
 
65
+ ### Output Formatters
66
+
67
+ To allow for easy integration, the output of any command can format as either TSV (Tab
68
+ Seperated Values) or JSON.
69
+
70
+ **JSON Output**
71
+
72
+ ```json
73
+ # trello card list -o json
74
+ [{"name":"board1","id":"1234"},{"name":"board2","id":"4567"}]
75
+ ```
76
+
77
+ **TSV Output**
78
+
79
+ ```
80
+ # trello card list -o tsv
81
+ 1234 board1
82
+ 4567 board2
83
+ ```
84
+
65
85
  ## Examples
66
86
 
67
87
  List the boards available to the given credentials:
68
88
 
69
89
  trello board list
70
90
 
71
- List the lists for a given board id:
91
+ List the lists for a given board id and output as a TSV list:
72
92
 
73
- trello list list -b 123
93
+ trello list list -b 123 -o tsv
74
94
 
75
- Create a card:
95
+ Create a card and output as JSON:
76
96
 
77
- trello card create -b 123 -l 321 -n 'card name' -d 'card description'
97
+ trello card create -b 123 -l 321 -n 'card name' -d 'card description' -o json
78
98
 
79
99
  ## Contributing
80
100
 
@@ -10,12 +10,12 @@ module TrelloCli
10
10
  def run
11
11
  option_parser.parse!
12
12
 
13
- list_boards(@options[:closed]).each do |board|
14
- name = board.attributes[:name]
15
- id = board.attributes[:id]
16
- closed = board.attributes[:closed]
17
- puts "#{name} ( #{id} )"
13
+ data = list_boards(@options[:closed]).map do |b|
14
+ { name: b.attributes[:name],
15
+ id: b.attributes[:id] }
18
16
  end
17
+
18
+ puts TrelloCli::Formatters::BoardList.new(data).output @options[:output]
19
19
  end
20
20
 
21
21
  private
@@ -36,6 +36,10 @@ module TrelloCli
36
36
  opts.on("-c", "--closed", "Include closed board." ) do |o|
37
37
  @options[:closed] = o
38
38
  end
39
+
40
+ opts.on("-o", "--output [OUTPUT]", "Output format [json|tsv|legacy]." ) do |o|
41
+ @options[:output] = o
42
+ end
39
43
  end
40
44
  end
41
45
 
@@ -10,13 +10,12 @@ module TrelloCli
10
10
  def run
11
11
  option_parser.parse!
12
12
 
13
- card = create_card
14
- name = card.attributes[:name]
15
- description = card.attributes[:description]
13
+ card = create_card
14
+ data = { id: card.attributes[:id],
15
+ name: card.attributes[:name],
16
+ desc: card.attributes[:desc] }
16
17
 
17
- puts "Card Created."
18
- puts "Name : #{name}"
19
- puts "Description : #{description}"
18
+ puts TrelloCli::Formatters::CardCreate.new(data).output @options[:output]
20
19
  end
21
20
 
22
21
  private
@@ -35,7 +34,7 @@ module TrelloCli
35
34
  end
36
35
 
37
36
  opts.on("-d", "--description [DESCRIPTION]", "Description Of Card") do |d|
38
- @options[:description] = d
37
+ @options[:desc] = d
39
38
  end
40
39
 
41
40
  opts.on("-l", "--list [LIST]", "List Of Card") do |l|
@@ -49,6 +48,10 @@ module TrelloCli
49
48
  opts.on("-n", "--name [NAME]", "Name Of Card") do |n|
50
49
  @options[:name] = n
51
50
  end
51
+
52
+ opts.on("-o", "--output [OUTPUT]", "Output format [json|tsv|legacy]." ) do |o|
53
+ @options[:output] = o
54
+ end
52
55
  end
53
56
  end
54
57
 
@@ -10,11 +10,11 @@ module TrelloCli
10
10
  def run
11
11
  option_parser.parse!
12
12
 
13
- list_cards.each do |card|
14
- puts "| Name: #{card.name} ( #{card.id} )"
15
- puts "| Description: #{card.description}" if @options[:description]
16
- puts "|------------------------"
13
+ data = list_cards.map do |c|
14
+ { name: c.name, id: c.id, desc: c.desc }
17
15
  end
16
+
17
+ puts TrelloCli::Formatters::CardList.new(data).output(@options[:output])
18
18
  end
19
19
 
20
20
  private
@@ -35,8 +35,8 @@ module TrelloCli
35
35
  @options[:list_id] = l
36
36
  end
37
37
 
38
- opts.on("-d", "--description", "Include description." ) do |o|
39
- @options[:description] = o
38
+ opts.on("-o", "--output [OUTPUT]", "Output format [json|tsv|legacy]." ) do |o|
39
+ @options[:output] = o
40
40
  end
41
41
  end
42
42
  end
@@ -10,9 +10,12 @@ module TrelloCli
10
10
  def run
11
11
  option_parser.parse!
12
12
 
13
- move_card
13
+ result = move_card
14
+ data = { card_id: result["id"],
15
+ list_id: result["idList"],
16
+ success: (result["idList"] == @options[:list_id]) }
14
17
 
15
- puts "Card '#{@options[:card_id]}' moved to list '#{@options[:list_id]}'."
18
+ puts TrelloCli::Formatters::CardMove.new(data).output @options[:output]
16
19
  end
17
20
 
18
21
  private
@@ -33,6 +36,10 @@ module TrelloCli
33
36
  opts.on("-l", "--list_id [LIST_ID]", "New List ID") do |l|
34
37
  @options[:list_id] = l
35
38
  end
39
+
40
+ opts.on("-o", "--output [OUTPUT]", "Output format [json|tsv|legacy]." ) do |o|
41
+ @options[:output] = o
42
+ end
36
43
  end
37
44
  end
38
45
 
@@ -8,9 +8,6 @@ module TrelloCli
8
8
  def create
9
9
  ensure_credential_envs_set
10
10
  TrelloCli::CLI::Card::Create.new.run
11
- rescue TrelloCli::Errors => e
12
- puts "error: #{e}"
13
- exit 1
14
11
  end
15
12
 
16
13
  def list
@@ -10,12 +10,14 @@ module TrelloCli
10
10
  def run
11
11
  option_parser.parse!
12
12
 
13
- list_lists.each do |list|
14
- name = list.attributes[:name]
15
- id = list.attributes[:id]
16
-
17
- puts "#{name} ( #{id} )"
13
+ data = list_lists.map do |l|
14
+ {
15
+ id: l.attributes[:id],
16
+ name: l.attributes[:name]
17
+ }
18
18
  end
19
+
20
+ puts TrelloCli::Formatters::ListList.new(data).output @options[:output]
19
21
  end
20
22
 
21
23
  private
@@ -34,6 +36,9 @@ module TrelloCli
34
36
  @options[:board_id] = b
35
37
  end
36
38
 
39
+ opts.on("-o", "--output [OUTPUT]", "Output format [json|tsv|legacy]." ) do |o|
40
+ @options[:output] = o
41
+ end
37
42
  end
38
43
  end
39
44
 
@@ -16,6 +16,9 @@ module TrelloCli
16
16
  rescue OptionParser::InvalidOption, Trello::Error => e
17
17
  puts e.message
18
18
  exit 1
19
+ rescue TrelloCli::Errors => e
20
+ puts "error: #{e}"
21
+ exit 1
19
22
  rescue NoMethodError => e
20
23
  if e.message.match /SocketError/
21
24
  puts 'Please connect to the internet to access Trello'
@@ -0,0 +1,30 @@
1
+ require 'json'
2
+
3
+ module TrelloCli
4
+ module Formatters
5
+ class Base
6
+ def initialize(data)
7
+ @data = data
8
+ end
9
+
10
+ def output(format)
11
+ case format
12
+ when "json"
13
+ self.to_json
14
+ when "tsv"
15
+ self.to_tsv
16
+ else
17
+ self.to_legacy
18
+ end
19
+ end
20
+
21
+ def to_json
22
+ data.to_json
23
+ end
24
+
25
+ private
26
+
27
+ attr_reader :data
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,13 @@
1
+ module TrelloCli
2
+ module Formatters
3
+ class BoardList < Base
4
+ def to_legacy
5
+ data.map {|d| "#{d[:name]} ( #{d[:id]} )"}.join("\n")
6
+ end
7
+
8
+ def to_tsv
9
+ data.map {|d| "#{d[:id]}\t#{d[:name]}\n"}
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,15 @@
1
+ module TrelloCli
2
+ module Formatters
3
+ class CardCreate < Base
4
+ def to_legacy
5
+ msg = "Card Created.\n"
6
+ msg << "Name : #{data[:name]}\n"
7
+ msg << "Description : #{data[:desc]}\n"
8
+ end
9
+
10
+ def to_tsv
11
+ [data[:id], data[:name], data[:desc]].join("\t") + "\n"
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,19 @@
1
+ module TrelloCli
2
+ module Formatters
3
+ class CardList < Base
4
+ def to_legacy
5
+ data.map do |d|
6
+ msg = "| Name: #{d[:name]} ( #{d[:id]} )\n"
7
+ msg << "| Description: #{d[:desc]}\n" if d[:desc]
8
+ msg << "|------------------------\n"
9
+ end
10
+ end
11
+
12
+ def to_tsv
13
+ data.map do |d|
14
+ [d[:id], d[:name], d[:desc]].join("\t") + "\n"
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,17 @@
1
+ module TrelloCli
2
+ module Formatters
3
+ class CardMove < Base
4
+ def to_legacy
5
+ if data[:success]
6
+ "Card #{data[:card_id]} was succesfully moved to #{data[:list_id]}.\n"
7
+ else
8
+ "Error moving card."
9
+ end
10
+ end
11
+
12
+ def to_tsv
13
+ [data[:success], data[:card_id], data[:list_id]].join("\t") + "\n"
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,13 @@
1
+ module TrelloCli
2
+ module Formatters
3
+ class ListList < Base
4
+ def to_legacy
5
+ data.map {|d| "#{d[:name]} ( #{d[:id]} )"}.join("\n")
6
+ end
7
+
8
+ def to_tsv
9
+ data.map {|d| "#{d[:id]}\t#{d[:name]}\n"}
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,7 @@
1
+ require 'trello_cli/formatters/base'
2
+
3
+ require 'trello_cli/formatters/board_list'
4
+ require 'trello_cli/formatters/card_create'
5
+ require 'trello_cli/formatters/card_list'
6
+ require 'trello_cli/formatters/card_move'
7
+ require 'trello_cli/formatters/list_list'
@@ -24,11 +24,13 @@ module TrelloCli
24
24
  end
25
25
 
26
26
  card = Trello::Card.new 'name' => args[:name],
27
- 'desc' => args[:description],
27
+ 'desc' => args[:desc],
28
28
  'idBoard' => @board_id,
29
29
  'idList' => args[:list_id],
30
30
  'idMembers' => member_ids.join(",")
31
31
  card.save
32
+
33
+ card
32
34
  end
33
35
 
34
36
  private
@@ -11,7 +11,7 @@ module TrelloCli
11
11
  def move(args)
12
12
  card = Trello::Card.new 'id' => args[:card_id]
13
13
  list = Trello::List.find args[:list_id]
14
- card.move_to_list list
14
+ JSON.parse(card.move_to_list list)
15
15
  end
16
16
 
17
17
  end
@@ -1,3 +1,3 @@
1
1
  module TrelloCli
2
- VERSION = "0.3.0"
2
+ VERSION = "0.4.0"
3
3
  end
data/lib/trello_cli.rb CHANGED
@@ -1,5 +1,6 @@
1
1
  require "trello_cli/cli"
2
2
  require "trello_cli/errors"
3
+ require "trello_cli/formatters"
3
4
  require "trello_cli/requests"
4
5
  require "trello_cli/version"
5
6
 
@@ -22,8 +22,7 @@ describe TrelloCli::CLI::Board::List do
22
22
 
23
23
  it "should puts all boards" do
24
24
  subject.instance_variable_set(:@options, { closed: true })
25
- expect(subject).to receive(:puts).with("board1 ( 1 )")
26
- expect(subject).to receive(:puts).with("board2 ( 2 )")
25
+ expect(subject).to receive(:puts).with("board1 ( 1 )\nboard2 ( 2 )")
27
26
  subject.run
28
27
  end
29
28
 
@@ -0,0 +1,10 @@
1
+ require 'spec_helper'
2
+
3
+ describe TrelloCli::Formatters::Base do
4
+ let(:data) { ( { data: "test1234" } ) }
5
+ let(:subject) { TrelloCli::Formatters::Base.new data }
6
+ it "should create a formater and output the data as JSON" do
7
+ subject.output("json").should == data.to_json
8
+ end
9
+ end
10
+
@@ -10,13 +10,13 @@ describe TrelloCli::Requests::CreateCard do
10
10
  let(:member_struct) { Struct.new(:attributes) }
11
11
 
12
12
  before do
13
- @args = { :name => 'name',
14
- :description => 'desc',
15
- :board_id => '123',
16
- :list_id => '321',
17
- :members => ["user1", "user2"] }
13
+ @args = { :name => 'name',
14
+ :desc => 'desc',
15
+ :board_id => '123',
16
+ :list_id => '321',
17
+ :members => ["user1", "user2"] }
18
18
  @options = { 'name' => @args[:name],
19
- 'desc' => @args[:description],
19
+ 'desc' => @args[:desc],
20
20
  'idBoard' => @args[:board_id],
21
21
  'idList' => @args[:list_id],
22
22
  'idMembers' => "id1,id2" }
@@ -15,7 +15,8 @@ describe TrelloCli::Requests::MoveCard do
15
15
  Trello::List.should_receive(:find).
16
16
  with(args[:list_id]).
17
17
  and_return trello_list_mock
18
- trello_card_mock.should_receive(:move_to_list).with(trello_list_mock)
19
- subject.move args
18
+ trello_card_mock.should_receive(:move_to_list).with(trello_list_mock).
19
+ and_return({}.to_json)
20
+ subject.move(args).should == {} # JSON.parses results
20
21
  end
21
22
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: trello_cli
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brett Weaver
@@ -97,6 +97,13 @@ files:
97
97
  - lib/trello_cli/cli/list/list.rb
98
98
  - lib/trello_cli/cli/run.rb
99
99
  - lib/trello_cli/errors.rb
100
+ - lib/trello_cli/formatters.rb
101
+ - lib/trello_cli/formatters/base.rb
102
+ - lib/trello_cli/formatters/board_list.rb
103
+ - lib/trello_cli/formatters/card_create.rb
104
+ - lib/trello_cli/formatters/card_list.rb
105
+ - lib/trello_cli/formatters/card_move.rb
106
+ - lib/trello_cli/formatters/list_list.rb
100
107
  - lib/trello_cli/requests.rb
101
108
  - lib/trello_cli/requests/create_card.rb
102
109
  - lib/trello_cli/requests/list_boards.rb
@@ -109,6 +116,7 @@ files:
109
116
  - spec/cli/board/list_spec.rb
110
117
  - spec/cli/commands/shared_spec.rb
111
118
  - spec/cli/run_spec.rb
119
+ - spec/formatters/base_spec.rb
112
120
  - spec/requests/create_card_spec.rb
113
121
  - spec/requests/list_boards_spec.rb
114
122
  - spec/requests/list_card_spec.rb
@@ -145,6 +153,7 @@ test_files:
145
153
  - spec/cli/board/list_spec.rb
146
154
  - spec/cli/commands/shared_spec.rb
147
155
  - spec/cli/run_spec.rb
156
+ - spec/formatters/base_spec.rb
148
157
  - spec/requests/create_card_spec.rb
149
158
  - spec/requests/list_boards_spec.rb
150
159
  - spec/requests/list_card_spec.rb