trellor 0.1.4 → 1.0.0

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: 9416dda92ba09d6adadd675dd4bebbec2ddd111e
4
- data.tar.gz: 1d3339d837eaf9f56520dc64a6fcd664193ea5c0
3
+ metadata.gz: f6ad82b34a2184354858178d296725d4ea60340b
4
+ data.tar.gz: 525f1c518828eb15e59b929b0c7f5c5ef969903e
5
5
  SHA512:
6
- metadata.gz: 9788cb0a2ac04ea3552285a42b7712aab756a6e4d5182bb7703fb07dfed4a57992df6f83fc424d8083fa0060ea095d5d51c3b7de0125f97f943796cb03727e87
7
- data.tar.gz: 251e4fc9dca2f52be6e93e472327e33ff6e6d006ca8b2b87f975b05830a9e14615763778dfe4d0de89d8e88017b56a6aeae9865a51e1384477cdddc4c2044375
6
+ metadata.gz: 86aef3d5974ec8d1b93b366b012637d954570b509de2e3378b5ddd896e1d76caf51abc19e8a322e8584cd6f1265e588f01301e3eb8180caf07836099797bbcd8
7
+ data.tar.gz: 008fbf2dafe1ae825b9d11467370838c866a37800a5bfab7decd69896e0cdc5aa2f00643086c546e09ff0ea8a157db85461eaf5a72afe223a154d3021afb7471
data/bin/trellor CHANGED
@@ -4,5 +4,5 @@ require 'bundler/setup'
4
4
  require 'trellor'
5
5
  require 'cli'
6
6
 
7
- Trellor::Cli.parse(*ARGV)
7
+ Trellor::Cli.parse
8
8
 
data/lib/cli.rb CHANGED
@@ -1,11 +1,76 @@
1
+ require 'trollop'
2
+ require 'pathname'
3
+
1
4
  module Trellor
2
5
  class Cli
3
- def self.parse(board_and_list=nil, card_name=nil, descript=nil)
4
- trellor = Trellor.new
5
- if board_and_list.nil?
6
+ def self.parse
7
+ @opts = Trollop::options do
8
+ banner "Usage: trellor [boardname [listname [cardname [description]]]]"
9
+ version "trellor #{VERSION}"
10
+ opt :cache, 'Cache (or re-cache)', short: '-c'
11
+ opt :verbose, 'Run verbosely', short: '-v'
12
+ end
13
+
14
+ if cache?
15
+ hash = save_all
16
+ p hash
17
+ end
18
+
19
+ process(*ARGV)
20
+ end
21
+
22
+ private
23
+
24
+ def self.trellor
25
+ unless @trellor
26
+ verbose_log('creating Trellor instance')
27
+ @trellor = Trellor.new
28
+ @trellor.be_verbose = true if @opts[:verbose]
29
+ end
30
+ @trellor
31
+ end
32
+
33
+ def self.homepath
34
+ Pathname.new(ENV['HOME'])
35
+ end
36
+ def self.filepath
37
+ homepath + '.config/.trellor'
38
+ end
39
+
40
+ def self.save_all
41
+ path = homepath + '.config'
42
+ path.mkdir unless path.directory?
43
+ hash = all
44
+ filepath.open('w') do |out|
45
+ out.puts JSON.pretty_generate(hash)
46
+ end
47
+ hash
48
+ end
49
+
50
+ def self.get_all
51
+ JSON.parse(filepath.read)
52
+ end
53
+
54
+ def self.all
55
+ verbose_log('downloading all boards and lists')
56
+ hash = {}
57
+ trellor.boards.each do |board|
58
+ verbose_log('downloading board', board.name)
59
+ lists = {}
60
+ board.lists.each{ |l| lists[l.name] = l.id }
61
+ hash[board.name] = { id: board.id, lists: lists }
62
+ end
63
+ hash
64
+ end
65
+
66
+ def self.process(board_name=nil, list_name=nil, card_name=nil, descript=nil)
67
+ verbose_log "board_name", board_name
68
+ verbose_log "list_name", list_name
69
+ verbose_log "card_name", card_name
70
+ if board_name.nil?
71
+ puts "Boards:", '-'*50
6
72
  trellor.boards.each{ |board| puts board.name }
7
73
  else
8
- board_name, list_name = board_and_list.split('.')
9
74
  if list_name.nil?
10
75
  board = trellor.board(board_name)
11
76
  puts "Board: #{board.name}", '-'*50
@@ -19,6 +84,14 @@ module Trellor
19
84
  end
20
85
  end
21
86
  end
87
+
88
+ def self.verbose_log(*args)
89
+ $stderr.puts(" ****** #{args.inspect}") if @opts[:verbose]
90
+ end
91
+
92
+ def self.cache?
93
+ @opts[:cache]
94
+ end
22
95
  end
23
96
  end
24
97
 
data/lib/trellor.rb CHANGED
@@ -5,36 +5,55 @@ require 'trello'
5
5
 
6
6
  module Trellor
7
7
  class Trellor
8
+ attr_accessor :be_verbose
9
+
8
10
  def client(key=ENV['TRELLOR_KEY'], token=ENV['TRELLOR_TOKEN'])
9
11
  @client ||= connect(key, token)
10
12
  end
11
13
 
12
14
  def connect(key=ENV['TRELLOR_KEY'], token=ENV['TRELLOR_TOKEN'])
15
+ verbose_log("connecting with", key, token)
13
16
  Trello::Client.new(
14
17
  :developer_public_key => key,
15
18
  :member_token => token
16
19
  )
17
20
  end
18
21
 
22
+ def verbose_log(*args)
23
+ $stderr.puts(" ****** #{args.inspect}") if be_verbose
24
+ end
25
+
19
26
  def user()
27
+ verbose_log('username', ENV['TRELLOR_USERNAME'])
20
28
  @user ||= client.find(:members, ENV['TRELLOR_USERNAME'])
21
29
  end
22
30
 
23
31
  def boards
24
- @boards ||= user.boards
32
+ verbose_log('getting boards') unless @boards
33
+ @boards ||= user.boards.select{ |b| !b.closed? }
34
+ end
35
+ def boards=(boards)
36
+ @boards = boards
25
37
  end
26
38
 
27
39
  def board(name)
40
+ boards # to get verbose log ordering correct
41
+ verbose_log('getting board', name)
42
+ name = name.downcase
28
43
  boards.detect{ |board| board.name.downcase.start_with?(name) }
29
44
  end
30
45
 
31
46
  def list(board_name, list_name)
32
- board(board_name).lists.detect do |list|
47
+ this_board = board(board_name)
48
+ verbose_log(' getting list', board_name, list_name)
49
+ list_name = list_name.downcase
50
+ this_board.lists.detect do |list|
33
51
  list.name.downcase.start_with?(list_name)
34
52
  end
35
53
  end
36
54
 
37
55
  def cards(board_name, list_name)
56
+ verbose_log(' getting cards for', board_name, list_name)
38
57
  list(board_name, list_name).cards
39
58
  end
40
59
 
@@ -1,3 +1,3 @@
1
1
  module Trellor
2
- VERSION = "0.1.4"
2
+ VERSION = "1.0.0"
3
3
  end
data/trellor.gemspec CHANGED
@@ -20,6 +20,7 @@ Gem::Specification.new do |spec|
20
20
  spec.require_paths = ["lib"]
21
21
 
22
22
  spec.add_dependency 'ruby-trello'
23
+ spec.add_dependency 'trollop'
23
24
 
24
25
  spec.add_development_dependency "bundler", "~> 1.10"
25
26
  spec.add_development_dependency "rake", "~> 10.0"
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: 0.1.4
4
+ version: 1.0.0
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-09-21 00:00:00.000000000 Z
11
+ date: 2015-09-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: ruby-trello
@@ -24,6 +24,20 @@ dependencies:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: trollop
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: bundler
29
43
  requirement: !ruby/object:Gem::Requirement
@@ -107,7 +121,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
107
121
  version: '0'
108
122
  requirements: []
109
123
  rubyforge_project:
110
- rubygems_version: 2.4.8
124
+ rubygems_version: 2.2.2
111
125
  signing_key:
112
126
  specification_version: 4
113
127
  summary: Gem to read and write to Trello, plus a terminal interface.