exercism-config 0.89.0 → 0.91.0
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/lib/exercism-config.rb +21 -91
- data/lib/exercism.rb +78 -0
- data/lib/exercism_config/version.rb +1 -1
- data/settings/local.yml +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9d253cd963bd2cd1762d7672d3deefb8f8e85a716e1bf70e8339d2b730842381
|
4
|
+
data.tar.gz: c788cd77a39a0beba4ea63841b284856681d2b89d69ca23cdd9fa3c5f9131727
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f44aae054b096604b1746ab4733da45e9697d004f3f4ca788d8ff404f1f8524fb4691e9f41882ca875b510413c9940d0e3d9af7abc8986f9dd021e5e07f4dfc2
|
7
|
+
data.tar.gz: eace4c0f2bf8cd2007ea618e38bc9a41d8b5b3de90042eae70392385b8e6106fee2a269b73ea1d792e4607424a295aa092cc376a4a5fbabb9857d9454574f16d
|
data/lib/exercism-config.rb
CHANGED
@@ -1,98 +1,28 @@
|
|
1
|
+
require "zeitwerk"
|
2
|
+
loader = Zeitwerk::Loader.for_gem(warn_on_extra_files: false)
|
3
|
+
loader.inflector.inflect("exercism-config" => "ExercismConfig")
|
4
|
+
loader.inflector.inflect("version" => "VERSION")
|
5
|
+
loader.setup
|
6
|
+
|
1
7
|
require 'aws-sdk-dynamodb'
|
2
8
|
require 'aws-sdk-secretsmanager'
|
3
9
|
require 'mandate'
|
4
10
|
require 'ostruct'
|
5
11
|
require 'json'
|
6
12
|
|
7
|
-
require_relative 'exercism_config/environment'
|
8
|
-
require_relative 'exercism_config/determine_environment'
|
9
|
-
require_relative 'exercism_config/generate_aws_settings'
|
10
|
-
require_relative 'exercism_config/setup_dynamodb_client'
|
11
|
-
require_relative 'exercism_config/setup_ecr_client'
|
12
|
-
require_relative 'exercism_config/setup_s3_client'
|
13
|
-
require_relative 'exercism_config/retrieve_config'
|
14
|
-
require_relative 'exercism_config/retrieve_secrets'
|
15
|
-
|
16
|
-
require_relative 'exercism_config/version'
|
17
|
-
require_relative 'exercism/config'
|
18
|
-
require_relative 'exercism/secrets'
|
19
|
-
require_relative 'exercism/tooling_job'
|
20
|
-
|
21
|
-
module
|
22
|
-
class ConfigError < RuntimeError; end
|
23
|
-
|
24
|
-
def self.env
|
25
|
-
@env ||= ExercismConfig::DetermineEnvironment.()
|
26
|
-
end
|
27
|
-
|
28
|
-
def self.config
|
29
|
-
@config ||= ExercismConfig::RetrieveConfig.()
|
30
|
-
end
|
31
|
-
|
32
|
-
def self.secrets
|
33
|
-
@secrets ||= ExercismConfig::RetrieveSecrets.()
|
34
|
-
end
|
35
|
-
|
36
|
-
def self.redis_tooling_client
|
37
|
-
Redis.new(url: config.tooling_redis_url)
|
38
|
-
end
|
39
|
-
|
40
|
-
def self.dynamodb_client
|
41
|
-
Aws::DynamoDB::Client.new(ExercismConfig::GenerateAwsSettings.())
|
42
|
-
end
|
43
|
-
|
44
|
-
def self.s3_client
|
45
|
-
require 'aws-sdk-s3'
|
46
|
-
Aws::S3::Client.new(
|
47
|
-
ExercismConfig::GenerateAwsSettings.().merge(
|
48
|
-
force_path_style: true
|
49
|
-
)
|
50
|
-
)
|
51
|
-
end
|
52
|
-
|
53
|
-
def self.ecr_client
|
54
|
-
require 'aws-sdk-ecr'
|
55
|
-
Aws::ECR::Client.new(ExercismConfig::GenerateAwsSettings.())
|
56
|
-
end
|
57
|
-
|
58
|
-
def self.octokit_client
|
59
|
-
require 'octokit'
|
60
|
-
|
61
|
-
access_token = ENV.fetch(
|
62
|
-
"GITHUB_ACCESS_TOKEN",
|
63
|
-
self.secrets.github_access_token
|
64
|
-
)
|
65
|
-
|
66
|
-
@octokit_client ||= Octokit::Client.new(
|
67
|
-
access_token: access_token
|
68
|
-
).tap do |c|
|
69
|
-
c.auto_paginate = true
|
70
|
-
end
|
71
|
-
end
|
72
|
-
|
73
|
-
def self.opensearch_client
|
74
|
-
require 'elasticsearch'
|
75
|
-
|
76
|
-
# For now, we're using the ElasticSearch client, but this needs to be
|
77
|
-
# changed to the OpenSearch client once it becomes available
|
78
|
-
Elasticsearch::Client.new(
|
79
|
-
url: ENV.fetch("OPENSEARCH_HOST", config.opensearch_host),
|
80
|
-
user: ENV.fetch("OPENSEARCH_USER", Exercism.env.production? ? nil : "admin"),
|
81
|
-
password: ENV.fetch("OPENSEARCH_PASSWORD", Exercism.env.production? ? nil : "admin"),
|
82
|
-
transport_options: {
|
83
|
-
ssl: {
|
84
|
-
verify: Exercism.env.production?
|
85
|
-
}
|
86
|
-
}
|
87
|
-
)
|
88
|
-
end
|
89
|
-
|
90
|
-
def self.discourse_client
|
91
|
-
require 'discourse_api'
|
92
|
-
|
93
|
-
DiscourseApi::Client.new("https://forum.exercism.org").tap do |client|
|
94
|
-
client.api_key = ENV.fetch("DISCOURSE_API_KEY", Exercism.secrets.discourse_api_key)
|
95
|
-
client.api_username = ENV.fetch("DISCOURSE_API_USERNAME", "system")
|
96
|
-
end
|
97
|
-
end
|
13
|
+
# require_relative 'exercism_config/environment'
|
14
|
+
# require_relative 'exercism_config/determine_environment'
|
15
|
+
# require_relative 'exercism_config/generate_aws_settings'
|
16
|
+
# require_relative 'exercism_config/setup_dynamodb_client'
|
17
|
+
# require_relative 'exercism_config/setup_ecr_client'
|
18
|
+
# require_relative 'exercism_config/setup_s3_client'
|
19
|
+
# require_relative 'exercism_config/retrieve_config'
|
20
|
+
# require_relative 'exercism_config/retrieve_secrets'
|
21
|
+
|
22
|
+
# require_relative 'exercism_config/version'
|
23
|
+
# require_relative 'exercism/config'
|
24
|
+
# require_relative 'exercism/secrets'
|
25
|
+
# require_relative 'exercism/tooling_job'
|
26
|
+
#
|
27
|
+
module ::ExercismConfig
|
98
28
|
end
|
data/lib/exercism.rb
ADDED
@@ -0,0 +1,78 @@
|
|
1
|
+
module Exercism
|
2
|
+
class ConfigError < RuntimeError; end
|
3
|
+
|
4
|
+
def self.env
|
5
|
+
@env ||= ExercismConfig::DetermineEnvironment.()
|
6
|
+
end
|
7
|
+
|
8
|
+
def self.config
|
9
|
+
@config ||= ExercismConfig::RetrieveConfig.()
|
10
|
+
end
|
11
|
+
|
12
|
+
def self.secrets
|
13
|
+
@secrets ||= ExercismConfig::RetrieveSecrets.()
|
14
|
+
end
|
15
|
+
|
16
|
+
def self.redis_tooling_client
|
17
|
+
Redis.new(url: config.tooling_redis_url)
|
18
|
+
end
|
19
|
+
|
20
|
+
def self.dynamodb_client
|
21
|
+
Aws::DynamoDB::Client.new(ExercismConfig::GenerateAwsSettings.())
|
22
|
+
end
|
23
|
+
|
24
|
+
def self.s3_client
|
25
|
+
require 'aws-sdk-s3'
|
26
|
+
Aws::S3::Client.new(
|
27
|
+
ExercismConfig::GenerateAwsSettings.().merge(
|
28
|
+
force_path_style: true
|
29
|
+
)
|
30
|
+
)
|
31
|
+
end
|
32
|
+
|
33
|
+
def self.ecr_client
|
34
|
+
require 'aws-sdk-ecr'
|
35
|
+
Aws::ECR::Client.new(ExercismConfig::GenerateAwsSettings.())
|
36
|
+
end
|
37
|
+
|
38
|
+
def self.octokit_client
|
39
|
+
require 'octokit'
|
40
|
+
|
41
|
+
access_token = ENV.fetch(
|
42
|
+
"GITHUB_ACCESS_TOKEN",
|
43
|
+
self.secrets.github_access_token
|
44
|
+
)
|
45
|
+
|
46
|
+
@octokit_client ||= Octokit::Client.new(
|
47
|
+
access_token: access_token
|
48
|
+
).tap do |c|
|
49
|
+
c.auto_paginate = true
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
def self.opensearch_client
|
54
|
+
require 'elasticsearch'
|
55
|
+
|
56
|
+
# For now, we're using the ElasticSearch client, but this needs to be
|
57
|
+
# changed to the OpenSearch client once it becomes available
|
58
|
+
Elasticsearch::Client.new(
|
59
|
+
url: ENV.fetch("OPENSEARCH_HOST", config.opensearch_host),
|
60
|
+
user: ENV.fetch("OPENSEARCH_USER", Exercism.env.production? ? nil : "admin"),
|
61
|
+
password: ENV.fetch("OPENSEARCH_PASSWORD", Exercism.env.production? ? nil : "admin"),
|
62
|
+
transport_options: {
|
63
|
+
ssl: {
|
64
|
+
verify: Exercism.env.production?
|
65
|
+
}
|
66
|
+
}
|
67
|
+
)
|
68
|
+
end
|
69
|
+
|
70
|
+
def self.discourse_client
|
71
|
+
require 'discourse_api'
|
72
|
+
|
73
|
+
DiscourseApi::Client.new("https://forum.exercism.org").tap do |client|
|
74
|
+
client.api_key = ENV.fetch("DISCOURSE_API_KEY", Exercism.secrets.discourse_api_key)
|
75
|
+
client.api_username = ENV.fetch("DISCOURSE_API_USERNAME", "system")
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end
|
data/settings/local.yml
CHANGED
@@ -6,7 +6,7 @@ anycable_rpc_host: 127.0.0.1:50051
|
|
6
6
|
tooling_redis_url: redis://127.0.0.1:6379/3
|
7
7
|
snippet_generator_url: http://local.exercism.io:3024/extract_snippet
|
8
8
|
lines_of_code_counter_url: http://local.exercism.io:3025/count_lines_of_code
|
9
|
-
chatgpt_proxy_url: http://local.exercism.io:3026/
|
9
|
+
chatgpt_proxy_url: http://local.exercism.io:3026/ask_chatgpt
|
10
10
|
|
11
11
|
# DynamoDB config
|
12
12
|
dynamodb_tooling_jobs_table: tooling_jobs
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: exercism-config
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.91.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jeremy Walker
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-04-
|
11
|
+
date: 2023-04-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: aws-sdk-dynamodb
|
@@ -222,6 +222,7 @@ files:
|
|
222
222
|
- bin/setup_exercism_local_aws
|
223
223
|
- exercism_config.gemspec
|
224
224
|
- lib/exercism-config.rb
|
225
|
+
- lib/exercism.rb
|
225
226
|
- lib/exercism/config.rb
|
226
227
|
- lib/exercism/secrets.rb
|
227
228
|
- lib/exercism/tooling_job.rb
|