2022.12 #133
@ -54,6 +54,7 @@ class NewService(CommandABC):
|
|||||||
self._use_service_providing: bool = False
|
self._use_service_providing: bool = False
|
||||||
self._use_async: bool = False
|
self._use_async: bool = False
|
||||||
self._use_venv: bool = False
|
self._use_venv: bool = False
|
||||||
|
self._use_base: bool = False
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def help_message(self) -> str:
|
def help_message(self) -> str:
|
||||||
@ -159,7 +160,8 @@ class NewService(CommandABC):
|
|||||||
if self._workspace is None:
|
if self._workspace is None:
|
||||||
project_path = os.path.join(self._env.working_directory, self._rel_path, self._project.name)
|
project_path = os.path.join(self._env.working_directory, self._rel_path, self._project.name)
|
||||||
else:
|
else:
|
||||||
project_path = os.path.join(self._env.working_directory, 'src', self._rel_path, String.convert_to_snake_case(self._project.name))
|
base = '' if self._use_base else 'src'
|
||||||
|
project_path = os.path.join(self._env.working_directory, base, self._rel_path, String.convert_to_snake_case(self._project.name))
|
||||||
|
|
||||||
if os.path.isdir(project_path) and len(os.listdir(project_path)) > 0:
|
if os.path.isdir(project_path) and len(os.listdir(project_path)) > 0:
|
||||||
Console.write_line(project_path)
|
Console.write_line(project_path)
|
||||||
@ -292,6 +294,9 @@ class NewService(CommandABC):
|
|||||||
if self._env.working_directory.endswith(project):
|
if self._env.working_directory.endswith(project):
|
||||||
project = ''
|
project = ''
|
||||||
|
|
||||||
|
if self._workspace is None and self._use_base:
|
||||||
|
project = f'{self._rel_path}/{project}'
|
||||||
|
|
||||||
VenvHelper.init_venv(
|
VenvHelper.init_venv(
|
||||||
False,
|
False,
|
||||||
self._env,
|
self._env,
|
||||||
@ -335,6 +340,9 @@ class NewService(CommandABC):
|
|||||||
if 'venv' in args:
|
if 'venv' in args:
|
||||||
self._use_venv = True
|
self._use_venv = True
|
||||||
args.remove('venv')
|
args.remove('venv')
|
||||||
|
if 'base' in args:
|
||||||
|
self._use_base = True
|
||||||
|
args.remove('base')
|
||||||
|
|
||||||
console = self._config.get_configuration(ProjectTypeEnum.console.value)
|
console = self._config.get_configuration(ProjectTypeEnum.console.value)
|
||||||
library = self._config.get_configuration(ProjectTypeEnum.library.value)
|
library = self._config.get_configuration(ProjectTypeEnum.library.value)
|
||||||
|
@ -55,7 +55,8 @@ class StartupArgumentExtension(StartupExtensionABC):
|
|||||||
.add_console_argument(ArgumentTypeEnum.Flag, '--', 'startup', ['s', 'S']) \
|
.add_console_argument(ArgumentTypeEnum.Flag, '--', 'startup', ['s', 'S']) \
|
||||||
.add_console_argument(ArgumentTypeEnum.Flag, '--', 'service-providing', ['sp', 'SP']) \
|
.add_console_argument(ArgumentTypeEnum.Flag, '--', 'service-providing', ['sp', 'SP']) \
|
||||||
.add_console_argument(ArgumentTypeEnum.Flag, '--', 'nothing', ['n', 'N']) \
|
.add_console_argument(ArgumentTypeEnum.Flag, '--', 'nothing', ['n', 'N']) \
|
||||||
.add_console_argument(ArgumentTypeEnum.Flag, '--', 'venv', ['v', 'V'])
|
.add_console_argument(ArgumentTypeEnum.Flag, '--', 'venv', ['v', 'V']) \
|
||||||
|
.add_console_argument(ArgumentTypeEnum.Flag, '--', 'base', ['b', 'B'])
|
||||||
config.create_console_argument(ArgumentTypeEnum.Executable, '', 'publish', ['p', 'P'], PublishService, True, validators=[ProjectValidator])
|
config.create_console_argument(ArgumentTypeEnum.Executable, '', 'publish', ['p', 'P'], PublishService, True, validators=[ProjectValidator])
|
||||||
config.create_console_argument(ArgumentTypeEnum.Executable, '', 'remove', ['r', 'R'], RemoveService, True, validators=[WorkspaceValidator]) \
|
config.create_console_argument(ArgumentTypeEnum.Executable, '', 'remove', ['r', 'R'], RemoveService, True, validators=[WorkspaceValidator]) \
|
||||||
.add_console_argument(ArgumentTypeEnum.Flag, '--', 'simulate', ['s', 'S'])
|
.add_console_argument(ArgumentTypeEnum.Flag, '--', 'simulate', ['s', 'S'])
|
||||||
|
@ -12,7 +12,7 @@ class NewTestCase(unittest.TestCase):
|
|||||||
def setUp(self):
|
def setUp(self):
|
||||||
os.chdir(os.path.abspath(PLAYGROUND_PATH))
|
os.chdir(os.path.abspath(PLAYGROUND_PATH))
|
||||||
|
|
||||||
def _test_project(self, project_type: str, name: str, *args, test_venv=False):
|
def _test_project(self, project_type: str, name: str, *args, test_venv=False, without_ws=False):
|
||||||
CLICommands.new(project_type, name, *args)
|
CLICommands.new(project_type, name, *args)
|
||||||
workspace_path = os.path.abspath(os.path.join(PLAYGROUND_PATH, name))
|
workspace_path = os.path.abspath(os.path.join(PLAYGROUND_PATH, name))
|
||||||
self.assertTrue(os.path.exists(workspace_path))
|
self.assertTrue(os.path.exists(workspace_path))
|
||||||
@ -22,7 +22,15 @@ class NewTestCase(unittest.TestCase):
|
|||||||
self.assertTrue(os.path.exists(os.path.join(workspace_path, 'venv/bin/python')))
|
self.assertTrue(os.path.exists(os.path.join(workspace_path, 'venv/bin/python')))
|
||||||
self.assertTrue(os.path.islink(os.path.join(workspace_path, 'venv/bin/python')))
|
self.assertTrue(os.path.islink(os.path.join(workspace_path, 'venv/bin/python')))
|
||||||
|
|
||||||
project_path = os.path.abspath(os.path.join(PLAYGROUND_PATH, name, 'src', String.convert_to_snake_case(name)))
|
base = 'src'
|
||||||
|
if '--base' in args and '/' in name:
|
||||||
|
base = name.split('/')[0]
|
||||||
|
name = name.replace(f'{name.split("/")[0]}/', '')
|
||||||
|
|
||||||
|
project_path = os.path.abspath(os.path.join(PLAYGROUND_PATH, name, base, String.convert_to_snake_case(name)))
|
||||||
|
if without_ws:
|
||||||
|
project_path = os.path.abspath(os.path.join(PLAYGROUND_PATH, base, name, 'src/', String.convert_to_snake_case(name)))
|
||||||
|
|
||||||
self.assertTrue(os.path.exists(project_path))
|
self.assertTrue(os.path.exists(project_path))
|
||||||
self.assertTrue(os.path.join(project_path, f'{name}.json'))
|
self.assertTrue(os.path.join(project_path, f'{name}.json'))
|
||||||
self.assertTrue(os.path.join(project_path, f'main.py'))
|
self.assertTrue(os.path.join(project_path, f'main.py'))
|
||||||
@ -54,7 +62,12 @@ class NewTestCase(unittest.TestCase):
|
|||||||
self.assertTrue(os.path.exists(os.path.join(workspace_path, 'venv/bin/python')))
|
self.assertTrue(os.path.exists(os.path.join(workspace_path, 'venv/bin/python')))
|
||||||
self.assertTrue(os.path.islink(os.path.join(workspace_path, 'venv/bin/python')))
|
self.assertTrue(os.path.islink(os.path.join(workspace_path, 'venv/bin/python')))
|
||||||
|
|
||||||
project_path = os.path.abspath(os.path.join(PLAYGROUND_PATH, workspace_name, 'src', String.convert_to_snake_case(name)))
|
base = 'src'
|
||||||
|
if '--base' in args and '/' in name:
|
||||||
|
base = name.split('/')[0]
|
||||||
|
name = name.replace(f'{name.split("/")[0]}/', '')
|
||||||
|
|
||||||
|
project_path = os.path.abspath(os.path.join(PLAYGROUND_PATH, workspace_name, base, String.convert_to_snake_case(name)))
|
||||||
self.assertTrue(os.path.exists(project_path))
|
self.assertTrue(os.path.exists(project_path))
|
||||||
self.assertTrue(os.path.join(project_path, f'{name}.json'))
|
self.assertTrue(os.path.join(project_path, f'{name}.json'))
|
||||||
os.chdir(os.path.abspath(os.path.join(os.getcwd(), '../')))
|
os.chdir(os.path.abspath(os.path.join(os.getcwd(), '../')))
|
||||||
@ -88,6 +101,9 @@ class NewTestCase(unittest.TestCase):
|
|||||||
def test_console(self):
|
def test_console(self):
|
||||||
self._test_project('console', 'test-console', '--ab', '--s', '--venv', test_venv=True)
|
self._test_project('console', 'test-console', '--ab', '--s', '--venv', test_venv=True)
|
||||||
|
|
||||||
|
def test_console_with_other_base(self):
|
||||||
|
self._test_project('console', 'tools/test-console', '--ab', '--s', '--venv', '--base', test_venv=True, without_ws=True)
|
||||||
|
|
||||||
def test_console_without_s(self):
|
def test_console_without_s(self):
|
||||||
self._test_project('console', 'test-console-without-s', '--ab')
|
self._test_project('console', 'test-console-without-s', '--ab')
|
||||||
|
|
||||||
@ -100,6 +116,9 @@ class NewTestCase(unittest.TestCase):
|
|||||||
def test_sub_console(self):
|
def test_sub_console(self):
|
||||||
self._test_sub_project('console', 'test-sub-console', 'test-console', '--ab', '--s', '--sp', '--venv', test_venv=True)
|
self._test_sub_project('console', 'test-sub-console', 'test-console', '--ab', '--s', '--sp', '--venv', test_venv=True)
|
||||||
|
|
||||||
|
def test_sub_console_with_other_base(self):
|
||||||
|
self._test_sub_project('console', 'tools/test-sub-console', 'test-console', '--ab', '--s', '--sp', '--venv', '--base', test_venv=True)
|
||||||
|
|
||||||
def test_library(self):
|
def test_library(self):
|
||||||
self._test_project('library', 'test-library', '--ab', '--s', '--sp')
|
self._test_project('library', 'test-library', '--ab', '--s', '--sp')
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user