BomSweeper is a command-line tool that finds the files starting with a UTF-8 Byte Order Mark (BOM) in the directory tree and removing a BOM from those files.
BomSweeper is available as the NuGet Package, so it can be installed as follows:
dotnet tool install -g BomSweeper.GlobalTool
bomsweeper
[-C
DIR] [-D
N] [-RVhv
] [--
] PATTERN...
The PATTERN arguments represent the glob patterns that match the paths of the files to find.
The path separator in the pattern must be a slash ('/
') character
regardless of the platform. The directory names .
and ..
in the pattern
are not interpreted specially (that is, .
and ..
do not mean the current
and parent directory, respectively). So, for example, the pattern
foo/../bar/baz.cs
does not match bar/baz.cs
.
Note that the pattern matching is performed with the relative paths to the current directory, so if the pattern starts with a slash, it does not match any file.
The pattern can contain an asterisk ('*
') character as a wildcard, which
matches any character other than a slash zero or more times. It can also
contain a double asterisk ('**
'), which represents as follows:
-
if the pattern equals
**
, it matches all files in the current directory and in its subdirectories. -
if the pattern ends with
/**
(a slash followed by a double asterisk), the subpattern/**
matches all files in the directory and subdirectories. -
if the pattern starts with
**/
(a double asterisk followed by a slash), the subpattern**/
matches the current directory and its subdirectories. For example,**/foo
matchesfoo
,bar/foo
, andbar/baz/foo
. -
if the pattern contains
/**/
, the subpattern/**/
matches a slash, the directories, and subdirectories. For example,foo/**/bar
matchesfoo/bar
,foo/baz/bar
, andfoo/baz/qux/bar
.
Options are as follows:
Option | Description | ||
---|---|---|---|
-C , |
--directory |
DIR | Change to directory. (Default: . ) |
-h , |
--help |
Show help message and exit | |
-D , |
--max-depth |
N | The maximum number of directory levels to search. (Default: 16 ) |
-R , |
--remove |
Remove a BOM | |
-v , |
--verbose |
Be verbose | |
-V , |
--version |
Show version and exit |
BomSweeper exits 0 if no files starting with a UTF-8 BOM are found, and >0 if one or more files are found or if an error occurs.
When the -R
or --remove
option is specified, it exits 0 on success, and
>0 if an error occurs.
Note that, in the following examples, the glob pattern is enclosed in
apostrophes ('
...'
) to prevent the shell from expanding the pattern.
bomsweeper '**/*.cs'
Find .cs
files starting with a UTF-8 BOM in the current directory and
subdirectories.
bomsweeper -R '**/*.cs'
Find .cs
files in the current directory and subdirectories, and remove a UTF-8
BOM from the files if any.
- Visual Studio 2022 Version 17.12 or .NET 9.0 SDK (SDK 9.0.100)
git clone URL
cd BomSweeper.CSharp
dotnet restore
dotnet build
dotnet test -p:CollectCoverage=true -p:CoverletOutputFormat=opencover \
--no-build BomSweeper.Test
dotnet ANYWHERE/reportgenerator.dll \
--reports:BomSweeper.Test/coverage.opencover.xml \
--targetdir:Coverlet-html
cd BomSweeper.GlobalTool
dotnet pack
dotnet tool install --global --add-source bin/Debug BomSweeper.GlobalTool