| Server IP : 3.96.16.70 / Your IP : 216.73.216.15 Web Server : Apache System : Linux ip-172-31-26-103.ca-central-1.compute.internal 6.1.163-186.299.amzn2023.x86_64 #1 SMP PREEMPT_DYNAMIC Tue Feb 24 16:35:42 UTC 2026 x86_64 User : ec2-user ( 1000) PHP Version : 8.4.18 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : OFF Directory : /lib/python3.9/site-packages/awscli/autocomplete/ |
Upload File : |
# Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License"). You
# may not use this file except in compliance with the License. A copy of
# the License is located at
#
# http://aws.amazon.com/apache2.0/
#
# or in the "license" file accompanying this file. This file is
# distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
# ANY KIND, either express or implied. See the License for the specific
# language governing permissions and limitations under the License.
"""Generates auto completion index."""
import os
from awscli import clidriver
from awscli.autocomplete import db
from awscli.autocomplete.local import indexer
from awscli.autocomplete.serverside.indexer import APICallIndexer
def generate_index(filename):
"""Generates the default auto-complete index"""
filename = os.path.abspath(filename)
index_dir = os.path.dirname(filename)
if not os.path.isdir(index_dir):
os.makedirs(index_dir)
# Using a temporary name so if the index already exists, we'll
# only replace the entire file once we successfully regenerate the
# index.
temp_name = f'{filename}.temp'
try:
_do_generate_index(temp_name)
except BaseException:
if os.path.exists(temp_name):
os.remove(temp_name)
raise
os.rename(temp_name, filename)
return filename
def _do_generate_index(filename):
db_connection = db.DatabaseConnection(filename)
indexers = [
indexer.ModelIndexer(db_connection),
APICallIndexer(db_connection),
]
driver = clidriver.create_clidriver()
index_gen = IndexGenerator(indexers=indexers)
try:
index_gen.generate_index(driver)
finally:
db_connection.close()
class IndexGenerator:
"""Generates auto completion index.
This will generate an auto completion index for all the low level
indexer used by the CLI. This object primarily delegates to other
objects that do the actual heavy lifting of generating auto completion
indices.
"""
def __init__(self, indexers):
self._indexers = indexers
def generate_index(self, clidriver):
for indexer in self._indexers:
indexer.generate_index(clidriver)