xref: /Universal-ctags/misc/budge (revision 7e45c1df2e127b63652a7baaf8ba13b025d7c09c)
10d025badSMasatake YAMATO#!/bin/sh
293c4b724Sviccuad#
393c4b724Sviccuad#   Copyright (C) 2014 Masatake YAMATO
493c4b724Sviccuad#
593c4b724Sviccuad#   This program is free software; you can redistribute it and/or modify
693c4b724Sviccuad#   it under the terms of the GNU General Public License as published by
7d0383dc4Sviccuad#   the Free Software Foundation; either version 2 of the License, or
893c4b724Sviccuad#   (at your option) any later version.
993c4b724Sviccuad#
1093c4b724Sviccuad#   This program is distributed in the hope that it will be useful,
1193c4b724Sviccuad#   but WITHOUT ANY WARRANTY; without even the implied warranty of
1293c4b724Sviccuad#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
1393c4b724Sviccuad#   GNU General Public License for more details.
1493c4b724Sviccuad#
1593c4b724Sviccuad#   You should have received a copy of the GNU General Public License
1693c4b724Sviccuad#   along with this program.  If not, see <http://www.gnu.org/licenses/>.
1793c4b724Sviccuad#
180d025badSMasatake YAMATO# ----------------------------------------------------------------------------------------
190d025badSMasatake YAMATO# Show the ratio of the number of files handled by ctags to the number of all files of ctags source directory.
200d025badSMasatake YAMATO# -----------------------------------------------------------------------------------------
210d025badSMasatake YAMATO: ${CTAGS_TEST:=./ctags}
220d025badSMasatake YAMATO
230d025badSMasatake YAMATO#
240d025badSMasatake YAMATO# Report all unsupported files
250d025badSMasatake YAMATO#
260d025badSMasatake YAMATOVERBOSE=0
270d025badSMasatake YAMATO
280d025badSMasatake YAMATOprint_help()
290d025badSMasatake YAMATO{
300d025badSMasatake YAMATO    echo "Usage:"
310d025badSMasatake YAMATO    echo "	$0 -h|--help"
320d025badSMasatake YAMATO    echo "	$0 [-v|--verbose [-v|--verbose]]"
330d025badSMasatake YAMATO    exit $1
340d025badSMasatake YAMATO}
350d025badSMasatake YAMATO
360d025badSMasatake YAMATOwhile [ $# -gt 0 ]; do
370d025badSMasatake YAMATO    case $1 in
380d025badSMasatake YAMATO	-h|--help)
390d025badSMasatake YAMATO	    print_help 0
400d025badSMasatake YAMATO	    ;;
410d025badSMasatake YAMATO	-v|--verbose)
420d025badSMasatake YAMATO	    VERBOSE=`expr $VERBOSE + 1`
430d025badSMasatake YAMATO	    ;;
440d025badSMasatake YAMATO	-*)
450d025badSMasatake YAMATO	    echo "unknown option: $1"
460d025badSMasatake YAMATO	    print_help 1
470d025badSMasatake YAMATO	    ;;
480d025badSMasatake YAMATO	*)
490d025badSMasatake YAMATO	    echo "unknown expected argument: $1"
500d025badSMasatake YAMATO	    print_help 1
510d025badSMasatake YAMATO	    ;;
520d025badSMasatake YAMATO    esac
530d025badSMasatake YAMATO    shift
540d025badSMasatake YAMATOdone
550d025badSMasatake YAMATO
56*7e45c1dfSMasatake YAMATOCMDLINE="${CTAGS_TEST} --quiet --options=NONE -G --options-maybe=./.ctags.d --languages=all --options-maybe=misc/budge.ctags -R --print-language"
570d025badSMasatake YAMATOALL_FILES=$(git ls-files)
580d025badSMasatake YAMATO
590d025badSMasatake YAMATOTOTAL=0
600d025badSMasatake YAMATOHAS_PARSER=0
610d025badSMasatake YAMATOmember()
620d025badSMasatake YAMATO{
630d025badSMasatake YAMATO    local input=$1
640d025badSMasatake YAMATO    local f
650d025badSMasatake YAMATO    for f in $ALL_FILES; do
660d025badSMasatake YAMATO	if [ "$f" = "$input" ]; then
670d025badSMasatake YAMATO	    return 0
680d025badSMasatake YAMATO	fi
690d025badSMasatake YAMATO    done
700d025badSMasatake YAMATO    return 1
710d025badSMasatake YAMATO}
720d025badSMasatake YAMATO
730d025badSMasatake YAMATOINPUT=
740d025badSMasatake YAMATOLANG=
750d025badSMasatake YAMATO${CMDLINE} | { while IFS=': 	' read INPUT LANG; do
760d025badSMasatake YAMATO		   if member "$INPUT"; then
770d025badSMasatake YAMATO		       if [ "$LANG" != NONE ]; then
780d025badSMasatake YAMATO			   if [ "$VERBOSE" -gt 1 ]; then
790d025badSMasatake YAMATO			       printf "%-60s %s\n" $INPUT $LANG
800d025badSMasatake YAMATO			   fi
810d025badSMasatake YAMATO			   HAS_PARSER=$(( HAS_PARSER + 1 ))
820d025badSMasatake YAMATO		       else
830d025badSMasatake YAMATO			   if [ "${VERBOSE}" -gt 0 ]; then
840d025badSMasatake YAMATO			       printf "%-60s %s\n" $INPUT NONE
850d025badSMasatake YAMATO			   fi
860d025badSMasatake YAMATO		       fi
870d025badSMasatake YAMATO		       TOTAL=$(( TOTAL + 1 ))
880d025badSMasatake YAMATO		   fi
890d025badSMasatake YAMATO	       done
900d025badSMasatake YAMATO	       echo "[ctags|$(expr 100 '*' $HAS_PARSER  / $TOTAL)%]"
910d025badSMasatake YAMATO}
92