mirror of https://github.com/docker/compose.git
Add option for listing service profiles
For command completion of `docker-compose --profile`, we need a portable way to get a list of profiles used in the current config. This commit adds a new option `docker-compose config --profiles`. Signed-off-by: Harald Albers <github@albersweb.de>
This commit is contained in:
parent
8f2bb66e73
commit
862107a32a
|
@ -381,6 +381,7 @@ class TopLevelCommand:
|
||||||
--no-interpolate Don't interpolate environment variables.
|
--no-interpolate Don't interpolate environment variables.
|
||||||
-q, --quiet Only validate the configuration, don't print
|
-q, --quiet Only validate the configuration, don't print
|
||||||
anything.
|
anything.
|
||||||
|
--profiles Print the profile names, one per line.
|
||||||
--services Print the service names, one per line.
|
--services Print the service names, one per line.
|
||||||
--volumes Print the volume names, one per line.
|
--volumes Print the volume names, one per line.
|
||||||
--hash="*" Print the service config hash, one per line.
|
--hash="*" Print the service config hash, one per line.
|
||||||
|
@ -400,6 +401,15 @@ class TopLevelCommand:
|
||||||
if options['--quiet']:
|
if options['--quiet']:
|
||||||
return
|
return
|
||||||
|
|
||||||
|
if options['--profiles']:
|
||||||
|
profiles = set()
|
||||||
|
for service in compose_config.services:
|
||||||
|
if 'profiles' in service:
|
||||||
|
for profile in service['profiles']:
|
||||||
|
profiles.add(profile)
|
||||||
|
print('\n'.join(sorted(profiles)))
|
||||||
|
return
|
||||||
|
|
||||||
if options['--services']:
|
if options['--services']:
|
||||||
print('\n'.join(service['name'] for service in compose_config.services))
|
print('\n'.join(service['name'] for service in compose_config.services))
|
||||||
return
|
return
|
||||||
|
|
|
@ -138,7 +138,7 @@ _docker_compose_config() {
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
COMPREPLY=( $( compgen -W "--hash --help --no-interpolate --quiet -q --resolve-image-digests --services --volumes" -- "$cur" ) )
|
COMPREPLY=( $( compgen -W "--hash --help --no-interpolate --profiles --quiet -q --resolve-image-digests --services --volumes" -- "$cur" ) )
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -237,6 +237,11 @@ class CLITestCase(DockerClientTestCase):
|
||||||
result = self.dispatch(['-H=tcp://doesnotexist:8000', 'ps'], returncode=1)
|
result = self.dispatch(['-H=tcp://doesnotexist:8000', 'ps'], returncode=1)
|
||||||
assert "Couldn't connect to Docker daemon" in result.stderr
|
assert "Couldn't connect to Docker daemon" in result.stderr
|
||||||
|
|
||||||
|
def test_config_list_profiles(self):
|
||||||
|
self.base_dir = 'tests/fixtures/config-profiles'
|
||||||
|
result = self.dispatch(['config', '--profiles'])
|
||||||
|
assert set(result.stdout.rstrip().split('\n')) == {'debug', 'frontend', 'gui'}
|
||||||
|
|
||||||
def test_config_list_services(self):
|
def test_config_list_services(self):
|
||||||
self.base_dir = 'tests/fixtures/v2-full'
|
self.base_dir = 'tests/fixtures/v2-full'
|
||||||
result = self.dispatch(['config', '--services'])
|
result = self.dispatch(['config', '--services'])
|
||||||
|
|
|
@ -0,0 +1,15 @@
|
||||||
|
version: '3.8'
|
||||||
|
services:
|
||||||
|
frontend:
|
||||||
|
image: frontend
|
||||||
|
profiles: ["frontend", "gui"]
|
||||||
|
phpmyadmin:
|
||||||
|
image: phpmyadmin
|
||||||
|
depends_on:
|
||||||
|
- db
|
||||||
|
profiles:
|
||||||
|
- debug
|
||||||
|
backend:
|
||||||
|
image: backend
|
||||||
|
db:
|
||||||
|
image: mysql
|
Loading…
Reference in New Issue