File tree Expand file tree Collapse file tree 6 files changed +110
-8
lines changed Expand file tree Collapse file tree 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:
99
1010echo " Changed files:"
1111
12+
1213# Separate $2 value (filename types) if it has a comma
1314if [[ " $2 " == * " ," * ]];
1415then
@@ -21,10 +22,10 @@ str_value="$2"
2122str_value2=" $2 "
2223fi
2324
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 " )
2627do
27- ignored_files=" $( echo $3 | tr " ," " \n" ) "
28+ ignored_files=" $( echo " $3 " | tr " ," " \n" ) "
2829
2930 str=" ${fname} "
3031 value=${str%/* } # If the base directory is `.`, check in all directories for the ignored filenames
3839 done
3940
4041 # echo ${fname}
41- new_fname=` echo ${fname} | tr ' ' ' _' `
42+ new_fname=$( echo " ${fname} " | tr ' ' ' _' )
4243 # echo " ${new_fname}"
43- new_fname=` echo ${new_fname} | tr ' A-Z ' ' a-z ' `
44+ new_fname=$( echo " ${new_fname} " | tr ' [:upper:] ' ' [:lower:] ' )
4445 # echo " ${new_fname}"
45- new_fname=` echo ${new_fname} | tr ' -' ' _' `
46+ new_fname=$( echo " ${new_fname} " | tr ' -' ' _' )
4647 # echo " ${new_fname}"
47- if [ ${fname} != ${new_fname} ]
48+ if [ " ${fname} " != " ${new_fname} " ]
4849 then
4950 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
5152 fi
5253done
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 ' ' ' _<
94A7
span class="pl-pds">')
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