$AppName = Read-Host -Prompt 'Input your project (folder) name' $TargetFolder="../$AppName" #$path = Get-Location #$newPath = Join-Path -Path $path -ChildPath $TargetFolder Write-Host "Creating a new project '$AppName' in '$TargetFolder'" $confirmation = Read-Host "Are you sure you want to proceed? [y/N]" if ($confirmation -ne 'y') { Write-Host "Closing.." Start-Sleep -Seconds 2 Exit } New-Item -ItemType Directory -Force -Path $TargetFolder Push-Location $TargetFolder git init # solution dotnet new sln -n Solution dotnet new gitignore dotnet new globaljson dotnet new nugetconfig # domain project dotnet new classlib -n Domain dotnet sln add Domain # unit test project dotnet new nunit -n Domain.Tests dotnet add Domain.Tests package NSubstitute dotnet sln add Domain.Tests dotnet add Domain.Tests reference Domain # adapters project dotnet new classlib -n Adapters dotnet sln add Adapters dotnet add Adapters reference Domain # wiring project dotnet new classlib -n Wiring dotnet sln add Wiring dotnet add Wiring reference Domain dotnet add Wiring reference Adapters dotnet add Wiring package Autofac # use webapi and/or console # webapi project #dotnet new webapi -n WebApi #dotnet sln add WebApi #dotnet add WebApi reference Domain #dotnet add WebApi reference Wiring # console project dotnet new console -n ConsoleApp dotnet sln add ConsoleApp dotnet add ConsoleApp reference Domain dotnet add ConsoleApp reference Wiring Pop-Location # copy content files Copy-Item -Path "files/AssemblyInfo.cs" -Destination "$TargetFolder/Domain" Copy-Item -Path "files/DomainPorts.cs" -Destination "$TargetFolder/Domain" Copy-Item -Path "files/IAdapterResolver.cs" -Destination "$TargetFolder/Domain" Copy-Item -Path "files/Wiring.cs" -Destination "$TargetFolder/Wiring" # remove unused files Remove-Item "$TargetFolder/Domain/Class1.cs" -ErrorAction Ignore Remove-Item "$TargetFolder/Domain.Tests/Class1.cs" -ErrorAction Ignore Remove-Item "$TargetFolder/Adapters/Class1.cs" -ErrorAction Ignore #if (Test-Path $FileName) #{ # Remove-Item $FileName #} Write-Host "Finished"