Lesson 5.11: Create CI Pipeline for Azure Functions Project

Early in our development of the SimpleRPG game project, we set up a continuous integration pipeline to automate our build with every repo check-in. Now we are going to set up another pipeline for our game services. Since the services are in their own repository and solution and have different deployment requirements, we will need … Continue reading Lesson 5.11: Create CI Pipeline for Azure Functions Project

Lesson 1.4: Async Commands

To this point, we have been using synchronous commands, but the Spectre.Console.Cli library also supports asynchronous commands. For anyone familiar with the async/await concepts in .NET, these commands follow the same pattern. When our commands use asynchronous APIs (for file I/O or web service calls), then we also need our commands to be asynchronous. With … Continue reading Lesson 1.4: Async Commands

Lesson 5.10: Complete the Game Services

In this lesson, we're going to build out the three remaining services quickly. We will continue to use the same patterns (DTOs, repositories, and service helper class) that we've used in the previous lessons. If you need to review any of the individual patterns, please review those lessons. QuestTemplateService 1. Create the quests.json file in … Continue reading Lesson 5.10: Complete the Game Services

Lesson 1.3: Nested Commands

The Spectre.Console.Cli supports having multiple nested commands to enable multiple operations on a particular resource. For example: if we have a command with additional operations, we can represent that as nested commands: command operation1, command operation2, command operation3, and so on. To enable this type of nesting, the Spectre.Console.Cli provides the AddBranch configuration method. To … Continue reading Lesson 1.3: Nested Commands

CLI Lessons Updated to Spectre.Console v0.36

With the changes to merge the Spectre.Cli and Spectre.Console packages, we had to update our existing lessons to the new combined package as well. Starting with Spectre.Console v0.36, both code bases are in a single package. Our tutorial lessons have also been updated to the new version. Lesson 1.1: Starting with Spectre.Console.CliLesson 1.2: Multiple, Default, … Continue reading CLI Lessons Updated to Spectre.Console v0.36

Lesson 5.9: Refactor Service Code and Create LocationTemplateService

With our implementation of ItemTemplateService and MonsterTemplateService, there is a lot of repetitive code. The act of getting data from the query string and calling the appropriate repository method is boilerplate that can happen in a lot of our services. This code is a great candidate for refactoring into a helper class that contains the … Continue reading Lesson 5.9: Refactor Service Code and Create LocationTemplateService

Lesson 1.2: Multiple, Default, and Hidden Commands

Having one command, like we did in our first lesson, is useful but limited. With Spectre.Console.Cli, we can define multiple commands, each with their own arguments and options, and each getting called when the user specifies that command in the command-line arguments. So let's take a look at defining multiple commands and a default command … Continue reading Lesson 1.2: Multiple, Default, and Hidden Commands

Lesson 5.8: Microservices Concepts With MonsterTemplateService

With our first service complete, it's time for us to look into creating more services. Each of our data files in the SimpleRPG game can really be thought of as its own service. Each one represents some classes and domain model like items or monsters. And while they may interact with one another (monsters can … Continue reading Lesson 5.8: Microservices Concepts With MonsterTemplateService

Lesson 1.1: Starting with Spectre.Console.Cli

I've been writing a lot of command-line apps to try out .NET Core and now .NET 5. There's always a lot of repeated code to setup the application, parse the command-line arguments, and then map those to operations performed by the program. I started researching some frameworks for building command-line interfaces (CLI) and there are … Continue reading Lesson 1.1: Starting with Spectre.Console.Cli

Lesson 5.7 Design REST Service for Data Retrieval

REST web services (Representational State Transfer) is a style of architecture based on a set of principles that describe how networked resources are defined and addressed. It is important to note that REST is a style of software architecture as opposed to a set of standards. As a result, applications or architectures are sometimes referred … Continue reading Lesson 5.7 Design REST Service for Data Retrieval