File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1+ /source
Original file line number Diff line number Diff line change 1+ SCRIPT_DIR=` dirname " $0 " `
2+ SOURCE_DIR=" ./source"
3+ OUTPUT=" output.gitignore"
4+ REGEX=" (^#.*)|((^|\/)\..*$)|(^.*\.[^\/]*$)"
5+
6+ cd " $SCRIPT_DIR "
7+ if [ -d $SOURCE_DIR ]; then
8+ echo " Updating source repository"
9+ (cd $SOURCE_DIR && git pull)
10+ else
11+ echo " Cloning source repository"
12+ git clone https://github.com/github/gitignore.git $SOURCE_DIR
13+ fi
14+
15+ echo ' # Hidden directories' > $OUTPUT
16+ echo ' .*/' >> $OUTPUT
17+
18+ while read -r file; do
19+ file_name=` basename $file `
20+ declare -a rules=()
21+ while read -r line; do
22+ if ! [[ -z " ${line// } " ]] && ! [[ " $line " =~ $REGEX ]]; then
23+ # The line is not empty, nor a comment, nor a rule matching:
24+ # a "/.dir_name/" directory, as we already have a catch-all rule above
25+ # a "/file_name.ext" file, as we already have extension-based filtering
26+ rules+=(" $line " )
27+ fi
28+ done <<< ` cat " $file " `
29+
30+ # Debug log for checking number of rules per file.
31+ # echo "${file_name%.*} RULES: ${#rules[@]}"
32+
33+ if [ ${# rules[@]} -gt 0 ] ; then
34+ echo -e " \n# ${file_name% .* } " >> $OUTPUT
35+ for r in " ${rules[@]} " ; do
36+ echo " $r " >> $OUTPUT
37+ done
38+ fi
39+ done <<< ` find $SOURCE_DIR -name ' *.gitignore' `
40+
41+ echo " Parsing completed. Check '$SCRIPT_DIR /$OUTPUT ' file for results."
42+ exit 0
You can’t perform that action at this time.
0 commit comments