Skip to content

Commit 2b4a01f

Browse files
author
aviat cohen
committed
move start_interactive_mode to fab_interactive
1 parent ff880e6 commit 2b4a01f

5 files changed

Lines changed: 20 additions & 25 deletions

File tree

src/fabric_cli/commands/config/fab_config_set.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ def _handle_fab_config_mode(previous_mode: str, current_mode: str) -> None:
100100
if (current_mode == fab_constant.FAB_MODE_INTERACTIVE
101101
and previous_mode == fab_constant.FAB_MODE_COMMANDLINE):
102102
utils_ui.print("Switching to interactive mode...")
103-
from fabric_cli.utils.fab_cmd_config_utils import start_interactive_mode
103+
from fabric_cli.core.fab_interactive import start_interactive_mode
104104
start_interactive_mode()
105105

106106
elif (current_mode == fab_constant.FAB_MODE_COMMANDLINE

src/fabric_cli/core/fab_interactive.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,3 +114,19 @@ def start_interactive(self):
114114
except (EOFError, KeyboardInterrupt):
115115
utils_ui.print(f"\n{fab_constant.INTERACTIVE_EXIT_MESSAGE}")
116116
break
117+
118+
119+
def start_interactive_mode():
120+
"""Launch interactive mode using global parser instances"""
121+
try:
122+
from fabric_cli.core.fab_parser_setup import get_global_parser_and_subparsers
123+
124+
parser, subparsers = get_global_parser_and_subparsers()
125+
interactive_cli = InteractiveCLI(parser, subparsers)
126+
interactive_cli.start_interactive()
127+
128+
except (KeyboardInterrupt, EOFError):
129+
utils_ui.print("Interactive mode cancelled.")
130+
except Exception as e:
131+
utils_ui.print(f"Failed to start interactive mode: {str(e)}")
132+
utils_ui.print("Please restart the CLI to use interactive mode.")

src/fabric_cli/main.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
from fabric_cli.parsers import fab_auth_parser as auth_parser
1313
from fabric_cli.utils import fab_ui
1414
from fabric_cli.utils.fab_commands import COMMANDS
15-
from fabric_cli.utils.fab_cmd_config_utils import start_interactive_mode
15+
from fabric_cli.core.fab_interactive import start_interactive_mode
1616
from fabric_cli.core.fab_parser_setup import get_global_parser_and_subparsers
1717

1818

src/fabric_cli/utils/fab_cmd_config_utils.py

Lines changed: 0 additions & 21 deletions
This file was deleted.

tests/test_commands/test_config.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -177,7 +177,7 @@ def test_config_set_mode_interactive_success(
177177
self, mock_questionary_print, mock_fab_set_state_config, cli_executor: CLIExecutor
178178
):
179179
"""Test successful transition from command_line to interactive mode"""
180-
with patch("fabric_cli.utils.fab_cmd_config_utils.start_interactive_mode") as mock_start_interactive:
180+
with patch("fabric_cli.core.fab_interactive.start_interactive_mode") as mock_start_interactive:
181181

182182
mock_fab_set_state_config(constant.FAB_MODE, constant.FAB_MODE_COMMANDLINE)
183183

@@ -215,7 +215,7 @@ def test_start_interactive_mode_success(self):
215215

216216
mock_cli_instance = mock_interactive_cli.return_value
217217

218-
from fabric_cli.utils.fab_cmd_config_utils import start_interactive_mode
218+
from fabric_cli.core.fab_interactive import start_interactive_mode
219219
start_interactive_mode()
220220

221221
mock_get_parsers.assert_called_once()

0 commit comments

Comments
 (0)