flight_plan_cli 0.0.2 → 0.0.3

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: 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
  - - ">="