at_coder_friends 0.6.8 → 0.7.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/.gitattributes +1 -0
- data/.github/workflows/codeql-analysis.yml +70 -0
- data/.github/workflows/ruby.yml +38 -0
- data/.gitignore +3 -0
- data/.rubocop.yml +8 -1
- data/CHANGELOG.md +23 -4
- data/Gemfile.lock +43 -43
- data/README.md +15 -92
- data/at_coder_friends.gemspec +4 -3
- data/lib/at_coder_friends/cli.rb +13 -28
- data/lib/at_coder_friends/config_loader.rb +2 -4
- data/lib/at_coder_friends/generator/any_builtin.rb +22 -0
- data/lib/at_coder_friends/generator/base.rb +55 -6
- data/lib/at_coder_friends/generator/c_builtin.rb +22 -0
- data/lib/at_coder_friends/generator/cxx_builtin.rb +9 -241
- data/lib/at_coder_friends/generator/fragment.rb +106 -0
- data/lib/at_coder_friends/generator/main.rb +20 -14
- data/lib/at_coder_friends/generator/ruby_builtin.rb +13 -166
- data/lib/at_coder_friends/parser/binary.rb +12 -5
- data/lib/at_coder_friends/parser/constraints.rb +8 -8
- data/lib/at_coder_friends/parser/input_format.rb +19 -15
- data/lib/at_coder_friends/parser/modulo.rb +5 -7
- data/lib/at_coder_friends/parser/section_wrapper.rb +3 -5
- data/lib/at_coder_friends/parser/sections.rb +2 -2
- data/lib/at_coder_friends/path_util.rb +1 -1
- data/lib/at_coder_friends/problem.rb +5 -5
- data/lib/at_coder_friends/scraping/agent.rb +1 -1
- data/lib/at_coder_friends/scraping/authentication.rb +3 -3
- data/lib/at_coder_friends/scraping/session.rb +1 -1
- data/lib/at_coder_friends/scraping/tasks.rb +6 -8
- data/lib/at_coder_friends/test_runner/base.rb +1 -2
- data/lib/at_coder_friends/test_runner/judge.rb +3 -3
- data/lib/at_coder_friends/version.rb +1 -1
- data/lib/at_coder_friends.rb +3 -0
- data/templates/any_builtin.md.erb +30 -0
- data/templates/any_builtin_fragments.yml +5 -0
- data/templates/c_builtin.c.erb +36 -0
- data/templates/c_builtin_fragments.yml +127 -0
- data/templates/csharp_sample.cs.erb +29 -0
- data/templates/csharp_sample_fragments.yml +159 -0
- data/templates/java_sample.java.erb +25 -0
- data/templates/java_sample_fragments.yml +98 -0
- data/templates/ruby_builtin_fragments.yml +93 -0
- metadata +26 -6
- data/.travis.yml +0 -16
- data/docs/CONFIGURATION.md +0 -421
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bada11ce4daaea235dde05940e0e6d75dc07c64d964b0192e3f9d789346bdc01
|
4
|
+
data.tar.gz: 4324be344fdd848ea9397fc9b21bfa542567f5d9ced110fefc188c7f787c656e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2612df7b0bbdf727dc76aca694a9d02f8278eebfd2683b4e13c06cfa18a18abb4844d474df393651e04a56a07328fc5274ac79a160c7475f4ec01e97474cc305
|
7
|
+
data.tar.gz: 765962cc818da264ff9655eef7cd73e13c4579e03d1ff2c253b4934b1f84bf581484b46d925d7754a087ea916d51b89b8785fec68f4b8ec2362f85f048ec8c00
|
data/.gitattributes
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
spec/mocks/** linguist-vendored
|
@@ -0,0 +1,70 @@
|
|
1
|
+
# For most projects, this workflow file will not need changing; you simply need
|
2
|
+
# to commit it to your repository.
|
3
|
+
#
|
4
|
+
# You may wish to alter this file to override the set of languages analyzed,
|
5
|
+
# or to provide custom queries or build logic.
|
6
|
+
#
|
7
|
+
# ******** NOTE ********
|
8
|
+
# We have attempted to detect the languages in your repository. Please check
|
9
|
+
# the `language` matrix defined below to confirm you have the correct set of
|
10
|
+
# supported CodeQL languages.
|
11
|
+
#
|
12
|
+
name: "CodeQL"
|
13
|
+
|
14
|
+
on:
|
15
|
+
push:
|
16
|
+
branches: [ master ]
|
17
|
+
pull_request:
|
18
|
+
# The branches below must be a subset of the branches above
|
19
|
+
branches: [ master ]
|
20
|
+
schedule:
|
21
|
+
- cron: '34 8 * * 0'
|
22
|
+
|
23
|
+
jobs:
|
24
|
+
analyze:
|
25
|
+
name: Analyze
|
26
|
+
runs-on: ubuntu-latest
|
27
|
+
permissions:
|
28
|
+
actions: read
|
29
|
+
contents: read
|
30
|
+
security-events: write
|
31
|
+
|
32
|
+
strategy:
|
33
|
+
fail-fast: false
|
34
|
+
matrix:
|
35
|
+
language: [ 'ruby' ]
|
36
|
+
# CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python', 'ruby' ]
|
37
|
+
# Learn more about CodeQL language support at https://git.io/codeql-language-support
|
38
|
+
|
39
|
+
steps:
|
40
|
+
- name: Checkout repository
|
41
|
+
uses: actions/checkout@v2
|
42
|
+
|
43
|
+
# Initializes the CodeQL tools for scanning.
|
44
|
+
- name: Initialize CodeQL
|
45
|
+
uses: github/codeql-action/init@v1
|
46
|
+
with:
|
47
|
+
languages: ${{ matrix.language }}
|
48
|
+
# If you wish to specify custom queries, you can do so here or in a config file.
|
49
|
+
# By default, queries listed here will override any specified in a config file.
|
50
|
+
# Prefix the list here with "+" to use these queries and those in the config file.
|
51
|
+
# queries: ./path/to/local/query, your-org/your-repo/queries@main
|
52
|
+
|
53
|
+
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
|
54
|
+
# If this step fails, then you should remove it and run the build manually (see below)
|
55
|
+
- name: Autobuild
|
56
|
+
uses: github/codeql-action/autobuild@v1
|
57
|
+
|
58
|
+
# ℹ️ Command-line programs to run using the OS shell.
|
59
|
+
# 📚 https://git.io/JvXDl
|
60
|
+
|
61
|
+
# ✏️ If the Autobuild fails above, remove it and uncomment the following three lines
|
62
|
+
# and modify them (or add more) to build your code if your project
|
63
|
+
# uses a compiled language
|
64
|
+
|
65
|
+
#- run: |
|
66
|
+
# make bootstrap
|
67
|
+
# make release
|
68
|
+
|
69
|
+
- name: Perform CodeQL Analysis
|
70
|
+
uses: github/codeql-action/analyze@v1
|
@@ -0,0 +1,38 @@
|
|
1
|
+
# This workflow uses actions that are not certified by GitHub.
|
2
|
+
# They are provided by a third-party and are governed by
|
3
|
+
# separate terms of service, privacy policy, and support
|
4
|
+
# documentation.
|
5
|
+
# This workflow will download a prebuilt Ruby version, install dependencies and run tests with Rake
|
6
|
+
# For more information see: https://github.com/marketplace/actions/setup-ruby-jruby-and-truffleruby
|
7
|
+
|
8
|
+
name: Ruby
|
9
|
+
|
10
|
+
on:
|
11
|
+
push:
|
12
|
+
branches: [ master ]
|
13
|
+
pull_request:
|
14
|
+
branches: [ master ]
|
15
|
+
|
16
|
+
jobs:
|
17
|
+
test:
|
18
|
+
|
19
|
+
runs-on: ubuntu-latest
|
20
|
+
strategy:
|
21
|
+
matrix:
|
22
|
+
ruby-version: ['2.7', '3.0', '3.2']
|
23
|
+
|
24
|
+
steps:
|
25
|
+
- uses: actions/checkout@v2
|
26
|
+
- name: Set up Ruby
|
27
|
+
uses: ruby/setup-ruby@v1
|
28
|
+
with:
|
29
|
+
ruby-version: ${{ matrix.ruby-version }}
|
30
|
+
bundler-cache: true # runs 'bundle install' and caches installed gems automatically
|
31
|
+
- name: Run tests
|
32
|
+
run: script -e -c "bundle exec rspec"
|
33
|
+
env:
|
34
|
+
COVERAGE: true
|
35
|
+
- name: publish code coverage
|
36
|
+
uses: paambaati/codeclimate-action@v3.0.0
|
37
|
+
env:
|
38
|
+
CC_TEST_REPORTER_ID: cb942bcc168feb78c43c506364d5344c5ec9a46a0b68dc66acb581e77c981ff1
|
data/.gitignore
CHANGED
data/.rubocop.yml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
inherit_from: .rubocop_todo.yml
|
2
2
|
|
3
3
|
AllCops:
|
4
|
-
TargetRubyVersion: 2.
|
4
|
+
TargetRubyVersion: 2.7
|
5
5
|
Exclude:
|
6
6
|
- 'templates/**/*'
|
7
7
|
- 'spec/fixtures/**/*'
|
@@ -12,6 +12,13 @@ Lint/AmbiguousBlockAssociation:
|
|
12
12
|
Exclude:
|
13
13
|
- 'spec/**/*.rb'
|
14
14
|
|
15
|
+
Lint/ConstantDefinitionInBlock:
|
16
|
+
Exclude:
|
17
|
+
- 'spec/**/*.rb'
|
18
|
+
|
19
|
+
Lint/DuplicateBranch:
|
20
|
+
Enabled: false
|
21
|
+
|
15
22
|
Metrics/BlockLength:
|
16
23
|
Exclude:
|
17
24
|
- 'Rakefile'
|
data/CHANGELOG.md
CHANGED
@@ -2,6 +2,25 @@
|
|
2
2
|
|
3
3
|
## master (unreleased)
|
4
4
|
|
5
|
+
## 0.7.0 (2023-05-12)
|
6
|
+
### Added
|
7
|
+
- add AnyBuiltin Generator
|
8
|
+
- add file extension to generator settings
|
9
|
+
- enable multiple configuration for one generator
|
10
|
+
- add CBuiltin Generator
|
11
|
+
- add Ruby3.2 to target version.
|
12
|
+
- add C# and Java templates for AnyBuiltin Generator
|
13
|
+
### Deleted
|
14
|
+
- drop Ruby2.6 from target version.
|
15
|
+
### Changed
|
16
|
+
- generators : externalize code fragments to YAML
|
17
|
+
|
18
|
+
## 0.6.9 (2021-12-25)
|
19
|
+
### Added
|
20
|
+
- input_format.rb : \hspace{...}, \text{...} support
|
21
|
+
- input_format.rb : \rm, \textrm{...} support
|
22
|
+
- modulo.rb : \text{mod}, {\bmod}, (10^9+7) support
|
23
|
+
|
5
24
|
## 0.6.8 (2021-05-27)
|
6
25
|
### Deleted
|
7
26
|
- drop Ruby2.4 from target version.
|
@@ -61,7 +80,7 @@
|
|
61
80
|
|
62
81
|
## 0.6.2 (2019-11-18)
|
63
82
|
### Added
|
64
|
-
- add
|
83
|
+
- add `check-and-go` command.
|
65
84
|
|
66
85
|
### Changed
|
67
86
|
- Enhancement in input format parser.
|
@@ -81,7 +100,7 @@
|
|
81
100
|
- Add settings about source generation.
|
82
101
|
|
83
102
|
### Changed
|
84
|
-
- Treat all
|
103
|
+
- Treat all `A_*.in` format files as sample input data
|
85
104
|
|
86
105
|
## 0.5.2 (2019-10-14)
|
87
106
|
### Fixed
|
@@ -97,7 +116,7 @@
|
|
97
116
|
|
98
117
|
## 0.5.0 (2019-10-04)
|
99
118
|
### Added
|
100
|
-
- User/password setting in
|
119
|
+
- User/password setting in `.at_coder_friends.yml` is no longer required.
|
101
120
|
- Saving and restoring session feature.
|
102
121
|
|
103
122
|
## 0.4.0 (2019-09-16)
|
@@ -106,4 +125,4 @@
|
|
106
125
|
|
107
126
|
## 0.3.3 (2019-09-01)
|
108
127
|
### Added
|
109
|
-
- Add
|
128
|
+
- Add `open-contest-page` command.
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
at_coder_friends (0.
|
4
|
+
at_coder_friends (0.7.0)
|
5
5
|
colorize (~> 0.8.1)
|
6
6
|
launchy (>= 2.4.3)
|
7
7
|
mechanize (~> 2.0)
|
@@ -9,23 +9,24 @@ PATH
|
|
9
9
|
GEM
|
10
10
|
remote: https://rubygems.org/
|
11
11
|
specs:
|
12
|
-
addressable (2.
|
13
|
-
public_suffix (>= 2.0.2, <
|
12
|
+
addressable (2.8.4)
|
13
|
+
public_suffix (>= 2.0.2, < 6.0)
|
14
14
|
colorize (0.8.1)
|
15
|
-
connection_pool (2.
|
15
|
+
connection_pool (2.4.0)
|
16
16
|
crack (0.4.5)
|
17
17
|
rexml
|
18
|
-
diff-lcs (1.
|
18
|
+
diff-lcs (1.5.0)
|
19
19
|
docile (1.4.0)
|
20
20
|
domain_name (0.5.20190701)
|
21
21
|
unf (>= 0.0.5, < 1.0.0)
|
22
22
|
hashdiff (1.0.1)
|
23
|
-
http-cookie (1.0.
|
23
|
+
http-cookie (1.0.5)
|
24
24
|
domain_name (~> 0.5)
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
25
|
+
json (2.6.3)
|
26
|
+
launchy (2.5.2)
|
27
|
+
addressable (~> 2.8)
|
28
|
+
mechanize (2.9.1)
|
29
|
+
addressable (~> 2.8)
|
29
30
|
domain_name (~> 0.5, >= 0.5.20190701)
|
30
31
|
http-cookie (~> 1.0, >= 1.0.3)
|
31
32
|
mime-types (~> 3.0)
|
@@ -35,61 +36,60 @@ GEM
|
|
35
36
|
rubyntlm (~> 0.6, >= 0.6.3)
|
36
37
|
webrick (~> 1.7)
|
37
38
|
webrobots (~> 0.1.2)
|
38
|
-
mime-types (3.
|
39
|
+
mime-types (3.4.1)
|
39
40
|
mime-types-data (~> 3.2015)
|
40
|
-
mime-types-data (3.
|
41
|
-
mini_portile2 (2.5.1)
|
41
|
+
mime-types-data (3.2023.0218.1)
|
42
42
|
net-http-digest_auth (1.4.1)
|
43
|
-
net-http-persistent (4.0.
|
43
|
+
net-http-persistent (4.0.2)
|
44
44
|
connection_pool (~> 2.2)
|
45
|
-
nokogiri (1.
|
46
|
-
mini_portile2 (~> 2.5.0)
|
45
|
+
nokogiri (1.14.3-arm64-darwin)
|
47
46
|
racc (~> 1.4)
|
48
|
-
|
49
|
-
|
50
|
-
|
47
|
+
nokogiri (1.14.3-x86_64-linux)
|
48
|
+
racc (~> 1.4)
|
49
|
+
public_suffix (5.0.1)
|
50
|
+
racc (1.6.2)
|
51
|
+
rake (13.0.6)
|
51
52
|
rexml (3.2.5)
|
52
|
-
rspec (3.
|
53
|
-
rspec-core (~> 3.
|
54
|
-
rspec-expectations (~> 3.
|
55
|
-
rspec-mocks (~> 3.
|
56
|
-
rspec-core (3.
|
57
|
-
rspec-support (~> 3.
|
58
|
-
rspec-expectations (3.
|
53
|
+
rspec (3.12.0)
|
54
|
+
rspec-core (~> 3.12.0)
|
55
|
+
rspec-expectations (~> 3.12.0)
|
56
|
+
rspec-mocks (~> 3.12.0)
|
57
|
+
rspec-core (3.12.2)
|
58
|
+
rspec-support (~> 3.12.0)
|
59
|
+
rspec-expectations (3.12.3)
|
59
60
|
diff-lcs (>= 1.2.0, < 2.0)
|
60
|
-
rspec-support (~> 3.
|
61
|
-
rspec-mocks (3.
|
61
|
+
rspec-support (~> 3.12.0)
|
62
|
+
rspec-mocks (3.12.5)
|
62
63
|
diff-lcs (>= 1.2.0, < 2.0)
|
63
|
-
rspec-support (~> 3.
|
64
|
-
rspec-support (3.
|
64
|
+
rspec-support (~> 3.12.0)
|
65
|
+
rspec-support (3.12.0)
|
65
66
|
rubyntlm (0.6.3)
|
66
|
-
simplecov (0.
|
67
|
+
simplecov (0.17.1)
|
67
68
|
docile (~> 1.1)
|
68
|
-
|
69
|
-
|
70
|
-
simplecov-html (0.
|
71
|
-
simplecov_json_formatter (0.1.3)
|
69
|
+
json (>= 1.8, < 3)
|
70
|
+
simplecov-html (~> 0.10.0)
|
71
|
+
simplecov-html (0.10.2)
|
72
72
|
unf (0.1.4)
|
73
73
|
unf_ext
|
74
|
-
unf_ext (0.0.
|
75
|
-
webmock (3.
|
76
|
-
addressable (>= 2.
|
74
|
+
unf_ext (0.0.8.2)
|
75
|
+
webmock (3.18.1)
|
76
|
+
addressable (>= 2.8.0)
|
77
77
|
crack (>= 0.3.2)
|
78
78
|
hashdiff (>= 0.4.0, < 2.0.0)
|
79
|
-
webrick (1.
|
79
|
+
webrick (1.8.1)
|
80
80
|
webrobots (0.1.2)
|
81
81
|
|
82
82
|
PLATFORMS
|
83
|
-
|
84
|
-
|
83
|
+
arm64-darwin-20
|
84
|
+
x86_64-linux
|
85
85
|
|
86
86
|
DEPENDENCIES
|
87
87
|
at_coder_friends!
|
88
88
|
bundler (~> 2.0)
|
89
89
|
rake (~> 13.0)
|
90
90
|
rspec (~> 3.0)
|
91
|
-
simplecov (~> 0.10)
|
91
|
+
simplecov (~> 0.10, < 0.18)
|
92
92
|
webmock (~> 3.0)
|
93
93
|
|
94
94
|
BUNDLED WITH
|
95
|
-
2.
|
95
|
+
2.4.12
|
data/README.md
CHANGED
@@ -1,7 +1,11 @@
|
|
1
1
|
[](https://badge.fury.io/rb/at_coder_friends)
|
2
|
-
|
2
|
+

|
3
|
+
[](https://github.com/nejiko96/at_coder_friends/actions/workflows/ruby.yml)
|
4
|
+
[](https://github.com/nejiko96/at_coder_friends/actions/workflows/codeql-analysis.yml)
|
3
5
|
[](https://codeclimate.com/github/nejiko96/at_coder_friends/maintainability)
|
4
6
|
[](https://codeclimate.com/github/nejiko96/at_coder_friends/test_coverage)
|
7
|
+

|
8
|
+
<!-- [](https://travis-ci.org/nejiko96/at_coder_friends) -->
|
5
9
|
|
6
10
|
# AtCoderFriends
|
7
11
|
|
@@ -16,7 +20,7 @@ AtCoderFriends automates tasks about [AtCoder](https://atcoder.jp/) programming
|
|
16
20
|
|
17
21
|
## Dependencies
|
18
22
|
|
19
|
-
- Ruby 2.
|
23
|
+
- Ruby 2.7 or newer
|
20
24
|
- [Mechanize](https://github.com/sparklemotion/mechanize)
|
21
25
|
|
22
26
|
## Installation
|
@@ -80,107 +84,26 @@ at_coder_friends check-and-go /path/to/contest/source_file
|
|
80
84
|
### Naming convention
|
81
85
|
|
82
86
|
- Contest folder name will be used in the contest site URL.
|
83
|
-
For example, if
|
84
|
-
- Source file should be named
|
87
|
+
For example, if `arc001` folder is specified, AtCoderFriends will use `https://atcoder.jp/contests/arc001/`.
|
88
|
+
- Source file should be named `[problem ID].[language specific extension]`(e.g. `A.rb`),
|
85
89
|
in order to let AtCoderFriends find test cases or fill the submission form.
|
86
|
-
- Suffixes (start with underscore) may be added to the file name (e.g.
|
90
|
+
- Suffixes (start with underscore) may be added to the file name (e.g. `A_v2.rb`),
|
87
91
|
so that you can try multiple codes for one problem.
|
88
92
|
|
89
93
|
## Notes
|
90
94
|
|
91
95
|
- Compilation is not supported.
|
92
|
-
- Source generator supports Ruby and C++ in default, and can be added by plugin.
|
96
|
+
- Source generator supports Ruby and C/C++ in default, and can be added by plugin.
|
93
97
|
- Test runner and code submission are supported in 36 languages.
|
94
98
|
|
95
99
|
|
96
100
|
## Configuration
|
97
101
|
|
98
|
-
See [
|
99
|
-
|
100
|
-
##
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
- [sublime_at_coder_friends](https://github.com/nejiko96/sublime_at_coder_friends)
|
105
|
-
|
106
|
-
## For Visual Studio Code user
|
107
|
-
|
108
|
-
- Run **Configure Tasks** from the global Terminal menu.
|
109
|
-
- Select the **Create tasks.json file from template** entry.
|
110
|
-
- Select **Others** from the list.
|
111
|
-
- Add following settings to ```tasks.json```.
|
112
|
-
|
113
|
-
```JSON
|
114
|
-
{
|
115
|
-
"version": "2.0.0",
|
116
|
-
"tasks": [
|
117
|
-
{
|
118
|
-
"label": "AtCoderFriends:New Contest",
|
119
|
-
"type": "shell",
|
120
|
-
"command": "at_coder_friends",
|
121
|
-
"args": [
|
122
|
-
"setup",
|
123
|
-
"${input:contestName}"
|
124
|
-
],
|
125
|
-
"problemMatcher": [],
|
126
|
-
"group": "none"
|
127
|
-
},
|
128
|
-
{
|
129
|
-
"label": "AtCoderFriends:Test One",
|
130
|
-
"type": "shell",
|
131
|
-
"command": "at_coder_friends",
|
132
|
-
"args": [
|
133
|
-
"test-one",
|
134
|
-
"${file}"
|
135
|
-
],
|
136
|
-
"problemMatcher": [],
|
137
|
-
"group": "none"
|
138
|
-
},
|
139
|
-
{
|
140
|
-
"label": "AtCoderFriends:Test All",
|
141
|
-
"type": "shell",
|
142
|
-
"command": "at_coder_friends",
|
143
|
-
"args": [
|
144
|
-
"test-all",
|
145
|
-
"${file}"
|
146
|
-
],
|
147
|
-
"problemMatcher": [],
|
148
|
-
"group": "none"
|
149
|
-
},
|
150
|
-
{
|
151
|
-
"label": "AtCoderFriends:Submit",
|
152
|
-
"type": "shell",
|
153
|
-
"command": "at_coder_friends",
|
154
|
-
"args": [
|
155
|
-
"submit",
|
156
|
-
"${file}"
|
157
|
-
],
|
158
|
-
"problemMatcher": [],
|
159
|
-
"group": "none",
|
160
|
-
},
|
161
|
-
{
|
162
|
-
"label": "AtCoderFriends:Check & Go",
|
163
|
-
"type": "shell",
|
164
|
-
"command": "at_coder_friends",
|
165
|
-
"args": [
|
166
|
-
"check-and-go",
|
167
|
-
"${file}"
|
168
|
-
],
|
169
|
-
"problemMatcher": [],
|
170
|
-
"group": "none",
|
171
|
-
},
|
172
|
-
...
|
173
|
-
],
|
174
|
-
"inputs": [
|
175
|
-
{
|
176
|
-
"id": "contestName",
|
177
|
-
"type": "promptString",
|
178
|
-
"default": "",
|
179
|
-
"description": "Contest Name"
|
180
|
-
}
|
181
|
-
]
|
182
|
-
}
|
183
|
-
```
|
102
|
+
See [Wiki](https://github.com/nejiko96/at_coder_friends/wiki/Configuration-details) for details.
|
103
|
+
|
104
|
+
## Customizing editor
|
105
|
+
|
106
|
+
See [Wiki](https://github.com/nejiko96/at_coder_friends/wiki/Customizing-editor) for details.
|
184
107
|
|
185
108
|
## Development
|
186
109
|
|
data/at_coder_friends.gemspec
CHANGED
@@ -28,12 +28,13 @@ Gem::Specification.new do |spec|
|
|
28
28
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
29
29
|
spec.require_paths = ['lib']
|
30
30
|
|
31
|
-
spec.required_ruby_version = '>= 2.
|
31
|
+
spec.required_ruby_version = '>= 2.7.0'
|
32
32
|
|
33
33
|
spec.metadata = {
|
34
34
|
'homepage_uri' => spec.homepage,
|
35
35
|
'source_code_uri' => spec.homepage,
|
36
|
-
'changelog_uri' => spec.homepage
|
36
|
+
'changelog_uri' => "#{spec.homepage}/blob/master/CHANGELOG.md",
|
37
|
+
'rubygems_mfa_required' => 'true'
|
37
38
|
}
|
38
39
|
|
39
40
|
spec.add_dependency 'colorize', '~> 0.8.1'
|
@@ -43,6 +44,6 @@ Gem::Specification.new do |spec|
|
|
43
44
|
spec.add_development_dependency 'bundler', '~> 2.0'
|
44
45
|
spec.add_development_dependency 'rake', '~> 13.0'
|
45
46
|
spec.add_development_dependency 'rspec', '~> 3.0'
|
46
|
-
spec.add_development_dependency 'simplecov', '~> 0.10'
|
47
|
+
spec.add_development_dependency 'simplecov', '~> 0.10', '< 0.18'
|
47
48
|
spec.add_development_dependency 'webmock', '~> 3.0'
|
48
49
|
end
|
data/lib/at_coder_friends/cli.rb
CHANGED
@@ -67,30 +67,15 @@ module AtCoderFriends
|
|
67
67
|
|
68
68
|
def exec_command(command, path, *args)
|
69
69
|
@ctx = Context.new(@options, path)
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
when 'test-all'
|
76
|
-
test_all
|
77
|
-
when 'submit'
|
78
|
-
submit
|
79
|
-
when 'check-and-go'
|
80
|
-
check_and_go
|
81
|
-
when 'judge-one'
|
82
|
-
judge_one(*args)
|
83
|
-
when 'judge-all'
|
84
|
-
judge_all
|
85
|
-
when 'open-contest'
|
86
|
-
open_contest
|
87
|
-
else
|
88
|
-
raise ParamError, "unknown command: #{command}"
|
89
|
-
end
|
70
|
+
|
71
|
+
mtd = "command_#{command.gsub('-', '_')}"
|
72
|
+
raise ParamError, "unknown command: #{command}" unless respond_to?(mtd)
|
73
|
+
|
74
|
+
send(mtd, *args)
|
90
75
|
ctx.post_process
|
91
76
|
end
|
92
77
|
|
93
|
-
def
|
78
|
+
def command_setup
|
94
79
|
path = ctx.path
|
95
80
|
raise AppError, "#{path} is not empty." \
|
96
81
|
if Dir.exist?(path) && !Dir["#{path}/*"].empty?
|
@@ -102,16 +87,16 @@ module AtCoderFriends
|
|
102
87
|
end
|
103
88
|
end
|
104
89
|
|
105
|
-
def
|
90
|
+
def command_test_one(id = '001')
|
106
91
|
ctx.sample_test_runner.test_one(id)
|
107
92
|
end
|
108
93
|
|
109
|
-
def
|
94
|
+
def command_test_all
|
110
95
|
ctx.sample_test_runner.test_all
|
111
96
|
ctx.verifier.verify
|
112
97
|
end
|
113
98
|
|
114
|
-
def
|
99
|
+
def command_submit
|
115
100
|
vf = ctx.verifier
|
116
101
|
raise AppError, "#{vf.file} has not been tested." unless vf.verified?
|
117
102
|
|
@@ -120,7 +105,7 @@ module AtCoderFriends
|
|
120
105
|
open_submission_list
|
121
106
|
end
|
122
107
|
|
123
|
-
def
|
108
|
+
def command_check_and_go
|
124
109
|
vf = ctx.verifier
|
125
110
|
if ctx.sample_test_runner.test_all
|
126
111
|
# submit automatically
|
@@ -133,15 +118,15 @@ module AtCoderFriends
|
|
133
118
|
end
|
134
119
|
end
|
135
120
|
|
136
|
-
def
|
121
|
+
def command_judge_one(id = '')
|
137
122
|
ctx.judge_test_runner.judge_one(id)
|
138
123
|
end
|
139
124
|
|
140
|
-
def
|
125
|
+
def command_judge_all
|
141
126
|
ctx.judge_test_runner.judge_all
|
142
127
|
end
|
143
128
|
|
144
|
-
def
|
129
|
+
def command_open_contest
|
145
130
|
Launchy.open(ctx.scraping_agent.contest_url)
|
146
131
|
end
|
147
132
|
|
@@ -51,19 +51,17 @@ module AtCoderFriends
|
|
51
51
|
end
|
52
52
|
|
53
53
|
def merge(base_hash, derived_hash)
|
54
|
-
|
54
|
+
base_hash.merge(derived_hash) do |_, base_val, derived_val|
|
55
55
|
if base_val.is_a?(Hash) && derived_val.is_a?(Hash)
|
56
56
|
merge(base_val, derived_val)
|
57
57
|
else
|
58
58
|
derived_val
|
59
59
|
end
|
60
60
|
end
|
61
|
-
res
|
62
61
|
end
|
63
62
|
|
64
63
|
def load_yaml(path)
|
65
|
-
|
66
|
-
YAML.safe_load(yaml, [], [], false, path) || {}
|
64
|
+
YAML.load_file(path) || {}
|
67
65
|
rescue Errno::ENOENT
|
68
66
|
raise ConfigNotFoundError,
|
69
67
|
"Configuration file not found: #{path}"
|
@@ -0,0 +1,22 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module AtCoderFriends
|
4
|
+
module Generator
|
5
|
+
# generates source from template
|
6
|
+
class AnyBuiltin < Base
|
7
|
+
include ConstFragmentMixin
|
8
|
+
include DeclFragmentMixin
|
9
|
+
include InputFragmentMixin
|
10
|
+
|
11
|
+
ACF_HOME = File.realpath(File.join(__dir__, '..', '..', '..'))
|
12
|
+
TMPL_DIR = File.join(ACF_HOME, 'templates')
|
13
|
+
TEMPLATE = File.join(TMPL_DIR, 'any_builtin.md.erb')
|
14
|
+
FRAGMENTS = File.join(TMPL_DIR, 'any_builtin_fragments.yml')
|
15
|
+
ATTRS = Attributes.new(:md, TEMPLATE, FRAGMENTS)
|
16
|
+
|
17
|
+
def attrs
|
18
|
+
ATTRS
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|