Browse Source

Added Images to README.md,

- Added links to CONTRIBUTING.md
- Spelling and grammar changes pages above.
The documents still need more proof reading and editing. With that said, the guides are the only significant thing left to add to this project. Once that is done, it will mostly be a case of fine tuning stuff for version 1.0.
merge-requests/1/head
Craig Oates 7 years ago
parent
commit
f477d7bebc
  1. 61
      CONTRIBUTING.md
  2. 2
      Console.Waterworks/CW_Console/ConsoleCommands.cs
  3. BIN
      Documentation/README_Assets/README_Invalid_Input.png
  4. BIN
      Documentation/README_Assets/README_Method_Mapping.gif
  5. BIN
      Documentation/README_Assets/README_Method_Mapping_Invalid.gif
  6. BIN
      Documentation/README_Assets/README_Valid_Input.png
  7. 59
      README.md

61
CONTRIBUTING.md

@ -2,17 +2,17 @@
Let me begin by saying thank you for stopping by and checking out Console.Waterworks.
The following is a set of guidelines for contributing to Console.Waterworks. I must stress, though, these are guidelines and nothing more. They are not set in stone. Please feel free to use your own judgement when contributing.
The following is a set of guidelines for contributing to Console.Waterworks. I must stress, though, they are guidelines and nothing more. They are not set in stone. Please feel free to use your own judgement when contributing.
## Code of Conduct
The Console.Wateworks Code of Conduct governs every participant of this project. If you decide to take part in developing in cultivating the project, the expectation is for you to adhere to it.
The [Console.Waterworks Code of Conduct](https://github.com/CraigOates/Console.Waterworks/blob/develop/CODE_OF_CONDUCT.md, "Code of Conduct") governs every participant of this project. If you decide to take part in developing and cultivating the project, the expectation is you to adhere to it.
Please report any unacceptable behaviour to craig@craigoates.net.
Please report any unacceptable behaviour to [craig@craigoates.net](craig@craigoates.net, "Craig's email address").
## The Creator's Expectations for Console.Waterworks
To those who do not know, Console.Waterworks is the creation of Craig Oates (A.K.A. me [GitHub Profile link]). I am a person, like you, and I argue it is important you know a bit about me. The reason why this is important is because it will help you gauge if this project is for you. I do not want you to feel frustrated when working on Console.Waterwork due to people problems. I know I cannot foresee every problem and counteract it. But, I can let you know the type of person I am and what I expect from the project. This will help you gauge the likelihood of us having conflicting personalities. And, it will highlight any differences in perspectives sooner -- if all goes as intended.
To those who do not know, Console.Waterworks is the creation of Craig Oates (A.K.A. [me](http:github.com/CraigOates, "Craig's GitHub Profile")). I am a person, like you, and I argue it is important you know a bit about me. The reason why this is important is because it will help you gauge if this project is for you. I do not want you to feel frustrated when working on Console.Waterworks due to people problems. I know I cannot foresee every problem and counteract it. But, I can let you know the type of person I am and what I expect from the project. This will help you gauge the likelihood of us having conflicting personalities. And, it will highlight any differences in perspectives sooner -- if all goes as intended.
If it does look like we have a miss-match at the person level, I would like to take a moment and say one thing. It is okay -- we do not all think alike. You will face no hard feelings from me and I have no problem with you forking the code. If you do, I wish you the best of luck. And, do not feel like you cannot contact me and show me you weird and wonderful concoction.
@ -22,60 +22,60 @@ From my point-of-view, I am not in a rush to turn Console.Waterworks into a jack
Before moving on, I would like to reiterate a point from above. You will not receive any ill-will from me if our goals do not align. It is okay to disagree. I am well aware one persons "done" is another person’s starting point.
## "I Don't want to Read this, I want to Ask a Quick Question"
## "I don't want to read this, I want to ask a quick question"
The easiest and faster way to contact me is via email. Which is craig@craigoates.net. I do not recommend filling an issue because of this.
The easiest and faster way to contact me is via email. Which is [craig@craigoates.net](craig@craigoates.net, "Craig's email address"). I do not recommend filling an issue because of this.
## "What Should I Know Before I Get Started?"
Before you jump in, I recommend you read The Complete Guide to Console.Waterworks. Console.Waterworks is not the most expansive or complex piece of code on the planet. But, it does have its own quirks and behaviours. That does not mean I have created a monster, though. I have tried to make it as modular and as easy to read as possible. But, it still has a reasonable amount of complexity to it. So, please read the guide.
Before you jump in, I recommend you read [The Complete Guide to Console.Waterworks](https://github.com/craigoates, "C.W. Complete Guide"). Console.Waterworks is not the most expansive or complex piece of code on the planet. But, it does have its own quirks and behaviours. I have tried to make it as modular and as easy to read as possible. But, it still has a reasonable amount of complexity to it. So, please read the guide.
## "How Can I Contribute?"
You can contribute to the project in several ways. The obvious two ways are filing issues and sending pull requests. You can, also, contribute by sending me an email. Although, the last one is not as open as the previous two. It is still an effective route to take if you want to discuss something at length. My email address is craig@craigoates.net.
You can contribute to the project in several ways. The obvious two ways are [filing issues](https://github.com/CraigOates/Console.Waterworks/issues/new, "C.W. Issues") and sending [pull requests](https://github.com/CraigOates/Console.Waterworks/compare, "C.W. Pull request"). You can, also, contribute by sending me an email. Although, the last one is not as open as the previous two. It is still an effective route to take if you want to discuss something at length. My email address is [craig@craigoates.net](craig@craigoates.net, "Craig's email address").
### Reporting Bugs
I track bugs using GitHub Issues. If you find one, fill out the template provided and file an issue.
I track bugs using [GitHub Issues](https://github.com/CraigOates/Console.Waterworks/issues/new, "C.W. Issues"). If you find one, fill out the template provided and file an issue.
- Bug Report Template
- [Bug Report Template](https://github.com/CraigOates/Console.Waterworks/blob/develop/BUG_REPORT_TEMPLATE.md, "Bug Report Template")
When you file a bug report, do not hold back with the details. The more information I have, the chance of me fixing it increases.
### Suggesting Enhancements
You might have read "The Creator's Expectations" above... If you have, you will know I hold a conservative attitude for adding features. With that said, I am not against adding new features -- stated above as well. If you believe your suggestion has some merit, please feel free to submit it. I am more than happy to discuss your plan. Please, do not feel offended if your suggestion does not get added to the project, though. That is not my intension.
You might have read [The Creator's Expectations](https://github.com/CraigOates/Console.Waterworks/blob/develop/CONTRIBUTING.md#the-creators-expectations-for-consolewaterworks, "Creator's Expections Section") above... If you have, you will know I hold a conservative attitude for adding features. With that said, I am not against adding new features -- stated above as well. If you believe your suggestion has some merit, please feel free to submit it. I am more than happy to discuss your plan. Please, do not feel offended if your suggestion does not get added to the project, though. That is not my intension.
### "How do I Submit an Enhancement Suggestion?"
You can submit an enhancement suggestion via GitHub Issues. Before you do, here is a list of things to consider when submitting an enhancement suggestion.
You can submit an enhancement suggestion via [GitHub Issues](https://github.com/CraigOates/Console.Waterworks/issues/new, "C.W. Issues"). Before you do, here is a list of things to consider when submitting an enhancement suggestion.
- Use a clear and descriptive title for the issue to help identify the suggestion.
- Describe your enhancement in a brief summery. Aim to be as clear as possible.
- Describe your enhancement in a brief summary. Aim to be as clear as possible.
- Highlight the area where this enhancement will improve Console.Waterworks.
- Provide a summary of how you intend to add your suggestion.
- If you have any step-by-step instructions, include them.
- Include any code snippets you think will help explain your points better. You can provide either links to an external source or include them as markdown blocks.
- Include screenshots and animated GIFs. They will help me understand your proposal better. It will, also, help explain where it will fit into Console.Waterworks.
- You can use Licecap to help you record GIFs. It is available on Windows and MacOS. If you are on Linux, you can use Silentcast or Byzanz. They are, also, GIF recording programs.
- You can use [Licecap](https://github.com/justinfrankel/licecap, "LiceCap GitHub Repository") to help you record GIFs. It is available on Windows and MacOS. If you are on Linux, you can use [Silentcast](https://github.com/colinkeenan/silentcast, "SilentCast GitHub Repository") or [Byzanz](http://github.com/gnome/byzanz, "Byzanz GitHub Repository"). They are, also, GIF recording programs.
- Explain why this suggestion will be useful for most consumers of Console.Waterworks. I ask you to do this because it is one thing to work on Console.Waterworks and another to use it as a Nuget package.
- List any other examples of your suggestion in a working context. Also, highlight the benefit it has brought to that codebase.
I have decided not to include a template here because writing proposals can be a messy and tricky affair. They can be the rally call to the great unknown or a meticulous path to paradise. Each one has its place in this world and I aim to keep it that way. With that said, try to keep your suggestion as clear and concise as possible. I ask this because -- to be frank -- if I do not understand your suggestion how can I agree to include it?
I have decided not to include a template here because writing proposals can be a messy and tricky affair. They can be the rally call to the great unknown or a meticulous path to paradise. Each approach has its place in this world and I aim to keep it that way. With that said, try to keep your suggestion as clear and concise as possible. I ask this because -- to be frank -- if I do not understand your suggestion how can I agree to include it?
### Pull Requests
Before submitting a pull request, I must stress the importance of talking to me first. I do not want you spending hours of your time writing code for Console.Waterworks to then face rejection. Your time is not my time and I would like to avoid wasting either of ours if I can help it. If there is something you would like to add to Console.Waterworks, you can do two things. The first is email me and talk about your plans. This is the quickest way for you to find out if your idea is worth pursuing. The second thing you can do is send an enhancement suggestion and hold the discussion there. This will result in a slower response but the conversation will be in the open. If you decide to file a suggestion, make sure you have read Suggesting Enhancements, above. Otherwise, my address is craig@craigoates.net
Before submitting a pull request, I must stress the importance of talking to me first. I do not want you spending hours of your time writing code for Console.Waterworks to then face rejection. Your time is not my time and I would like to avoid wasting either of ours if I can help it. If there is something you would like to add to Console.Waterworks, you can do two things. The first is [email me](craig@craigoates.net, "Craig's email address") and talk about your plans. This is the quickest way for you to find out if your idea is worth pursuing. The second thing you can do is send an [enhancement suggestion](https://github.com/CraigOates/Console.Waterworks/issues/new, "C.W. Issues") via GitHub Issues and hold the discussion there. This will result in a slower response but the conversation will be in the open. If you decide to file a suggestion, make sure you have read "Suggesting Enhancements", above.
Now back to the pull requests...
Here is a list of things to consider when submitting a pull request:
- Fill in the Pull Requests Template.
- Fill in the [Pull Requests Template](https://github.com/CraigOates/Console.Waterworks//blob/develop/PULL_REQUEST_TEMPLATE.md, "C.W. Pull request")
- Do not include issue numbers in the pull request title.
- Include screenshots and animated GIFs in your pull request whenever possible.
- Follow the C# and Code Comments style guides.
- Describe how you intend to include the code into the projects documentation.
- Describe how you intend to add the code into the project's documentation.
## Style Guides
@ -93,33 +93,22 @@ As the title of this section implies, the following pertains to a collection of
### C# (C-Sharp)
Aim to adhere to the C# Standard Style. If you are working in Visual Studio, the automatic formatting should suffice. Here are a few examples.
Aim to adhere to the standard C# coding conventions. If you are working in Visual Studio, the automatic formatting should suffice.
- Brackets
- private class level variable names
- private method level variable names
- Class names
- Interface derived class names
- Casing
- Code Comments
I have tried to reduce the inclusion of comments to public facing and "messy" code. This is due -- for the most part -- to intelliSense. It provides the user of Console.Waterworks with help when wiring it up to their console program. With that said, what makes sense to me does not mean it does for you. So, if you feel like something needs further explanation, please add a comment. I would prefer it is comments aimed to explain the "why" and not the "how" or "what". But, this preference is a starting point and not an absolute. If you add a comment, please use XML-Comments for public code and standard comments for private code. I am not fussed if you use one multi-line comment or several inline ones.
I have tried to reduce the inclusion of comments to public facing "messy" code. This is due -- for the most part -- to intelliSense. It provides the user of Console.Waterworks with help when wiring it up to their console program. With that said, what makes sense to mean does not mean it does for you. So, if you feel like something needs further explanation, please add a comment. I would prefer it is comments aimed to explain the "why" and not the "how" or "what". But, this preference is a starting point and not an absolute. If you add a comment, please use XML-Comments for public code and standard comments for private code. I am not fussed when it comes to one multi-line comment or several inline ones.
Here are a few examples:
- XML-COMMENTS
- Inline comments
- Multi-line comments
- [C# Coding Conventions](https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/inside-a-program/coding-conventions, "C# Coding Conventions")
- [C# Documentation Comments](https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/language-specification/documentation-comments, "C# Comment Doc's")
## And even more Notes
If you would like to contribute to the project, thank you. Before you do, though, please make sure no one has already beaten you to saying or adding it first. I am yet to come across someone whom likes dealing with repeated issues, points or mistakes and I doubt I ever will. I appreciate all efforts by those checking to see if what they are saying is something new. On top of that, rejecting fifty individual issues is better than rejecting fifty of the same one. Well... that is my position of that anyway.
If you would like to contribute to the project, thank you. Before you do, though, please make sure no one has already provided what you are offering. I am yet to come across someone with a liking for processing repeated issues, points or mistakes. And, I doubt I ever will, so please check. I appreciate all efforts by those checking to see if what they are saying is something new. On top of that, rejecting fifty individual issues is better than rejecting fifty of the same one. Well... that is my position of that anyway.
Do not feel put-off if I am slow to respond. I will read what you have to say but I am not at my desk all the time. On top of that, I encourage you to refrain from instant replies if you can help it. This allows me to consider what you have said without feeling pressured. I do not want to waste your time by retracting a hasty and ill-thought response.
Do not feel put-off if I am slow to respond. I will read what you have to say but I am not at my desk all the time. On top of that, I encourage you to refrain from instant replies if you can help it. This allows me to consider what you have said without feeling pressured. I do not want to waste your time by retracting a hasty and ill-thought-through response.
And with that...
Do not feel like you need to reply back as fast as possible. If you feel the need to ponder something, do so. I am under the impression a good answer is better than a quick one. If you still feel bad for not replying as fast as possible, I have a piece of advice. Let me know you have received the communication (email, issue comment Etc.) and state you are thinking about it -- job's a goodun.
Do not feel like you need to reply back as fast as possible. If you feel the need to ponder something, do so. I am under the impression a good answer is better than a quick one. If you still feel bad for not replying as fast as possible, I have a piece of advice: Let me know you have received the communication (email, issue comment Etc.) and state you are thinking about it -- job's a goodun.
Last but not least...

2
Console.Waterworks/CW_Console/ConsoleCommands.cs

@ -21,7 +21,7 @@ namespace CW_Console
}
[ListCommand()]
[Description("Outputs a message indicating this programis running okay.")]
[Description("Outputs a message indicating this program is running okay.")]
[Parameters("None")]
[Usage("CW_Console> Test")]
public static string Test() => "Test complete.";

BIN
Documentation/README_Assets/README_Invalid_Input.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

BIN
Documentation/README_Assets/README_Method_Mapping.gif

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

BIN
Documentation/README_Assets/README_Method_Mapping_Invalid.gif

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

BIN
Documentation/README_Assets/README_Valid_Input.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

59
README.md

@ -1,26 +1,36 @@
# Console.Waterworks - ReadMe (This is incomplete)
Console.Waterworks is a Nuget package. It aims to help you write extendable and command-based console programs in C# and .Net.
Console.Waterworks is a Nuget package. It aim is to help you write extendable and command-based console programs in C# and .Net.
One of the main struggles with writing software is the need to write "plumbing code". It is the code which does not solve the main problem but it is necessary for us to reach a solution. This is why we all feel frustrated when we need to write it. It feels like we are going the long way round to that dream holiday in the sun. This is why I created Console.Waterworks. I believe we should face frustration when it finds us and only then. Why go looking for it?
Amongst other things, Console.Waterworks has this one very handy trick. It allows you to write methods which become a run-time command -- which is quite the time saver. When you use Console.Waterworks, you, also, do not need to parse end-user input. The reason why is because Console.Waterworks does it for you. This means, when people run your program, they type the method name in and your code begins excuting. On top of that, Console.Waterworks handles bad input and method parameters, as well.
Do not panic if none of what I just said made no sense. I threw a lot of information at you in a short span of time. It is okay and not unexpected. Because of this, I have prepared a gif showing Console.Waterworks in action. Please feel free to check it out. It should help explain what Console.Waterwork is and how it works.
Do not panic if none of what I just said made no sense. I threw a lot of information at you in a short span of time. It is okay and not unexpected. Because of this, I have prepared several images showing Console.Waterworks in action. Please feel free to check it out. It should help explain what Console.Waterwork is and how it works.
**Insert gif here**
![Example 1](Documentation/README_Assets/README_Valid_Input.png "Valid input diagram")
![Example 2](Documentation/README_Assets/README_Method_Mapping.gif "Method mapping example -- valid")
![Example 3](Documentation/README_Assets/README_Invalid_Input.png "Invalid input diagram")
![Example 4](Documentation/README_Assets/README_Method_Mapping_Invalid.gif "Method mapping example -- invalid")
## Disclaimer
Console.Waterworks is based on the [ConsoleApplicationBase](https://github.com/TypecastException/ConsoleApplicationBase, "ConsoleApplicationBase GitHub Repository") repository by [TypecastException](https://github.com/TypecastException, "TypecastException's GitHub Profile").
## Pre-Requisites
To use Console.Waterworks, I recommend you meet the following pre-requisites:
- You have experience with C#.
- You can create a .Net console program in Visual Studio 2017 or Visual Studio Code.
- You have experience with Nuget.
- You have Microsoft .Net Framework 4.7 or higher.
- You have experience with [C#](https://docs.microsoft.com/en-us/dotnet/csharp/, "C# Documentation").
- You can create a [.Net console program](http://www.com, "Console program tutorial") in [Visual Studio 2017](https://www.visualstudio.com/vs/, "Visual Studio 2017 Info.") or [Visual Studio Code](https://code.visualstudio.com/, "Visual Studio Code Info.").
- You have experience with [Nuget](https://www.nuget.org/, "Nuget's website").
- You have Microsoft [.Net Framework 4.7](https://docs.microsoft.com/en-us/dotnet/framework/install/guide-for-developers, ".Net Framework download") or higher.
## Quick Start
## Quick Start - Wiring Console.Waterworks in to your Console Program
Before continuing... I am skipping the part about creating a .Net console program. This is because I assume you know to do that. I am, also, assuming you are using Visual Studio 2017 and C# (and not VB or F#).
Before continuing... I am skipping the part about creating a .Net console program. This is because I assume you know how to do that. I am, also, assuming you are using Visual Studio 2017 and C# (not VB or F#).
1 Add Console.Waterworks to your project via Nuget. You can do this using Visual Studio's (2017) Package Manager GUI. Or, you can use the Package Manager Console. Here is the command for the PM Console,
@ -28,34 +38,34 @@ Before continuing... I am skipping the part about creating a .Net console progra
Install-Package Console.Waterworks -Version 0.1.0-alpha1
```
2 Create a class called `ConsoleCommands`. It can go anywhere as long as it is in the same project as the console program project.
2 Create a class called `ConsoleCommands`. It can go anywhere as long as it is in the same project as the console program.
3 Make a note of the `ConsoleCommands` namespace.
4 Head to the `Main` method is `Program.cs` and add the following lines of code,
4 Head to the `Main` method in `Program.cs` and add the following lines of code,
```c#
public static void Main(string[] args)
{
CW_Liaison bob = new CW_Liaison();
bob.Run("CW_Console", true);
CW_Liaison liaison = new CW_Liaison();
liaison.Run("CW_Console", true);
}
```
5 Head back to `ConsoleCommands` and make it public.
5 Head back to `ConsoleCommands` and make it public and static.
6 Stay in `ConsoleCommands` and write the following line,
6 Stay in `ConsoleCommands` and write the following method,
```c#
public static string Test()
public string Test()
{
return "Congratulations! It works.";
}
```
7 Run the program and type *"Test"* into the console.
7 Run the program and type "Test" into the console.
8 If all has gone well, you should see the *“Congratulations! It works."* message.
8 If all has gone well, you should see the “Congratulations! It works." message.
9 Add more methods to you console program.
@ -70,13 +80,13 @@ I have created two guides for offline usage:
- The Quick Guide to Console.Waterworks
- The Complete Guide to Console.Waterworks
Both of these guides are printer friendly. And, they are best consumed on your favourite reading chair. If you are away from the world-wide web, these guides are, also, for you.
Both of these guides are printer friendly. And, they are best consumed on your favourite reading chair.
### Online
For those sitting at their computer and connected to the world-wide web, there is a Wiki:
- GitHub Wiki
- [GitHub Wiki](https://github.com/CraigOates/Console.Waterworks/wiki, "Console.Waterworks Wiki")
This guide aims to be a concise as possible. It assumes you are sitting at your desk and wanting the quick answer -- not the full answer.
@ -84,17 +94,18 @@ This guide aims to be a concise as possible. It assumes you are sitting at your
Please visit the Code of Conduct page for Console.Waterworks at,
- Code of Conduct page
- [Code of Conduct page](https://github.com/CraigOates/Console.Waterworks/blob/master/CODE_OF_CONDUCT.md, "Code of Conduct page")
## Contributing to the Console.Waterworks Repository
Please visit the Contributing page for Console.Waterworks at,
- Contributing page
- [Contributing page](https://github.com/CraigOates/Console.Waterworks/blob/master/CONTRIBUTING.md, "Contributing page")
## About the Creator
Hi, my name is Craig and I'm the creator of Console.Waterworks. Thanks for checking it out.
- Email: craig@craigoates.net
- Web: http://www.craigoates.net
- Email: [craig@craigoates.net](craig@craigoates.net, "Craig's email address")
- Web: [http://www.craigoates.net](http://www.craigoates.net, "Craig's main site")
- Project's Site: [http://craigsappshed.azurewebsites.net/Waterworks](http://craigsappshed.azurewebsites.net/Waterworks, "Project's site")
Loading…
Cancel
Save