mirror of
				https://github.com/zulip/zulip.git
				synced 2025-11-03 21:43:21 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			85 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			85 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
#!/usr/bin/env python
 | 
						|
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()
 |