Skip to content

Instantly share code, notes, and snippets.

@rachied
Created February 18, 2024 03:17
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save rachied/cc761624e8b1339ec099cce191cddbbb to your computer and use it in GitHub Desktop.
Save rachied/cc761624e8b1339ec099cce191cddbbb to your computer and use it in GitHub Desktop.
Bootstrapper to create new Roslyn Analyzer repository
#!/bin/bash
is_empty() {
local var="$1"
[[ -z "$var" ]]
}
read -p "Enter repository name: " repository_name
if is_empty "$repository_name"; then
echo "Error: Repository name cannot be empty."
exit 1
fi
mkdir "$repository_name" && cd "$repository_name" || exit
dotnet new gitignore
dotnet new sln -n "$repository_name"
dotnet new classlib --framework "netstandard2.0" -n "$repository_name.Analyzers" -o "src/$repository_name.Analyzers"
dotnet add "src/$repository_name.Analyzers" package Microsoft.CodeAnalysis
dotnet new xunit -o "test/$repository_name.Analyzers.Tests" -n "$repository_name.Analyzers.Tests"
dotnet add "test/$repository_name.Analyzers.Tests" package Microsoft.CodeAnalysis.CSharp.Analyzer.Testing.XUnit
dotnet add "test/$repository_name.Analyzers.Tests" package Microsoft.CodeAnalysis.CSharp.CodeFix.Testing.XUnit
dotnet add "test/$repository_name.Analyzers.Tests" reference "src/$repository_name.Analyzers"
dotnet new console -o "test/$repository_name.Analyzers.IntegrationTest" -n "$repository_name.Analyzers.IntegrationTest"
dotnet add "test/$repository_name.Analyzers.IntegrationTest" reference "src/$repository_name.Analyzers"
dotnet sln add "src/$repository_name.Analyzers"
dotnet sln add "test/$repository_name.Analyzers.Tests"
dotnet sln add "test/$repository_name.Analyzers.IntegrationTest"
echo "Roslyn repo setup completed successfully."
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment