mirror of
https://github.com/docker/compose.git
synced 2025-07-25 22:54:54 +02:00
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('The FIG_FILE environment variable is deprecated.')
|
||||||
log.warn('Please use COMPOSE_FILE instead.')
|
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')
|
explicit_config_path = (
|
||||||
project = self.get_project(
|
options.get('--file') or
|
||||||
|
os.environ.get('COMPOSE_FILE') or
|
||||||
|
os.environ.get('FIG_FILE'))
|
||||||
|
|
||||||
|
project = get_project(
|
||||||
|
self.base_dir,
|
||||||
explicit_config_path,
|
explicit_config_path,
|
||||||
project_name=options.get('--project-name'),
|
project_name=options.get('--project-name'),
|
||||||
verbose=options.get('--verbose'))
|
verbose=options.get('--verbose'))
|
||||||
|
|
||||||
handler(project, command_options)
|
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):
|
def get_client(verbose=False):
|
||||||
config_details = config.find(self.base_dir, config_path)
|
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 get_project(base_dir, config_path=None, project_name=None, verbose=False):
|
||||||
def normalize_name(name):
|
config_details = config.find(base_dir, config_path)
|
||||||
return re.sub(r'[^a-z0-9]', '', name.lower())
|
|
||||||
|
|
||||||
if 'FIG_PROJECT_NAME' in os.environ:
|
try:
|
||||||
log.warn('The FIG_PROJECT_NAME environment variable is deprecated.')
|
return Project.from_dicts(
|
||||||
log.warn('Please use COMPOSE_PROJECT_NAME instead.')
|
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))
|
def get_project_name(working_dir, project_name=None):
|
||||||
if project:
|
def normalize_name(name):
|
||||||
return normalize_name(project)
|
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 os
|
||||||
|
|
||||||
import docker
|
import docker
|
||||||
|
import py
|
||||||
|
|
||||||
from .. import mock
|
from .. import mock
|
||||||
from .. import unittest
|
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.docopt_command import NoSuchCommand
|
||||||
from compose.cli.errors import UserError
|
from compose.cli.errors import UserError
|
||||||
from compose.cli.main import TopLevelCommand
|
from compose.cli.main import TopLevelCommand
|
||||||
@ -14,55 +17,45 @@ from compose.service import Service
|
|||||||
|
|
||||||
|
|
||||||
class CLITestCase(unittest.TestCase):
|
class CLITestCase(unittest.TestCase):
|
||||||
def test_default_project_name(self):
|
|
||||||
cwd = os.getcwd()
|
|
||||||
|
|
||||||
try:
|
def test_default_project_name(self):
|
||||||
os.chdir('tests/fixtures/simple-composefile')
|
test_dir = py._path.local.LocalPath('tests/fixtures/simple-composefile')
|
||||||
command = TopLevelCommand()
|
with test_dir.as_cwd():
|
||||||
project_name = command.get_project_name('.')
|
project_name = get_project_name('.')
|
||||||
self.assertEquals('simplecomposefile', project_name)
|
self.assertEquals('simplecomposefile', project_name)
|
||||||
finally:
|
|
||||||
os.chdir(cwd)
|
|
||||||
|
|
||||||
def test_project_name_with_explicit_base_dir(self):
|
def test_project_name_with_explicit_base_dir(self):
|
||||||
command = TopLevelCommand()
|
base_dir = 'tests/fixtures/simple-composefile'
|
||||||
command.base_dir = 'tests/fixtures/simple-composefile'
|
project_name = get_project_name(base_dir)
|
||||||
project_name = command.get_project_name(command.base_dir)
|
|
||||||
self.assertEquals('simplecomposefile', project_name)
|
self.assertEquals('simplecomposefile', project_name)
|
||||||
|
|
||||||
def test_project_name_with_explicit_uppercase_base_dir(self):
|
def test_project_name_with_explicit_uppercase_base_dir(self):
|
||||||
command = TopLevelCommand()
|
base_dir = 'tests/fixtures/UpperCaseDir'
|
||||||
command.base_dir = 'tests/fixtures/UpperCaseDir'
|
project_name = get_project_name(base_dir)
|
||||||
project_name = command.get_project_name(command.base_dir)
|
|
||||||
self.assertEquals('uppercasedir', project_name)
|
self.assertEquals('uppercasedir', project_name)
|
||||||
|
|
||||||
def test_project_name_with_explicit_project_name(self):
|
def test_project_name_with_explicit_project_name(self):
|
||||||
command = TopLevelCommand()
|
|
||||||
name = 'explicit-project-name'
|
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)
|
self.assertEquals('explicitprojectname', project_name)
|
||||||
|
|
||||||
def test_project_name_from_environment_old_var(self):
|
def test_project_name_from_environment_old_var(self):
|
||||||
command = TopLevelCommand()
|
|
||||||
name = 'namefromenv'
|
name = 'namefromenv'
|
||||||
with mock.patch.dict(os.environ):
|
with mock.patch.dict(os.environ):
|
||||||
os.environ['FIG_PROJECT_NAME'] = name
|
os.environ['FIG_PROJECT_NAME'] = name
|
||||||
project_name = command.get_project_name(None)
|
project_name = get_project_name(None)
|
||||||
self.assertEquals(project_name, name)
|
self.assertEquals(project_name, name)
|
||||||
|
|
||||||
def test_project_name_from_environment_new_var(self):
|
def test_project_name_from_environment_new_var(self):
|
||||||
command = TopLevelCommand()
|
|
||||||
name = 'namefromenv'
|
name = 'namefromenv'
|
||||||
with mock.patch.dict(os.environ):
|
with mock.patch.dict(os.environ):
|
||||||
os.environ['COMPOSE_PROJECT_NAME'] = name
|
os.environ['COMPOSE_PROJECT_NAME'] = name
|
||||||
project_name = command.get_project_name(None)
|
project_name = get_project_name(None)
|
||||||
self.assertEquals(project_name, name)
|
self.assertEquals(project_name, name)
|
||||||
|
|
||||||
def test_get_project(self):
|
def test_get_project(self):
|
||||||
command = TopLevelCommand()
|
base_dir = 'tests/fixtures/longer-filename-composefile'
|
||||||
command.base_dir = 'tests/fixtures/longer-filename-composefile'
|
project = get_project(base_dir)
|
||||||
project = command.get_project()
|
|
||||||
self.assertEqual(project.name, 'longerfilenamecomposefile')
|
self.assertEqual(project.name, 'longerfilenamecomposefile')
|
||||||
self.assertTrue(project.client)
|
self.assertTrue(project.client)
|
||||||
self.assertTrue(project.services)
|
self.assertTrue(project.services)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user