Skip to content

Commit eec9fd1

Browse files
committed
Merge branch 'v2-bundle-ac-index' into v2
* v2-bundle-ac-index: Include generate autocomplete index with CLI bundle
2 parents ce62557 + f2ab010 commit eec9fd1

File tree

5 files changed

+31
-5
lines changed

5 files changed

+31
-5
lines changed

MANIFEST.in

+1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
include README.rst
22
include LICENSE.txt
33
include requirements.txt
4+
include awscli/data/ac.index
45
recursive-include awscli/examples *.rst
56
recursive-include awscli/data *.json
67
recursive-include awscli/customizations/wizard/wizards *.yml

awscli/autocomplete/main.py

+13-1
Original file line numberDiff line numberDiff line change
@@ -29,11 +29,17 @@
2929
# dir.
3030
INDEX_DIR = os.path.expanduser(os.path.join('~', '.aws', 'cli', 'cache'))
3131
INDEX_FILE = os.path.join(INDEX_DIR, '%s.index' % cli_version)
32+
BUILTIN_INDEX_FILE = os.path.join(
33+
os.path.dirname(os.path.dirname(os.path.abspath(__file__))),
34+
'data', 'ac.index'
35+
)
3236

3337

34-
def create_autocompleter(index_filename=INDEX_FILE, custom_completers=None):
38+
def create_autocompleter(index_filename=None, custom_completers=None):
3539
if custom_completers is None:
3640
custom_completers = custom.get_custom_completers()
41+
if index_filename is None:
42+
index_filename = _get_index_filename()
3743
index = model.ModelIndex(index_filename)
3844
cli_parser = parser.CLIParser(index)
3945
completers = [
@@ -44,6 +50,12 @@ def create_autocompleter(index_filename=INDEX_FILE, custom_completers=None):
4450
return cli_completer
4551

4652

53+
def _get_index_filename():
54+
if os.path.isfile(INDEX_FILE):
55+
return INDEX_FILE
56+
return BUILTIN_INDEX_FILE
57+
58+
4759
def autocomplete(command_line, position=None):
4860
completer = create_autocompleter()
4961
results = completer.autocomplete(command_line, position)

awscli/data/ac.index

2.98 MB
Binary file not shown.

scripts/gen-ac-index

+15-3
Original file line numberDiff line numberDiff line change
@@ -3,22 +3,34 @@
33
44
"""
55
import os
6+
import argparse
67

78
from awscli.autocomplete.local import indexer
89
from awscli.autocomplete.serverside.indexer import APICallIndexer
910
from awscli.autocomplete import db
10-
from awscli.autocomplete.main import INDEX_DIR, INDEX_FILE
11+
from awscli.autocomplete.main import INDEX_DIR, INDEX_FILE, BUILTIN_INDEX_FILE
1112
from awscli.autocomplete import generator
1213
from awscli import clidriver
1314

1415

1516
def main():
17+
parser = argparse.ArgumentParser()
18+
parser.add_argument('--include-builtin-index', action='store_true',
19+
help=("Also generate builtin index as well as the "
20+
"index in the CLI cache dir."))
21+
args = parser.parse_args()
1622
if not os.path.isdir(INDEX_DIR):
1723
os.makedirs(INDEX_DIR)
1824
# Using a temporary name so if the index already exists, we'll
1925
# only replace the entire file once we successfully regenerate the
2026
# index.
21-
temp_name = '%s.temp' % INDEX_FILE
27+
_generate_index(INDEX_FILE)
28+
if args.include_builtin_index:
29+
_generate_index(BUILTIN_INDEX_FILE)
30+
31+
32+
def _generate_index(filename):
33+
temp_name = '%s.temp' % filename
2234
db_connection = db.DatabaseConnection(temp_name)
2335
indexers = [
2436
indexer.ModelIndexer(db_connection),
@@ -30,7 +42,7 @@ def main():
3042
index_gen.generate_index(driver)
3143
finally:
3244
db_connection.close()
33-
os.rename(temp_name, INDEX_FILE)
45+
os.rename(temp_name, filename)
3446

3547

3648
if __name__ == '__main__':

setup.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,8 @@ def find_version(*file_paths):
4545
'bin/aws_bash_completer'],
4646
packages=find_packages(exclude=['tests*']),
4747
package_data={'awscli': ['data/*.json', 'examples/*/*.rst',
48-
'examples/*/*/*.rst', 'topics/*.rst',
48+
'data/ac.index', 'examples/*/*/*.rst',
49+
'topics/*.rst',
4950
'customizations/wizard/wizards/*/*.yml',
5051
'topics/*.json']},
5152
install_requires=requires,

0 commit comments

Comments
 (0)