Skip to content

Commit b6bd154

Browse files
committed
Version 1.0.0
0 parents  commit b6bd154

3 files changed

Lines changed: 1597 additions & 0 deletions

File tree

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
/source

generate.sh

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
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

0 commit comments

Comments
 (0)