Skip to content

Commit cb29dd0

Browse files
committed
Added 'sp' client commands with permissions.
1 parent f0229e7 commit cb29dd0

File tree

5 files changed

+119
-18
lines changed

5 files changed

+119
-18
lines changed

addons/source-python/packages/source-python/core/command/__init__.py

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717

1818
# Source.Python Imports
1919
# Commands
20+
from commands.typed import TypedClientCommand
2021
from commands.typed import TypedServerCommand
2122
# Core
2223
from core import core_logger
@@ -99,18 +100,21 @@ def print_credits(self):
99100
# >> sp
100101
# =============================================================================
101102
@core_command.server_sub_command(['delay'])
103+
@core_command.client_sub_command(['delay'], 'sp.delay')
102104
def _sp_delay(command_info, delay:float, command, *args):
103105
"""Execute a command after a given delay."""
104106
Delay(delay, queue_command_string, (command + ' ' + ' '.join(args), ))
105107

106108

107109
@core_command.server_sub_command(['credits'])
110+
@core_command.client_sub_command(['credits'], 'sp.credits')
108111
def _sp_credits(command_info):
109112
"""List all credits for Source.Python."""
110113
core_command.print_credits()
111114

112115

113116
@core_command.server_sub_command(['help'])
117+
@core_command.client_sub_command(['help'], 'sp.help')
114118
def _sp_help(command_info, command=None, *server_sub_commands):
115119
"""Print all sp sub-commands or help for a specific command."""
116120
if command is None:
@@ -131,6 +135,7 @@ def _sp_help(command_info, command=None, *server_sub_commands):
131135

132136

133137
@core_command.server_sub_command(['info'])
138+
@core_command.client_sub_command(['info'], 'sp.info')
134139
def print_info(info):
135140
"""Print information about OS, SP and installed plugins."""
136141
result = '\nDate : {}'.format(datetime.utcnow())
@@ -162,19 +167,22 @@ def print_info(info):
162167

163168

164169
@core_command.server_sub_command(['update'])
170+
@core_command.client_sub_command(['update'], 'sp.update')
165171
def update_sp(info):
166172
"""Update Source.Python to the latest version. A restart of the server is
167173
required.
168174
"""
169175
if not is_unversioned() and VERSION >= get_last_successful_build_number():
170176
core_command_logger.log_message('No new version available.')
171177
return
172-
178+
173179
do_full_update()
174-
180+
175181

176182
# =============================================================================
177183
# >> DESCRIPTION
178184
# =============================================================================
179185
TypedServerCommand.parser.set_node_description(
180186
'sp', 'Source.Python main command.')
187+
TypedClientCommand.parser.set_node_description(
188+
'sp', 'Source.Python main command.')

addons/source-python/packages/source-python/core/command/auth.py

Lines changed: 79 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
from auth.manager import auth_manager
1111
# Commands
1212
from commands.typed import filter_str
13+
from commands.typed import TypedClientCommand
1314
from commands.typed import TypedServerCommand
1415
# Core
1516
from core.command import core_command
@@ -28,6 +29,9 @@
2829
# >> sp auth backend
2930
# =============================================================================
3031
@core_command.server_sub_command(['auth', 'backend', 'set'])
32+
@core_command.client_sub_command(
33+
['auth', 'backend', 'set'], 'sp.auth.backend.set'
34+
)
3135
def _sp_auth_load(command_info, backend):
3236
"""Set the active backend."""
3337
try:
@@ -36,9 +40,13 @@ def _sp_auth_load(command_info, backend):
3640
logger.log_message('Backend "{}" does not exist.'.format(backend))
3741
else:
3842
logger.log_message(
39-
'Backend "{}" has been loaded sucessfully!'.format(backend))
43+
'Backend "{}" has been loaded successfully!'.format(backend))
44+
4045

4146
@core_command.server_sub_command(['auth', 'backend', 'list'])
47+
@core_command.client_sub_command(
48+
['auth', 'backend', 'list'], 'sp.auth.backend.list'
49+
)
4250
def _sp_auth_list(command_info):
4351
"""List all available backends and marks the active backend."""
4452
if not auth_manager:
@@ -58,6 +66,9 @@ def _sp_auth_list(command_info):
5866
# >> sp auth permission player
5967
# =============================================================================
6068
@core_command.server_sub_command(['auth', 'permission', 'player', 'add'])
69+
@core_command.client_sub_command(
70+
['auth', 'permission', 'player', 'add'], 'sp.auth.perm.player.add'
71+
)
6172
def _sp_auth_permission_player_add(
6273
command_info, players:filter_str, permission, server_id:int=None):
6374
"""Grant a permission to players."""
@@ -72,7 +83,11 @@ def _sp_auth_permission_player_add(
7283
logger.log_message('Granted permission "{}" to {}.'.format(
7384
permission, player.name))
7485

86+
7587
@core_command.server_sub_command(['auth', 'permission', 'player', 'remove'])
88+
@core_command.client_sub_command(
89+
['auth', 'permission', 'player', 'remove'], 'sp.auth.perm.player.remove'
90+
)
7691
def _sp_auth_permission_player_remove(
7792
command_info, players:filter_str, permission, server_id:int=None):
7893
"""Remove a permission from players."""
@@ -88,9 +103,14 @@ def _sp_auth_permission_player_remove(
88103
'Removed permission "{}" from {}.'.format(
89104
permission, player.name))
90105

91-
@core_command.server_sub_command([
92-
'auth', 'permission', 'player', 'add_parent'
93-
])
106+
107+
@core_command.server_sub_command(
108+
['auth', 'permission', 'player', 'add_parent']
109+
)
110+
@core_command.client_sub_command(
111+
['auth', 'permission', 'player', 'add_parent'],
112+
'sp.auth.perm.player.parent.add'
113+
)
94114
def _sp_auth_permission_player_add_parent(
95115
command_info, players:filter_str, parent):
96116
"""Add a parent to players."""
@@ -105,9 +125,14 @@ def _sp_auth_permission_player_add_parent(
105125
logger.log_message(
106126
'Added parent "{}" to {}.'.format(parent, player.name))
107127

108-
@core_command.server_sub_command([
109-
'auth', 'permission', 'player', 'remove_parent'
110-
])
128+
129+
@core_command.server_sub_command(
130+
['auth', 'permission', 'player', 'remove_parent']
131+
)
132+
@core_command.client_sub_command(
133+
['auth', 'permission', 'player', 'remove_parent'],
134+
'sp.auth.perm.player.parent.remove'
135+
)
111136
def _sp_auth_permission_player_remove_parent(
112137
command_info, players:filter_str, parent):
113138
"""Remove a parent from players."""
@@ -122,7 +147,11 @@ def _sp_auth_permission_player_remove_parent(
122147
logger.log_message(
123148
'Removed parent "{}" from {}.'.format(parent, player.name))
124149

150+
125151
@core_command.server_sub_command(['auth', 'permission', 'player', 'test'])
152+
@core_command.client_sub_command(
153+
['auth', 'permission', 'player', 'test'], 'sp.auth.perm.player.test'
154+
)
126155
def _sp_auth_permission_player_test(command_info, permission):
127156
"""Test which players are granted a permission."""
128157
logger.log_message(
@@ -149,34 +178,51 @@ def _sp_auth_permission_player_test(command_info, permission):
149178
# >> sp auth permission parent
150179
# =============================================================================
151180
@core_command.server_sub_command(['auth', 'permission', 'parent', 'add'])
181+
@core_command.client_sub_command(
182+
['auth', 'permission', 'parent', 'add'], 'sp.auth.perm.parent.add'
183+
)
152184
def _sp_auth_permission_parent_add(
153185
command_info, parent, permission, server_id:int=None):
154186
"""Add a permission to a parent."""
155187
auth_manager.get_parent_permissions(parent).add(permission, server_id)
156188
logger.log_message(
157189
'Added permission "{}" to parent "{}".'.format(permission, parent))
158190

191+
159192
@core_command.server_sub_command(['auth', 'permission', 'parent', 'remove'])
193+
@core_command.client_sub_command(
194+
['auth', 'permission', 'parent', 'remove'], 'sp.auth.perm.parent.remove'
195+
)
160196
def _sp_auth_permission_parent_remove(
161197
command_info, parent, permission, server_id:int=None):
162198
"""Remove a permission from a parent."""
163199
auth_manager.get_parent_permissions(parent).remove(permission, server_id)
164200
logger.log_message('Removed permission "{}" from parent "{}".'.format(
165201
permission, parent))
166202

167-
@core_command.server_sub_command([
168-
'auth', 'permission', 'parent', 'add_parent'
169-
])
203+
204+
@core_command.server_sub_command(
205+
['auth', 'permission', 'parent', 'add_parent']
206+
)
207+
@core_command.client_sub_command(
208+
['auth', 'permission', 'parent', 'add_parent'],
209+
'sp.auth.perm.parent.parent.add'
210+
)
170211
def _sp_auth_permission_parent_add_parent(
171212
command_info, parent, parent_to_add):
172213
"""Add a parent to a parent."""
173214
auth_manager.get_parent_permissions(parent).add_parent(parent_to_add)
174215
logger.log_message(
175216
'Added parent "{}" to parent "{}".'.format(parent_to_add, parent))
176217

177-
@core_command.server_sub_command([
178-
'auth', 'permission', 'parent', 'remove_parent'
179-
])
218+
219+
@core_command.server_sub_command(
220+
['auth', 'permission', 'parent', 'remove_parent']
221+
)
222+
@core_command.client_sub_command(
223+
['auth', 'permission', 'parent', 'remove_parent'],
224+
'sp.auth.perm.parent.parent.remove'
225+
)
180226
def _sp_auth_permission_parent_remove_parent(
181227
command_info, parent, parent_to_remove):
182228
"""Remove a parent from a parent."""
@@ -186,9 +232,11 @@ def _sp_auth_permission_parent_remove_parent(
186232
'Removed parent "{}" from parent "{}".'.format(
187233
parent_to_remove, parent))
188234

189-
@core_command.server_sub_command([
190-
'auth', 'permission', 'parent', 'list'
191-
])
235+
236+
@core_command.server_sub_command(['auth', 'permission', 'parent', 'list'])
237+
@core_command.client_sub_command(
238+
['auth', 'permission', 'parent', 'list'], 'sp.auth.perm.parent.list'
239+
)
192240
def _sp_auth_permission_parent_list(
193241
command_info, name=None):
194242
"""List all parents and permissions of a given parent or all parents."""
@@ -215,19 +263,34 @@ def _sp_auth_permission_parent_list(
215263
TypedServerCommand.parser.set_node_description(
216264
['sp', 'auth'],
217265
'Authorization specific commands.')
266+
TypedClientCommand.parser.set_node_description(
267+
['sp', 'auth'],
268+
'Authorization specific commands.')
218269

219270
TypedServerCommand.parser.set_node_description(
220271
['sp', 'auth', 'backend'],
221272
'Authorization backend specific commands.')
273+
TypedClientCommand.parser.set_node_description(
274+
['sp', 'auth', 'backend'],
275+
'Authorization backend specific commands.')
222276

223277
TypedServerCommand.parser.set_node_description(
224278
['sp', 'auth', 'permission'],
225279
'Commands to modify permissions.')
280+
TypedClientCommand.parser.set_node_description(
281+
['sp', 'auth', 'permission'],
282+
'Commands to modify permissions.')
226283

227284
TypedServerCommand.parser.set_node_description(
228285
['sp', 'auth', 'permission', 'parent'],
229286
'Commands to modify parent permissions.')
287+
TypedClientCommand.parser.set_node_description(
288+
['sp', 'auth', 'permission', 'parent'],
289+
'Commands to modify parent permissions.')
230290

231291
TypedServerCommand.parser.set_node_description(
232292
['sp', 'auth', 'permission', 'player'],
233293
'Commands to modify player permissions.')
294+
TypedClientCommand.parser.set_node_description(
295+
['sp', 'auth', 'permission', 'player'],
296+
'Commands to modify player permissions.')

addons/source-python/packages/source-python/core/command/docs.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
# Autodoc
1414
from autodoc import SphinxProject
1515
# Commands
16+
from commands.typed import TypedClientCommand
1617
from commands.typed import TypedServerCommand
1718
# Core
1819
from core.command import core_command
@@ -41,18 +42,21 @@
4142
# >> sp docs create/generate/build
4243
# =============================================================================
4344
@core_command.server_sub_command(['docs', 'create'])
45+
@core_command.client_sub_command(['docs', 'create'], 'sp.docs.create')
4446
def _sp_docs_create(command_info, package):
4547
"""Create a Sphinx project."""
4648
_create_sphinx_project(package)
4749

4850

4951
@core_command.server_sub_command(['docs', 'generate'])
52+
@core_command.client_sub_command(['docs', 'generate'], 'sp.docs.generate')
5053
def _sp_docs_generate(command_info, package):
5154
"""Generate a Sphinx project."""
5255
_generate_sphinx_project(package)
5356

5457

5558
@core_command.server_sub_command(['docs', 'build'])
59+
@core_command.client_sub_command(['docs', 'build'], 'sp.docs.build')
5660
def _sp_docs_build(command_info, package):
5761
"""Build a Sphinx project."""
5862
_build_sphinx_project(package)
@@ -448,3 +452,5 @@ def is_plugin(package):
448452
# =============================================================================
449453
TypedServerCommand.parser.set_node_description(
450454
['sp', 'docs'], 'Documentation specific commands.')
455+
TypedClientCommand.parser.set_node_description(
456+
['sp', 'docs'], 'Documentation specific commands.')

addons/source-python/packages/source-python/core/command/dump.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
# =============================================================================
88
# Source.Python Imports
99
# Commands
10+
from commands.typed import TypedClientCommand
1011
from commands.typed import TypedServerCommand
1112
# Core
1213
from core import dumps
@@ -18,31 +19,42 @@
1819
# =============================================================================
1920
#: .. todo:: Make file_name optional
2021
@core_command.server_sub_command(['dump', 'class_info'])
22+
@core_command.client_sub_command(['dump', 'class_info'], 'sp.dump.class')
2123
def _sp_dump_class_info(command_info, file_name):
2224
"""Dump class info."""
2325
dumps.dump_class_info(file_name)
2426

27+
2528
@core_command.server_sub_command(['dump', 'convars'])
29+
@core_command.client_sub_command(['dump', 'convars'], 'sp.dump.convars')
2630
def _sp_dump_convars(command_info, file_name):
2731
"""Dump convars."""
2832
dumps.dump_convars(file_name)
2933

34+
3035
@core_command.server_sub_command(['dump', 'datamaps'])
36+
@core_command.client_sub_command(['dump', 'datamaps'], 'sp.dump.datamaps')
3137
def _sp_dump_datamaps(command_info, file_name):
3238
"""Dump datamaps."""
3339
dumps.dump_datamaps(file_name)
3440

41+
3542
@core_command.server_sub_command(['dump', 'server_classes'])
43+
@core_command.client_sub_command(['dump', 'server_classes'], 'sp.dump.server')
3644
def _sp_dump_server_classes(command_info, file_name):
3745
"""Dump server classes."""
3846
dumps.dump_server_classes(file_name)
3947

48+
4049
@core_command.server_sub_command(['dump', 'string_tables'])
50+
@core_command.client_sub_command(['dump', 'string_tables'], 'sp.dump.string')
4151
def _sp_dump_string_tables(command_info, file_name):
4252
"""Dump string tables."""
4353
dumps.dump_string_tables(file_name)
4454

55+
4556
@core_command.server_sub_command(['dump', 'weapon_scripts'])
57+
@core_command.client_sub_command(['dump', 'weapon_scripts'], 'sp.dump.weapon')
4658
def _sp_dump_weapon_scripts(command_info, file_name):
4759
"""Dump weapon scripts."""
4860
dumps.dump_weapon_scripts(file_name)
@@ -53,3 +65,5 @@ def _sp_dump_weapon_scripts(command_info, file_name):
5365
# =============================================================================
5466
TypedServerCommand.parser.set_node_description(
5567
['sp', 'dump'], 'Dump various data to files.')
68+
TypedClientCommand.parser.set_node_description(
69+
['sp', 'dump'], 'Dump various data to files.')

0 commit comments

Comments
 (0)