gamerom 0.4.1 → 0.6.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/.github/workflows/main.yml +5 -7
- data/.rubocop.yml +9 -0
- data/.ruby-version +1 -1
- data/.tool-versions +1 -0
- data/CHANGELOG.md +22 -1
- data/Dockerfile +13 -3
- data/Gemfile +5 -3
- data/Gemfile.lock +94 -64
- data/Makefile +4 -4
- data/README.md +83 -50
- data/entrypoint.sh +1 -0
- data/exe/gamerom +16 -0
- data/gamerom.gemspec +8 -7
- data/lib/gamerom/cli.rb +126 -28
- data/lib/gamerom/errors.rb +9 -0
- data/lib/gamerom/game.rb +13 -3
- data/lib/gamerom/game_info.rb +1 -1
- data/lib/gamerom/repo.rb +2 -2
- data/lib/gamerom/repo_adapter.rb +14 -3
- data/lib/gamerom/repo_adapters/coolrom.rb +6 -2
- data/lib/gamerom/repo_adapters/edgeemu.rb +136 -0
- data/lib/gamerom/repo_adapters/vimm.rb +27 -36
- data/lib/gamerom/version.rb +1 -1
- data/lib/gamerom.rb +1 -4
- data/lib/mechanizeprogress.rb +37 -2
- metadata +16 -16
- data/lib/gamerom/repo_adapters/romnation.rb +0 -110
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 33c71545b14feb811985d98d9e1e4677b7101f7e86676865c50770eb53b99169
|
|
4
|
+
data.tar.gz: 3388785345996bdb7711c90150ad03cc8bc3cf08afaad281144690ce8da85144
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: '0694ea12b96bac2fb769f0176ca0b459804eb1b955c51c44fb57dc60046d63136836a0b206c696fb6cbee9096c211d475cf038a9dc14c4a2ff43b232af3cd87d'
|
|
7
|
+
data.tar.gz: ff44e316119690d3732f629ff162af18feef6ccb512881063625b899782adf4d95100c9a49829e619f09c82ce4fb944bd793490d0358c0cc3bbbb36158d06603
|
data/.github/workflows/main.yml
CHANGED
|
@@ -1,18 +1,16 @@
|
|
|
1
1
|
name: Ruby
|
|
2
2
|
|
|
3
|
-
on: [push,pull_request]
|
|
3
|
+
on: [push, pull_request]
|
|
4
4
|
|
|
5
5
|
jobs:
|
|
6
6
|
build:
|
|
7
7
|
runs-on: ubuntu-latest
|
|
8
8
|
steps:
|
|
9
|
-
- uses: actions/checkout@
|
|
9
|
+
- uses: actions/checkout@v7
|
|
10
10
|
- name: Set up Ruby
|
|
11
11
|
uses: ruby/setup-ruby@v1
|
|
12
12
|
with:
|
|
13
|
-
ruby-version:
|
|
13
|
+
ruby-version: .ruby-version
|
|
14
|
+
bundler-cache: true
|
|
14
15
|
- name: Run the default task
|
|
15
|
-
run:
|
|
16
|
-
gem install bundler -v 2.2.3
|
|
17
|
-
bundle install
|
|
18
|
-
bundle exec rake
|
|
16
|
+
run: bundle exec rake
|
data/.rubocop.yml
CHANGED
|
@@ -41,3 +41,12 @@ Style/SoleNestedConditional:
|
|
|
41
41
|
Enabled: true
|
|
42
42
|
Exclude:
|
|
43
43
|
- 'lib/mechanizeprogress.rb'
|
|
44
|
+
|
|
45
|
+
# mechanizeprogress.rb monkeypatches two existing classes on purpose
|
|
46
|
+
Style/OneClassPerFile:
|
|
47
|
+
Exclude:
|
|
48
|
+
- 'lib/mechanizeprogress.rb'
|
|
49
|
+
|
|
50
|
+
plugins:
|
|
51
|
+
- rubocop-rake
|
|
52
|
+
- rubocop-rspec
|
data/.ruby-version
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
ruby-3.
|
|
1
|
+
ruby-3.4.12
|
data/.tool-versions
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
ruby 3.4.12
|
data/CHANGELOG.md
CHANGED
|
@@ -6,6 +6,25 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
6
6
|
|
|
7
7
|
## [Unreleased]
|
|
8
8
|
|
|
9
|
+
## [0.6.0] - 2026-11-01
|
|
10
|
+
- feat: add edgeemu repo (https://edgeemu.net), 48 platforms
|
|
11
|
+
- feat: recover - do not claim files that belong to a game with a longer name (e.g. "Kung-Fu" vs "Kung-Fu Master")
|
|
12
|
+
- feat: use ruby 3.4.12 and update all dependencies
|
|
13
|
+
- fix: install_all - Ctrl-C stops the loop again
|
|
14
|
+
- feat: vimm repo - the site now blocks automated downloads, so install shows the game page URL and the target directory for a manual download; database, search and recover keep working
|
|
15
|
+
|
|
16
|
+
## [0.5.0] - 2025-03-25
|
|
17
|
+
- feat: add ps3 platform for coolrom repo
|
|
18
|
+
- feat: add new platforms for vimm repo (Sega 32X, Atari 2600, Atari 5200, Atari 7800, Game Gear, Lynx, Sega CD, Master System, TurboGrafx-16, TurboGrafx-CD, Virtual Boy, XBox, XBox 360)
|
|
19
|
+
- feat: remove deprecated romnation repo
|
|
20
|
+
- feat: use ruby 3.4.2 and update all dependencies
|
|
21
|
+
- feat: format progress bars (colored pacman style)
|
|
22
|
+
- feat: handle SIGINT and SIGTERM
|
|
23
|
+
- fix: vimm repo game install
|
|
24
|
+
- fix: coolrom repo broken progress
|
|
25
|
+
- fix: vimm repo unable to get local issuer
|
|
26
|
+
- fix: vimm repo update datase (404 not found)
|
|
27
|
+
|
|
9
28
|
## [0.4.1] - 2021-05-18
|
|
10
29
|
- Enables specifying game identifier without using quotes
|
|
11
30
|
|
|
@@ -34,7 +53,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
34
53
|
## [0.1.0] - 2021-05-07
|
|
35
54
|
- Initial release
|
|
36
55
|
|
|
37
|
-
[Unreleased]: https://github.com/lucasmundim/gamerom/compare/v0.
|
|
56
|
+
[Unreleased]: https://github.com/lucasmundim/gamerom/compare/v0.6.0...HEAD
|
|
57
|
+
[0.6.0]: https://github.com/lucasmundim/gamerom/compare/v0.5.0...v0.6.0
|
|
58
|
+
[0.5.0]: https://github.com/lucasmundim/gamerom/compare/v0.4.1...v0.5.0
|
|
38
59
|
[0.4.1]: https://github.com/lucasmundim/gamerom/compare/v0.4.0...v0.4.1
|
|
39
60
|
[0.4.0]: https://github.com/lucasmundim/gamerom/compare/v0.3.0...v0.4.0
|
|
40
61
|
[0.3.0]: https://github.com/lucasmundim/gamerom/compare/v0.2.2...v0.3.0
|
data/Dockerfile
CHANGED
|
@@ -1,16 +1,26 @@
|
|
|
1
|
-
FROM ruby:3.
|
|
1
|
+
FROM ruby:3.4.12-alpine
|
|
2
2
|
|
|
3
3
|
RUN apk add --no-cache --virtual .build-deps \
|
|
4
4
|
build-base \
|
|
5
|
+
ca-certificates \
|
|
6
|
+
curl \
|
|
5
7
|
git
|
|
6
8
|
|
|
7
9
|
# throw errors if Gemfile has been modified since Gemfile.lock
|
|
8
10
|
RUN bundle config --global frozen 1
|
|
9
11
|
|
|
12
|
+
# Add missing certificates
|
|
13
|
+
RUN curl -s https://letsencrypt.org/certs/2024/e5.pem -o /etc/ssl/certs/e5.pem && \
|
|
14
|
+
curl -s https://letsencrypt.org/certs/2024/e5.pem -o /etc/ssl/certs/e5.pem && \
|
|
15
|
+
curl -s https://letsencrypt.org/certs/2024/e6.pem -o /etc/ssl/certs/e6.pem && \
|
|
16
|
+
curl -s https://letsencrypt.org/certs/2024/r10.pem -o /etc/ssl/certs/r10.pem && \
|
|
17
|
+
curl -s https://letsencrypt.org/certs/2024/r11.pem -o /etc/ssl/certs/r11.pem && \
|
|
18
|
+
update-ca-certificates
|
|
19
|
+
|
|
10
20
|
RUN mkdir -p /bundle && chmod 777 /bundle
|
|
11
21
|
|
|
12
22
|
ENV GEM_HOME="/bundle"
|
|
13
|
-
ENV PATH
|
|
23
|
+
ENV PATH=$GEM_HOME/bin:$GEM_HOME/gems/bin:$PATH
|
|
14
24
|
|
|
15
25
|
RUN mkdir -p /app
|
|
16
26
|
WORKDIR /app
|
|
@@ -18,4 +28,4 @@ WORKDIR /app
|
|
|
18
28
|
COPY . .
|
|
19
29
|
RUN bundle install
|
|
20
30
|
|
|
21
|
-
ENTRYPOINT ["/app/entrypoint.sh"]
|
|
31
|
+
ENTRYPOINT ["/app/entrypoint.sh"]
|
data/Gemfile
CHANGED
|
@@ -5,8 +5,10 @@ source 'https://rubygems.org'
|
|
|
5
5
|
# Specify your gem's dependencies in gamerom.gemspec
|
|
6
6
|
gemspec
|
|
7
7
|
|
|
8
|
-
gem 'rake', '~> 13.
|
|
8
|
+
gem 'rake', '~> 13.4.2'
|
|
9
9
|
|
|
10
|
-
gem 'rspec', '~> 3.
|
|
10
|
+
gem 'rspec', '~> 3.13.2'
|
|
11
11
|
|
|
12
|
-
gem 'rubocop', '~>
|
|
12
|
+
gem 'rubocop', '~> 1.92.2'
|
|
13
|
+
gem 'rubocop-rake', '~> 0.7.1'
|
|
14
|
+
gem 'rubocop-rspec', '~> 3.10.2'
|
data/Gemfile.lock
CHANGED
|
@@ -1,34 +1,40 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: .
|
|
3
3
|
specs:
|
|
4
|
-
gamerom (0.
|
|
5
|
-
mechanize (~> 2.
|
|
4
|
+
gamerom (0.6.0)
|
|
5
|
+
mechanize (~> 2.14.2)
|
|
6
6
|
mechanize-progressbar (~> 0.2.0)
|
|
7
|
-
nokogiri (~> 1.
|
|
8
|
-
progressbar (~>
|
|
7
|
+
nokogiri (~> 1.19.4)
|
|
8
|
+
progressbar (~> 1.13.0)
|
|
9
9
|
rest-client (~> 2.1.0)
|
|
10
|
-
thor (~> 1.
|
|
10
|
+
thor (~> 1.5.0)
|
|
11
11
|
|
|
12
12
|
GEM
|
|
13
13
|
remote: https://rubygems.org/
|
|
14
14
|
specs:
|
|
15
|
-
addressable (2.
|
|
16
|
-
public_suffix (>= 2.0.2, <
|
|
17
|
-
ast (2.4.
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
15
|
+
addressable (2.9.2)
|
|
16
|
+
public_suffix (>= 2.0.2, < 8.0)
|
|
17
|
+
ast (2.4.3)
|
|
18
|
+
base64 (0.3.0)
|
|
19
|
+
connection_pool (3.0.2)
|
|
20
|
+
diff-lcs (1.6.2)
|
|
21
|
+
domain_name (0.7.20261007)
|
|
22
22
|
http-accept (1.7.0)
|
|
23
|
-
http-cookie (1.
|
|
23
|
+
http-cookie (1.1.6)
|
|
24
24
|
domain_name (~> 0.5)
|
|
25
|
-
|
|
26
|
-
|
|
25
|
+
json (3.1.0)
|
|
26
|
+
language_server-protocol (3.17.0.6)
|
|
27
|
+
lint_roller (1.1.0)
|
|
28
|
+
logger (1.7.0)
|
|
29
|
+
mechanize (2.14.2)
|
|
30
|
+
addressable (~> 2.8)
|
|
31
|
+
base64
|
|
27
32
|
domain_name (~> 0.5, >= 0.5.20190701)
|
|
28
33
|
http-cookie (~> 1.0, >= 1.0.3)
|
|
29
|
-
mime-types (~> 3.
|
|
34
|
+
mime-types (~> 3.3)
|
|
30
35
|
net-http-digest_auth (~> 1.4, >= 1.4.1)
|
|
31
36
|
net-http-persistent (>= 2.5.2, < 5.0.dev)
|
|
37
|
+
nkf
|
|
32
38
|
nokogiri (~> 1.11, >= 1.11.2)
|
|
33
39
|
rubyntlm (~> 0.6, >= 0.6.3)
|
|
34
40
|
webrick (~> 1.7)
|
|
@@ -36,75 +42,99 @@ GEM
|
|
|
36
42
|
mechanize-progressbar (0.2.0)
|
|
37
43
|
mechanize (>= 1.0.0)
|
|
38
44
|
progressbar (>= 0.9.0)
|
|
39
|
-
mime-types (3.
|
|
40
|
-
|
|
41
|
-
|
|
45
|
+
mime-types (3.7.0)
|
|
46
|
+
logger
|
|
47
|
+
mime-types-data (~> 3.2025, >= 3.2025.0507)
|
|
48
|
+
mime-types-data (3.2026.1027)
|
|
42
49
|
net-http-digest_auth (1.4.1)
|
|
43
|
-
net-http-persistent (4.0.
|
|
44
|
-
connection_pool (
|
|
50
|
+
net-http-persistent (4.0.8)
|
|
51
|
+
connection_pool (>= 2.2.4, < 4)
|
|
45
52
|
netrc (0.11.0)
|
|
46
|
-
|
|
53
|
+
nkf (0.3.0)
|
|
54
|
+
nokogiri (1.19.4-aarch64-linux-musl)
|
|
47
55
|
racc (~> 1.4)
|
|
48
|
-
nokogiri (1.
|
|
56
|
+
nokogiri (1.19.4-arm64-darwin)
|
|
49
57
|
racc (~> 1.4)
|
|
50
|
-
|
|
51
|
-
|
|
58
|
+
nokogiri (1.19.4-x86_64-darwin)
|
|
59
|
+
racc (~> 1.4)
|
|
60
|
+
nokogiri (1.19.4-x86_64-linux-gnu)
|
|
61
|
+
racc (~> 1.4)
|
|
62
|
+
nokogiri (1.19.4-x86_64-linux-musl)
|
|
63
|
+
racc (~> 1.4)
|
|
64
|
+
parallel (2.3.0)
|
|
65
|
+
parser (3.3.13.0)
|
|
52
66
|
ast (~> 2.4.1)
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
67
|
+
racc
|
|
68
|
+
prism (1.9.0)
|
|
69
|
+
progressbar (1.13.0)
|
|
70
|
+
public_suffix (7.0.5)
|
|
71
|
+
racc (1.8.1)
|
|
72
|
+
rainbow (3.1.1)
|
|
73
|
+
rake (13.4.2)
|
|
74
|
+
regexp_parser (2.13.1)
|
|
59
75
|
rest-client (2.1.0)
|
|
60
76
|
http-accept (>= 1.7.0, < 2.0)
|
|
61
77
|
http-cookie (>= 1.0.2, < 2.0)
|
|
62
78
|
mime-types (>= 1.16, < 4.0)
|
|
63
79
|
netrc (~> 0.8)
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
rspec-
|
|
67
|
-
rspec-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
rspec-expectations (3.10.1)
|
|
80
|
+
rspec (3.13.2)
|
|
81
|
+
rspec-core (~> 3.13.0)
|
|
82
|
+
rspec-expectations (~> 3.13.0)
|
|
83
|
+
rspec-mocks (~> 3.13.0)
|
|
84
|
+
rspec-core (3.13.6)
|
|
85
|
+
rspec-support (~> 3.13.0)
|
|
86
|
+
rspec-expectations (3.13.5)
|
|
72
87
|
diff-lcs (>= 1.2.0, < 2.0)
|
|
73
|
-
rspec-support (~> 3.
|
|
74
|
-
rspec-mocks (3.
|
|
88
|
+
rspec-support (~> 3.13.0)
|
|
89
|
+
rspec-mocks (3.13.8)
|
|
75
90
|
diff-lcs (>= 1.2.0, < 2.0)
|
|
76
|
-
rspec-support (~> 3.
|
|
77
|
-
rspec-support (3.
|
|
78
|
-
rubocop (
|
|
79
|
-
|
|
80
|
-
|
|
91
|
+
rspec-support (~> 3.13.0)
|
|
92
|
+
rspec-support (3.13.7)
|
|
93
|
+
rubocop (1.92.2)
|
|
94
|
+
json (>= 2.3)
|
|
95
|
+
language_server-protocol (~> 3.17.0.2)
|
|
96
|
+
lint_roller (~> 1.1.0)
|
|
97
|
+
parallel (>= 1.10)
|
|
98
|
+
parser (>= 3.3.0.2)
|
|
81
99
|
rainbow (>= 2.2.2, < 4.0)
|
|
82
|
-
regexp_parser (>=
|
|
83
|
-
|
|
84
|
-
rubocop-ast (>= 0.6.0)
|
|
100
|
+
regexp_parser (>= 2.11.3, < 3.0)
|
|
101
|
+
rubocop-ast (>= 1.49.0, < 2.0)
|
|
85
102
|
ruby-progressbar (~> 1.7)
|
|
86
|
-
unicode-display_width (>=
|
|
87
|
-
rubocop-ast (1.
|
|
88
|
-
parser (>=
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
103
|
+
unicode-display_width (>= 2.4.0, < 4.0)
|
|
104
|
+
rubocop-ast (1.50.0)
|
|
105
|
+
parser (>= 3.3.7.2)
|
|
106
|
+
prism (~> 1.7)
|
|
107
|
+
rubocop-rake (0.7.1)
|
|
108
|
+
lint_roller (~> 1.1)
|
|
109
|
+
rubocop (>= 1.72.1)
|
|
110
|
+
rubocop-rspec (3.10.2)
|
|
111
|
+
lint_roller (~> 1.1)
|
|
112
|
+
regexp_parser (>= 2.0)
|
|
113
|
+
rubocop (~> 1.86, >= 1.86.2)
|
|
114
|
+
ruby-progressbar (1.13.0)
|
|
115
|
+
rubyntlm (0.6.8)
|
|
116
|
+
base64
|
|
117
|
+
thor (1.5.0)
|
|
118
|
+
unicode-display_width (3.3.0)
|
|
119
|
+
unicode-emoji (~> 4.3)
|
|
120
|
+
unicode-emoji (4.3.0)
|
|
121
|
+
webrick (1.9.2)
|
|
97
122
|
webrobots (0.1.2)
|
|
98
123
|
|
|
99
124
|
PLATFORMS
|
|
125
|
+
aarch64-linux-musl
|
|
126
|
+
arm64-darwin-24
|
|
100
127
|
x86_64-darwin-20
|
|
128
|
+
x86_64-linux
|
|
101
129
|
x86_64-linux-musl
|
|
102
130
|
|
|
103
131
|
DEPENDENCIES
|
|
104
132
|
gamerom!
|
|
105
|
-
rake (~> 13.
|
|
106
|
-
rspec (~> 3.
|
|
107
|
-
rubocop (~>
|
|
133
|
+
rake (~> 13.4.2)
|
|
134
|
+
rspec (~> 3.13.2)
|
|
135
|
+
rubocop (~> 1.92.2)
|
|
136
|
+
rubocop-rake (~> 0.7.1)
|
|
137
|
+
rubocop-rspec (~> 3.10.2)
|
|
108
138
|
|
|
109
139
|
BUNDLED WITH
|
|
110
|
-
2.
|
|
140
|
+
2.6.9
|
data/Makefile
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
VERSION
|
|
2
|
-
IMAGE
|
|
3
|
-
DOCKER_OPTS
|
|
1
|
+
VERSION?=$(shell cat lib/gamerom/version.rb |grep VERSION|cut -d\' -f2)
|
|
2
|
+
IMAGE?=lucasmundim/gamerom:${VERSION}
|
|
3
|
+
DOCKER_OPTS=-e UID=$(shell id -u) -e GROUP_ID=$(shell id -g) --rm -it -v ${HOME}/.gamerom:/root/.gamerom --platform=linux/amd64 ${IMAGE}
|
|
4
4
|
LOCAL_VOLUME_OPTS=-v ${CURDIR}:/app
|
|
5
5
|
DOCKER_DEVELOPMENT_OPTS=${LOCAL_VOLUME_OPTS} --entrypoint '' ${DOCKER_OPTS}
|
|
6
6
|
|
|
@@ -8,7 +8,7 @@ version:
|
|
|
8
8
|
@echo ${VERSION}
|
|
9
9
|
|
|
10
10
|
build:
|
|
11
|
-
@docker build -t ${IMAGE} .
|
|
11
|
+
@docker build --platform=linux/amd64 -t ${IMAGE} .
|
|
12
12
|
|
|
13
13
|
console:
|
|
14
14
|
@docker run ${DOCKER_DEVELOPMENT_OPTS} ./bin/console
|
data/README.md
CHANGED
|
@@ -4,9 +4,9 @@ A command-line installer for game ROMs from many repositories.
|
|
|
4
4
|
|
|
5
5
|
It currently supports the following repositories:
|
|
6
6
|
|
|
7
|
-
- https://vimm.net
|
|
8
7
|
- https://coolrom.com.au
|
|
9
|
-
- https://
|
|
8
|
+
- https://edgeemu.net
|
|
9
|
+
- https://vimm.net (search and database only: downloads must be done manually, see `install` below)
|
|
10
10
|
|
|
11
11
|
## Installation
|
|
12
12
|
|
|
@@ -15,7 +15,7 @@ It currently supports the following repositories:
|
|
|
15
15
|
Add this to your .bashrc, .bash_aliases, etc:
|
|
16
16
|
|
|
17
17
|
```
|
|
18
|
-
alias gamerom="docker run -e UID=$(id -u) -e GROUP_ID=$(id -g) --rm -it -v ~/.gamerom:/home/runuser/.gamerom docker.io/lucasmundim/gamerom:0.
|
|
18
|
+
alias gamerom="docker run -e UID=$(id -u) -e GROUP_ID=$(id -g) --rm -it -v ~/.gamerom:/home/runuser/.gamerom --platform=linux/amd64 docker.io/lucasmundim/gamerom:0.6.0"
|
|
19
19
|
```
|
|
20
20
|
|
|
21
21
|
Use it as:
|
|
@@ -86,7 +86,7 @@ List available repo
|
|
|
86
86
|
$ gamerom repo
|
|
87
87
|
listing available repo...
|
|
88
88
|
coolrom
|
|
89
|
-
|
|
89
|
+
edgeemu
|
|
90
90
|
vimm
|
|
91
91
|
```
|
|
92
92
|
|
|
@@ -125,43 +125,58 @@ listing available platforms for coolrom repo...
|
|
|
125
125
|
```
|
|
126
126
|
|
|
127
127
|
```
|
|
128
|
-
$ gamerom
|
|
129
|
-
listing available platforms for
|
|
128
|
+
$ gamerom platform -r edgeemu
|
|
129
|
+
listing available platforms for edgeemu repo...
|
|
130
130
|
---
|
|
131
131
|
:platforms:
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
132
|
+
atari-2600: Atari 2600
|
|
133
|
+
atari-5200: Atari 5200
|
|
134
|
+
atari-7800: Atari 7800
|
|
135
|
+
atari-jaguar: Atari Jaguar
|
|
136
|
+
atari-jaguar-cd: Atari Jaguar CD
|
|
137
|
+
atari-lynx: Atari Lynx
|
|
138
|
+
atari-st: Atari ST
|
|
139
|
+
bandai-wonderswan: Bandai WonderSwan
|
|
140
|
+
colecovision: Coleco ColecoVision
|
|
141
|
+
commodore-64: Commodore 64
|
|
142
|
+
commodore-amiga: Commodore Amiga
|
|
143
|
+
commodore-amiga-cd: Commodore Amiga CD
|
|
144
|
+
commodore-amiga-cd32: Commodore Amiga CD32
|
|
145
|
+
commodore-plus-4: Commodore Plus-4
|
|
146
|
+
commodore-vic-20: Commodore VIC-20
|
|
147
|
+
fairchild-channel-f: Fairchild Channel F
|
|
148
|
+
gce-vectrex: GCE Vectrex
|
|
149
|
+
microsoft-msx: Microsoft MSX / MSX2
|
|
150
|
+
nec-pc-engine-cd-turbografx-cd: NEC PC Engine CD / TurboGrafx CD
|
|
151
|
+
nec-pc-engine-supergrafx: NEC PC Engine SuperGrafx
|
|
152
|
+
nec-pc-engine-turbografx-16: NEC PC Engine / TurboGrafx 16
|
|
153
|
+
nintendo-64: Nintendo 64
|
|
154
|
+
nintendo-ds: Nintendo DS
|
|
155
|
+
nintendo-fds: Nintendo Famicom Disk System (FDS)
|
|
156
|
+
nintendo-gameboy: Nintendo Game Boy
|
|
157
|
+
nintendo-gameboy-advance: Nintendo Game Boy Advance
|
|
158
|
+
nintendo-gameboy-color: Nintendo Game Boy Color
|
|
159
|
+
nintendo-gamecube: Nintendo Gamecube
|
|
160
|
+
nintendo-nes: Nintendo Entertainment System (NES)
|
|
161
|
+
nintendo-satellaview: Nintendo Satellaview
|
|
162
|
+
nintendo-snes: Super NES (SNES)
|
|
163
|
+
nintendo-virtualboy: Nintendo Virtual Boy
|
|
164
|
+
panasonic-3do: Panasonic 3DO
|
|
165
|
+
philips-cdi: Philips CDi
|
|
166
|
+
rca-studioii: RCA Studio II
|
|
167
|
+
sega-32x: Sega 32X
|
|
168
|
+
sega-cd: Sega Mega-CD / Sega CD
|
|
169
|
+
sega-dreamcast: Sega Dreamcast
|
|
170
|
+
sega-gamegear: Sega Game Gear
|
|
171
|
+
sega-genesis: Sega Mega Drive / Genesis
|
|
172
|
+
sega-pico: Sega PICO
|
|
173
|
+
sega-saturn: Sega Saturn
|
|
174
|
+
sega-sg1000: Sega SG-1000
|
|
175
|
+
sega-sms: Sega Master System / Mark III
|
|
176
|
+
sinclair-zx-spectrum-3: Sinclair ZX Spectrum +3
|
|
177
|
+
snk-neo-geo-cd: SNK Neo Geo CD
|
|
178
|
+
snk-ngpc: SNK Neo Geo Pocket Color
|
|
179
|
+
watara-supervision: Watara Supervision
|
|
165
180
|
```
|
|
166
181
|
|
|
167
182
|
```
|
|
@@ -214,12 +229,19 @@ ID NAME REGION INSTALLED TAGS
|
|
|
214
229
|
Search games by KEYWORD
|
|
215
230
|
|
|
216
231
|
```
|
|
217
|
-
$ gamerom search -r
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
232
|
+
$ gamerom search -r vimm -p segamastersystem "Alex Kidd in Shinobi World"
|
|
233
|
+
$ bundle exec gamerom search --repo vimm --platform SMS "Alex Kidd"
|
|
234
|
+
searching available games for SMS platform on vimm repo...
|
|
235
|
+
ID NAME REGION INSTALLED TAGS
|
|
236
|
+
83680 Alex Kidd in Miracle World USA - -
|
|
237
|
+
83681 Alex Kidd in Miracle World USA - -
|
|
238
|
+
83682 Alex Kidd in Miracle World (Sega Ages) USA - -
|
|
239
|
+
83682 Alex Kidd in Miracle World (Sega Ages) USA - -
|
|
240
|
+
83684 Alex Kidd in Shinobi World USA - -
|
|
241
|
+
83671 Alex Kidd: High-Tech World USA - -
|
|
242
|
+
83673 Alex Kidd: The Lost Stars USA - -
|
|
243
|
+
83630 [BIOS] Alex Kidd in Miracle World USA - -
|
|
244
|
+
83631 [BIOS] Alex Kidd in Miracle World (Sega Ages) USA - -
|
|
223
245
|
```
|
|
224
246
|
|
|
225
247
|
### regions
|
|
@@ -246,13 +268,24 @@ USA
|
|
|
246
268
|
|
|
247
269
|
Install game GAME_IDENTIFIER (id/name)
|
|
248
270
|
|
|
271
|
+
```
|
|
272
|
+
$ gamerom install -r edgeemu -p rca-studioii 'Pinball (Europe)'
|
|
273
|
+
installing game 2675927342 - Pinball (Europe) - Europe on rca-studioii platform on edgeemu repo...
|
|
274
|
+
100% |ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo| 1.1KB 12.3KB/s Time: 00:00:00
|
|
275
|
+
Downloaded: Pinball (Europe).zip
|
|
276
|
+
Game installed
|
|
277
|
+
```
|
|
278
|
+
|
|
279
|
+
The vimm repo does not allow automated downloads, so `install` tells you where to
|
|
280
|
+
download the game and where to save it. Run `recover` afterwards to register it:
|
|
281
|
+
|
|
249
282
|
```
|
|
250
283
|
$ gamerom install -r vimm -p NES 'Mega Man'
|
|
251
284
|
installing game 545 - Mega Man - USA on NES platform on vimm repo...
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
285
|
+
vimm.net does not allow automated downloads.
|
|
286
|
+
Download the game from https://vimm.net/vault/545 in your browser and save it to:
|
|
287
|
+
/home/user/.gamerom/games/vimm/NES/USA/
|
|
288
|
+
Then run `gamerom recover -r vimm -p NES` to register it.
|
|
256
289
|
```
|
|
257
290
|
|
|
258
291
|
### install_all
|
|
@@ -585,7 +618,7 @@ Print program version
|
|
|
585
618
|
|
|
586
619
|
```
|
|
587
620
|
$ gamerom version
|
|
588
|
-
0.
|
|
621
|
+
0.6.0
|
|
589
622
|
```
|
|
590
623
|
|
|
591
624
|
## Development
|
data/entrypoint.sh
CHANGED
|
@@ -2,5 +2,6 @@
|
|
|
2
2
|
delgroup dialout
|
|
3
3
|
addgroup -g "$GROUP_ID" rungroup
|
|
4
4
|
adduser -u $UID -D -s /bin/sh -G rungroup runuser
|
|
5
|
+
git config --system --add safe.directory '/app'
|
|
5
6
|
command="cd /app && GEM_HOME="/bundle" PATH=$GEM_HOME/bin:$GEM_HOME/gems/bin:$PATH bundle exec ./exe/gamerom ${@}"
|
|
6
7
|
su - runuser -c "$command"
|
data/exe/gamerom
CHANGED
|
@@ -3,4 +3,20 @@
|
|
|
3
3
|
|
|
4
4
|
require 'gamerom'
|
|
5
5
|
|
|
6
|
+
def shut_down
|
|
7
|
+
puts "\nShutting down gracefully..."
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
# Trap ^C
|
|
11
|
+
Signal.trap('INT') do
|
|
12
|
+
shut_down
|
|
13
|
+
exit
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
# Trap `Kill `
|
|
17
|
+
Signal.trap('TERM') do
|
|
18
|
+
shut_down
|
|
19
|
+
exit
|
|
20
|
+
end
|
|
21
|
+
|
|
6
22
|
Gamerom::Cli.start(ARGV)
|
data/gamerom.gemspec
CHANGED
|
@@ -12,13 +12,14 @@ Gem::Specification.new do |spec|
|
|
|
12
12
|
spec.description = 'A command-line installer for game ROMs from many repositories.'
|
|
13
13
|
spec.homepage = 'https://github.com/lucasmundim/gamerom'
|
|
14
14
|
spec.license = 'MIT'
|
|
15
|
-
spec.required_ruby_version = Gem::Requirement.new('>= 3.
|
|
15
|
+
spec.required_ruby_version = Gem::Requirement.new('>= 3.4.2')
|
|
16
16
|
|
|
17
17
|
spec.metadata['allowed_push_host'] = 'https://rubygems.org'
|
|
18
18
|
|
|
19
19
|
spec.metadata['homepage_uri'] = spec.homepage
|
|
20
20
|
spec.metadata['source_code_uri'] = spec.homepage
|
|
21
21
|
spec.metadata['changelog_uri'] = "#{spec.homepage}/blob/master/CHANGELOG.md"
|
|
22
|
+
spec.metadata['rubygems_mfa_required'] = 'true'
|
|
22
23
|
|
|
23
24
|
# Specify which files should be added to the gem when it is released.
|
|
24
25
|
# The `git ls-files -z` loads the files in the RubyGem that have been added into git.
|
|
@@ -29,12 +30,12 @@ Gem::Specification.new do |spec|
|
|
|
29
30
|
spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
|
|
30
31
|
spec.require_paths = ['lib']
|
|
31
32
|
|
|
32
|
-
spec.
|
|
33
|
-
spec.
|
|
34
|
-
spec.
|
|
35
|
-
spec.
|
|
36
|
-
spec.
|
|
37
|
-
spec.
|
|
33
|
+
spec.add_dependency 'mechanize', '~> 2.14.2'
|
|
34
|
+
spec.add_dependency 'mechanize-progressbar', '~> 0.2.0'
|
|
35
|
+
spec.add_dependency 'nokogiri', '~> 1.19.4'
|
|
36
|
+
spec.add_dependency 'progressbar', '~> 1.13.0'
|
|
37
|
+
spec.add_dependency 'rest-client', '~> 2.1.0'
|
|
38
|
+
spec.add_dependency 'thor', '~> 1.5.0'
|
|
38
39
|
|
|
39
40
|
# For more information and examples about making a new gem, checkout our
|
|
40
41
|
# guide at: https://bundler.io/guides/creating_gem.html
|