Getting started

DryGen is a .Net tool to generate other representations of a piece of knowledge from one representation.

It's inspired by the "Don't repeat yourself" (DRY) prinsiple "Every piece of knowledge must have a single, unambiguous, authoritative representation within a system"

Beeing a .Net tool (with tool name dry-gen), you'll need a .NET SDK installed on your machine to use it. With a .Net SDK in place dry-gen is installed and used like any other .Net tool.

Warning

As with all .Net tools, you run dry-gen as an application with full trust, so make sure you know exactly where you write your output files.

Installation

As a global tool

dotnet tool install --global dry-gen

As a local tool

dotnet new tool-manifest # if you haven't set up the .Net tools for this project already.
dotnet tool install --local dry-gen

Use

You invoke DryGen from the commandline as dry-gen when its installed as a global tool, and with dotnet dry-gen when its installed as a local tool.

The general structure of the command line is dry-gen <verb> [options]

Verb

The verb defines your target and source representation. The supported verbs are using the pattern <target-representation>-from-<source-representation>, e.g. mermaid-class-diagram-from-csharp. Execute dry-gen without any parameters to get a list of the supported verbs.

Options

The options are spesific to each verb, and are used to fine tune the result representation. Most options uses the standard long notation of --<option-name>, e.g. --input-file. Some options also supports the shorthand notation of -<letter>, e.g. -i for input file, but we suggest you use the long format. Execute dry-gen <verb> --help to get the list of options for a specific verb, e.g. dry-gen mermaid-class-diagram-from-csharp --help

Explore the dry-gen features

Head over to the verbs page to see the list of verbs dry-gen supports, or take a look at our examples.

Development process integration

When you decide to generate other representations from one, it's important to keep them all in sync all the time. The easiest way to achieve this is to integrate the generation directly into the development process. There are many ways to do this, and if you already have a method you prefer, you should definitely use it with dry-gen as well. If not, you can quickly get up and running, without needing any other tools than dotnet, by using MSBuild Targets in your .csproj files. To make it easy to get started with this approach, dry-gen provides some sample .Net project templates that you can use with the dotnet new command. To install the templates, run

dotnet new install dry-gen.templates

The templates contains some example code and some MSBuild targets in the .csproj file that you can customise to your needs. You can always get the list of installed dry-gen related templates by running dotnet new list, e.g.

dotnet new list --tag dry-gen

You generate a new project from a template by using its short name, e.g.

dotnet new dry-gen.mermaid --name MyProject.GenerateMermaidFromCSharpWithDryGen

or

dotnet new dry-gen.jsonschema --name MyProject.GenerateFromJsonSchemaWithDryGen

When you have generated a project you must build it to generate the other representations, e.g.

dotnet build

Then you can open the readme file with your favorite editor/viewer to look at the generated representations and learn more about how you can customize the project to your needs, e.g.

./README.md

Have fun!