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 +4 -4
- data/VERSION +1 -1
- data/bin/fp +6 -2
- data/lib/flight_plan_cli/api.rb +10 -7
- data/lib/flight_plan_cli/initializer.rb +68 -1
- metadata +31 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3f465340e3655c136c286394d08785286dc5a03c
|
4
|
+
data.tar.gz: a66e90ff1b79746a1020d765fd538c5d4a75251c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: dabbc10c50fdbe96f28558f8d1bbb193a608794fb5806ca23ed33993cdc291ab0458c349554ff66e62828062acf1298a11d21c70d2218d10327e9420ff9f9f8d
|
7
|
+
data.tar.gz: 7e28b3a682753678b0288029d6f810807a968217aaaf0e1c7eb62c853b9504e82ef76a233204c7e7810547152f80276317bf669fadddbc8262ecd2d783c149d3
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
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
|
-
|
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)
|
data/lib/flight_plan_cli/api.rb
CHANGED
@@ -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
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
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
|
-
|
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
|
-
|
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.
|
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-
|
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.
|
193
|
+
version: '2.3'
|
166
194
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
167
195
|
requirements:
|
168
196
|
- - ">="
|