mirror of https://github.com/docker/compose.git
Handle environment file override within TopLevelCommand
Several (but not all) of the subcommands are accepting and processing the `--env-file` option, but only because they need to look for a specific value in the environment. The work of applying the override makes more sense as the domain of TopLevelCommand, and moving it there and removing the option from the subcommands makes things simpler. Signed-off-by: Klaas Hoekema <khoekema@azavea.com>
This commit is contained in:
parent
cd8e2f870f
commit
99464d9c2b
|
@ -247,6 +247,11 @@ class TopLevelCommand(object):
|
|||
def project_dir(self):
|
||||
return self.toplevel_options.get('--project-directory') or '.'
|
||||
|
||||
@property
|
||||
def environment(self):
|
||||
environment_file = self.toplevel_options.get('--env-file')
|
||||
return Environment.from_env_file(self.project_dir, environment_file)
|
||||
|
||||
def build(self, options):
|
||||
"""
|
||||
Build or rebuild services.
|
||||
|
@ -276,9 +281,7 @@ class TopLevelCommand(object):
|
|||
'--build-arg is only supported when services are specified for API version < 1.25.'
|
||||
' Please use a Compose file version > 2.2 or specify which services to build.'
|
||||
)
|
||||
environment_file = options.get('--env-file')
|
||||
environment = Environment.from_env_file(self.project_dir, environment_file)
|
||||
build_args = resolve_build_args(build_args, environment)
|
||||
build_args = resolve_build_args(build_args, self.environment)
|
||||
|
||||
self.project.build(
|
||||
service_names=options['SERVICE'],
|
||||
|
@ -429,11 +432,8 @@ class TopLevelCommand(object):
|
|||
Compose file
|
||||
-t, --timeout TIMEOUT Specify a shutdown timeout in seconds.
|
||||
(default: 10)
|
||||
--env-file PATH Specify an alternate environment file
|
||||
"""
|
||||
environment_file = options.get('--env-file')
|
||||
environment = Environment.from_env_file(self.project_dir, environment_file)
|
||||
ignore_orphans = environment.get_boolean('COMPOSE_IGNORE_ORPHANS')
|
||||
ignore_orphans = self.environment.get_boolean('COMPOSE_IGNORE_ORPHANS')
|
||||
|
||||
if ignore_orphans and options['--remove-orphans']:
|
||||
raise UserError("COMPOSE_IGNORE_ORPHANS and --remove-orphans cannot be combined.")
|
||||
|
@ -489,11 +489,8 @@ class TopLevelCommand(object):
|
|||
-e, --env KEY=VAL Set environment variables (can be used multiple times,
|
||||
not supported in API < 1.25)
|
||||
-w, --workdir DIR Path to workdir directory for this command.
|
||||
--env-file PATH Specify an alternate environment file
|
||||
"""
|
||||
environment_file = options.get('--env-file')
|
||||
environment = Environment.from_env_file(self.project_dir, environment_file)
|
||||
use_cli = not environment.get_boolean('COMPOSE_INTERACTIVE_NO_CLI')
|
||||
use_cli = not self.environment.get_boolean('COMPOSE_INTERACTIVE_NO_CLI')
|
||||
index = int(options.get('--index'))
|
||||
service = self.project.get_service(options['SERVICE'])
|
||||
detach = options.get('--detach')
|
||||
|
@ -1051,7 +1048,6 @@ class TopLevelCommand(object):
|
|||
container. Implies --abort-on-container-exit.
|
||||
--scale SERVICE=NUM Scale SERVICE to NUM instances. Overrides the
|
||||
`scale` setting in the Compose file if present.
|
||||
--env-file PATH Specify an alternate environment file
|
||||
"""
|
||||
start_deps = not options['--no-deps']
|
||||
always_recreate_deps = options['--always-recreate-deps']
|
||||
|
@ -1066,9 +1062,7 @@ class TopLevelCommand(object):
|
|||
if detached and (cascade_stop or exit_value_from):
|
||||
raise UserError("--abort-on-container-exit and -d cannot be combined.")
|
||||
|
||||
environment_file = options.get('--env-file')
|
||||
environment = Environment.from_env_file(self.project_dir, environment_file)
|
||||
ignore_orphans = environment.get_boolean('COMPOSE_IGNORE_ORPHANS')
|
||||
ignore_orphans = self.environment.get_boolean('COMPOSE_IGNORE_ORPHANS')
|
||||
|
||||
if ignore_orphans and remove_orphans:
|
||||
raise UserError("COMPOSE_IGNORE_ORPHANS and --remove-orphans cannot be combined.")
|
||||
|
@ -1360,7 +1354,7 @@ def run_one_off_container(container_options, project, service, options, toplevel
|
|||
if options['--rm']:
|
||||
project.client.remove_container(container.id, force=True, v=True)
|
||||
|
||||
environment_file = options.get('--env-file')
|
||||
environment_file = toplevel_options.get('--env-file')
|
||||
environment = Environment.from_env_file(project_dir, environment_file)
|
||||
use_cli = not environment.get_boolean('COMPOSE_INTERACTIVE_NO_CLI')
|
||||
signals.set_signal_handler_to_shutdown()
|
||||
|
|
Loading…
Reference in New Issue