Skip to content

Commit fea05c8

Browse files
committed
Working to eliminate hard-coded provider references. Incorporating patch for zsh completion.
1 parent 9338978 commit fea05c8

8 files changed

Lines changed: 43 additions & 30 deletions

File tree

README.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,14 @@ For tcsh:
6262

6363
You should add this to your startup scripts to enable it for future sessions.
6464

65+
For zsh please refer to bin/zsh_complete.sh. Source that file:
66+
67+
$ source bin/zsh_complete.sh
68+
69+
For now the bash compatibility auto completion (bashcompinit) is used.
70+
For further details please refer to the top of bin/zsh_complete.sh.
71+
72+
6573
Getting Started
6674
---------------
6775
Before using aws-cli, you need to tell it about your AWS credentials. You

awscli/__init__.py

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -19,13 +19,6 @@
1919

2020
__version__ = '0.4.5'
2121

22-
EnvironmentVariables = {
23-
'profile': (None, 'AWS_DEFAULT_PROFILE'),
24-
'region': ('region', 'AWS_DEFAULT_REGION'),
25-
'data_path': ('data_path', 'AWS_DATA_PATH'),
26-
'config_file': (None, 'AWS_CONFIG_FILE')
27-
}
28-
2922
#
3023
# Get our data path to be added to botocore's search path
3124
#
@@ -38,3 +31,11 @@
3831
path = os.path.expanduser(path)
3932
awscli_data_path.append(path)
4033
os.environ['AWS_DATA_PATH'] = ':'.join(awscli_data_path)
34+
35+
36+
EnvironmentVariables = {
37+
'profile': (None, 'AWS_DEFAULT_PROFILE', None),
38+
'region': ('region', 'AWS_DEFAULT_REGION', None),
39+
'data_path': ('data_path', 'AWS_DATA_PATH', None),
40+
'config_file': (None, 'AWS_CONFIG_FILE', None)
41+
}

awscli/clidriver.py

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -66,8 +66,7 @@ class CLIDriver(object):
6666
'jsondoc': str,
6767
'file': str}
6868

69-
def __init__(self, provider_name='aws'):
70-
self.provider_name = provider_name
69+
def __init__(self):
7170
self.session = botocore.session.get_session(EnvironmentVariables)
7271
self.session.user_agent_name = 'aws-cli'
7372
self.session.user_agent_version = __version__
@@ -98,7 +97,9 @@ def create_main_parser(self):
9897
if 'choices' in option_data:
9998
choices = option_data['choices']
10099
if not isinstance(choices, list):
101-
choices = self.session.get_data(option_data['choices'])
100+
provider = self.session.get_variable('provider')
101+
choices_path = choices.format(provider=provider)
102+
choices = self.session.get_data(choices_path)
102103
if isinstance(choices, dict):
103104
choices = list(choices.keys())
104105
option_data['help'] = self.create_choice_help(choices)
@@ -281,17 +282,11 @@ def get_error_code_and_message(self, response):
281282

282283
def call(self, args):
283284
try:
284-
if self.args.region is not None:
285-
self.region = self.args.region
286-
elif self.session.get_config():
287-
self.region = self.session.get_config().get('region', None)
288-
if self.region is None:
289-
msg = self.session.get_data('messages/NoRegionError')
290-
raise ValueError(msg)
291285
params = {}
292286
self.build_call_parameters(args, params)
293-
self.endpoint = self.service.get_endpoint(self.region,
287+
self.endpoint = self.service.get_endpoint(self.args.region,
294288
endpoint_url=self.args.endpoint_url)
289+
self.endpoint.verify = not self.args.no_verify_ssl
295290
http_response, response_data = self.operation.call(self.endpoint,
296291
**params)
297292
self.formatter(self.operation, response_data)
@@ -336,7 +331,8 @@ def main(self):
336331
self.create_main_parser()
337332
self.args, remaining = self.parser.parse_known_args()
338333
if self.args.service_name == 'help':
339-
get_help(self.session, provider='aws', style='cli')
334+
provider = self.session.get_variable('provider')
335+
get_help(self.session, provider=provider, style='cli')
340336
sys.exit(0)
341337
else:
342338
if self.args.debug:

awscli/data/cli.json

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,17 @@
99
"help": "Override service's default URL with the given URL",
1010
"metavar": "endpoint_url"
1111
},
12+
"--no-verify-ssl": {
13+
"help": "Override default behavior of verifying SSL certificates",
14+
"action": "store_true"
15+
},
1216
"--profile": {
1317
"help": "Use a specific profile from your credential file",
1418
"metavar": "profile_name"
1519
},
1620
"--region": {
1721
"metavar": "region_name",
18-
"choices": "aws/_regions"
22+
"choices": "{provider}/_regions"
1923
},
2024
"--output": {
2125
"choices": ["json", "text"],
@@ -27,7 +31,7 @@
2731
"help": "Display the version of this tool"
2832
},
2933
"service_name": {
30-
"choices": "aws/_services",
34+
"choices": "{provider}/_services",
3135
"metavar": "service_name"
3236
}
3337
}

awscli/help.py

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -200,8 +200,10 @@ def do_parameters(self, operation):
200200
msg = self.session.get_data('messages/Synopsis')
201201
self.add_paragraph().write(self.style.h2(msg))
202202
self.indent()
203-
self.add_paragraph().write('aws %s %s' % (operation.service.cli_name,
204-
operation.cli_name))
203+
provider_name = self.session.get_variable('provider')
204+
self.add_paragraph().write('%s %s %s' % (provider_name,
205+
operation.service.cli_name,
206+
operation.cli_name))
205207
self.indent()
206208
for param in required:
207209
para = self.add_paragraph()
@@ -274,7 +276,7 @@ def do_service_names(self, provider_name):
274276
self.get_current_paragraph().write(service_name)
275277
self.style.end_li()
276278

277-
def do_options(self, options):
279+
def do_options(self, options, provider_name):
278280
self.add_paragraph().write(self.style.h2('Options'))
279281
self.indent()
280282
for option in options:
@@ -291,18 +293,19 @@ def do_options(self, options):
291293
if 'choices' in option_data:
292294
choices = option_data['choices']
293295
if not isinstance(choices, list):
294-
choices = self.session.get_data(choices)
296+
choices_path = choices.format(provider=provider_name)
297+
choices = self.session.get_data(choices_path)
295298
for choice in sorted(choices):
296299
self.style.start_li()
297300
self.get_current_paragraph().write(choice)
298301
self.style.end_li()
299302
self.dedent()
300303

301-
def build(self, provider_name='aws'):
304+
def build(self, provider_name):
302305
cli = self.session.get_data('cli')
303306
self.do_usage(cli['description'])
304307
self.do_service_names(provider_name)
305-
self.do_options(cli['options'])
308+
self.do_options(cli['options'], provider_name)
306309

307310

308311
def get_help(session, provider=None,

bin/aws

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ import awscli.clidriver
1616

1717

1818
def main():
19-
driver = awscli.clidriver.CLIDriver(provider_name='aws')
19+
driver = awscli.clidriver.CLIDriver()
2020
driver.main()
2121

2222

bin/aws.cmd

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ import awscli.clidriver
5050

5151

5252
def main():
53-
driver = awscli.clidriver.CLIDriver(provider_name='aws')
53+
driver = awscli.clidriver.CLIDriver()
5454
driver.main()
5555

5656

setup.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,8 @@
3131
author='Mitch Garnaat',
3232
author_email='[email protected]',
3333
url='http://aws.amazon.com/cli/',
34-
scripts=['bin/aws', 'bin/aws_completer', 'bin/aws.cmd'],
34+
scripts=['bin/aws', 'bin/aws.cmd',
35+
'bin/aws_completer', 'bin/zsh_complete.sh'],
3536
packages=packages,
3637
package_data={'awscli': ['data/*.json']},
3738
package_dir={'awscli': 'awscli'},

0 commit comments

Comments
 (0)