8000 Convert the filename formatter to an action (#6) · TheAlgorithms/scripts@dee3bce · GitHub
[go: up one dir, main page]

Skip to content

Navigation Menu

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit dee3bce

Browse files
Convert the filename formatter to an action (#6)
* action for filename formatter * Rename some file.cpp to SOME FILE.cpp * fix review comments * update name * Update test/SOME FILE.cpp Co-authored-by: David Leal <halfpacho@gmail.com> * chore: apply suggestions from code review * Apply suggestions from code review Co-authored-by: David Leal <halfpacho@gmail.com> * chore: apply suggestions from code review Co-authored-by: David Leal <halfpacho@gmail.com>
1 parent 9b24d47 commit dee3bce

File tree

6 files changed

+110
-8
lines changed

6 files changed

+110
-8
lines changed
+13
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
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

.github/workflows/test.yml

+12
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
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

filename_formatter.sh

+10-8
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ echo -e "Arguments:
99

1010
echo "Changed files:"
1111

12+
1213
# Separate $2 value (filename types) if it has a comma
1314
if [[ "$2" == *","* ]];
1415
then
@@ -21,10 +22,10 @@ str_value="$2"
2122
str_value2="$2"
2223
fi
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")
2627
do
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
@@ -38,15 +39,16 @@ do
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
5253
done
54+
unset IFS; set +f

formatter/action.yml

+21
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
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 }}

formatter/filename_formatter.sh

+53
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
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

test/SOME FILE.cpp

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
// Test file to make sure the filename formatter works as excepted

0 commit comments

Comments
 (0)
0