firespring_dev_commands 2.1.33.pre.alpha.1 → 2.1.34.pre.alpha.1

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
  SHA256:
3
- metadata.gz: c45c76d9855e9cdf1d7366ace69704734d74672fff36ca7f29fb067dbb20b9d1
4
- data.tar.gz: 48846c3bda2a4bb1bc6da5572c2cbd3d1736c0348a04f092783b39d1f87e18c7
3
+ metadata.gz: 1251774a637562a4014393d263701a1317968a8dba1bcbe28a0de22bdaf2a511
4
+ data.tar.gz: ff05d96253f15ce2f2929d56458b246898805668987157f1afcaac26c5bab506
5
5
  SHA512:
6
- metadata.gz: ca56922554bce95dcccd9853c8395e887d7957e2c30480998ca1bb24739fab1aef9a6b83c9d12f3eff6f3800480b103e8d603ec88b11bf4c593a86153632ca5c
7
- data.tar.gz: 3f509eb7bb98710a2cab435d4d05d75b6da1fda5b75d609a1988535e2a82af0ad6e49eec97a5d406b1e53a31d10be6732f4c6b1d5e070e829feeab335f33423d
6
+ metadata.gz: a26483191cfb4cd36b32e21df7bd0f8936859984de7cde12cb95f65a8d6131529d1f67800c00f681f6e4632c9b988e5929e6212349d8075d4dd276cb312faa93
7
+ data.tar.gz: a135d944fa18bef746dfd1f7be0123ed4971affea00189878425b184dcc00669bd284fd342dc22a8cd578724750a6f541b0048b1f6cfe4c5a93a42fe9be02f5d
@@ -72,19 +72,23 @@ module Dev
72
72
  # Queries and returns product versions for rds instance products
73
73
  def rds_instance_products
74
74
  aws_engines = %w(mysql postgresql)
75
+ aws_sqlserver_engines = %w(sqlserver-ee sqlserver-ex sqlserver-se sqlserver-web)
75
76
  client = ::Aws::RDS::Client.new
76
77
 
77
78
  [].tap do |ary|
78
79
  Dev::Aws.each_page(client, :describe_db_instances) do |response|
79
80
  response.db_instances.each do |instance|
80
81
  name = instance.db_instance_identifier
81
- engine = instance.engine.tr('aurora-', '')
82
+ engine = instance.engine.gsub('aurora-', '')
82
83
  product = if aws_engines.include?(engine)
83
84
  "amazon-rds-#{engine}"
85
+ elsif aws_sqlserver_engines.include?(engine)
86
+ 'mssqlserver'
84
87
  else
85
88
  engine
86
89
  end
87
90
  version = instance.engine_version.reverse.split('.')[-2..].join('.').reverse
91
+ version.chop! if version.end_with?('.00')
88
92
  ary << Dev::EndOfLife::ProductVersion.new(product, version, name)
89
93
  end
90
94
  end
@@ -94,19 +98,23 @@ module Dev
94
98
  # Queries and returns product versions for rds cluster products
95
99
  def rds_cluster_products
96
100
  aws_engines = %w(mysql postgresql)
101
+ aws_sqlserver_engines = %w(sqlserver-ee sqlserver-ex sqlserver-se sqlserver-web)
97
102
  client = ::Aws::RDS::Client.new
98
103
 
99
104
  [].tap do |ary|
100
105
  Dev::Aws.each_page(client, :describe_db_clusters) do |response|
101
106
  response.db_clusters.each do |cluster|
102
107
  name = cluster.db_cluster_identifier
103
- engine = cluster.engine.tr('aurora-', '')
108
+ engine = cluster.engine.gsub('aurora-', '')
104
109
  product = if aws_engines.include?(engine)
105
110
  "amazon-rds-#{engine}"
111
+ elsif aws_sqlserver_engines.include?(engine)
112
+ 'mssqlserver'
106
113
  else
107
114
  engine
108
115
  end
109
116
  version = cluster.engine_version.reverse.split('.')[-2..].join('.').reverse
117
+ version.chop! if version.end_with?('.00')
110
118
  ary << Dev::EndOfLife::ProductVersion.new(product, version, name)
111
119
  end
112
120
  end
@@ -24,7 +24,7 @@ module Dev
24
24
  def parse_time(string)
25
25
  return nil unless string && !string.empty?
26
26
 
27
- Time.at(string.slice(6, 10).to_i)
27
+ ::Time.at(string.slice(6, 10).to_i)
28
28
  end
29
29
  end
30
30
  end
@@ -24,7 +24,7 @@ module Dev
24
24
  def parse_time(string)
25
25
  return nil unless string && !string.empty?
26
26
 
27
- Time.at(string.slice(6, 10).to_i)
27
+ ::Time.at(string.slice(6, 10).to_i)
28
28
  end
29
29
 
30
30
  # Calculate the cycle time as the amount of time the story was open
@@ -0,0 +1,32 @@
1
+ module Dev
2
+ class TargetProcess
3
+ # The class to query time information from Target Process
4
+ class Time
5
+ # The resource type for the api endpoint
6
+ RESOURCE_TYPE = 'Time'.freeze
7
+
8
+ # The api path for time requests
9
+ PATH = '/Time'.freeze
10
+
11
+ attr_accessor :data, :id, :type, :description, :hours, :date, :story, :user
12
+
13
+ def initialize(data)
14
+ @data = data
15
+ @id = data['Id']
16
+ @type = data['ResourceType']
17
+ @description = data['Description']
18
+ @hours = data['Spent']
19
+ @date = parse_time(data['Date'])
20
+ @story = UserStory.new(data['Assignable']) if data['Assignable']
21
+ @user = User.new(data['User']) if data['User']
22
+ end
23
+
24
+ # Parse the dot net time representation into something that ruby can use
25
+ def parse_time(string)
26
+ return nil unless string && !string.empty?
27
+
28
+ ::Time.at(string.slice(6, 10).to_i)
29
+ end
30
+ end
31
+ end
32
+ end
@@ -2,7 +2,13 @@ module Dev
2
2
  class TargetProcess
3
3
  # Class containing user information
4
4
  class User
5
- attr_accessor :data, :id, :type, :name, :login
5
+ # The resource type for the api endpoint
6
+ RESOURCE_TYPE = 'User'.freeze
7
+
8
+ # The api path for user requests
9
+ PATH = '/User'.freeze
10
+
11
+ attr_accessor :data, :id, :type, :name, :login, :email
6
12
 
7
13
  def initialize(data)
8
14
  @data = data
@@ -10,6 +16,12 @@ module Dev
10
16
  @type = data['ResourceType']
11
17
  @name = data['FullName']
12
18
  @login = data['Login']
19
+ @email = data['Email']
20
+ end
21
+
22
+ # Get the user with the given id and return that object
23
+ def self.get(id)
24
+ new(TargetProcess.new.get("#{User::PATH}/#{id}", Query.new))
13
25
  end
14
26
  end
15
27
  end
@@ -37,7 +37,7 @@ module Dev
37
37
  def parse_time(string)
38
38
  return nil unless string && !string.empty?
39
39
 
40
- Time.at(string.slice(6, 10).to_i)
40
+ ::Time.at(string.slice(6, 10).to_i)
41
41
  end
42
42
 
43
43
  # Calculate the cycle time as the amount of time the story was open
@@ -38,7 +38,7 @@ module Dev
38
38
  def parse_time(string)
39
39
  return nil unless string && !string.empty?
40
40
 
41
- Time.at(string.slice(6, 10).to_i)
41
+ ::Time.at(string.slice(6, 10).to_i)
42
42
  end
43
43
  end
44
44
  end
@@ -72,8 +72,8 @@ module Dev
72
72
  [].tap do |ary|
73
73
  get(Release::PATH, query) do |result|
74
74
  ary << Release.new(result)
75
+ yield ary.last if block_given?
75
76
  end
76
- ary.each(&)
77
77
  end
78
78
  end
79
79
 
@@ -84,8 +84,8 @@ module Dev
84
84
  [].tap do |ary|
85
85
  get(UserStory::PATH, query) do |result|
86
86
  ary << UserStory.new(result)
87
+ yield ary.last if block_given?
87
88
  end
88
- ary.each(&)
89
89
  end
90
90
  end
91
91
 
@@ -96,8 +96,8 @@ module Dev
96
96
  [].tap do |ary|
97
97
  get(UserStoryHistory::PATH, query) do |result|
98
98
  ary << UserStoryHistory.new(result)
99
+ yield ary.last if block_given?
99
100
  end
100
- ary.each(&)
101
101
  end
102
102
  end
103
103
 
@@ -108,8 +108,20 @@ module Dev
108
108
  [].tap do |ary|
109
109
  get(TeamAssignment::PATH, query) do |result|
110
110
  ary << TeamAssignment.new(result)
111
+ yield ary.last if block_given?
112
+ end
113
+ end
114
+ end
115
+
116
+ # Perform a query to the time api path
117
+ # Call the given block (if present) with each time
118
+ # Return all times
119
+ def times(query, &)
120
+ [].tap do |ary|
121
+ get(Time::PATH, query) do |result|
122
+ ary << Time.new(result)
123
+ yield ary.last if block_given?
111
124
  end
112
- ary.each(&)
113
125
  end
114
126
  end
115
127
 
@@ -132,8 +144,11 @@ module Dev
132
144
  parsed_response['Items'].each(&)
133
145
 
134
146
  while parsed_response['Next']
135
- response = client.request_get(parsed_response['Next'], headers)
136
- raise "Error querying #{parsed_response['Next']} [#{query_string}]: #{response.inspect}" unless response.response.is_a?(Net::HTTPSuccess)
147
+ next_query_string = URI(parsed_response['Next']).query
148
+ next_url = "/api/v1/#{path}"
149
+ next_url << "?#{next_query_string}" unless query_string.empty?
150
+ response = client.request_get(next_url, headers)
151
+ raise "Error querying #{next_url} [#{next_query_string}]: #{response.inspect}" unless response.response.is_a?(Net::HTTPSuccess)
137
152
 
138
153
  parsed_response = JSON.parse(response.body)
139
154
  return parsed_response unless parsed_response.key?('Items')
@@ -6,6 +6,6 @@ module Dev
6
6
  # Use 'v.v.v.pre.alpha.v' for pre-release vesions
7
7
  # Use 'v.v.v.beta.v for beta versions
8
8
  # Use semantic versioning for any releases (https://semver.org/)
9
- VERSION = '2.1.33.pre.alpha.1'.freeze
9
+ VERSION = '2.1.34.pre.alpha.1'.freeze
10
10
  end
11
11
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: firespring_dev_commands
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.33.pre.alpha.1
4
+ version: 2.1.34.pre.alpha.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Firespring
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-04-18 00:00:00.000000000 Z
11
+ date: 2024-04-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -380,6 +380,7 @@ files:
380
380
  - lib/firespring_dev_commands/target_process/release.rb
381
381
  - lib/firespring_dev_commands/target_process/team.rb
382
382
  - lib/firespring_dev_commands/target_process/team_assignment.rb
383
+ - lib/firespring_dev_commands/target_process/time.rb
383
384
  - lib/firespring_dev_commands/target_process/user.rb
384
385
  - lib/firespring_dev_commands/target_process/user_story.rb
385
386
  - lib/firespring_dev_commands/target_process/user_story_history.rb