exercism-config 0.88.0 → 0.90.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 29fadb8a1510e975c7e403e89b4b4dd2a05fc1c5f7175a10d48c0a21af95dd2a
4
- data.tar.gz: 493ed10b3b73b45f4cc548c62127ccab3ab5f5ec45f39867f250dd6b1395437c
3
+ metadata.gz: 6a56fb8af776fc23021dcb23360d67d53224e7183e3354e510e77b42f17fc814
4
+ data.tar.gz: f1a66c11bd44e7d8b75166528720d51c340141215ad918281d60abf629807e49
5
5
  SHA512:
6
- metadata.gz: ddb953b2348af7a03185c10a54223c534d0420c419296cfb32324fb7fea544643b2d51834250a9241012342350d56eb7bd3b21be942c95a33a60b7d6ab73473d
7
- data.tar.gz: d5b405b66db6bc9f5f28ef5e37bcd9edaf4971b5a85582d997b56286d467460e134eb859f0aefd9928f2573611756138a9d8525460600bab866c681973c95895
6
+ metadata.gz: cfe55ad103db946afa7f4f2abbecc9234360d07f3d236488cc04966cc7ee1bcd42ad1f21a185dfb39f7ea726900c91294a07c8544f5377c352f05394dc1c2fc8
7
+ data.tar.gz: 33efc5785923f16b0b30a10c120e594e205c5bc3eae633b36d0981565ce7e4a38d5435ce078b72f2a1e5601853b1f173057769eadd229cf51e9224124fedc9bf
@@ -0,0 +1,22 @@
1
+ name: Pause Community Contributions
2
+
3
+ on:
4
+ issues:
5
+ types:
6
+ - opened
7
+ pull_request_target:
8
+ types:
9
+ - opened
10
+
11
+ permissions:
12
+ issues: write
13
+ pull-requests: write
14
+
15
+ jobs:
16
+ pause:
17
+ if: github.repository_owner == 'exercism' # Stops this job from running on forks
18
+ uses: exercism/github-actions/.github/workflows/community-contributions.yml@main
19
+ with:
20
+ forum_category: support
21
+ secrets:
22
+ github_membership_token: ${{ secrets.COMMUNITY_CONTRIBUTIONS_WORKFLOW_TOKEN }}
data/.gitignore CHANGED
@@ -1,3 +1,5 @@
1
+ /settings/secrets-personal.yml
2
+
1
3
  /.bundle/
2
4
  /.yardoc
3
5
  /_yardoc/
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- ruby-3.0.3
1
+ ruby-3.2.1
@@ -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 Exercism
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
@@ -16,7 +16,13 @@ module ExercismConfig
16
16
  secrets_file = File.expand_path('../../settings/secrets.yml', __dir__)
17
17
  secrets = YAML.safe_load(ERB.new(File.read(secrets_file)).result)
18
18
 
19
- Exercism::Secrets.new(secrets)
19
+ personal_secrets_file = "#{Dir.home}/.config/exercism/secrets.yml"
20
+ if File.exist?(personal_secrets_file)
21
+ personal_secrets = YAML.safe_load(ERB.new(File.read(personal_secrets_file)).result)
22
+ Exercism::Secrets.new(secrets.merge(personal_secrets))
23
+ else
24
+ Exercism::Secrets.new(secrets)
25
+ end
20
26
  end
21
27
 
22
28
  def retrieve_from_aws
@@ -1,3 +1,3 @@
1
1
  module ExercismConfig
2
- VERSION = '0.88.0'.freeze
2
+ VERSION = '0.90.0'.freeze
3
3
  end
data/settings/local.yml CHANGED
@@ -6,6 +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/chatgpt_proxy
9
10
 
10
11
  # DynamoDB config
11
12
  dynamodb_tooling_jobs_table: tooling_jobs
data/settings/secrets.yml CHANGED
@@ -15,3 +15,8 @@ discourse_oauth_secret: "some-discourse-oauth-secret"
15
15
  discourse_api_key: "some-discourse-api-key"
16
16
  recaptcha_site_key: "some-recaptcha_site_key"
17
17
  recaptcha_secret_key: "some-recaptcha_secret_key"
18
+ coinbase_webhooks_secret: "some-coinbase-secret"
19
+ paypal_webhook_id: "some-paypal-webhook-id"
20
+ paypal_client_id: "some-paypal-client-id"
21
+ paypal_client_secret: "some-paypal-client-secret"
22
+ chatgpt_access_token: "some-token"
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.88.0
4
+ version: 0.90.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jeremy Walker
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-11-30 00:00:00.000000000 Z
11
+ date: 2023-04-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: aws-sdk-dynamodb
@@ -192,7 +192,7 @@ dependencies:
192
192
  - - ">="
193
193
  - !ruby/object:Gem::Version
194
194
  version: '0'
195
- description:
195
+ description:
196
196
  email:
197
197
  - jez.walker@gmail.com
198
198
  executables:
@@ -203,6 +203,7 @@ extra_rdoc_files: []
203
203
  files:
204
204
  - ".appends/.github/labels.yml"
205
205
  - ".github/labels.yml"
206
+ - ".github/workflows/pause-community-contributions.yml"
206
207
  - ".github/workflows/rubocop.yml"
207
208
  - ".github/workflows/sync-labels.yml"
208
209
  - ".github/workflows/tests.yml"
@@ -221,6 +222,7 @@ files:
221
222
  - bin/setup_exercism_local_aws
222
223
  - exercism_config.gemspec
223
224
  - lib/exercism-config.rb
225
+ - lib/exercism.rb
224
226
  - lib/exercism/config.rb
225
227
  - lib/exercism/secrets.rb
226
228
  - lib/exercism/tooling_job.rb
@@ -243,7 +245,7 @@ licenses: []
243
245
  metadata:
244
246
  homepage_uri: https://exercism.io
245
247
  source_code_uri: https://github.com/exercism/config
246
- post_install_message:
248
+ post_install_message:
247
249
  rdoc_options: []
248
250
  require_paths:
249
251
  - lib
@@ -258,8 +260,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
258
260
  - !ruby/object:Gem::Version
259
261
  version: '0'
260
262
  requirements: []
261
- rubygems_version: 3.2.32
262
- signing_key:
263
+ rubygems_version: 3.4.6
264
+ signing_key:
263
265
  specification_version: 4
264
266
  summary: Retrieves stored config for Exercism
265
267
  test_files: []