File tree 6 files changed +110
-8
lines changed
6 files changed +110
-8
lines changed Original file line number Diff line number Diff line change
1
+ name : Test with ignore directory argument
2
+ on : workflow_dispatch
3
+ jobs :
4
+ formatter :
5
+ runs-on : ubuntu-latest
6
+ name : Verify that the filename formatter works (ignoring directory is included)
7
+ steps :
8
+ - uses : actions/checkout@v3
9
+ - uses : ./formatter
10
+ with :
11
+ filetypes : .cpp,.hpp
12
+ working-directory : .
13
+ ignore-files : ./test
Original file line number Diff line number Diff line change
1
+ name : Test without ignore directory argument
2
+ on : workflow_dispatch
3
+ jobs :
4
+ formatter :
5
+ runs-on : ubuntu-latest
6
+ name : Verify that the filename formatter works
7
+ steps :
8
+ - uses : actions/checkout@v3
9
+ - uses : ./formatter
10
+ with :
11
+ filetypes : .cpp,.hpp
12
+ working-directory : ./test
Original file line number Diff line number Diff line change @@ -9,6 +9,7 @@ echo -e "Arguments:
9
9
10
10
echo " Changed files:"
11
11
12
+
12
13
# Separate $2 value (filename types) if it has a comma
13
14
if [[ " $2 " == * " ," * ]];
14
15
then
@@ -21,10 +22,10 @@ str_value="$2"
21
22
str_value2=" $2 "
22
23
fi
23
24
24
- IFS=$' \n '
25
- for fname in ` find $1 -type f -name " $str_value2 " -o -name " $str_value " `
25
+ IFS=$' \n ' ; set -f
26
+ for fname in $( find $1 -type f -name " * $str_value2 " -or -name " * $str_value " )
26
27
do
27
- ignored_files=" $( echo $3 | tr " ," " \n" ) "
28
+ ignored_files=" $( echo " $3 " | tr " ," " \n" ) "
28
29
29
30
str=" ${fname} "
30
31
value=${str%/* } # If the base directory is `.`, check in all directories for the ignored filenames
38
39
done
39
40
40
41
# echo ${fname}
41
- new_fname=` echo ${fname} | tr ' ' ' _' `
42
+ new_fname=$( echo " ${fname} " | tr ' ' ' _' )
42
43
# echo " ${new_fname}"
43
- new_fname=` echo ${new_fname} | tr ' A-Z ' ' a-z ' `
44
+ new_fname=$( echo " ${new_fname} " | tr ' [:upper:] ' ' [:lower:] ' )
44
45
# echo " ${new_fname}"
45
- new_fname=` echo ${new_fname} | tr ' -' ' _' `
46
+ new_fname=$( echo " ${new_fname} " | tr ' -' ' _' )
46
47
# echo " ${new_fname}"
47
- if [ ${fname} != ${new_fname} ]
48
+ if [ " ${fname} " != " ${new_fname} " ]
48
49
then
49
50
echo " ${fname} --> ${new_fname} "
50
- git " mv" " ${fname} " ${new_fname} # Requires you to be in version control
51
+ git " mv" " ${fname} " " ${new_fname} " # Requires you to be in version control
51
52
fi
52
53
done
54
+ unset IFS; set +f
Original file line number Diff line number Diff line change
1
+ name : " Filename Formatter"
2
+ description : " Format filenames into the format acceptable by TheAlgorithms opganization"
3
+ author : " TheAlgorithms"
4
+ inputs :
5
+ filetypes :
6
+ description : Filter files by specified file types (comma separated values in a string.) Maximum two values. E.g. `.cpp,.hpp`
7
+ required : true
8
+ working-directory :
9
+ description : Working/base directory of the formatter
10
+ required : false
11
+ default : .
12
+ ignore-files :
13
+ description : Files/folders to ignored
14
+ required : false
15
+ runs :
16
+ using : composite
17
+ steps :
18
+ - name : Running the formatter
19
+ shell : bash
20
+ run : |
21
+ ./filename_formatter.sh ${{ inputs.working-directory }} ${{ inputs.filetypes }} ${{ inputs.ignore-files }}
Original file line number Diff line number Diff line change
1
+ #! /bin/bash
2
+
3
+ echo -e " Arguments:
4
+ [0] - Used by Bash (script filename)
5
+ [1] - Base directory
6
+ [2] - Filename type (maximum two values)
7
+ [3] - Ignored files or folders (optional; use " \" " ./<directory_name>" \" " )
8
+ "
9
+
10
+ echo " Changed files:"
11
+
12
+
13
+ # Separate $2 value (filename types) if it has a comma
14
+ if [[ " $2 " == * " ," * ]];
15
+ then
16
+ string=" $2 "
17
+
18
+ str_value=${string#* ,}
19
+ str_value2=${string%% ,* }
20
+ else
21
+ str_value=" $2 "
22
+ str_value2=" $2 "
23
+ fi
24
+
25
+ IFS=$' \n ' ; set -f
26
+ for fname in $( find $1 -type f -name " *$str_value2 " -or -name " *$str_value " )
27
+ do
28
+ ignored_files=" $( echo " $3 " | tr " ," " \n" ) "
29
+
30
+ str=" ${fname} "
31
+ value=${str%/* } # If the base directory is `.`, check in all directories for the ignored filenames
32
+
33
+ for files in $ignored_files
34
+ do
35
+ if [ " ${fname} " == " $value /$files " ] || [ " $value " == " $files " ];
36
+ then
37
+ continue 2
38
+ fi
39
+ done
40
+
41
+ # echo ${fname}
42
+ new_fname=$( echo " ${fname} " | tr ' ' ' _' )
43
+ # echo " ${new_fname}"
44
+ new_fname=$( echo " ${new_fname} " | tr ' [:upper:]' ' [:lower:]' )
45
+ # echo " ${new_fname}"
46
+ new_fname=$( echo " ${new_fname} " | tr ' -' ' _' )
47
+ # echo " ${new_fname}"
48
+ if [ " ${fname} " != " ${new_fname} " ]
49
+ then
50
+ echo " ${fname} --> ${new_fname} "
51
+ fi
52
+ done
53
+ unset IFS; set +f
Original file line number Diff line number Diff line change
1
+ // Test file to make sure the filename formatter works as excepted
You can’t perform that action at this time.
0 commit comments