Skip to content

Commit 0807712

Browse files
author
LittleCoinCoin
committed
refactor(cli): rename --inputs to --input for consistency
Rename --inputs argument to --input to match singular naming convention used by other parameters. Update all test references. Changes: - Renamed parse_inputs() to parse_input() - Updated function parameter from inputs to input - Updated argparse argument from --inputs to --input - Updated all test files to use new parameter name - Maintained Pydantic model field name as 'inputs' (internal) Test Results: 126/128 tests passing (2 pre-existing failures)
1 parent 5d84755 commit 0807712

File tree

3 files changed

+41
-41
lines changed

3 files changed

+41
-41
lines changed

hatch/cli_hatch.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -583,7 +583,7 @@ def parse_header(header_list: Optional[list]) -> dict:
583583

584584
return headers_dict
585585

586-
def parse_inputs(inputs_list: Optional[list]) -> Optional[list]:
586+
def parse_input(input_list: Optional[list]) -> Optional[list]:
587587
"""Parse VS Code input variable definitions from command line format.
588588
589589
Format: type,id,description[,password=true]
@@ -592,11 +592,11 @@ def parse_inputs(inputs_list: Optional[list]) -> Optional[list]:
592592
Returns:
593593
List of input variable definition dictionaries, or None if no inputs provided.
594594
"""
595-
if not inputs_list:
595+
if not input_list:
596596
return None
597597

598598
parsed_inputs = []
599-
for input_str in inputs_list:
599+
for input_str in input_list:
600600
parts = [p.strip() for p in input_str.split(',')]
601601
if len(parts) < 3:
602602
print(f"Warning: Invalid input format '{input_str}'. Expected: type,id,description[,password=true]")
@@ -622,7 +622,7 @@ def handle_mcp_configure(host: str, server_name: str, command: str, args: list,
622622
trust: bool = False, cwd: Optional[str] = None,
623623
env_file: Optional[str] = None, http_url: Optional[str] = None,
624624
include_tools: Optional[list] = None, exclude_tools: Optional[list] = None,
625-
inputs: Optional[list] = None, no_backup: bool = False,
625+
input: Optional[list] = None, no_backup: bool = False,
626626
dry_run: bool = False, auto_approve: bool = False):
627627
"""Handle 'hatch mcp configure' command with ALL host-specific arguments.
628628
@@ -672,7 +672,7 @@ def handle_mcp_configure(host: str, server_name: str, command: str, args: list,
672672
# Parse environment variables, headers, and inputs
673673
env_dict = parse_env_vars(env)
674674
headers_dict = parse_header(header)
675-
inputs_list = parse_inputs(inputs)
675+
inputs_list = parse_input(input)
676676

677677
# Create Omni configuration (universal model)
678678
# Only include fields that have actual values to ensure model_dump(exclude_unset=True) works correctly
@@ -1281,7 +1281,7 @@ def main():
12811281
mcp_configure_parser.add_argument("--env-file", help="Path to environment file (Cursor, VS Code, LM Studio)")
12821282

12831283
# Host-specific arguments (VS Code)
1284-
mcp_configure_parser.add_argument("--inputs", action="append", help="Input variable definitions in format: type,id,description[,password=true] (VS Code)")
1284+
mcp_configure_parser.add_argument("--input", action="append", help="Input variable definitions in format: type,id,description[,password=true] (VS Code)")
12851285

12861286
mcp_configure_parser.add_argument("--no-backup", action="store_true", help="Skip backup creation before configuration")
12871287
mcp_configure_parser.add_argument("--dry-run", action="store_true", help="Preview configuration without execution")
@@ -2081,7 +2081,7 @@ def main():
20812081
getattr(args, 'timeout', None), getattr(args, 'trust', False),
20822082
getattr(args, 'cwd', None), getattr(args, 'env_file', None),
20832083
getattr(args, 'http_url', None), getattr(args, 'include_tools', None),
2084-
getattr(args, 'exclude_tools', None), getattr(args, 'inputs', None),
2084+
getattr(args, 'exclude_tools', None), getattr(args, 'input', None),
20852085
args.no_backup, args.dry_run, args.auto_approve
20862086
)
20872087

tests/test_mcp_cli_all_host_specific_args.py

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
from unittest.mock import patch, MagicMock
1212
from io import StringIO
1313

14-
from hatch.cli_hatch import handle_mcp_configure, parse_inputs
14+
from hatch.cli_hatch import handle_mcp_configure, parse_input
1515
from hatch.mcp_host_config import MCPHostType
1616
from hatch.mcp_host_config.models import (
1717
MCPServerConfigGemini, MCPServerConfigCursor, MCPServerConfigVSCode,
@@ -113,7 +113,7 @@ def test_vscode_inputs_on_gemini_show_unsupported(self, mock_stdout, mock_manage
113113
server_name='test-server',
114114
command='python',
115115
args=['server.py'],
116-
inputs=['promptString,api-key,API Key,password=true'], # VS Code-only field
116+
input=['promptString,api-key,API Key,password=true'], # VS Code-only field
117117
auto_approve=True
118118
)
119119

@@ -129,46 +129,46 @@ def test_vscode_inputs_on_gemini_show_unsupported(self, mock_stdout, mock_manage
129129
class TestVSCodeInputsParsing(unittest.TestCase):
130130
"""Test VS Code inputs parsing."""
131131

132-
def test_parse_inputs_basic(self):
132+
def test_parse_input_basic(self):
133133
"""Test basic input parsing."""
134-
inputs_list = ['promptString,api-key,GitHub Personal Access Token']
135-
result = parse_inputs(inputs_list)
136-
134+
input_list = ['promptString,api-key,GitHub Personal Access Token']
135+
result = parse_input(input_list)
136+
137137
self.assertIsNotNone(result)
138138
self.assertEqual(len(result), 1)
139139
self.assertEqual(result[0]['type'], 'promptString')
140140
self.assertEqual(result[0]['id'], 'api-key')
141141
self.assertEqual(result[0]['description'], 'GitHub Personal Access Token')
142142
self.assertNotIn('password', result[0])
143143

144-
def test_parse_inputs_with_password(self):
144+
def test_parse_input_with_password(self):
145145
"""Test input parsing with password flag."""
146-
inputs_list = ['promptString,api-key,API Key,password=true']
147-
result = parse_inputs(inputs_list)
148-
146+
input_list = ['promptString,api-key,API Key,password=true']
147+
result = parse_input(input_list)
148+
149149
self.assertIsNotNone(result)
150150
self.assertEqual(len(result), 1)
151151
self.assertEqual(result[0]['password'], True)
152152

153-
def test_parse_inputs_multiple(self):
153+
def test_parse_input_multiple(self):
154154
"""Test parsing multiple inputs."""
155-
inputs_list = [
155+
input_list = [
156156
'promptString,api-key,API Key,password=true',
157157
'promptString,db-url,Database URL'
158158
]
159-
result = parse_inputs(inputs_list)
160-
159+
result = parse_input(input_list)
160+
161161
self.assertIsNotNone(result)
162162
self.assertEqual(len(result), 2)
163163

164-
def test_parse_inputs_none(self):
164+
def test_parse_input_none(self):
165165
"""Test parsing None inputs."""
166-
result = parse_inputs(None)
166+
result = parse_input(None)
167167
self.assertIsNone(result)
168168

169-
def test_parse_inputs_empty(self):
169+
def test_parse_input_empty(self):
170170
"""Test parsing empty inputs list."""
171-
result = parse_inputs([])
171+
result = parse_input([])
172172
self.assertIsNone(result)
173173

174174

@@ -191,7 +191,7 @@ def test_vscode_inputs_passed_to_model(self, mock_manager_class):
191191
server_name='test-server',
192192
command='python',
193193
args=['server.py'],
194-
inputs=['promptString,api-key,API Key,password=true'],
194+
input=['promptString,api-key,API Key,password=true'],
195195
auto_approve=True
196196
)
197197

tests/test_mcp_cli_partial_updates.py

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,7 @@ def test_configure_update_single_field_timeout(self):
126126
http_url=None,
127127
include_tools=None,
128128
exclude_tools=None,
129-
inputs=None,
129+
input=None,
130130
no_backup=False,
131131
dry_run=False,
132132
auto_approve=True
@@ -180,7 +180,7 @@ def test_configure_update_env_vars_only(self):
180180
http_url=None,
181181
include_tools=None,
182182
exclude_tools=None,
183-
inputs=None,
183+
input=None,
184184
no_backup=False,
185185
dry_run=False,
186186
auto_approve=True
@@ -225,7 +225,7 @@ def test_configure_create_requires_command_or_url(self):
225225
http_url=None,
226226
include_tools=None,
227227
exclude_tools=None,
228-
inputs=None,
228+
input=None,
229229
no_backup=False,
230230
dry_run=False,
231231
auto_approve=True
@@ -273,7 +273,7 @@ def test_configure_update_allows_no_command_url(self):
273273
http_url=None,
274274
include_tools=None,
275275
exclude_tools=None,
276-
inputs=None,
276+
input=None,
277277
no_backup=False,
278278
dry_run=False,
279279
auto_approve=True
@@ -327,7 +327,7 @@ def test_configure_update_preserves_unspecified_fields(self):
327327
http_url=None,
328328
include_tools=None,
329329
exclude_tools=None,
330-
inputs=None,
330+
input=None,
331331
no_backup=False,
332332
dry_run=False,
333333
auto_approve=True
@@ -378,7 +378,7 @@ def test_configure_update_dependent_fields(self):
378378
http_url=None,
379379
include_tools=None,
380380
exclude_tools=None,
381-
inputs=None,
381+
input=None,
382382
no_backup=False,
383383
dry_run=False,
384384
auto_approve=True
@@ -423,7 +423,7 @@ def test_configure_update_dependent_fields(self):
423423
http_url=None,
424424
include_tools=None,
425425
exclude_tools=None,
426-
inputs=None,
426+
input=None,
427427
no_backup=False,
428428
dry_run=False,
429429
auto_approve=True
@@ -476,7 +476,7 @@ def test_configure_switch_command_to_url(self):
476476
http_url=None,
477477
include_tools=None,
478478
exclude_tools=None,
479-
inputs=None,
479+
input=None,
480480
no_backup=False,
481481
dry_run=False,
482482
auto_approve=True
@@ -529,7 +529,7 @@ def test_configure_switch_url_to_command(self):
529529
http_url=None,
530530
include_tools=None,
531531
exclude_tools=None,
532-
inputs=None,
532+
input=None,
533533
no_backup=False,
534534
dry_run=False,
535535
auto_approve=True
@@ -591,7 +591,7 @@ def test_partial_update_end_to_end_timeout(self):
591591
http_url=None,
592592
include_tools=None,
593593
exclude_tools=None,
594-
inputs=None,
594+
input=None,
595595
no_backup=False,
596596
dry_run=False,
597597
auto_approve=True
@@ -642,7 +642,7 @@ def test_partial_update_end_to_end_switch_type(self):
642642
http_url=None,
643643
include_tools=None,
644644
exclude_tools=None,
645-
inputs=None,
645+
input=None,
646646
no_backup=False,
647647
dry_run=False,
648648
auto_approve=True
@@ -687,7 +687,7 @@ def test_existing_create_operation_unchanged(self):
687687
http_url=None,
688688
include_tools=None,
689689
exclude_tools=None,
690-
inputs=None,
690+
input=None,
691691
no_backup=False,
692692
dry_run=False,
693693
auto_approve=True
@@ -729,7 +729,7 @@ def test_error_messages_remain_clear(self):
729729
http_url=None,
730730
include_tools=None,
731731
exclude_tools=None,
732-
inputs=None,
732+
input=None,
733733
no_backup=False,
734734
dry_run=False,
735735
auto_approve=True
@@ -787,7 +787,7 @@ def test_type_field_updates_command_to_url(self):
787787
http_url=None,
788788
include_tools=None,
789789
exclude_tools=None,
790-
inputs=None,
790+
input=None,
791791
no_backup=False,
792792
dry_run=False,
793793
auto_approve=True
@@ -837,7 +837,7 @@ def test_type_field_updates_url_to_command(self):
837837
http_url=None,
838838
include_tools=None,
839839
exclude_tools=None,
840-
inputs=None,
840+
input=None,
841841
no_backup=False,
842842
dry_run=False,
843843
auto_approve=True

0 commit comments

Comments
 (0)