mcserver-cli 4.0.0.dev0__tar.gz → 4.2.0__tar.gz
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.
- {mcserver_cli-4.0.0.dev0 → mcserver_cli-4.2.0}/CHANGELOG.md +22 -3
- mcserver_cli-4.2.0/CONTRIBUTING.md +16 -0
- {mcserver_cli-4.0.0.dev0 → mcserver_cli-4.2.0}/NOTES.txt +52 -1
- {mcserver_cli-4.0.0.dev0 → mcserver_cli-4.2.0}/PKG-INFO +6 -5
- {mcserver_cli-4.0.0.dev0 → mcserver_cli-4.2.0}/README.md +5 -4
- {mcserver_cli-4.0.0.dev0 → mcserver_cli-4.2.0}/pyproject.toml +5 -0
- mcserver_cli-4.2.0/src/mcserver/__init__.py +1 -0
- {mcserver_cli-4.0.0.dev0 → mcserver_cli-4.2.0}/src/mcserver/cli.py +25 -65
- {mcserver_cli-4.0.0.dev0 → mcserver_cli-4.2.0}/src/mcserver/commands/__init__.py +12 -12
- mcserver_cli-4.2.0/src/mcserver/commands/add.py +232 -0
- mcserver_cli-4.0.0.dev0/src/mcserver/commands/initialize_server.py → mcserver_cli-4.2.0/src/mcserver/commands/init.py +39 -15
- mcserver_cli-4.2.0/src/mcserver/commands/search.py +183 -0
- mcserver_cli-4.2.0/src/mcserver/commands/show.py +105 -0
- mcserver_cli-4.0.0.dev0/src/mcserver/commands/start_server.py → mcserver_cli-4.2.0/src/mcserver/commands/start.py +26 -14
- mcserver_cli-4.0.0.dev0/src/mcserver/commands/stop_server.py → mcserver_cli-4.2.0/src/mcserver/commands/stop.py +2 -10
- {mcserver_cli-4.0.0.dev0 → mcserver_cli-4.2.0}/src/mcserver/config.py +8 -3
- {mcserver_cli-4.0.0.dev0 → mcserver_cli-4.2.0}/src/mcserver/fabricmc/meta.py +1 -1
- {mcserver_cli-4.0.0.dev0 → mcserver_cli-4.2.0}/src/mcserver/metadata.py +8 -6
- mcserver_cli-4.2.0/src/mcserver/modrinth/apis/__init__.py +9 -0
- {mcserver_cli-4.0.0.dev0 → mcserver_cli-4.2.0}/src/mcserver/modrinth/apis/get_project_informations.py +33 -35
- {mcserver_cli-4.0.0.dev0 → mcserver_cli-4.2.0}/src/mcserver/modrinth/apis/get_project_versions.py +82 -40
- {mcserver_cli-4.0.0.dev0 → mcserver_cli-4.2.0}/src/mcserver/modrinth/apis/search_projects.py +64 -27
- {mcserver_cli-4.0.0.dev0 → mcserver_cli-4.2.0}/src/mcserver/modrinth/project_records.py +39 -28
- {mcserver_cli-4.0.0.dev0 → mcserver_cli-4.2.0}/src/mcserver/modrinth/shared.py +22 -20
- {mcserver_cli-4.0.0.dev0 → mcserver_cli-4.2.0}/src/mcserver/modrinth/slug_index.py +3 -7
- mcserver_cli-4.2.0/src/mcserver/modrinth/typings/__init__.py +50 -0
- mcserver_cli-4.0.0.dev0/src/mcserver/modrinth/typings/project_informations.py → mcserver_cli-4.2.0/src/mcserver/modrinth/typings/project_information.py +5 -3
- mcserver_cli-4.2.0/src/mcserver/modrinth/typings/project_version.py +90 -0
- {mcserver_cli-4.0.0.dev0 → mcserver_cli-4.2.0}/src/mcserver/mysterious.py +1 -1
- {mcserver_cli-4.0.0.dev0 → mcserver_cli-4.2.0}/src/mcserver/networking.py +3 -0
- {mcserver_cli-4.0.0.dev0 → mcserver_cli-4.2.0}/src/mcserver/paths.py +2 -1
- {mcserver_cli-4.0.0.dev0 → mcserver_cli-4.2.0}/src/mcserver/resolver.py +49 -30
- {mcserver_cli-4.0.0.dev0 → mcserver_cli-4.2.0}/src/mcserver/shared.py +29 -7
- {mcserver_cli-4.0.0.dev0 → mcserver_cli-4.2.0}/zip_app.py +2 -1
- mcserver_cli-4.0.0.dev0/CONTRIBUTING.md +0 -9
- mcserver_cli-4.0.0.dev0/a.py +0 -72
- mcserver_cli-4.0.0.dev0/src/mcserver/__init__.py +0 -1
- mcserver_cli-4.0.0.dev0/src/mcserver/commands/add_projects.py +0 -148
- mcserver_cli-4.0.0.dev0/src/mcserver/commands/search_projects.py +0 -109
- mcserver_cli-4.0.0.dev0/src/mcserver/commands/show_projects.py +0 -29
- mcserver_cli-4.0.0.dev0/src/mcserver/modrinth/api.py +0 -768
- mcserver_cli-4.0.0.dev0/src/mcserver/modrinth/apis/__init__.py +0 -9
- mcserver_cli-4.0.0.dev0/src/mcserver/modrinth/project_records/metadata.py +0 -0
- mcserver_cli-4.0.0.dev0/src/mcserver/modrinth/project_records/relationships.py +0 -205
- mcserver_cli-4.0.0.dev0/src/mcserver/modrinth/project_records/shared.py +0 -8
- mcserver_cli-4.0.0.dev0/src/mcserver/modrinth/typings/__init__.py +0 -38
- {mcserver_cli-4.0.0.dev0 → mcserver_cli-4.2.0}/.gitignore +0 -0
- {mcserver_cli-4.0.0.dev0 → mcserver_cli-4.2.0}/LICENSE +0 -0
- {mcserver_cli-4.0.0.dev0/src/mcserver → mcserver_cli-4.2.0/legacy}/mcserver_v2.0.0.py +0 -0
- {mcserver_cli-4.0.0.dev0 → mcserver_cli-4.2.0}/src/__main__.py +0 -0
- {mcserver_cli-4.0.0.dev0 → mcserver_cli-4.2.0}/src/mcserver/__main__.py +0 -0
- {mcserver_cli-4.0.0.dev0 → mcserver_cli-4.2.0}/src/mcserver/app.py +0 -0
- {mcserver_cli-4.0.0.dev0 → mcserver_cli-4.2.0}/src/mcserver/caching.py +0 -0
- {mcserver_cli-4.0.0.dev0 → mcserver_cli-4.2.0}/src/mcserver/commands/import_setup.py +0 -0
- {mcserver_cli-4.0.0.dev0 → mcserver_cli-4.2.0}/src/mcserver/commands/list_projects.py +0 -0
- {mcserver_cli-4.0.0.dev0 → mcserver_cli-4.2.0}/src/mcserver/commands/op_grant.py +0 -0
- {mcserver_cli-4.0.0.dev0 → mcserver_cli-4.2.0}/src/mcserver/commands/op_list.py +0 -0
- {mcserver_cli-4.0.0.dev0 → mcserver_cli-4.2.0}/src/mcserver/commands/op_revoke.py +0 -0
- {mcserver_cli-4.0.0.dev0 → mcserver_cli-4.2.0}/src/mcserver/commands/print_help.py +0 -0
- {mcserver_cli-4.0.0.dev0 → mcserver_cli-4.2.0}/src/mcserver/commands/remove_projects.py +0 -0
- {mcserver_cli-4.0.0.dev0 → mcserver_cli-4.2.0}/src/mcserver/commands/server_status.py +0 -0
- {mcserver_cli-4.0.0.dev0 → mcserver_cli-4.2.0}/src/mcserver/commands/update_projects.py +0 -0
- {mcserver_cli-4.0.0.dev0 → mcserver_cli-4.2.0}/src/mcserver/commands/whitelist_add.py +0 -0
- {mcserver_cli-4.0.0.dev0 → mcserver_cli-4.2.0}/src/mcserver/commands/whitelist_list.py +0 -0
- {mcserver_cli-4.0.0.dev0 → mcserver_cli-4.2.0}/src/mcserver/commands/whitelist_remove.py +0 -0
- {mcserver_cli-4.0.0.dev0 → mcserver_cli-4.2.0}/src/mcserver/constants.py +0 -0
- {mcserver_cli-4.0.0.dev0/src/mcserver/legacyfabric → mcserver_cli-4.2.0/src/mcserver/legacy_fabric}/meta.py +0 -0
- {mcserver_cli-4.0.0.dev0 → mcserver_cli-4.2.0}/src/mcserver/minecraft/api.py +0 -0
- {mcserver_cli-4.0.0.dev0 → mcserver_cli-4.2.0}/src/mcserver/minecraft/player_identity.py +0 -0
- {mcserver_cli-4.0.0.dev0 → mcserver_cli-4.2.0}/src/mcserver/modrinth/constants.py +0 -0
- {mcserver_cli-4.0.0.dev0 → mcserver_cli-4.2.0}/src/mcserver/modrinth/modpack.py +0 -0
- {mcserver_cli-4.0.0.dev0 → mcserver_cli-4.2.0}/src/mcserver/modrinth/paths.py +0 -0
- {mcserver_cli-4.0.0.dev0 → mcserver_cli-4.2.0}/src/mcserver/modrinth/projects.py +0 -0
- {mcserver_cli-4.0.0.dev0 → mcserver_cli-4.2.0}/src/mcserver/modrinth/typings/search_projects.py +0 -0
- {mcserver_cli-4.0.0.dev0 → mcserver_cli-4.2.0}/src/mcserver/modrinth/typings/shared.py +0 -0
- {mcserver_cli-4.0.0.dev0 → mcserver_cli-4.2.0}/src/mcserver/mojang/eula.py +0 -0
- {mcserver_cli-4.0.0.dev0 → mcserver_cli-4.2.0}/src/mcserver/mojang/manifest.py +0 -0
- {mcserver_cli-4.0.0.dev0 → mcserver_cli-4.2.0}/src/mcserver/papermc/api.py +0 -0
- {mcserver_cli-4.0.0.dev0 → mcserver_cli-4.2.0}/src/mcserver/purpurmc/api.py +0 -0
- {mcserver_cli-4.0.0.dev0 → mcserver_cli-4.2.0}/src/mcserver/quiltmc/meta.py +0 -0
- {mcserver_cli-4.0.0.dev0 → mcserver_cli-4.2.0}/src/mcserver/server_files/banned_ips.py +0 -0
- {mcserver_cli-4.0.0.dev0 → mcserver_cli-4.2.0}/src/mcserver/server_files/banned_players.py +0 -0
- {mcserver_cli-4.0.0.dev0 → mcserver_cli-4.2.0}/src/mcserver/server_files/ops.py +0 -0
- {mcserver_cli-4.0.0.dev0 → mcserver_cli-4.2.0}/src/mcserver/server_files/properties.py +0 -0
- {mcserver_cli-4.0.0.dev0 → mcserver_cli-4.2.0}/src/mcserver/server_files/usercaches.py +0 -0
- {mcserver_cli-4.0.0.dev0 → mcserver_cli-4.2.0}/src/mcserver/server_files/whitelist.py +0 -0
- {mcserver_cli-4.0.0.dev0 → mcserver_cli-4.2.0}/src/mcserver/state.py +0 -0
|
@@ -5,16 +5,32 @@ All notable changes to this project will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
-
## [
|
|
8
|
+
## [4.2.0] - 2026-11-02
|
|
9
|
+
|
|
10
|
+
### Changed
|
|
11
|
+
|
|
12
|
+
- Reorder the `search` error message between 0 result and page is smaller than asked
|
|
13
|
+
|
|
14
|
+
## [4.1.0] - 2026-11-02
|
|
15
|
+
|
|
16
|
+
### Fixed
|
|
17
|
+
|
|
18
|
+
- `search` now say "No environment"
|
|
19
|
+
- `search` correctly use the appropiate project type for the homepage
|
|
20
|
+
|
|
21
|
+
## [4.0.0] - 2026-10-31
|
|
9
22
|
|
|
10
23
|
### Added
|
|
11
24
|
|
|
25
|
+
- Working `show` command
|
|
26
|
+
- Working `search` command
|
|
12
27
|
- New `--game-version` and `--loader` options to the `search` command
|
|
13
28
|
- New `--search-sort` and `--search-limit` options to the `init` command
|
|
14
|
-
-
|
|
15
29
|
|
|
16
30
|
### Changed
|
|
17
31
|
|
|
32
|
+
- Moved `slug_index.json` to global `.mcserver` cache
|
|
33
|
+
- More information that the `show` command output
|
|
18
34
|
- Better `search` info message
|
|
19
35
|
- slug_index.json is now a global cache
|
|
20
36
|
|
|
@@ -212,7 +228,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
212
228
|
- Better mod conflict error
|
|
213
229
|
- Faster mod resolving
|
|
214
230
|
|
|
215
|
-
[unreleased]: https://github.com/Othecat35/MCServer/compare/
|
|
231
|
+
[unreleased]: https://github.com/Othecat35/MCServer/compare/v4.2.0...HEAD
|
|
232
|
+
[4.2.0]: https://github.com/Othecat35/MCServer/compare/v4.0.0...v4.1.0
|
|
233
|
+
[4.1.0]: https://github.com/Othecat35/MCServer/compare/v4.0.0...v4.1.0
|
|
234
|
+
[4.0.0]: https://github.com/Othecat35/MCServer/compare/v3.0.0...v4.0.0
|
|
216
235
|
[3.0.0]: https://github.com/Othecat35/MCServer/compare/v2.0.0...v3.0.0
|
|
217
236
|
[2.0.0]: https://github.com/Othecat35/MCServer/compare/v1.13.16...v2.0.0
|
|
218
237
|
[1.13.16]: https://github.com/Othecat35/MCServer/compare/v1.13.15...v1.13.16
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# License
|
|
2
|
+
|
|
3
|
+
By submitting a pull request, you agree that your contribution is licensed under the MIT License.
|
|
4
|
+
|
|
5
|
+
# Development
|
|
6
|
+
|
|
7
|
+
- Python >= 3.12 (3.14 is recommended)
|
|
8
|
+
- Install with `pip install -e .`
|
|
9
|
+
- Use `ruff format` to reformat code
|
|
10
|
+
|
|
11
|
+
# Release
|
|
12
|
+
|
|
13
|
+
1. Bump version in `src/mcserver/__init__.py`
|
|
14
|
+
2. `python zip_app.py`
|
|
15
|
+
3. Tag: `git tag vX.Y.Z && git push --tags`
|
|
16
|
+
4. Create GitHub release, attach `dist/mcserver`
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
Pls don't feed my creation to AI ;>
|
|
2
|
+
|
|
3
|
+
|
|
1
4
|
A file where I dumped ideas for this project.
|
|
2
5
|
|
|
3
6
|
CLI Commands:
|
|
@@ -183,7 +186,9 @@ check_dependency_conflicts: no
|
|
|
183
186
|
resolve_dependencies: ok... what are dependencies of mod b?
|
|
184
187
|
(some dialogue later)
|
|
185
188
|
resolve_dependencies: ok, there's no more dependency. here you go "return the list of dependencies"
|
|
186
|
-
user: why are there 29 mods including dependencies 0_0
|
|
189
|
+
user: why are there 29 mods including dependencies 0_0 (basucally the resolver works)
|
|
190
|
+
|
|
191
|
+
on second thought, the caller is the one that handle conflict.
|
|
187
192
|
|
|
188
193
|
thx chatgpt but I can't prove it yet
|
|
189
194
|
|
|
@@ -199,7 +204,15 @@ thx chatgpt but I can't prove it yet
|
|
|
199
204
|
- Review codes, especially TypedDict, because why not
|
|
200
205
|
- Avoid making myself suffer in this project, potentially abandoning this cool project
|
|
201
206
|
- I hate CurseForge personally.
|
|
207
|
+
|
|
208
|
+
|
|
209
|
+
|
|
202
210
|
- And yet I still have no friend (to talk about my weird hobby of computer, including this)
|
|
211
|
+
|
|
212
|
+
- Oh hi Finjer! idk if you are reading this, cool. so uh... idk I added stuff I guess, or remove stuff.
|
|
213
|
+
|
|
214
|
+
|
|
215
|
+
|
|
203
216
|
- Add command such as 'whitelist add/remove/list', 'ban/unban/ban-list', and probably 'op/deop <player> <level>'
|
|
204
217
|
|
|
205
218
|
MCServer™ Naming Convention: (the Trademark is just a joke)
|
|
@@ -340,3 +353,41 @@ make a visualize command to visualize installed projects that output to graphviz
|
|
|
340
353
|
we should merge the metadata.json and relationships.json back into one file :o
|
|
341
354
|
|
|
342
355
|
look at myterious.py, idk why yiu thought it would be a good idea to make it more fun, and dynamic even.
|
|
356
|
+
mcserver export --client-setup seems nice
|
|
357
|
+
mcserver add thdilos-fox-origin -y is better
|
|
358
|
+
mcserver add jade --include-optional make sense, but for specifically requested mod that is client_only_server_optional, include them. otherwise, put them into "suggested" mods.
|
|
359
|
+
|
|
360
|
+
yo the get_project_informations() is broken because moderator_message can be null
|
|
361
|
+
as for every API interface/client, we can instead return parsed (for those who we already know the structure), and then another, extra (just a dict[str, Any]). call the new typeddict, *Data.
|
|
362
|
+
|
|
363
|
+
About lazy loading imports... what if I make it so that imports that are required regardless, just
|
|
364
|
+
import it on the module instead? because if you do import it, you must have a reason to do so. Like,
|
|
365
|
+
you don't import a module and not use it at all, right? so just move the imports outside the function.
|
|
366
|
+
init.py:
|
|
367
|
+
import argparse
|
|
368
|
+
|
|
369
|
+
def init(args: argparse.Namespace):
|
|
370
|
+
import logging
|
|
371
|
+
...
|
|
372
|
+
|
|
373
|
+
|
|
374
|
+
init.py:
|
|
375
|
+
import argparse
|
|
376
|
+
import logging
|
|
377
|
+
|
|
378
|
+
def init(args: argparse.Namespace):
|
|
379
|
+
...
|
|
380
|
+
|
|
381
|
+
so, if you import init, you of course want to run init() right? so lazy-laoding it is not just useless,
|
|
382
|
+
it also make the code a bit more unreadable.
|
|
383
|
+
When do we lazy-loading stuff? imports that aren't always needed. Like command invocation in cli.py
|
|
384
|
+
with match case, because you don't need any to print the help message (except the help command itself),
|
|
385
|
+
or if you did, like init, you don't neccesearily need to import the stop command right? and also other
|
|
386
|
+
case is in init.py and start.pt. it import the appropriate loader and not other.
|
|
387
|
+
|
|
388
|
+
hmmm yes, global .mcserver config, just like cache.
|
|
389
|
+
it can be the default config of all your new Minecraft server derived from
|
|
390
|
+
and yea
|
|
391
|
+
|
|
392
|
+
|
|
393
|
+
2026-11-01, let's start not using AI?
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: mcserver-cli
|
|
3
|
-
Version: 4.
|
|
3
|
+
Version: 4.2.0
|
|
4
4
|
Summary: A CLI tool to manage Minecraft: Java Edition servers.
|
|
5
5
|
Project-URL: Homepage, https://github.com/Othecat35/MCServer
|
|
6
6
|
Project-URL: Repository, https://github.com/Othecat35/MCServer.git
|
|
@@ -44,14 +44,15 @@ Supported platforms:
|
|
|
44
44
|
## Usage
|
|
45
45
|
- Initialize a server: `mcserver init [options]`
|
|
46
46
|
- List operator players: `mcserver op list`
|
|
47
|
+
- Show information about projects: `mcserver show <projects>`
|
|
47
48
|
- Start the server: `mcserver start`
|
|
48
|
-
- Stop the server: `mcserver stop`
|
|
49
|
+
- Stop the server: `mcserver stop [--force-stop]`
|
|
49
50
|
- List whitelisted players: `mcserver whitelist list`
|
|
50
51
|
|
|
51
52
|
### Example
|
|
52
|
-
- Create a 1.20.1
|
|
53
|
+
- Create and start a Fabric 1.20.1 server on current directory
|
|
53
54
|
```bash
|
|
54
|
-
mcserver init --
|
|
55
|
+
mcserver init --game-version=1.20.1 --loader=fabric
|
|
55
56
|
mcserver start
|
|
56
57
|
```
|
|
57
58
|
|
|
@@ -60,11 +61,11 @@ mcserver start
|
|
|
60
61
|
mcserver op list
|
|
61
62
|
mcserver whitelist list
|
|
62
63
|
```
|
|
64
|
+
|
|
63
65
|
- Stop (sigterm) a server on current directory
|
|
64
66
|
```bash
|
|
65
67
|
mcserver stop
|
|
66
68
|
```
|
|
67
69
|
|
|
68
|
-
|
|
69
70
|
## Note
|
|
70
71
|
This is a **Personal Project**, things may be unstable.
|
|
@@ -31,14 +31,15 @@ Supported platforms:
|
|
|
31
31
|
## Usage
|
|
32
32
|
- Initialize a server: `mcserver init [options]`
|
|
33
33
|
- List operator players: `mcserver op list`
|
|
34
|
+
- Show information about projects: `mcserver show <projects>`
|
|
34
35
|
- Start the server: `mcserver start`
|
|
35
|
-
- Stop the server: `mcserver stop`
|
|
36
|
+
- Stop the server: `mcserver stop [--force-stop]`
|
|
36
37
|
- List whitelisted players: `mcserver whitelist list`
|
|
37
38
|
|
|
38
39
|
### Example
|
|
39
|
-
- Create a 1.20.1
|
|
40
|
+
- Create and start a Fabric 1.20.1 server on current directory
|
|
40
41
|
```bash
|
|
41
|
-
mcserver init --
|
|
42
|
+
mcserver init --game-version=1.20.1 --loader=fabric
|
|
42
43
|
mcserver start
|
|
43
44
|
```
|
|
44
45
|
|
|
@@ -47,11 +48,11 @@ mcserver start
|
|
|
47
48
|
mcserver op list
|
|
48
49
|
mcserver whitelist list
|
|
49
50
|
```
|
|
51
|
+
|
|
50
52
|
- Stop (sigterm) a server on current directory
|
|
51
53
|
```bash
|
|
52
54
|
mcserver stop
|
|
53
55
|
```
|
|
54
56
|
|
|
55
|
-
|
|
56
57
|
## Note
|
|
57
58
|
This is a **Personal Project**, things may be unstable.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "4.2.0"
|
|
@@ -1,23 +1,24 @@
|
|
|
1
1
|
def main() -> int:
|
|
2
2
|
import argparse
|
|
3
3
|
import sys
|
|
4
|
+
from types import FunctionType
|
|
4
5
|
|
|
5
6
|
from . import __version__
|
|
6
7
|
from .modrinth.shared import search_sort_index
|
|
7
8
|
from .shared import loader_list
|
|
8
9
|
|
|
9
|
-
def bound_int(min_integer: int, max_integer: int | None = None):
|
|
10
|
-
def parse(cli_string: str):
|
|
10
|
+
def bound_int(min_integer: int, max_integer: int | None = None) -> FunctionType:
|
|
11
|
+
def parse(cli_string: str) -> int:
|
|
11
12
|
try:
|
|
12
13
|
integer = int(cli_string)
|
|
13
|
-
except
|
|
14
|
+
except ValueError:
|
|
14
15
|
raise argparse.ArgumentTypeError(f"{cli_string} is not an integer")
|
|
15
16
|
|
|
16
|
-
if integer
|
|
17
|
+
if integer < min_integer:
|
|
17
18
|
raise argparse.ArgumentTypeError(
|
|
18
19
|
f"{integer} must be higher than or equal to {min_integer}"
|
|
19
20
|
)
|
|
20
|
-
if max_integer is not None and integer
|
|
21
|
+
if max_integer is not None and integer > max_integer:
|
|
21
22
|
raise argparse.ArgumentTypeError(
|
|
22
23
|
f"{integer} must be between {min_integer} and {max_integer} (inclusive)"
|
|
23
24
|
)
|
|
@@ -30,9 +31,9 @@ def main() -> int:
|
|
|
30
31
|
|
|
31
32
|
match command_name:
|
|
32
33
|
case "add":
|
|
33
|
-
from .commands import
|
|
34
|
+
from .commands import add
|
|
34
35
|
|
|
35
|
-
return
|
|
36
|
+
return add(args)
|
|
36
37
|
case "import":
|
|
37
38
|
from .commands import import_setup
|
|
38
39
|
|
|
@@ -42,9 +43,9 @@ def main() -> int:
|
|
|
42
43
|
|
|
43
44
|
return print_help(args)
|
|
44
45
|
case "init":
|
|
45
|
-
from .commands import
|
|
46
|
+
from .commands import init
|
|
46
47
|
|
|
47
|
-
return
|
|
48
|
+
return init(args)
|
|
48
49
|
case "list":
|
|
49
50
|
from .commands import list_projects
|
|
50
51
|
|
|
@@ -66,25 +67,25 @@ def main() -> int:
|
|
|
66
67
|
|
|
67
68
|
return remove_projects(args)
|
|
68
69
|
case "search":
|
|
69
|
-
from .commands import
|
|
70
|
+
from .commands import search
|
|
70
71
|
|
|
71
|
-
return
|
|
72
|
+
return search(args)
|
|
72
73
|
case "show":
|
|
73
|
-
from .commands import
|
|
74
|
+
from .commands import show
|
|
74
75
|
|
|
75
|
-
return
|
|
76
|
+
return show(args)
|
|
76
77
|
case "start":
|
|
77
|
-
from .commands import
|
|
78
|
+
from .commands import start
|
|
78
79
|
|
|
79
|
-
return
|
|
80
|
+
return start(args)
|
|
80
81
|
case "status":
|
|
81
82
|
from .commands import server_status
|
|
82
83
|
|
|
83
84
|
return server_status(args)
|
|
84
85
|
case "stop":
|
|
85
|
-
from .commands import
|
|
86
|
+
from .commands import stop
|
|
86
87
|
|
|
87
|
-
return
|
|
88
|
+
return stop(args)
|
|
88
89
|
case "update":
|
|
89
90
|
from .commands import update_projects
|
|
90
91
|
|
|
@@ -134,28 +135,6 @@ def main() -> int:
|
|
|
134
135
|
|
|
135
136
|
commands = parser.add_subparsers(title="Commands")
|
|
136
137
|
|
|
137
|
-
# 'add' command
|
|
138
|
-
add_command = commands.add_parser(
|
|
139
|
-
"add",
|
|
140
|
-
help="Add Modrinth projects to the server",
|
|
141
|
-
description="Add Modrinth mods/plugins to the server",
|
|
142
|
-
)
|
|
143
|
-
|
|
144
|
-
add_command.set_defaults(command_name="add")
|
|
145
|
-
add_command.add_argument(
|
|
146
|
-
"projects", nargs="+", type=str, help="Modrinth project slugs or IDs"
|
|
147
|
-
)
|
|
148
|
-
|
|
149
|
-
# 'import' command
|
|
150
|
-
import_command = commands.add_parser(
|
|
151
|
-
"import",
|
|
152
|
-
help="Import a Modrinth modpack",
|
|
153
|
-
description="Import a Modrinth modpack from a file.",
|
|
154
|
-
)
|
|
155
|
-
|
|
156
|
-
import_command.set_defaults(command_name="import")
|
|
157
|
-
import_command.add_argument("file", type=str, help="The Modrinth modpack file")
|
|
158
|
-
|
|
159
138
|
# 'init' command
|
|
160
139
|
init_command = commands.add_parser(
|
|
161
140
|
"init",
|
|
@@ -193,15 +172,15 @@ def main() -> int:
|
|
|
193
172
|
init_command.add_argument(
|
|
194
173
|
"--min-ram",
|
|
195
174
|
default=512,
|
|
196
|
-
type=bound_int(
|
|
197
|
-
help="Minimum RAM for the server (in MebiBytes) (minimum value:
|
|
175
|
+
type=bound_int(512),
|
|
176
|
+
help="Minimum RAM for the server (in MebiBytes) (minimum value: 512)",
|
|
198
177
|
metavar="Size",
|
|
199
178
|
)
|
|
200
179
|
|
|
201
180
|
init_command.add_argument(
|
|
202
181
|
"--max-ram",
|
|
203
|
-
default=
|
|
204
|
-
type=
|
|
182
|
+
default=1024,
|
|
183
|
+
type=bound_int(1024),
|
|
205
184
|
help="Maximum RAM for the server (in MebiBytes) (minimum value: 1024)",
|
|
206
185
|
metavar="Size",
|
|
207
186
|
)
|
|
@@ -222,16 +201,9 @@ def main() -> int:
|
|
|
222
201
|
choices=search_sort_index,
|
|
223
202
|
help="Default search sort index",
|
|
224
203
|
metavar="Index",
|
|
225
|
-
dest="
|
|
226
|
-
)
|
|
227
|
-
|
|
228
|
-
# 'list' command
|
|
229
|
-
list_command = commands.add_parser(
|
|
230
|
-
"list", help="List all added projects", description="List all added projects."
|
|
204
|
+
dest="sort_index",
|
|
231
205
|
)
|
|
232
206
|
|
|
233
|
-
list_command.set_defaults(command_name="list")
|
|
234
|
-
|
|
235
207
|
# 'op' command
|
|
236
208
|
op_command = commands.add_parser(
|
|
237
209
|
"op", help="Manage operator players", description="Manage the operator status."
|
|
@@ -248,16 +220,6 @@ def main() -> int:
|
|
|
248
220
|
|
|
249
221
|
op_list_command.set_defaults(command_name="op_list")
|
|
250
222
|
|
|
251
|
-
# 'remove' command
|
|
252
|
-
remove_command = commands.add_parser(
|
|
253
|
-
"remove", help="Remove projects", description="Remove projects"
|
|
254
|
-
)
|
|
255
|
-
|
|
256
|
-
remove_command.set_defaults(command_name="remove")
|
|
257
|
-
remove_command.add_argument(
|
|
258
|
-
"projects", nargs="+", type=str, help="Modrinth project slugs or IDs"
|
|
259
|
-
)
|
|
260
|
-
|
|
261
223
|
# 'search' command
|
|
262
224
|
search_command = commands.add_parser(
|
|
263
225
|
"search",
|
|
@@ -272,7 +234,6 @@ def main() -> int:
|
|
|
272
234
|
|
|
273
235
|
search_command.add_argument(
|
|
274
236
|
"--limit",
|
|
275
|
-
default=20,
|
|
276
237
|
type=bound_int(1, 100),
|
|
277
238
|
help="Search projects per page (value between (inclusive): 1-100)",
|
|
278
239
|
metavar="Number",
|
|
@@ -289,13 +250,11 @@ def main() -> int:
|
|
|
289
250
|
)
|
|
290
251
|
|
|
291
252
|
search_command.add_argument(
|
|
292
|
-
"--sort",
|
|
293
|
-
default="relevance",
|
|
253
|
+
"--sort-index",
|
|
294
254
|
type=str,
|
|
295
255
|
choices=search_sort_index,
|
|
296
256
|
help="Sort by index",
|
|
297
257
|
metavar="Index",
|
|
298
|
-
dest="sort_index",
|
|
299
258
|
)
|
|
300
259
|
|
|
301
260
|
search_command.add_argument(
|
|
@@ -348,6 +307,7 @@ def main() -> int:
|
|
|
348
307
|
|
|
349
308
|
stop_command.set_defaults(command_name="stop")
|
|
350
309
|
|
|
310
|
+
# update is not going to be implemented in this version
|
|
351
311
|
# 'whitelist' command
|
|
352
312
|
whitelist_command = commands.add_parser(
|
|
353
313
|
"whitelist",
|
|
@@ -1,37 +1,37 @@
|
|
|
1
|
-
from .
|
|
1
|
+
from .add import add
|
|
2
2
|
from .import_setup import main as import_setup
|
|
3
|
-
from .
|
|
3
|
+
from .init import init
|
|
4
4
|
from .list_projects import main as list_projects
|
|
5
5
|
from .op_grant import main as op_grant
|
|
6
6
|
from .op_list import main as op_list
|
|
7
7
|
from .op_revoke import main as op_revoke
|
|
8
8
|
from .print_help import main as print_help
|
|
9
9
|
from .remove_projects import main as remove_projects
|
|
10
|
-
from .
|
|
10
|
+
from .search import search
|
|
11
11
|
from .server_status import main as server_status
|
|
12
|
-
from .
|
|
13
|
-
from .
|
|
14
|
-
from .
|
|
12
|
+
from .show import show
|
|
13
|
+
from .start import start
|
|
14
|
+
from .stop import stop
|
|
15
15
|
from .update_projects import main as update_projects
|
|
16
16
|
from .whitelist_add import main as whitelist_add
|
|
17
17
|
from .whitelist_list import main as whitelist_list
|
|
18
18
|
from .whitelist_remove import main as whitelist_remove
|
|
19
19
|
|
|
20
20
|
__all__ = [
|
|
21
|
-
"
|
|
21
|
+
"add",
|
|
22
22
|
"import_setup",
|
|
23
|
-
"
|
|
23
|
+
"init",
|
|
24
24
|
"list_projects",
|
|
25
25
|
"op_grant",
|
|
26
26
|
"op_list",
|
|
27
27
|
"op_revoke",
|
|
28
28
|
"print_help",
|
|
29
29
|
"remove_projects",
|
|
30
|
-
"
|
|
30
|
+
"search",
|
|
31
31
|
"server_status",
|
|
32
|
-
"
|
|
33
|
-
"
|
|
34
|
-
"
|
|
32
|
+
"show",
|
|
33
|
+
"start",
|
|
34
|
+
"stop",
|
|
35
35
|
"update_projects",
|
|
36
36
|
"whitelist_add",
|
|
37
37
|
"whitelist_list",
|