Skip to content

Commit

Permalink
Merge b04ae2f into 8bfd4b6
Browse files Browse the repository at this point in the history
  • Loading branch information
shabazpatel committed Oct 12, 2018
2 parents 8bfd4b6 + b04ae2f commit d8a682f
Show file tree
Hide file tree
Showing 3 changed files with 57 additions and 15 deletions.
42 changes: 27 additions & 15 deletions datmo/cli/command/project.py
Expand Up @@ -14,7 +14,7 @@ def __init__(self, cli_helper):
super(ProjectCommand, self).__init__(cli_helper)
self.project_controller = ProjectController()

def init(self, name, description):
def init(self, name, description, force):
"""Initialize command
Parameters
Expand All @@ -23,6 +23,8 @@ def init(self, name, description):
name for the project
description : str
description of the project
force : bool
Boolean to force initialization without prompts
Returns
-------
Expand All @@ -39,12 +41,18 @@ def init(self, name, description):
{"path": self.project_controller.home}))
if not name:
_, default_name = os.path.split(self.project_controller.home)
name = self.cli_helper.prompt(
__("prompt", "cli.project.init.name"),
default=default_name)
if not force:
name = self.cli_helper.prompt(
__("prompt", "cli.project.init.name"),
default=default_name)
else:
name = default_name
if not description:
description = self.cli_helper.prompt(
__("prompt", "cli.project.init.description"))
if not force:
description = self.cli_helper.prompt(
__("prompt", "cli.project.init.description"))
else:
description = ""
try:
success = self.project_controller.init(name, description)
if success:
Expand All @@ -68,14 +76,18 @@ def init(self, name, description):
"path": self.project_controller.home
}))
# Prompt for the name and description and add default if not given
if not name:
name = self.cli_helper.prompt(
__("prompt", "cli.project.init.name"),
default=self.project_controller.model.name)
if not description:
description = self.cli_helper.prompt(
__("prompt", "cli.project.init.description"),
default=self.project_controller.model.description)
if not name and not force:
name = self.cli_helper.prompt(
__("prompt", "cli.project.init.name"),
default=self.project_controller.model.name)
elif force:
name = self.project_controller.model.name
if not description and not force:
description = self.cli_helper.prompt(
__("prompt", "cli.project.init.description"),
default=self.project_controller.model.description)
elif force:
description = self.project_controller.model.description
# Update the project with the values given
try:
success = self.project_controller.init(name, description)
Expand All @@ -101,7 +113,7 @@ def init(self, name, description):
self.cli_helper.echo(str(k) + ": " + str(v))
# Ask question if the user would like to setup environment
environment_setup = self.cli_helper.prompt_bool(
__("prompt", "cli.project.environment.setup"))
__("prompt", "cli.project.environment.setup")) if not force else False
if environment_setup:
# TODO: remove business logic from here and create common helper
# Setting up the environment definition file
Expand Down
28 changes: 28 additions & 0 deletions datmo/cli/command/tests/test_project.py
Expand Up @@ -79,6 +79,14 @@ def dummy(self):
assert "FROM datmo/python-base:cpu-py27" in open(
definition_filepath, "r").read()

def test_init_create_success_force(self):
self.project_command.parse(
["init", "--force"])

result = self.project_command.execute()
assert result
assert os.path.exists(os.path.join(self.temp_dir, '.datmo'))

def test_init_create_success_no_environment(self):
test_name = "foobar"
test_description = "test model"
Expand Down Expand Up @@ -140,6 +148,26 @@ def dummy(self):
assert result.name
assert not result.description

def test_init_update_force_success(self):
test_name = "foobar"
test_description = "test model"
self.project_command.parse(
["init", "--name", test_name, "--description", test_description])

@self.project_command.cli_helper.input("\n")
def dummy(self):
return self.project_command.execute()

result_1 = dummy(self)

self.project_command.parse([
"init", "--force"])

result_2 = self.project_command.execute()
# test for desired side effects
assert os.path.exists(os.path.join(self.temp_dir, '.datmo'))
assert result_2.id == result_1.id

def test_init_update_success(self):
test_name = "foobar"
test_description = "test model"
Expand Down
2 changes: 2 additions & 0 deletions datmo/cli/parser.py
Expand Up @@ -13,6 +13,8 @@ def get_datmo_parser():
init_parser = subparsers.add_parser("init", help="initialize project")
init_parser.add_argument("--name", default=None)
init_parser.add_argument("--description", default=None)
init_parser.add_argument("--force", "-f", "--no-prompt", dest="force", action="store_true",
help="boolean if you want to run init without prompts")

version_parser = subparsers.add_parser("version", help="datmo version")

Expand Down

0 comments on commit d8a682f

Please sign in to comment.