trellor 0.1.4 → 1.0.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: 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.