/MiniScaffold

F# Template for creating and publishing libraries targeting .NET 6.0 `net6.0` or console apps .NET 6.0 `net6.0`.

Primary LanguageF#MIT LicenseMIT

MiniScaffold

What is MiniScaffold?

This is an F# Template for:

  • creating and publishing libraries targeting .NET 6.0 net6.0
  • creating and publishing applications targeting .NET 6.0 net6.0

Why use MiniScaffold

This takes away the ambiguity that developers face when creating an OSS project. Such as:

  • How do I structure my project?
  • How do I create repeatable builds?
  • Which test framework should I use?
  • How do I create releases easily?
  • What Issue/Pull Request templates should I use?
  • How should I go about creating documentation?
  • How do I get CI setup easily?
  • What's the standard .gitignore file?
  • What other things would make it easier for me when starting off creating a project I might not even know about?

What does this include in the box?

All project types

  • Basic argument parsing example via Argu
  • Builds a net6.0 application - Target Frameworks
    • To build for net6.0
  • Builds for win-x64, osx-x64 and linux-x64 - Runtime Identifiers. Bundles the application via dotnet-packaging
    • Bundles the win-x64 application in a .zip file.
    • Bundles the osx-x64 application in a .tar.gz file.
    • Bundles the linux-x64 application in a .tar.gz file.

Getting started quickly

Install the dotnet template from NuGet:

dotnet new -i "MiniScaffold::*"

Then choose:

dotnet new mini-scaffold -n MyCoolNewLib --githubUsername MyGithubUsername
dotnet new mini-scaffold -n MyCoolNewApp --githubUsername MyGithubUsername -ou console

The scaffold defaults to using the main branch for releases. If you release from a different branch, you can use the --releaseBranch <branch name> parameter to use your release branch instead of the default.


Builds

GitHub Actions
GitHub Actions
Build History

NuGet

Stable Prerelease
NuGet Badge NuGet Badge

Options

githubUserName

This is used to automatically configure author information in the NuGet package, as well as configure push urls for repo locations.

outputType

Defaults to Library

When set to either Console or Library project and the supporting infrastructure around their respective types.


Known issues

Permission denied

-bash: ./build.sh: Permission denied

This is because dotnet template loses permissions of files. (TheAngryByrd#37) added a post hook to address this but this only fixes it for dotnet sdk 2.x users. dotnet sdk 1.x will need to run chmod +x ./build.sh

Appveyor badge not scaffolded correctly

Appveyor's conventions around generating URLs based on the project name has some nuances. See this issue for details.


Example Projects using this template:

This project uses the following projects: