mirror of https://github.com/docker/compose.git
Remove some functions from Command class
Signed-off-by: Daniel Nephin <dnephin@docker.com>
This commit is contained in:
parent
2121f5117e
commit
258d0fa0c6
|
@ -55,53 +55,61 @@ class Command(DocoptCommand):
|
|||
log.warn('The FIG_FILE environment variable is deprecated.')
|
||||
log.warn('Please use COMPOSE_FILE instead.')
|
||||
|
||||
explicit_config_path = options.get('--file') or os.environ.get('COMPOSE_FILE') or os.environ.get('FIG_FILE')
|
||||
project = self.get_project(
|
||||
explicit_config_path = (
|
||||
options.get('--file') or
|
||||
os.environ.get('COMPOSE_FILE') or
|
||||
os.environ.get('FIG_FILE'))
|
||||
|
||||
project = get_project(
|
||||
self.base_dir,
|
||||
explicit_config_path,
|
||||
project_name=options.get('--project-name'),
|
||||
verbose=options.get('--verbose'))
|
||||
|
||||
handler(project, command_options)
|
||||
|
||||
def get_client(self, verbose=False):
|
||||
client = docker_client()
|
||||
if verbose:
|
||||
version_info = six.iteritems(client.version())
|
||||
log.info("Compose version %s", __version__)
|
||||
log.info("Docker base_url: %s", client.base_url)
|
||||
log.info("Docker version: %s",
|
||||
", ".join("%s=%s" % item for item in version_info))
|
||||
return verbose_proxy.VerboseProxy('docker', client)
|
||||
return client
|
||||
|
||||
def get_project(self, config_path=None, project_name=None, verbose=False):
|
||||
config_details = config.find(self.base_dir, config_path)
|
||||
def get_client(verbose=False):
|
||||
client = docker_client()
|
||||
if verbose:
|
||||
version_info = six.iteritems(client.version())
|
||||
log.info("Compose version %s", __version__)
|
||||
log.info("Docker base_url: %s", client.base_url)
|
||||
log.info("Docker version: %s",
|
||||
", ".join("%s=%s" % item for item in version_info))
|
||||
return verbose_proxy.VerboseProxy('docker', client)
|
||||
return client
|
||||
|
||||
try:
|
||||
return Project.from_dicts(
|
||||
self.get_project_name(config_details.working_dir, project_name),
|
||||
config.load(config_details),
|
||||
self.get_client(verbose=verbose))
|
||||
except ConfigError as e:
|
||||
raise errors.UserError(six.text_type(e))
|
||||
|
||||
def get_project_name(self, working_dir, project_name=None):
|
||||
def normalize_name(name):
|
||||
return re.sub(r'[^a-z0-9]', '', name.lower())
|
||||
def get_project(base_dir, config_path=None, project_name=None, verbose=False):
|
||||
config_details = config.find(base_dir, config_path)
|
||||
|
||||
if 'FIG_PROJECT_NAME' in os.environ:
|
||||
log.warn('The FIG_PROJECT_NAME environment variable is deprecated.')
|
||||
log.warn('Please use COMPOSE_PROJECT_NAME instead.')
|
||||
try:
|
||||
return Project.from_dicts(
|
||||
get_project_name(config_details.working_dir, project_name),
|
||||
config.load(config_details),
|
||||
get_client(verbose=verbose))
|
||||
except ConfigError as e:
|
||||
raise errors.UserError(six.text_type(e))
|
||||
|
||||
project_name = (
|
||||
project_name or
|
||||
os.environ.get('COMPOSE_PROJECT_NAME') or
|
||||
os.environ.get('FIG_PROJECT_NAME'))
|
||||
if project_name is not None:
|
||||
return normalize_name(project_name)
|
||||
|
||||
project = os.path.basename(os.path.abspath(working_dir))
|
||||
if project:
|
||||
return normalize_name(project)
|
||||
def get_project_name(working_dir, project_name=None):
|
||||
def normalize_name(name):
|
||||
return re.sub(r'[^a-z0-9]', '', name.lower())
|
||||
|
||||
return 'default'
|
||||
if 'FIG_PROJECT_NAME' in os.environ:
|
||||
log.warn('The FIG_PROJECT_NAME environment variable is deprecated.')
|
||||
log.warn('Please use COMPOSE_PROJECT_NAME instead.')
|
||||
|
||||
project_name = (
|
||||
project_name or
|
||||
os.environ.get('COMPOSE_PROJECT_NAME') or
|
||||
os.environ.get('FIG_PROJECT_NAME'))
|
||||
if project_name is not None:
|
||||
return normalize_name(project_name)
|
||||
|
||||
project = os.path.basename(os.path.abspath(working_dir))
|
||||
if project:
|
||||
return normalize_name(project)
|
||||
|
||||
return 'default'
|
||||
|
|
|
@ -4,9 +4,12 @@ from __future__ import unicode_literals
|
|||
import os
|
||||
|
||||
import docker
|
||||
import py
|
||||
|
||||
from .. import mock
|
||||
from .. import unittest
|
||||
from compose.cli.command import get_project
|
||||
from compose.cli.command import get_project_name
|
||||
from compose.cli.docopt_command import NoSuchCommand
|
||||
from compose.cli.errors import UserError
|
||||
from compose.cli.main import TopLevelCommand
|
||||
|
@ -14,55 +17,45 @@ from compose.service import Service
|
|||
|
||||
|
||||
class CLITestCase(unittest.TestCase):
|
||||
def test_default_project_name(self):
|
||||
cwd = os.getcwd()
|
||||
|
||||
try:
|
||||
os.chdir('tests/fixtures/simple-composefile')
|
||||
command = TopLevelCommand()
|
||||
project_name = command.get_project_name('.')
|
||||
def test_default_project_name(self):
|
||||
test_dir = py._path.local.LocalPath('tests/fixtures/simple-composefile')
|
||||
with test_dir.as_cwd():
|
||||
project_name = get_project_name('.')
|
||||
self.assertEquals('simplecomposefile', project_name)
|
||||
finally:
|
||||
os.chdir(cwd)
|
||||
|
||||
def test_project_name_with_explicit_base_dir(self):
|
||||
command = TopLevelCommand()
|
||||
command.base_dir = 'tests/fixtures/simple-composefile'
|
||||
project_name = command.get_project_name(command.base_dir)
|
||||
base_dir = 'tests/fixtures/simple-composefile'
|
||||
project_name = get_project_name(base_dir)
|
||||
self.assertEquals('simplecomposefile', project_name)
|
||||
|
||||
def test_project_name_with_explicit_uppercase_base_dir(self):
|
||||
command = TopLevelCommand()
|
||||
command.base_dir = 'tests/fixtures/UpperCaseDir'
|
||||
project_name = command.get_project_name(command.base_dir)
|
||||
base_dir = 'tests/fixtures/UpperCaseDir'
|
||||
project_name = get_project_name(base_dir)
|
||||
self.assertEquals('uppercasedir', project_name)
|
||||
|
||||
def test_project_name_with_explicit_project_name(self):
|
||||
command = TopLevelCommand()
|
||||
name = 'explicit-project-name'
|
||||
project_name = command.get_project_name(None, project_name=name)
|
||||
project_name = get_project_name(None, project_name=name)
|
||||
self.assertEquals('explicitprojectname', project_name)
|
||||
|
||||
def test_project_name_from_environment_old_var(self):
|
||||
command = TopLevelCommand()
|
||||
name = 'namefromenv'
|
||||
with mock.patch.dict(os.environ):
|
||||
os.environ['FIG_PROJECT_NAME'] = name
|
||||
project_name = command.get_project_name(None)
|
||||
project_name = get_project_name(None)
|
||||
self.assertEquals(project_name, name)
|
||||
|
||||
def test_project_name_from_environment_new_var(self):
|
||||
command = TopLevelCommand()
|
||||
name = 'namefromenv'
|
||||
with mock.patch.dict(os.environ):
|
||||
os.environ['COMPOSE_PROJECT_NAME'] = name
|
||||
project_name = command.get_project_name(None)
|
||||
project_name = get_project_name(None)
|
||||
self.assertEquals(project_name, name)
|
||||
|
||||
def test_get_project(self):
|
||||
command = TopLevelCommand()
|
||||
command.base_dir = 'tests/fixtures/longer-filename-composefile'
|
||||
project = command.get_project()
|
||||
base_dir = 'tests/fixtures/longer-filename-composefile'
|
||||
project = get_project(base_dir)
|
||||
self.assertEqual(project.name, 'longerfilenamecomposefile')
|
||||
self.assertTrue(project.client)
|
||||
self.assertTrue(project.services)
|
||||
|
|
Loading…
Reference in New Issue