mirror of
https://github.com/zulip/zulip.git
synced 2025-11-04 14:03:30 +00:00
This causes `upgrade-zulip-from-git`, as well as a no-option run of `tools/build-release-tarball`, to produce a Zulip install running Python 3, rather than Python 2. In particular this means that the virtualenv we create, in which all application code runs, is Python 3. One shebang line, on `zulip-ec2-configure-interfaces`, explicitly keeps Python 2, and at least one external ops script, `wal-e`, also still runs on Python 2. See discussion on the respective previous commits that made those explicit. There may also be some other third-party scripts we use, outside of this source tree and running outside our virtualenv, that still run on Python 2.
85 lines
2.5 KiB
Python
Executable File
85 lines
2.5 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
from __future__ import absolute_import
|
|
from __future__ import print_function
|
|
from lib.html_grep import grep
|
|
import optparse
|
|
import sys
|
|
|
|
from six.moves import filter
|
|
from typing import List
|
|
|
|
# check for the venv
|
|
from lib import sanity_check
|
|
sanity_check.check_venv(__file__)
|
|
|
|
import lister
|
|
|
|
USAGE = '''
|
|
This file greps HTML files for keywords in a context-sensitive manner.
|
|
|
|
Example:
|
|
|
|
$ ./tools/html-grep '#group-pms' '.filters'
|
|
templates/zerver/right_sidebar.html 45
|
|
|
|
div.right-sidebar#right-sidebar
|
|
div#group-pm-list
|
|
ul.filters.scrolling_list#group-pms
|
|
|
|
Keyword syntax:
|
|
|
|
When supplying keywords, they must correspond to HTML elements,
|
|
classes, or ids. Typical keywords are:
|
|
|
|
li // search for "<li>"
|
|
'.modal' // search for '<foo class="modal">'
|
|
'#intro' // search for '<bar id="intro">'
|
|
|
|
Searches are context-sensitive in the sense that the keyword
|
|
may be found among parent tags of a leaf tag, not just the leaf
|
|
tag itself. (Think of this as being similar to the way a
|
|
browser applies nested CSS styles; it looks at the whole HTML
|
|
tree.)
|
|
|
|
Finding files to search:
|
|
|
|
The tool currently searches your git repo for files with
|
|
the extension .html or .handlebars., and then it does
|
|
the grep against all those files.
|
|
|
|
TODO: allow specific files to be searched.
|
|
'''
|
|
|
|
def check_our_files():
|
|
# type: () -> None
|
|
|
|
parser = optparse.OptionParser(usage=USAGE)
|
|
parser.add_option('--modified', '-m',
|
|
action='store_true', default=False,
|
|
help='Only check modified files')
|
|
parser.add_option('--no-filter', '-a',
|
|
dest='show_all',
|
|
action='store_true', default=False,
|
|
help='Show all HTML files (no filtering)')
|
|
(options, args) = parser.parse_args()
|
|
|
|
if options.show_all:
|
|
keywords = [] # type: List[str]
|
|
else:
|
|
if not args:
|
|
print('No keywords specified...try --help or --no-filter')
|
|
sys.exit(1)
|
|
else:
|
|
keywords = args
|
|
|
|
files = lister.list_files(
|
|
modified_only=options.modified,
|
|
ftypes=['handlebars', 'html'],
|
|
)
|
|
|
|
fns = [fn for fn in files if ('casperjs' not in fn) and ('puppet/zulip' not in fn)]
|
|
grep(fns, set(keywords))
|
|
|
|
if __name__ == '__main__':
|
|
check_our_files()
|