flight_plan_cli 0.0.2 → 0.0.3

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: 07a8b865c02bb70ab23fc4d67a94231d56262e7a
4
- data.tar.gz: 295dd1dd5913bf0c177c3787ca5be3d4d4ec3171
3
+ metadata.gz: 3f465340e3655c136c286394d08785286dc5a03c
4
+ data.tar.gz: a66e90ff1b79746a1020d765fd538c5d4a75251c
5
5
  SHA512:
6
- metadata.gz: c97160030691670dc418a72a8b33529a0f41c31b9bc8900e22afa825734573488a11445b203e5f882d2f8ac615a13f9e1ad3a5e3e38efbffece117fee1e16caf
7
- data.tar.gz: 60b8ccb077c31b036218e67a3b299a4bcb37a2a05b1c0b27d6e3896b9a96a3dab98be472c2f0dd1418807cff51f4d41791e8ebc4ea331730d6c00a0bd9819622
6
+ metadata.gz: dabbc10c50fdbe96f28558f8d1bbb193a608794fb5806ca23ed33993cdc291ab0458c349554ff66e62828062acf1298a11d21c70d2218d10327e9420ff9f9f8d
7
+ data.tar.gz: 7e28b3a682753678b0288029d6f810807a968217aaaf0e1c7eb62c853b9504e82ef76a233204c7e7810547152f80276317bf669fadddbc8262ecd2d783c149d3
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.2
1
+ 0.0.3
data/bin/fp CHANGED
@@ -1,7 +1,11 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- require 'flight_plan_cli'
3
+ require 'flight_plan_cli'
4
4
 
5
- puts "FlightPlan CLI version #{FlightPlanCli.version}" if ARGV.empty? || ARGV[0] == 'help'
5
+ if ARGV.empty? || ARGV[0] == 'help'
6
+ puts ''
7
+ puts "FlightPlan CLI version #{FlightPlanCli.version}"
8
+ puts ''
9
+ end
6
10
 
7
11
  FlightPlanCli::Initializer.start(ARGV)
@@ -2,7 +2,6 @@ require 'httparty'
2
2
 
3
3
  module FlightPlanCli
4
4
  class Api
5
- include HTTParty
6
5
  def initialize(url:, key:, secret:)
7
6
  @url = url
8
7
  @key = key
@@ -10,13 +9,14 @@ module FlightPlanCli
10
9
  end
11
10
 
12
11
  def board_tickets(board_id: nil, repo_id: nil, repo_url: nil, assignee_username: nil)
13
- params = {}
14
- params[:board_id] = board_id unless board_id.nil?
15
- params[:repo_id] = repo_id unless repo_id.nil?
16
- params[:repo_url] = repo_url unless repo_url.nil?
17
- params[:assignee_username] = assignee_username unless assignee_username.nil?
12
+ params = {
13
+ board_id: board_id,
14
+ repo_id: repo_id,
15
+ repo_url: repo_url,
16
+ assignee_username: assignee_username
17
+ }
18
18
 
19
- self.class.get("#{url}/board_tickets", query: params, headers: headers)
19
+ HTTParty.get( "#{url}/board_tickets.json", query: params, headers: headers)
20
20
  end
21
21
 
22
22
  private
@@ -24,6 +24,9 @@ module FlightPlanCli
24
24
  attr_reader :url, :key, :secret
25
25
 
26
26
  def headers
27
+ @headers = {
28
+ 'Authorization' => "Token token=\"#{key}:#{secret}\""
29
+ }
27
30
  end
28
31
  end
29
32
  end
@@ -1,10 +1,77 @@
1
1
  require 'thor'
2
+ require 'colorize'
2
3
 
3
4
  module FlightPlanCli
4
5
  class Initializer < Thor
6
+ YAML_FILE = '.flight_plan_cli.yml'.freeze
7
+
8
+ def initialize(*args)
9
+ parse_yaml
10
+ super
11
+ end
12
+
5
13
  desc 'ls', 'List open issues'
6
14
  def ls
7
- puts 'coming soon'
15
+ swimlanes = tickets_by_swimlane
16
+ default_swimlane_ids.each do |swimlane_id|
17
+ next unless swimlanes.key?(swimlane_id)
18
+
19
+ print_swimlane(swimlanes[swimlane_id])
20
+ end
21
+ rescue Errno::ECONNREFUSED, SocketError => e
22
+ # TODO: caching - low timeout (5s) then fallback to cache
23
+ puts "Network error - #{e.message}".red
24
+ end
25
+
26
+ private
27
+
28
+ attr_reader :board_id, :default_swimlane_ids
29
+ attr_reader :api_url, :api_key, :api_secret
30
+
31
+ def parse_yaml
32
+ unless File.exist?(YAML_FILE)
33
+ puts "Could not file #{YAML_FILE} file."
34
+ exit 1
35
+ end
36
+ config = YAML.load_file(YAML_FILE)
37
+
38
+ @board_id = config['board_id']
39
+ @default_swimlane_ids = config['ls']['default_swimlane_ids']
40
+
41
+ @api_url = config['api_url']
42
+ @api_key = config['api_key']
43
+ @api_secret = config['api_secret']
44
+ end
45
+
46
+ def print_swimlane(swimlane)
47
+ puts "#{swimlane['name']} (#{swimlane['tickets'].count})".green
48
+ swimlane['tickets'].each do |ticket|
49
+ puts "├── #{ticket['remote_number']} : #{ticket['remote_title']}".yellow
50
+ end
51
+ end
52
+
53
+ def tickets_by_swimlane
54
+ response = client.board_tickets(board_id: board_id)
55
+
56
+ board = response['board_tickets'].first['board']
57
+ swimlanes = {}
58
+ response['board_tickets'].each do |board_ticket|
59
+ swimlane = board_ticket['swimlane']
60
+ next unless default_swimlane_ids.include? swimlane['id']
61
+
62
+ swimlanes[swimlane['id']] ||= swimlane
63
+ swimlanes[swimlane['id']]['tickets'] ||= []
64
+ swimlanes[swimlane['id']]['tickets'] << board_ticket['ticket']
65
+ end
66
+ board['swimlanes'] = swimlanes
67
+ end
68
+
69
+ def client
70
+ @client ||= FlightPlanCli::Api.new(
71
+ url: api_url,
72
+ key: api_key,
73
+ secret: api_secret
74
+ )
8
75
  end
9
76
  end
10
77
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: flight_plan_cli
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - John Cleary
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-01-09 00:00:00.000000000 Z
11
+ date: 2018-01-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -66,6 +66,20 @@ dependencies:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
68
  version: 0.3.0
69
+ - !ruby/object:Gem::Dependency
70
+ name: rubocop
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: 0.52.1
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: 0.52.1
69
83
  - !ruby/object:Gem::Dependency
70
84
  name: version
71
85
  requirement: !ruby/object:Gem::Requirement
@@ -80,6 +94,20 @@ dependencies:
80
94
  - - "~>"
81
95
  - !ruby/object:Gem::Version
82
96
  version: 1.1.1
97
+ - !ruby/object:Gem::Dependency
98
+ name: webmock
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: 3.2.1
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: 3.2.1
83
111
  - !ruby/object:Gem::Dependency
84
112
  name: colorize
85
113
  requirement: !ruby/object:Gem::Requirement
@@ -162,7 +190,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
162
190
  requirements:
163
191
  - - ">="
164
192
  - !ruby/object:Gem::Version
165
- version: '2.0'
193
+ version: '2.3'
166
194
  required_rubygems_version: !ruby/object:Gem::Requirement
167
195
  requirements:
168
196
  - - ">="