firespring_dev_commands 2.1.32 → 2.1.33.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: e53d630e0b731aace78af986b8c5a149f1a04c65d930c77648dc8ec66087235f
4
- data.tar.gz: a4de9e8c734f739a781cbd0679fd4be9ba91145a3d79e80e3196f029250d78c0
3
+ metadata.gz: c45c76d9855e9cdf1d7366ace69704734d74672fff36ca7f29fb067dbb20b9d1
4
+ data.tar.gz: 48846c3bda2a4bb1bc6da5572c2cbd3d1736c0348a04f092783b39d1f87e18c7
5
5
  SHA512:
6
- metadata.gz: 16e91f3a71cb49f923b6eb85541d188a6e0ddc718c4c72ba3157ffbcf484dfae874631c99ac9d2c5a3d4e11154c7ff0822f2b35da39630d878e344841bf61581
7
- data.tar.gz: 700b7b4734de54b66791892018b147ba93d48388112773bb1908c53d5555f9737c130a7c3cadfc632971a7b449da4f86ffbc995fe984882fbf39490a2edf6034
6
+ metadata.gz: ca56922554bce95dcccd9853c8395e887d7957e2c30480998ca1bb24739fab1aef9a6b83c9d12f3eff6f3800480b103e8d603ec88b11bf4c593a86153632ca5c
7
+ data.tar.gz: 3f509eb7bb98710a2cab435d4d05d75b6da1fda5b75d609a1988535e2a82af0ad6e49eec97a5d406b1e53a31d10be6732f4c6b1d5e070e829feeab335f33423d
data/README.md CHANGED
@@ -28,7 +28,7 @@ Dev::Template::Docker::Node::Application.new('foo')
28
28
  ```
29
29
  * If you run `rake -T` now, you should have base rake commands and application rake commands for an app called `foo`
30
30
 
31
- * (optional) Add AWS login template commands
31
+ * (optinoal) Add AWS login template commands
32
32
  ```
33
33
  # Configure AWS accounts and create tasks
34
34
  Dev::Aws::Account::configure do |c|
@@ -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
@@ -2,13 +2,7 @@ module Dev
2
2
  class TargetProcess
3
3
  # Class containing user information
4
4
  class User
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
5
+ attr_accessor :data, :id, :type, :name, :login
12
6
 
13
7
  def initialize(data)
14
8
  @data = data
@@ -16,12 +10,6 @@ module Dev
16
10
  @type = data['ResourceType']
17
11
  @name = data['FullName']
18
12
  @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))
25
13
  end
26
14
  end
27
15
  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?
76
75
  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?
88
87
  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?
100
99
  end
100
+ ary.each(&)
101
101
  end
102
102
  end
103
103
 
@@ -108,20 +108,8 @@ 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?
124
111
  end
112
+ ary.each(&)
125
113
  end
126
114
  end
127
115
 
@@ -144,11 +132,8 @@ module Dev
144
132
  parsed_response['Items'].each(&)
145
133
 
146
134
  while parsed_response['Next']
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)
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)
152
137
 
153
138
  parsed_response = JSON.parse(response.body)
154
139
  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.32'.freeze
9
+ VERSION = '2.1.33.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.32
4
+ version: 2.1.33.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-05-02 00:00:00.000000000 Z
11
+ date: 2024-04-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -122,20 +122,6 @@ dependencies:
122
122
  - - "~>"
123
123
  - !ruby/object:Gem::Version
124
124
  version: 1.208.0
125
- - !ruby/object:Gem::Dependency
126
- name: aws-sdk-route53
127
- requirement: !ruby/object:Gem::Requirement
128
- requirements:
129
- - - "~>"
130
- - !ruby/object:Gem::Version
131
- version: 1.87.0
132
- type: :runtime
133
- prerelease: false
134
- version_requirements: !ruby/object:Gem::Requirement
135
- requirements:
136
- - - "~>"
137
- - !ruby/object:Gem::Version
138
- version: 1.87.0
139
125
  - !ruby/object:Gem::Dependency
140
126
  name: aws-sdk-s3
141
127
  requirement: !ruby/object:Gem::Requirement
@@ -340,7 +326,6 @@ files:
340
326
  - lib/firespring_dev_commands/aws/login.rb
341
327
  - lib/firespring_dev_commands/aws/parameter.rb
342
328
  - lib/firespring_dev_commands/aws/profile.rb
343
- - lib/firespring_dev_commands/aws/route53.rb
344
329
  - lib/firespring_dev_commands/aws/s3.rb
345
330
  - lib/firespring_dev_commands/bloom_growth.rb
346
331
  - lib/firespring_dev_commands/bloom_growth/rock.rb
@@ -395,12 +380,10 @@ files:
395
380
  - lib/firespring_dev_commands/target_process/release.rb
396
381
  - lib/firespring_dev_commands/target_process/team.rb
397
382
  - lib/firespring_dev_commands/target_process/team_assignment.rb
398
- - lib/firespring_dev_commands/target_process/time.rb
399
383
  - lib/firespring_dev_commands/target_process/user.rb
400
384
  - lib/firespring_dev_commands/target_process/user_story.rb
401
385
  - lib/firespring_dev_commands/target_process/user_story_history.rb
402
386
  - lib/firespring_dev_commands/templates/aws.rb
403
- - lib/firespring_dev_commands/templates/aws/services/route53.rb
404
387
  - lib/firespring_dev_commands/templates/base_interface.rb
405
388
  - lib/firespring_dev_commands/templates/certificate.rb
406
389
  - lib/firespring_dev_commands/templates/ci.rb
@@ -429,9 +412,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
429
412
  version: '3.1'
430
413
  required_rubygems_version: !ruby/object:Gem::Requirement
431
414
  requirements:
432
- - - ">="
415
+ - - ">"
433
416
  - !ruby/object:Gem::Version
434
- version: '0'
417
+ version: 1.3.1
435
418
  requirements: []
436
419
  rubygems_version: 3.4.10
437
420
  signing_key:
@@ -1,107 +0,0 @@
1
- module Dev
2
- class Aws
3
- # Class for performing Route53 functions
4
- class Route53
5
- attr_reader :client
6
-
7
- def initialize(domains)
8
- @client = ::Aws::Route53::Client.new
9
- @domains = domains
10
- end
11
-
12
- private def zones
13
- if @domains.empty?
14
- all_zones
15
- else
16
- zones_by_domain_names(@domains)
17
- end
18
- end
19
-
20
- private def all_zones
21
- [].tap do |ary|
22
- Dev::Aws.each_page(client, :list_hosted_zones) do |response|
23
- response.hosted_zones&.each do |hosted_zone|
24
- ary << hosted_zone unless hosted_zone.config.private_zone
25
- end
26
- end
27
- end
28
- end
29
-
30
- private def zones_by_domain_names(domains)
31
- [].tap do |ary|
32
- domains.each do |domain_name|
33
- response = client.list_hosted_zones_by_name({dns_name: domain_name})
34
- target = response.hosted_zones.find { |it| it.name.chomp('.') == domain_name }
35
- raise "The #{domain_name} hosted zone not found." unless target
36
-
37
- ary << target
38
- end
39
- end
40
- end
41
-
42
- private def target_config_id(zone_id)
43
- client.list_query_logging_configs(
44
- hosted_zone_id: zone_id,
45
- max_results: '1'
46
- ).query_logging_configs&.first&.id
47
- end
48
-
49
- private def pretty_puts(output)
50
- # Find the maximum length of the keys
51
- max_key_length = output.keys.map(&:to_s).max_by(&:length).length
52
-
53
- output.each do |key, value|
54
- puts "#{key.to_s.ljust(max_key_length)}\t=>\t#{value}"
55
- end
56
- end
57
-
58
- def list_query_configs
59
- output = {}
60
- zones.each do |zone|
61
- target_config_id = target_config_id(zone.id)
62
-
63
- output[zone.name] = if target_config_id
64
- "Config\t=>\t#{target_config_id}".colorize(:green)
65
- else
66
- 'No query logging config assigned.'.colorize(:red)
67
- end
68
- end
69
-
70
- pretty_puts(output)
71
- end
72
-
73
- def activate_query_logging(log_group)
74
- output = {}
75
-
76
- zones.each do |zone|
77
- response = client.create_query_logging_config(
78
- hosted_zone_id: zone.id,
79
- cloud_watch_logs_log_group_arn: log_group
80
- )
81
- output[zone.id] = response.location
82
- rescue ::Aws::Route53::Errors::ServiceError => e
83
- raise "Error: #{e.message}" unless e.instance_of?(::Aws::Route53::Errors::QueryLoggingConfigAlreadyExists)
84
-
85
- output[zone.id] = e.message
86
- end
87
- pretty_puts(output)
88
- end
89
-
90
- def deactivate_query_logging
91
- output = {}
92
- zones.each do |zone|
93
- target_config_id = target_config_id(zone.id)
94
- if target_config_id
95
- client.delete_query_logging_config(
96
- id: target_config_id
97
- )
98
- output[zone.id] = 'Query logging config removed.'.colorize(:green)
99
- else
100
- output[zone.id] = 'No query logging config assigned.'.colorize(:red)
101
- end
102
- end
103
- pretty_puts(output)
104
- end
105
- end
106
- end
107
- end
@@ -1,32 +0,0 @@
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
@@ -1,106 +0,0 @@
1
- require_relative '../../base_interface'
2
-
3
- module Dev
4
- module Template
5
- class Aws
6
- module Services
7
- # Class contains rake templates for managing your AWS settings and logging in
8
- class Route53 < Dev::Template::BaseInterface
9
- # Create the rake task which ensures active credentials are present
10
- def create_ensure_credentials_task!
11
- # Have to set a local variable to be accessible inside of the instance_eval block
12
- exclude = @exclude
13
-
14
- DEV_COMMANDS_TOP_LEVEL.instance_eval do
15
- return if exclude.include?(:ensure_aws_credentials)
16
-
17
- task ensure_aws_credentials: %w(init) do
18
- raise 'AWS Credentials not found / expired' unless Dev::Aws::Credentials.new.active?
19
- end
20
- end
21
- end
22
-
23
- # Create the rake task for the hosted zone method
24
- def create_dns_logging_activate_task!
25
- # Have to set a local variable to be accessible inside of the instance_eval block
26
- exclude = @exclude
27
-
28
- DEV_COMMANDS_TOP_LEVEL.instance_eval do
29
- namespace :aws do
30
- return if exclude.include?(:dns_logging)
31
-
32
- namespace :hosted_zone do
33
- namespace :dns_logging do
34
- desc 'Activates query logging for all hosted zones by default.' \
35
- 'This command should be run from the account the hosted zone(s) reside.' \
36
- "\n\t(Required) Specify LOG_GROUP_ARN='arn:aws:logs:REGION:ACCOUNT_ID:' to specify the ARN of the target log group." \
37
- "\n\toptionally specify DOMAINS='foo.com,foobar.com' to specify the hosted zones to activate." \
38
- "\n\t\tComma delimited list."
39
- task activate: %w(ensure_aws_credentials) do
40
- route53 = Dev::Aws::Route53.new(ENV['DOMAINS'].to_s.strip.split(','))
41
- # Use user defined log group.
42
- log_group = ENV.fetch('LOG_GROUP_ARN', nil)
43
- raise 'The Hosted Zone Log Group ARN, LOG_GROUP_ARN, is required' unless log_group
44
-
45
- route53.activate_query_logging(log_group)
46
- end
47
- end
48
- end
49
- end
50
- end
51
- end
52
-
53
- # Create the rake task for the hosted zone method
54
- def create_dns_logging_deactivate_task!
55
- # Have to set a local variable to be accessible inside of the instance_eval block
56
- exclude = @exclude
57
-
58
- DEV_COMMANDS_TOP_LEVEL.instance_eval do
59
- namespace :aws do
60
- return if exclude.include?(:dns_logging)
61
-
62
- namespace :hosted_zone do
63
- namespace :dns_logging do
64
- desc 'Deactivates query logging for all hosted zones by default. ' \
65
- 'This command should be run from the account the hosted zone(s) reside.' \
66
- "\n\toptionally specify DOMAINS='foo.com,foobar.com' to specify the hosted zones to activate." \
67
- "\n\t\tComma delimited list."
68
- task deactivate: %w(ensure_aws_credentials) do
69
- route53 = Dev::Aws::Route53.new(ENV['DOMAINS'].to_s.strip.split(','))
70
- route53.deactivate_query_logging
71
- end
72
- end
73
- end
74
- end
75
- end
76
- end
77
-
78
- # Create the rake task for the hosted zone method
79
- def create_list_query_config_task!
80
- # Have to set a local variable to be accessible inside of the instance_eval block
81
- exclude = @exclude
82
-
83
- DEV_COMMANDS_TOP_LEVEL.instance_eval do
84
- namespace :aws do
85
- return if exclude.include?(:dns_logging)
86
-
87
- namespace :hosted_zone do
88
- namespace :dns_logging do
89
- desc 'Lists the current config for domain(s). ' \
90
- 'This command should be run from the account the hosted zone(s) reside.' \
91
- "\n\toptionally specify DOMAINS='foo.com,foobar.com' to specify the hosted zones to activate." \
92
- "\n\t\tComma delimited list."
93
- task list_query_configs: %w(ensure_aws_credentials) do
94
- route53 = Dev::Aws::Route53.new(ENV['DOMAINS'].to_s.strip.split(','))
95
- route53.list_query_configs
96
- end
97
- end
98
- end
99
- end
100
- end
101
- end
102
- end
103
- end
104
- end
105
- end
106
- end