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.
|
||||
-q, --quiet Only validate the configuration, don't print
|
||||
anything.
|
||||
--profiles Print the profile names, one per line.
|
||||
--services Print the service names, one per line.
|
||||
--volumes Print the volume names, one per line.
|
||||
--hash="*" Print the service config hash, one per line.
|
||||
|
@ -400,6 +401,15 @@ class TopLevelCommand:
|
|||
if options['--quiet']:
|
||||
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']:
|
||||
print('\n'.join(service['name'] for service in compose_config.services))
|
||||
return
|
||||
|
|
|
@ -138,7 +138,7 @@ _docker_compose_config() {
|
|||
;;
|
||||
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)
|
||||
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):
|
||||
self.base_dir = 'tests/fixtures/v2-full'
|
||||
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