dotnet-project-scaffolding.psm1
function Open_In_Code{ #if Visual Studio code is not found, then abort! if ($null -eq (Get-Command "code.cmd" -ErrorAction Stop)) { Write-Host "Scafolding is complete, but Visual Studio Code is not detected on your computer, so it will not be started." } code . -n } function Check_DotNet{ #If dotnet tool is not found, then abort! if ($null -eq (Get-Command "dotnet.exe" -ErrorAction Stop)) { Write-Host "It seems dotnet is not installed or in your PATH" } } function Check-Git{ #if git is not found stop initializing repo, call Open in code function if ($null -eq (Get-Command "git.exe" -ErrorAction Stop)) { Write-Host "Scafolding is done, but Git could not be found on this machine, stop adding the project to Version Control" Write-Host "Attempting to open project in Visual Studio Code..." Open_In_Code } } function New-dotNetProject { param( [Parameter(Mandatory = $true)] $Project_Type, [Parameter(Mandatory = $true)] $Project_Name, [Parameter(Mandatory = $false)] $Language = 'C#' ) #Creating new project Write-Host "Creatint new dotnet project..." $null = Check_DotNet dotnet new $Project_Type --language $Language --output $Project_Name $currentLocation = Get-Location; Set-Location $currentLocation/$Project_Name; #Put the project under version control Write-Host "Initializing version control..." $null = Check-Git $null = Copy-Item -Path $PSScriptRoot/gitignore -Destination $currentLocation/$Project_Name $null = Rename-Item $currentLocation/$Project_Name/gitignore -NewName .gitignore $null = git init $null = git add . Write-Host "Commit for the first time..." $null = git commit -m "Initial Project Creation" #call open in code function Write-Host "Attempting to open project in Visual Studio Code..." $null = Open_In_Code Write-Host "Project scaffolding Complete!" } function New-dotNetSolution{ #Create new Solution $null = Check_DotNet dotnet new sln $currentLocation = Get-Location $null = Copy-Item -Path $PSScriptRoot/gitignore -Destination $currentLocation $null = Rename-Item $currentLocation/gitignore -NewName .gitignore While($true){ $ans = Read-Host -Prompt "Do you need create new project [y/n]" if($ans -eq "y"){ $ptype = Read-Host -Prompt "Please enter project type" $pname = Read-Host -Prompt "Please enter project name" $plang = Read-Host -Prompt "Please enter programming language (default is C#)" if($plang -eq ""){ $plang = "C#" } Write-Host "Creating new project ..." dotnet new $ptype --language $plang -n $pname Write-Host "Hook the project with solution ..." dotnet sln add $pname continue } if($ans -eq "n"){ break } Write-Host "Please enter an valid answer [y/n]" } Write-Host "Initializing Version Control ..." $null = Check-Git $null = git init $null = git add . Write-Host "Commit for the first time..." $null = git commit -m "Initial Solution Creation" #Attempting to open in visual studio code Write-Host "Attempting to open project in Visual Studio Code..." $null = Open_In_Code } Export-ModuleMember -Function New-dotNetProject, New-dotNetSolution # SIG # Begin signature block # MIIV9QYJKoZIhvcNAQcCoIIV5jCCFeICAQExCzAJBgUrDgMCGgUAMGkGCisGAQQB # gjcCAQSgWzBZMDQGCisGAQQBgjcCAR4wJgIDAQAABBAfzDtgWUsITrck0sYpfvNR # AgEAAgEAAgEAAgEAAgEAMCEwCQYFKw4DAhoFAAQUctQg0lG9ZH8xmq1ZumyB0DOm # s0WgghKxMIIF2DCCBMCgAwIBAgIRAOQnBJX2jJHW0Ox7SU6k3xwwDQYJKoZIhvcN # AQELBQAwfjELMAkGA1UEBhMCUEwxIjAgBgNVBAoTGVVuaXpldG8gVGVjaG5vbG9n # aWVzIFMuQS4xJzAlBgNVBAsTHkNlcnR1bSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0 # eTEiMCAGA1UEAxMZQ2VydHVtIFRydXN0ZWQgTmV0d29yayBDQTAeFw0xODA5MTEw # OTI2NDdaFw0yMzA5MTEwOTI2NDdaMHwxCzAJBgNVBAYTAlVTMQ4wDAYDVQQIDAVU # ZXhhczEQMA4GA1UEBwwHSG91c3RvbjEYMBYGA1UECgwPU1NMIENvcnBvcmF0aW9u # MTEwLwYDVQQDDChTU0wuY29tIFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkg # UlNBMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA+Q/doyt9y9Aq/uxn # habnLhu6d+Hj9a+k7PpKXZHEV0drGHdrdvL9k+Q9D8IWngtmw1aUnheDhc5W7/IW # /QBi9SIJVOhlF05BueBPRpeqG8i4bmJeabFf2yoCfvxsyvNB2O3Q6Pw/YUjtsAMU # HRAOSxngu07shmX/NvNeZwILnYZVYf16OO3+4hkAt2+hUGJ1dDyg+sglkrRueiLH # +B6h47LdkTGrKx0E/6VKBDfphaQzK/3i1lU0fBmkSmjHsqjTt8qhk4jrwZe8jPkd # 2SKEJHTHBD1qqSmTzOu4W+H+XyWqNFjIwSNUnRuYEcM4nH49hmylD0CGfAL0XAJP # KMuucZ8POsgz/hElNer8usVgPdl8GNWyqdN1eANyIso6wx/vLOUuqfqeLLZRRv2v # A9bqYGjqhRY2a4XpHsCz3cQk3IAqgUFtlD7I4MmBQQCeXr9/xQiYohgsQkCz+W84 # J0tOgPQ9gUfgiHzqHM61dVxRLhwrfxpyKOcAtdF0xtfkn60Hk7ZTNTX8N+TD9l0W # viFz3pIK+KBjaryWkmo++LxlVZve9Q2JJgT8JRqmJWnLwm3KfOJZX5es6+8uyLzX # G1k8K8zyGciTaydjGc/86Sb4ynGbf5P+NGeETpnr/LN4CTNwumamdu0bc+sapQ3E # IhMglFYKTixsTrH9z5wJuqIz7YcCAwEAAaOCAVEwggFNMBIGA1UdEwEB/wQIMAYB # Af8CAQIwHQYDVR0OBBYEFN0ECQei9Xp9UlMSkpXuOIAlDaZZMB8GA1UdIwQYMBaA # FAh2zcsH/yT2xc3tu5C84oQ3RnX3MA4GA1UdDwEB/wQEAwIBBjA2BgNVHR8ELzAt # MCugKaAnhiVodHRwOi8vc3NsY29tLmNybC5jZXJ0dW0ucGwvY3RuY2EuY3JsMHMG # CCsGAQUFBwEBBGcwZTApBggrBgEFBQcwAYYdaHR0cDovL3NzbGNvbS5vY3NwLWNl # cnR1bS5jb20wOAYIKwYBBQUHMAKGLGh0dHA6Ly9zc2xjb20ucmVwb3NpdG9yeS5j # ZXJ0dW0ucGwvY3RuY2EuY2VyMDoGA1UdIAQzMDEwLwYEVR0gADAnMCUGCCsGAQUF # BwIBFhlodHRwczovL3d3dy5jZXJ0dW0ucGwvQ1BTMA0GCSqGSIb3DQEBCwUAA4IB # AQAflZojVO6FwvPUb7npBI9Gfyz3MsCnQ6wHAO3gqUUt/Rfh7QBAyK+YrPXAGa0b # oJcwQGzsW/ujk06MiWIbfPA6X6dCz1jKdWWcIky/dnuYk5wVgzOxDtxROId8lZwS # aZQeAHh0ftzABne6cC2HLNdoneO6ha1J849ktBUGg5LGl6RAk4ut8WeUtLlaZ1Q8 # qBvZBc/kpPmIEgAGiCWF1F7u85NX1oH4LK739VFIq7ZiOnnb7C7yPxRWOsjZy6Si # TyWo0ZurLTAgUAcab/HxlB05g2PoH/1J0OgdRrJGgia9nJ3homhBSFFuevw1lvRU # 0rwrROVH13eCpUqrX5czqyQRMIIGWzCCBEOgAwIBAgIQV156WorWyKgnVBrnbADy # +TANBgkqhkiG9w0BAQsFADB4MQswCQYDVQQGEwJVUzEOMAwGA1UECAwFVGV4YXMx # EDAOBgNVBAcMB0hvdXN0b24xETAPBgNVBAoMCFNTTCBDb3JwMTQwMgYDVQQDDCtT # U0wuY29tIENvZGUgU2lnbmluZyBJbnRlcm1lZGlhdGUgQ0EgUlNBIFIxMB4XDTIy # MDcwOTE3MzEwN1oXDTI1MDcwODE3MzEwN1owZDELMAkGA1UEBhMCQ0ExGTAXBgNV # BAgMEEJyaXRpc2ggQ29sdW1iaWExEDAOBgNVBAcMB0J1cm5hYnkxEzARBgNVBAoM # ClNoaWtlIENoZW4xEzARBgNVBAMMClNoaWtlIENoZW4wggGiMA0GCSqGSIb3DQEB # AQUAA4IBjwAwggGKAoIBgQC2KsqxstUq33DhMCd4NE3QmFI/ffLA3g1k0FRuwkuJ # J0SdwT14OFJf221xmGnF4Y0ibGvD21/FeyVZxlA4unJlajZJF/WMMspZeriwWWGE # 84rE+z56lAhZnTLuM8Id2lDsuVv6C9vxNrerRRV9UErxqrk0OLdvdT8OFh9X0PNF # E+Q4YFQQsrkT9dBN+bxe/n9cZgdlAgtGRN/ZdYE6Xs6Dc4DMaHLl0g+C8iN80DnV # m6kRkg/4eW6Le9wDA7sn0BwuxxgUpttmCdZGAj8Y+M/I+G9AAHpB3Gdq9ptx+mB4 # S7pVIcBG5wkkmcG6R3aiWVfM/Rsil7/heXfcN4RNIYmwPnWB4ILwdEpCrx8NZqbt # 894MjI0Oh6rGkEsbKCklDKBf95AFei1FL5NVIeBFDbJpf5Ag+dZdSzCRQvqTBznY # ZRjP1n6FB7RpU+7k9ONjtsWykoeUwdBoEKiLpavxXGuP5a6WX3q3XHoIsEcbaz3S # RzxyUl2djpYzvHx/IMN6ggMCAwEAAaOCAXMwggFvMAwGA1UdEwEB/wQCMAAwHwYD # VR0jBBgwFoAUVML+EJUAk81q9efA19myS7iPDOMwWAYIKwYBBQUHAQEETDBKMEgG # CCsGAQUFBzAChjxodHRwOi8vY2VydC5zc2wuY29tL1NTTGNvbS1TdWJDQS1Db2Rl # U2lnbmluZy1SU0EtNDA5Ni1SMS5jZXIwUQYDVR0gBEowSDAIBgZngQwBBAEwPAYM # KwYBBAGCqTABAwMBMCwwKgYIKwYBBQUHAgEWHmh0dHBzOi8vd3d3LnNzbC5jb20v # cmVwb3NpdG9yeTATBgNVHSUEDDAKBggrBgEFBQcDAzBNBgNVHR8ERjBEMEKgQKA+ # hjxodHRwOi8vY3Jscy5zc2wuY29tL1NTTGNvbS1TdWJDQS1Db2RlU2lnbmluZy1S # U0EtNDA5Ni1SMS5jcmwwHQYDVR0OBBYEFDf3renyUjaxIiWGHDyaNg9qLVNPMA4G # A1UdDwEB/wQEAwIHgDANBgkqhkiG9w0BAQsFAAOCAgEAatpx4vhhKY3FbIF4tycY # GOlZP1fb7D+nhYyuLtG2fCLE3HUH5uUOXqwJ3cn9dJTyJ3U98q0GSo+dWwai9J7v # f29jQNkVrPaA9qYOZJFvqd2zwfD/OjIuDziu/fR8BZXBL/rDQmQHXy1V1pL69Can # KIL2k9nZ2lJtHIAdSkbAcdkNaWMllupsNYrna2gzF4sznukX0vLbRDN4SPxFKreD # VGkDSP58I3IMcqE8VNQcELHYeI7Baf6D+98MTVk1Rz1BkACai3mC/0zn6n5mvpnY # pKb83Fd2YqHMPSRLd2u9PvEd/NU4UzbegYnqmxAC9JElGkSOALKJ9Vp3EsbAIHwH # xem2/SS3HlfnjHg5kGkm8AXir0F+JPp8afsxaWji+l56kw4MbFlBoCtd0aBfeOPo # Cs65ehcmnphpnU0UoLW1Ec72etnKzsFiT3xRDVScfqojiM92yTyIt0/Fhlj9kcZg # g6EGA4TEJYNmDltB1MO6ZtDYW9vyYxu9Kc4n9CTDmeahzgf95bD7tKzSctwPaTwZ # HZ0GCGs4EeE/pdGJwjUXwV8HsZ8VkTMY3o3pWQrzmTSZWzYhqryO2l5rsnfixiud # jz2SmjX1umwrAFNbHB5/AH7k/fHpAxWfehnUyIqYn8txgUDLaQKEZMTECDkEdRVt # VwruJdIF/LuBo1ToLL87DZAwggZyMIIEWqADAgECAghkM1HTxzifCDANBgkqhkiG # 9w0BAQsFADB8MQswCQYDVQQGEwJVUzEOMAwGA1UECAwFVGV4YXMxEDAOBgNVBAcM # B0hvdXN0b24xGDAWBgNVBAoMD1NTTCBDb3Jwb3JhdGlvbjExMC8GA1UEAwwoU1NM # LmNvbSBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IFJTQTAeFw0xNjA2MjQy # MDQ0MzBaFw0zMTA2MjQyMDQ0MzBaMHgxCzAJBgNVBAYTAlVTMQ4wDAYDVQQIDAVU # ZXhhczEQMA4GA1UEBwwHSG91c3RvbjERMA8GA1UECgwIU1NMIENvcnAxNDAyBgNV # BAMMK1NTTC5jb20gQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBDQSBSU0EgUjEw # ggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCfgxNzqrDGbSHL24t6h3TQ # cdyOl3Ka5LuINLTdgAPGL0WkdJq/Hg9Q6p5tePOf+lEmqT2d0bKUVz77OYkbkStW # 72fL5gvjDjmMxjX0jD3dJekBrBdCfVgWQNz51ShEHZVkMGE6ZPKX13NMfXsjAm3z # detVPW+qLcSvvnSsXf5qtvzqXHnpD0OctVIFD+8+sbGP0EmtpuNCGVQ/8y8Ooct8 # /hP5IznaJRy4PgBKOm8yMDdkHseudQfYVdIYyQ6KvKNc8HwKp4WBwg6vj5lc02Al # vINaaRwlE81y9eucgJvcLGfE3ckJmNVz68Qho+Uyjj4vUpjGYDdkjLJvSlRyGMwn # h/rNdaJjIUy1PWT9K6abVa8mTGC0uVz+q0O9rdATZlAfC9KJpv/XgAbxwxECMzNh # F/dWH44vO2jnFfF3VkopngPawismYTJboFblSSmNNqf1x1KiVgMgLzh4gL32Bq5B # NMuURb2bx4kYHwu6/6muakCZE93vUN8BuvIE1tAx3zQ4XldbyDgeVtSsSKbt//m4 # wTvtwiS+RGCnd83VPZhZtEPqqmB9zcLlL/Hr9dQg1Zc0bl0EawUR0tOSjAknRO1P # NTFGfnQZBWLsiePqI3CY5NEv1IoTGEaTZeVYc9NMPSd6Ij/D+KNVt/nmh4LsRR7F # bjp8sU65q2j3m2PVkUG8qQIDAQABo4H7MIH4MA8GA1UdEwEB/wQFMAMBAf8wHwYD # VR0jBBgwFoAU3QQJB6L1en1SUxKSle44gCUNplkwMAYIKwYBBQUHAQEEJDAiMCAG # CCsGAQUFBzABhhRodHRwOi8vb2NzcHMuc3NsLmNvbTARBgNVHSAECjAIMAYGBFUd # IAAwEwYDVR0lBAwwCgYIKwYBBQUHAwMwOwYDVR0fBDQwMjAwoC6gLIYqaHR0cDov # L2NybHMuc3NsLmNvbS9zc2wuY29tLXJzYS1Sb290Q0EuY3JsMB0GA1UdDgQWBBRU # wv4QlQCTzWr158DX2bJLuI8M4zAOBgNVHQ8BAf8EBAMCAYYwDQYJKoZIhvcNAQEL # BQADggIBAPUPJodwr5miyvXWyfCNZj05gtOII9iCv49UhCe204MH154niU2EjlTR # IO5gQ9tXQjzHsJX2vszqoz2OTwbGK1mGf+tzG8rlQCbgPW/M9r1xxs19DiBAOdYF # 0q+UCL9/wlG3K7V7gyHwY9rlnOFpLnUdTsthHvWlM98CnRXZ7WmTV7pGRS6AvGW+ # 5xI+3kf/kJwQrfZWsqTU+tb8LryXIbN2g9KR+gZQ0bGAKID+260PZ+34fdzZcFt6 # umi1s0pmF4/n8OdX3Wn+vF7h1YyfE7uVmhX7eSuF1W0+Z0duGwdc+1RFDxYRLhHD # sLy1bhwzV5Qe/kI0Ro4xUE7bM1eV+jjk5hLbq1guRbfZIsr0WkdJLCjoT4xCPGRo # 6eZDrBmRqccTgl/8cQo3t51Qezxd96JSgjXktefTCm9r/o35pNfVHUvnfWII+NnX # rJlJ27WEQRQu9i5gl1NLmv7xiHp0up516eDap8nMLDt7TAp4z5T3NmC2gzyKVMtO # DWgqlBF1JhTqIDfM63kXdlV4cW3iSTgzN9vkbFnHI2LmvM4uVEv9XgMqyN0eS3FE # 0HU+MWJliymm7STheh2ENH+kF3y0rH0/NVjLw78a3Z9UVm1F5VPziIorMaPKPlDR # ADTsJwjDZ8Zc6Gi/zy4WZbg8Zv87spWrmo2dzJTw7XhQf+xkR6OdMYICrjCCAqoC # AQEwgYwweDELMAkGA1UEBhMCVVMxDjAMBgNVBAgMBVRleGFzMRAwDgYDVQQHDAdI # b3VzdG9uMREwDwYDVQQKDAhTU0wgQ29ycDE0MDIGA1UEAwwrU1NMLmNvbSBDb2Rl # IFNpZ25pbmcgSW50ZXJtZWRpYXRlIENBIFJTQSBSMQIQV156WorWyKgnVBrnbADy # +TAJBgUrDgMCGgUAoHgwGAYKKwYBBAGCNwIBDDEKMAigAoAAoQKAADAZBgkqhkiG # 9w0BCQMxDAYKKwYBBAGCNwIBBDAcBgorBgEEAYI3AgELMQ4wDAYKKwYBBAGCNwIB # FTAjBgkqhkiG9w0BCQQxFgQU/jMnN07V4g9B9frtLj5M5Yg9ksYwDQYJKoZIhvcN # AQEBBQAEggGAcHZ6KGT79Y9g+VLE+iz6tX0W5Fa7W0CNr1cnBVbEZmp4pd/rgYW+ # +d2BmIXU/1muUYVPn82bpHHqP8RlurRawtWsOLyClrz+DVs+XbjvaP0X7tIxS9NP # w/+JiNkaOngS0+1w5Yl3CU6XgzmUM1el2YLCiVIrIEhCKj12XYlpfGUiCeL6XO9G # WMHbvScZM5oD6YXOlcZWbMI3csXrBvGdfTqWd058OqdmjDXN724mvxHvBBWrTUZB # 826eLXff6ieC7fIeMLxz7nMKL6lm/7loHIoycGv/dJROteSYOdfHLn/Hreylu1T+ # Gs/LJn7DvDgblbsmiHxa8DEiFo6mLKhyFODGiICgfjJQD2ZNgE/GQ4UTgzVBklO1 # rega+Gjzx13u5CSRTPVwb8aO4iOF4N48jlJycgDY0317nX+aR3JZISlSgzCnHUDF # UhjTl6GDMVc8fw/ElyUX5cZwdo09P8YYNYwNahK3JjpWrBYumtU1jJh1IbQChdYb # qiJyx1WNWLyf # SIG # End signature block |