trellor 2.0.3 → 2.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 85d97d017e9e202db49b8a9a4ec8ff05472fc3e0
4
- data.tar.gz: 7de26825b22aa66f3086d983802cf4186301048d
3
+ metadata.gz: eb73b614f294042859a8e4e29f7cd048e51cde34
4
+ data.tar.gz: 09f5a4d543b4879a05c83b22f9ce080cce4b98b1
5
5
  SHA512:
6
- metadata.gz: 737f9fc421e8d2af416001014b368d2288a6583f644177c2fbf7e71fa5b4d2e3fb326f39e294f98e2fbf1a8e8c0765f511ccd3860c8da8f3daf7c9dfeb724330
7
- data.tar.gz: 1ffb79c6a4f311dd524ebb1b8b30842d67927eb7fe59be2be436762704a437073a30fe201039e03c19b9da97cd3e14d7edfa13ee4b1ed484fc940228dd8ca6d8
6
+ metadata.gz: 56b997c347869890817f41e4b6f692d17ca787c32cb410a84bd0c1524fbcdac5153323b34037af76cd1caacc11f334d6210234b98e5435d426b8f1a247c70bc7
7
+ data.tar.gz: 7d99b990aff8f0cecc011c728fb4f845211c1b4e21f0436b24cb0e708ccd139c4fce95dddfa3a39a32fc225094f574fcf6e4dd5d35ce2bd6be348bd99972b74c
data/README.md CHANGED
@@ -28,6 +28,7 @@ Three environment variables need to be set: TRELLOR_KEY, TRELLOR_TOKEN,
28
28
  $ trellor to # prints all list names inside the first board with name
29
29
  # beginning with 'to' (case insensitive)
30
30
  # for example, this matches 'ToDo'
31
+ $ trellor 'to.*o' # regular expression search, would also print todo board.
31
32
  $ trellor to in # prints all card names in the list named 'in*' in board
32
33
  # named 'to*', e.g., matches 'ToDo.Inbox'
33
34
  # create a card:
@@ -42,6 +43,9 @@ Starting with version 2, a webapp is run in the background. Making the connectio
42
43
  Trello resulted in over half the time to run a command. The local webapp pays
43
44
  this cost only once.
44
45
 
46
+ Version 3 will be faster by using Trello's recently released webhooks. Plans
47
+ also include allowing offline usage.
48
+
45
49
 
46
50
  ## Development
47
51
 
@@ -49,9 +53,17 @@ After checking out the repo, run `bin/setup` to install dependencies. Then, run
49
53
 
50
54
  To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
51
55
 
56
+ ## Design
57
+
58
+ ### Class Diagram
59
+ ![Alt text](/docs/trellor.png?raw=true "Class Diagram")
60
+
61
+ ### Sequence Diagram
62
+ ![Alt text](/docs/trellor_seq_diag.png?raw=true "Sequence Diagram")
63
+
52
64
  ## Contributing
53
65
 
54
- Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/trellor.
66
+ Bug reports and pull requests are welcome on GitHub at https://github.com/brianmd/trellor.
55
67
 
56
68
 
57
69
  ## License
data/docs/trellor.png ADDED
Binary file
data/docs/trellor.txt ADDED
@@ -0,0 +1,92 @@
1
+ @startuml
2
+
3
+ class Cli {
4
+ archive
5
+ verbose?
6
+ cache
7
+ webapi
8
+ slowtrellor
9
+ ==
10
+ parse()
11
+ -- queries --
12
+ query_trellor()
13
+ -- private --
14
+ save_all()
15
+ get_all()
16
+ home()
17
+ filepath()
18
+ verbose_log()
19
+ }
20
+
21
+ class TrellorInterface {
22
+ verbose_log(*args)
23
+ -- queries --
24
+ board_names()
25
+ list_names(board_regex)
26
+ cart_names(board_regex,list_regex)
27
+ create_card(board,list,card,descript)
28
+ archive_card(board,list,card)
29
+ }
30
+
31
+ Cli *- TrellorInterface : trellor >
32
+
33
+ class Trellor {
34
+ self.singleton()
35
+ -- queries --
36
+ board_names()
37
+ list_names(board_regex)
38
+ cart_names(board_regex,list_regex)
39
+ create_card(board,list,card,descript)
40
+ archive_card(board,list,card)
41
+ -- private queries --
42
+ boards()
43
+ boards=(boards)
44
+ find_board(board_regex)
45
+ find_list(board_regex,list_regex)
46
+ cards(board_regex,list_regex)
47
+ find_card(board,list,card)
48
+ -- connecting --
49
+ client()
50
+ connect()
51
+ user()
52
+ }
53
+
54
+ class WebTrellor {
55
+ ensure_webapp_is_running()
56
+ run_webapp()
57
+ -- queries --
58
+ board_names()
59
+ list_names(board_regex)
60
+ cart_names(board_regex,list_regex)
61
+ create_card(board,list,card,descript)
62
+ archive_card(board,list,card)
63
+ -- private --
64
+ get_http(url,data,timeout,show_error?)
65
+ post_http(url,data,timeout,show_error?)
66
+ default_open_timeout()
67
+ default_read_timeout()
68
+ site()
69
+ port()
70
+ }
71
+
72
+ TrellorInterface <|-- Trellor
73
+ TrellorInterface <|-- WebTrellor
74
+
75
+
76
+ class Sinatra::Base
77
+
78
+ class TrellorWebapi {
79
+ -- GETs --
80
+ /version
81
+ /boards
82
+ -- POSTs --
83
+ /boards
84
+ -- error handling --
85
+ not_found()
86
+ error()
87
+ }
88
+
89
+ Sinatra::Base <|-- TrellorWebapi
90
+
91
+ @enduml
92
+
Binary file
@@ -0,0 +1,20 @@
1
+ @startuml
2
+
3
+ actor User
4
+
5
+ User -> Cli : board_regex
6
+ Cli -> WebTrellor : board_names\n (board_regex)
7
+ WebTrellor -> TrellorWebapi : get_http(/boards)\n {board_name:\n board_regex}
8
+ |||
9
+ TrellorWebapi -> Trellor : board_names\n (board_regex)
10
+ |||
11
+
12
+ == OR, with -s(low) flag, goes directly to trellor class ==
13
+
14
+ User -> Cli : board_regex
15
+ Cli -> Trellor : board_names\n (board_regex)
16
+ |||
17
+ note over TrellorWebapi: Runs sinatra \non localhost
18
+
19
+ @enduml
20
+
data/lib/cli.rb CHANGED
@@ -14,11 +14,13 @@ module Trellor
14
14
  opt :slowtrellor, 'Make own connection rather than using webapi', short: '-s'
15
15
  end
16
16
 
17
+ logger # sets the logger's progname
18
+
17
19
  if webapi?
18
20
  require_relative 'web_trellor'
19
21
  web = WebTrellor.new
20
- web.be_verbose = true if @opts[:verbose]
21
- web.ensure_webapp_is_running
22
+ # web.be_verbose = true if verbose?
23
+ web.ensure_webapp_is_running(false)
22
24
  exit 0
23
25
  end
24
26
 
@@ -27,7 +29,7 @@ module Trellor
27
29
  p hash
28
30
  end
29
31
 
30
- process(*ARGV)
32
+ query_trellor(*ARGV)
31
33
  end
32
34
 
33
35
  private
@@ -42,14 +44,18 @@ module Trellor
42
44
  verbose_log('using webapi')
43
45
  require_relative 'web_trellor'
44
46
  web = WebTrellor.new
45
- web.be_verbose = true if @opts[:verbose]
47
+ web.be_verbose = true if verbose?
46
48
  web.ensure_webapp_is_running
47
49
  web
48
50
  end
49
- @trellor.be_verbose = true if @opts[:verbose]
51
+ @trellor.be_verbose = true if verbose?
50
52
  end
51
53
  @trellor
52
54
  end
55
+
56
+ def self.verbose?
57
+ @opts[:verbose]
58
+ end
53
59
 
54
60
  def self.homepath
55
61
  Pathname.new(ENV['HOME'])
@@ -84,7 +90,7 @@ module Trellor
84
90
  hash
85
91
  end
86
92
 
87
- def self.process(board_name=nil, list_name=nil, card_name=nil, descript=nil)
93
+ def self.query_trellor(board_name=nil, list_name=nil, card_name=nil, descript=nil)
88
94
  verbose_log "board_name", board_name
89
95
  verbose_log "list_name", list_name
90
96
  verbose_log "card_name", card_name
@@ -107,7 +113,20 @@ module Trellor
107
113
  end
108
114
 
109
115
  def self.verbose_log(*args)
110
- $stderr.puts(" ****** #{args.inspect}") if @opts[:verbose]
116
+ logger.debug(" ****** #{args.inspect}")
117
+ end
118
+
119
+ def self.logger
120
+ unless @logger
121
+ @logger = Trellor.logger
122
+ @logger.progname = '[cli]'
123
+ if verbose?
124
+ @logger.level = Logger::DEBUG
125
+ else
126
+ @logger.level = Logger::WARN
127
+ end
128
+ end
129
+ @logger
111
130
  end
112
131
 
113
132
  def self.webapi?
data/lib/models.rb ADDED
@@ -0,0 +1,25 @@
1
+ require 'virtus'
2
+
3
+ module Trellor
4
+
5
+ class Base
6
+ include Virtus.model
7
+
8
+ attribute :id, String
9
+ attribute :name, String
10
+ # children is an ordered colleciton
11
+ attribute :children, Array[Base]
12
+ end
13
+
14
+ class Board < Base
15
+ end
16
+
17
+ class List < Base
18
+ end
19
+
20
+ class Card < Base
21
+ attribute :description, String
22
+ end
23
+
24
+ end
25
+
data/lib/trellor.rb CHANGED
@@ -1,5 +1,7 @@
1
1
  # TODO: show card descriptions
2
2
 
3
+ require 'logger'
4
+
3
5
  require_relative "trellor/version"
4
6
  require 'trello'
5
7
 
@@ -15,40 +17,44 @@ module Trellor
15
17
  @singleton
16
18
  end
17
19
 
18
- def client(key=ENV['TRELLOR_KEY'], token=ENV['TRELLOR_TOKEN'])
19
- @client ||= connect(key, token)
20
+ def self.logger
21
+ unless @logger
22
+ file = File.new(logger_filename.to_s, 'a')
23
+ # webapi wasn't logging to the file until it was killed.
24
+ # this causes the logger to flush immediately
25
+ file.sync = true
26
+ @logger = Logger.new file
27
+ end
28
+ @logger
20
29
  end
21
30
 
22
- def connect(key=ENV['TRELLOR_KEY'], token=ENV['TRELLOR_TOKEN'])
23
- verbose_log("connecting with", key, token)
24
- Trello::Client.new(
25
- :developer_public_key => key,
26
- :member_token => token
27
- )
31
+ def self.logger_filename
32
+ dirpath = Pathname.new(ENV['HOME']) + '.config/trellor'
33
+ dirpath.mkdir unless dirpath.directory?
34
+ filename = 'log'
35
+ dirpath + filename
28
36
  end
29
37
 
30
- def verbose_log(*args)
31
- $stderr.puts(" ****** #{args.inspect}") if be_verbose
38
+ def logger
39
+ self.class.logger
32
40
  end
33
41
 
34
- def user()
35
- verbose_log('username', ENV['TRELLOR_USERNAME'])
36
- @user ||= client.find(:members, ENV['TRELLOR_USERNAME'])
37
- end
42
+
43
+ ############## trellor interface queries ###############
38
44
 
39
45
  def board_names
40
46
  boards.collect{ |board| board.name }.sort_by{|name| name.downcase}
41
47
  end
42
48
  def list_names(board_name)
43
- board(board_name).lists.collect{ |list| list.name }.sort_by{|name| name.downcase}
49
+ find_board(board_name).lists.collect{ |list| list.name }.sort_by{|name| name.downcase}
44
50
  end
45
51
  def card_names(board_name, list_name)
46
- list(board_name, list_name).cards.collect{ |card| card.name }
52
+ find_list(board_name, list_name).cards.collect{ |card| card.name }
47
53
  end
48
54
  def create_card(board_name, list_name, name, descript=nil)
49
55
  card = Trello::Card.new
50
56
  card.client = client
51
- card.list_id = list(board_name, list_name).id
57
+ card.list_id = find_list(board_name, list_name).id
52
58
  card.name = name
53
59
  card.desc = descript if descript
54
60
  card.save
@@ -59,8 +65,7 @@ module Trellor
59
65
  end
60
66
 
61
67
 
62
-
63
-
68
+ ################ private queries #################
64
69
 
65
70
  def boards
66
71
  verbose_log('getting boards') unless @boards
@@ -70,31 +75,59 @@ module Trellor
70
75
  @boards = boards
71
76
  end
72
77
 
73
- def board(name)
78
+ def find_board(name)
74
79
  boards # to get verbose log ordering correct
75
80
  verbose_log('getting board', name)
76
81
  name = Regexp.new(name, Regexp::IGNORECASE)
77
- boards.detect{ |board| name.match(board.name) }
82
+ boards.find{ |board| name.match(board.name) }
78
83
  end
79
84
 
80
- def list(board_name, list_name)
81
- this_board = board(board_name)
85
+ def find_list(board_name, list_name)
86
+ this_board = find_board(board_name)
82
87
  verbose_log(' getting list', board_name, list_name)
83
88
  name = Regexp.new(list_name, Regexp::IGNORECASE)
84
- this_board.lists.detect{ |list| name.match(list.name) }
89
+ this_board.lists.find{ |list| name.match(list.name) }
85
90
  end
86
91
 
87
92
  def cards(board_name, list_name)
88
93
  verbose_log(' getting cards for', board_name, list_name)
89
- list(board_name, list_name).cards
94
+ find_list(board_name, list_name).cards
90
95
  end
91
96
 
92
97
  def find_card(board_name, list_name, card_name)
93
- card_name = card_name.downcase
94
- list(board_name, list_name).cards.detect do |card|
95
- card.name.downcase.start_with?(card_name)
96
- end
98
+ this_list = find_list(board_name, list_name)
99
+ verbose_log(' getting card', board_name, list_name, card_name)
100
+ name = Regexp.new(card_name, Regexp::IGNORECASE)
101
+ this_list.cards.find{ |card| name.match(card.name) }
102
+ end
103
+
104
+ private
105
+
106
+
107
+ ############ connecting ###############
108
+
109
+ def client(key=ENV['TRELLOR_KEY'], token=ENV['TRELLOR_TOKEN'])
110
+ @client ||= connect(key, token)
111
+ end
112
+
113
+ def connect(key=ENV['TRELLOR_KEY'], token=ENV['TRELLOR_TOKEN'])
114
+ verbose_log("connecting with", key, token)
115
+ Trello::Client.new(
116
+ :developer_public_key => key,
117
+ :member_token => token
118
+ )
119
+ end
120
+
121
+ def verbose_log(*args)
122
+ logger.error(" ****** #{args.inspect}") if be_verbose
97
123
  end
124
+
125
+ def user()
126
+ verbose_log('username', ENV['TRELLOR_USERNAME'])
127
+ @user ||= client.find(:members, ENV['TRELLOR_USERNAME'])
128
+ end
129
+
130
+
98
131
  end
99
132
  end
100
133
 
@@ -1,3 +1,3 @@
1
1
  module Trellor
2
- VERSION = "2.0.3"
2
+ VERSION = "2.0.4"
3
3
  end
data/lib/web_trellor.rb CHANGED
@@ -6,24 +6,31 @@ require 'pathname'
6
6
  require 'addressable/uri'
7
7
  require_relative "trellor/version"
8
8
 
9
+ # this is loaded just for logger.
10
+ # TODO: move logger to separate file.
11
+ require_relative 'trellor'
12
+
9
13
  module Trellor
10
14
  class WebTrellor
11
- attr_accessor :be_verbose
12
-
13
- def ensure_webapp_is_running
15
+ def ensure_webapp_is_running(fork=true)
14
16
  v = get_version
15
- $stderr.puts "Warning: this version is #{VERSION} but the webapp version is #{v}. You may want to kill the older webapp." unless VERSION == v
17
+ $stderr.puts "Warning: this version is #{VERSION} but the webapp version is #{v}. You may want to kill the older webapp." unless (!v or (v==VERSION))
16
18
  fail unless v
17
19
  rescue
18
20
  puts "The background webapp wasn't running. Will run it now."
19
21
  verbose_log "The background webapp wasn't running. Will run it now."
20
- run_webapp
22
+ run_webapp(fork)
21
23
  end
22
24
 
23
- def run_webapp
25
+ def run_webapp(fork)
24
26
  path = Pathname.new(__FILE__).parent.parent
25
27
  cmd = "cd '#{path}' && ruby lib/webapi.rb &> /dev/null"
26
28
  verbose_log cmd
29
+ unless fork
30
+ $stderr.puts 'running ...'
31
+ exec cmd
32
+ exit 0
33
+ end
27
34
  job = fork do
28
35
  exec cmd
29
36
  end
@@ -44,8 +51,41 @@ module Trellor
44
51
  nil
45
52
  end
46
53
 
54
+
55
+ ############## trellor interface queries ###############
56
+
57
+ def board_names
58
+ verbose_log('getting boards') unless @boards
59
+ @boards = JSON.parse(get_http('/boards').body)
60
+ end
61
+
62
+ def list_names(board_name)
63
+ JSON.parse(get_http("/boards", {board_name: board_name}).body)
64
+ end
65
+
66
+ def card_names(board_name, list_name)
67
+ body = get_http("/boards", {board_name: board_name, list_name: list_name}).body
68
+ JSON.parse(body)
69
+ end
70
+
71
+ def create_card(board_name, list_name, name, descript=nil)
72
+ data = {board_name: board_name, list_name: list_name, card_name: name, descript: descript}
73
+ JSON.parse(post_http('/boards', data).body)
74
+ end
75
+
76
+ def archive_card(board_name, list_name, name)
77
+ data = {archive: true, board_name: board_name, list_name: list_name, card_name: name}
78
+ JSON.parse(post_http('/boards', data).body)
79
+ end
80
+
81
+ private
82
+
83
+
84
+ ################# private ################
85
+
47
86
  def get_http(url, data=nil, timeout=nil, show_error=true)
48
87
  uri = Addressable::URI.parse("#{site}#{url}")
88
+ verbose_log('get_http', uri, data)
49
89
  http = Net::HTTP.new uri.host, uri.port
50
90
  http.open_timeout = default_open_timeout
51
91
  http.read_timeout = timeout || default_read_timeout
@@ -60,12 +100,9 @@ module Trellor
60
100
  raise e
61
101
  end
62
102
 
63
- def default_open_timeout
64
- 60
65
- end
66
-
67
- def post_http(url, data, timeout=nil)
103
+ def post_http(url, data, timeout=nil, show_error=true)
68
104
  uri = URI("#{site}#{url}")
105
+ verbose_log('post_http', uri, data)
69
106
  http = Net::HTTP.new uri.host, uri.port
70
107
  http.open_timeout = default_open_timeout
71
108
  http.read_timeout = timeout || default_read_timeout
@@ -77,7 +114,7 @@ module Trellor
77
114
  verbose_log response.code, response.body
78
115
  response
79
116
  rescue Exception => e
80
- $stderr.puts "ERROR in post_http(#{url})"
117
+ $stderr.puts "ERROR in post_http(#{url})" if show_error
81
118
  raise e
82
119
  end
83
120
 
@@ -97,64 +134,7 @@ module Trellor
97
134
  end
98
135
 
99
136
  def verbose_log(*args)
100
- $stderr.puts(" ****** #{args.inspect}") if be_verbose
101
- end
102
-
103
- def user()
104
- verbose_log('username', ENV['TRELLOR_USERNAME'])
105
- @user ||= client.find(:members, ENV['TRELLOR_USERNAME'])
106
- end
107
-
108
- def board_names
109
- verbose_log('getting boards') unless @boards
110
- @boards = JSON.parse(get_http('/boards').body)
111
- #@boards ||= user.boards.select{ |b| !b.closed? }
112
- end
113
-
114
- def list_names(board_name)
115
- JSON.parse(get_http("/boards", {board_name: board_name}).body)
116
- end
117
-
118
- def card_names(board_name, list_name)
119
- JSON.parse(get_http("/boards", {board_name: board_name, list_name: list_name}).body)
120
- end
121
-
122
- def create_card(board_name, list_name, name, descript=nil)
123
- JSON.parse(post_http("/boards/#{board_name}/lists/#{list_name}/cards", {card_name: name, descript: descript}).body)
124
- end
125
-
126
- def archive_card(board_name, list_name, name)
127
- JSON.parse(post_http("/boards/#{board_name}/lists/#{list_name}/cards", {card_name: name, archive: true}).body)
128
- end
129
-
130
-
131
-
132
-
133
- def board(name)
134
- boards # to get verbose log ordering correct
135
- verbose_log('getting board', name)
136
- name = name.downcase
137
- boards.detect{ |board| board.name.downcase.start_with?(name) }
138
- end
139
-
140
- def list(board_name, list_name)
141
- this_board = board(board_name)
142
- verbose_log(' getting list', board_name, list_name)
143
- list_name = list_name.downcase
144
- this_board.lists.detect do |list|
145
- list.name.downcase.start_with?(list_name)
146
- end
147
- end
148
-
149
- def cards(board_name, list_name)
150
- verbose_log(' getting cards for', board_name, list_name)
151
- list(board_name, list_name).cards
152
- end
153
-
154
- def card(board_name, list_name, card_name)
155
- list(board_name, list_name).cards.detect do |card|
156
- card.name==card_name
157
- end
137
+ Trellor.logger.debug(" ****** #{args.inspect}")
158
138
  end
159
139
  end
160
140
  end
data/lib/webapi.rb CHANGED
@@ -1,9 +1,8 @@
1
1
  require 'sinatra'
2
- require 'json'
2
+ require 'yajl/json_gem'
3
3
  require_relative 'trellor/version'
4
4
  require_relative 'trellor'
5
5
 
6
-
7
6
  module Trellor
8
7
  class TrellorWebapi < Sinatra::Base
9
8
  # enable error handler even in development mode
@@ -28,9 +27,22 @@ not_found do
28
27
  end
29
28
 
30
29
  error do
31
- 'had an error'
30
+ # log = Logger.new(File.new('log','a'))
31
+ msg = 'Sorry there was a error: ' + env['sinatra.error'].message
32
+ logger.error msg
33
+ env['sinatra.error'].backtrace.each{|l| logger.error l}
34
+ msg
32
35
  end
33
36
 
37
+ helpers do
38
+ def logger
39
+ unless @logger
40
+ @logger = Trellor::Trellor.logger
41
+ @logger.progname = '[webapi]'
42
+ end
43
+ @logger
44
+ end
45
+ end
34
46
 
35
47
  def trellor
36
48
  Trellor::Trellor.singleton
@@ -42,7 +54,9 @@ end
42
54
 
43
55
  get '/boards' do
44
56
  if params[:list_name]
45
- cards = trellor.list(params[:board_name],params[:list_name]).cards.collect{ |card| card.name }
57
+ logger.info params.inspect
58
+ # cards = trellor.list_names(params[:board_name],params[:list_name]).cards.collect{ |card| card.name }
59
+ cards = trellor.card_names(params[:board_name],params[:list_name])
46
60
  cards.to_json
47
61
  elsif params[:board_name]
48
62
  lists = trellor.list_names(params[:board_name])
@@ -53,15 +67,29 @@ get '/boards' do
53
67
  end
54
68
  end
55
69
 
56
- post '/boards/:board_name/lists/:list_name/cards' do |board_name, list_name|
70
+ post '/boards' do
71
+ board_name = params['board_name']
72
+ list_name = params['list_name']
57
73
  if params['archive']
58
74
  trellor.archive_card(board_name, list_name, params['card_name'])
59
75
  else
60
76
  trellor.create_card(board_name, list_name, params['card_name'], params['descript'])
61
77
  end
62
78
 
63
- cards = trellor.list(board_name,list_name).cards.collect{ |c| c.name }
79
+ cards = trellor.card_names(board_name,list_name)
64
80
  cards.to_json
65
81
  params.to_json
66
82
  end
67
83
 
84
+ # post '/boards/:board_name/lists/:list_name/cards' do |board_name, list_name|
85
+ # if params['archive']
86
+ # trellor.archive_card(board_name, list_name, params['card_name'])
87
+ # else
88
+ # trellor.create_card(board_name, list_name, params['card_name'], params['descript'])
89
+ # end
90
+
91
+ # cards = trellor.list(board_name,list_name).cards.collect{ |c| c.name }
92
+ # cards.to_json
93
+ # params.to_json
94
+ # end
95
+
data/trellor.gemspec CHANGED
@@ -24,8 +24,14 @@ Gem::Specification.new do |spec|
24
24
  # for webapi.rb only. Wonder if there is a way to make it a dependency only
25
25
  # when it is used?
26
26
  spec.add_dependency 'sinatra'
27
+ spec.add_dependency 'virtus'
28
+ # spec.add_dependency 'yajl-ruby', require: 'yajl'
29
+ spec.add_dependency 'yajl-ruby'
27
30
 
28
31
  spec.add_development_dependency "bundler", "~> 1.10"
29
32
  spec.add_development_dependency "rake", "~> 10.0"
30
33
  spec.add_development_dependency "rspec"
34
+ spec.add_development_dependency "pry"
35
+ spec.add_development_dependency "pry-remote"
36
+ spec.add_development_dependency "pry-nav"
31
37
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: trellor
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.3
4
+ version: 2.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brian Murphy-Dye
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-10-10 00:00:00.000000000 Z
11
+ date: 2015-10-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: ruby-trello
@@ -52,6 +52,34 @@ dependencies:
52
52
  - - ">="
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: virtus
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: yajl-ruby
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
55
83
  - !ruby/object:Gem::Dependency
56
84
  name: bundler
57
85
  requirement: !ruby/object:Gem::Requirement
@@ -94,6 +122,48 @@ dependencies:
94
122
  - - ">="
95
123
  - !ruby/object:Gem::Version
96
124
  version: '0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: pry
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ">="
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ">="
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
139
+ - !ruby/object:Gem::Dependency
140
+ name: pry-remote
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - ">="
144
+ - !ruby/object:Gem::Version
145
+ version: '0'
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - ">="
151
+ - !ruby/object:Gem::Version
152
+ version: '0'
153
+ - !ruby/object:Gem::Dependency
154
+ name: pry-nav
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - ">="
158
+ - !ruby/object:Gem::Version
159
+ version: '0'
160
+ type: :development
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - ">="
165
+ - !ruby/object:Gem::Version
166
+ version: '0'
97
167
  description: ''
98
168
  email:
99
169
  - brian@murphydye.com
@@ -111,7 +181,12 @@ files:
111
181
  - bin/console
112
182
  - bin/setup
113
183
  - bin/trellor
184
+ - docs/trellor.png
185
+ - docs/trellor.txt
186
+ - docs/trellor_seq_diag.png
187
+ - docs/trellor_seq_diag.txt
114
188
  - lib/cli.rb
189
+ - lib/models.rb
115
190
  - lib/trellor.rb
116
191
  - lib/trellor/version.rb
117
192
  - lib/web_trellor.rb