|
@@ -1,24 +1,24 @@
|
|
# Terminal.Gui Project
|
|
# Terminal.Gui Project
|
|
|
|
|
|
-Contains all files required to build the **Terminal.Gui** library (and NuGet package).
|
|
|
|
|
|
+All files required to build the **Terminal.Gui** library (and NuGet package).
|
|
|
|
|
|
## Project Folder Structure
|
|
## Project Folder Structure
|
|
|
|
|
|
- `Terminal.Gui.sln` - The Visual Studio solution
|
|
- `Terminal.Gui.sln` - The Visual Studio solution
|
|
- `Core/` - Source files for all types that comprise the core building blocks of **Terminal-Gui**
|
|
- `Core/` - Source files for all types that comprise the core building blocks of **Terminal-Gui**
|
|
- `Application` - A `static` class that provides the base 'application driver'. Given it defines a **Terminal.Gui** application it is both logically and literally (because `static`) a singleton. It has direct dependencies on `MainLoop`, `Events.cs` `NetDriver`, `CursesDriver`, `WindowsDriver`, `Responder`, `View`, and `TopLevel` (and nothing else).
|
|
- `Application` - A `static` class that provides the base 'application driver'. Given it defines a **Terminal.Gui** application it is both logically and literally (because `static`) a singleton. It has direct dependencies on `MainLoop`, `Events.cs` `NetDriver`, `CursesDriver`, `WindowsDriver`, `Responder`, `View`, and `TopLevel` (and nothing else).
|
|
- - `MainLoop` - Defines `IMainLoopDriver` and implements the and `MainLoop` class.
|
|
|
|
|
|
+ - `MainLoop` - Defines `IMainLoopDriver` and implements the `MainLoop` class.
|
|
- `ConsoleDriver` - Definition for the Console Driver API.
|
|
- `ConsoleDriver` - Definition for the Console Driver API.
|
|
- - `Events.cs` - Defines keyboard and mouse related structs & classes.
|
|
|
|
|
|
+ - `Events.cs` - Defines keyboard and mouse-related structs & classes.
|
|
- `PosDim.cs` - Implements *Computed Layout* system. These classes have deep dependencies on `View`.
|
|
- `PosDim.cs` - Implements *Computed Layout* system. These classes have deep dependencies on `View`.
|
|
- `Responder` - Base class for the windowing class hierarchy. Implements support for keyboard & mouse input.
|
|
- `Responder` - Base class for the windowing class hierarchy. Implements support for keyboard & mouse input.
|
|
- `View` - Derived from `Responder`, the base class for non-modal visual elements such as controls.
|
|
- `View` - Derived from `Responder`, the base class for non-modal visual elements such as controls.
|
|
- `Toplevel` - Derived from `View`, the base class for modal visual elements such as top-level windows and dialogs. Supports the concept of `MenuBar` and `StatusBar`.
|
|
- `Toplevel` - Derived from `View`, the base class for modal visual elements such as top-level windows and dialogs. Supports the concept of `MenuBar` and `StatusBar`.
|
|
- - `Window` - Derived from `TopLevel`; implements top level views with a visible frame and Title.
|
|
|
|
|
|
+ - `Window` - Derived from `TopLevel`; implements toplevel views with a visible frame and Title.
|
|
- `Types/` - A folder (not namespace) containing implementations of `Point`, `Rect`, and `Size` which are ancient versions of the modern `System.Drawing.Point`, `System.Drawing.Size`, and `System.Drawning.Rectangle`.
|
|
- `Types/` - A folder (not namespace) containing implementations of `Point`, `Rect`, and `Size` which are ancient versions of the modern `System.Drawing.Point`, `System.Drawing.Size`, and `System.Drawning.Rectangle`.
|
|
- `ConsoleDrivers/` - Source files for the three `ConsoleDriver`-based drivers: .NET: `NetDriver`, Unix & Mac: `UnixDriver`, and Windows: `WindowsDriver`.
|
|
- `ConsoleDrivers/` - Source files for the three `ConsoleDriver`-based drivers: .NET: `NetDriver`, Unix & Mac: `UnixDriver`, and Windows: `WindowsDriver`.
|
|
- `Views/` - A folder (not namespace) containing the source for all built-in classes that drive from `View` (non-modals).
|
|
- `Views/` - A folder (not namespace) containing the source for all built-in classes that drive from `View` (non-modals).
|
|
-- `Windows/` - A folder (not namespace) containing the source all built-in classes that derive from `Window`.
|
|
|
|
|
|
+- `Windows/` - A folder (not namespace) containing the source of all built-in classes that derive from `Window`.
|
|
|
|
|
|
## Version numbers
|
|
## Version numbers
|
|
|
|
|
|
@@ -55,43 +55,37 @@ The `tag` must be of the form `v<major>.<minor>.<patch>`, e.g. `v2.3.4`.
|
|
|
|
|
|
`patch` can indicate pre-release or not (e.g. `pre`, `beta`, `rc`, etc...).
|
|
`patch` can indicate pre-release or not (e.g. `pre`, `beta`, `rc`, etc...).
|
|
|
|
|
|
-### 1) Generate release notes with the list of PRs since the last release
|
|
|
|
|
|
+### 1) Verify the `develop` branch is ready for release
|
|
|
|
|
|
-Use `gh` to get a list with just titles to make it easy to paste into release notes:
|
|
|
|
-
|
|
|
|
-```powershell
|
|
|
|
-gh pr list --limit 500 --search "is:pr is:closed is:merged closed:>=2021-05-18"
|
|
|
|
-```
|
|
|
|
|
|
+* Ensure everything is committed and pushed to the `develop` branch
|
|
|
|
+* Ensure your local `develop` branch is up-to-date with `upstream/develop`
|
|
|
|
|
|
-Use the output to update `./Terminal.Gui/Terminal.Gui.csproj` with latest release notes
|
|
|
|
|
|
+### 2) Create a pull request for the release in the `develop` branch
|
|
|
|
|
|
-### 2) Update the API documentation
|
|
|
|
-
|
|
|
|
-See `./docfx/README.md`.
|
|
|
|
-
|
|
|
|
-### 3) Create a PR for the release in the `develop` branch
|
|
|
|
-
|
|
|
|
-The PR title should be "Release v2.3.4"
|
|
|
|
|
|
+The PR title should be of the form "Release v2.3.4"
|
|
|
|
|
|
```powershell
|
|
```powershell
|
|
git checkout develop
|
|
git checkout develop
|
|
-git pull -all
|
|
|
|
|
|
+git pull upstream develop
|
|
git checkout -b v_2_3_4
|
|
git checkout -b v_2_3_4
|
|
|
|
+git merge develop
|
|
git add .
|
|
git add .
|
|
git commit -m "Release v2.3.4"
|
|
git commit -m "Release v2.3.4"
|
|
git push
|
|
git push
|
|
```
|
|
```
|
|
|
|
|
|
-### 4) On github.com, verify the build action worked on your fork, then merge the PR
|
|
|
|
|
|
+Go to the link printed by `git push` and fill out the Pull Request.
|
|
|
|
+
|
|
|
|
+### 3) On github.com, verify the build action worked on your fork, then merge the PR
|
|
|
|
|
|
-### 5) Pull the merged `develop` from `upstream`
|
|
|
|
|
|
+### 4) Pull the merged `develop` from `upstream`
|
|
|
|
|
|
```powershell
|
|
```powershell
|
|
git checkout develop
|
|
git checkout develop
|
|
git pull upstream develop
|
|
git pull upstream develop
|
|
```
|
|
```
|
|
|
|
|
|
-### 6) Merge `develop` into `main`
|
|
|
|
|
|
+### 5) Merge `develop` into `main`
|
|
|
|
|
|
```powershell
|
|
```powershell
|
|
git checkout main
|
|
git checkout main
|
|
@@ -101,13 +95,13 @@ git merge develop
|
|
|
|
|
|
Fix any merge errors.
|
|
Fix any merge errors.
|
|
|
|
|
|
-### 7) Create a new annotated tag for the release
|
|
|
|
|
|
+### 6) Create a new annotated tag for the release on `main`
|
|
|
|
|
|
```powershell
|
|
```powershell
|
|
git tag v2.3.4 -a -m "Release v2.3.4"
|
|
git tag v2.3.4 -a -m "Release v2.3.4"
|
|
```
|
|
```
|
|
|
|
|
|
-### 8) Push the new tag to `main` on `origin`
|
|
|
|
|
|
+### 7) Push the new tag to `main` on `upstream`
|
|
|
|
|
|
```powershell
|
|
```powershell
|
|
git push --atomic upstream main v2.3.4
|
|
git push --atomic upstream main v2.3.4
|
|
@@ -115,16 +109,23 @@ git push --atomic upstream main v2.3.4
|
|
|
|
|
|
*See https://stackoverflow.com/a/3745250/297526*
|
|
*See https://stackoverflow.com/a/3745250/297526*
|
|
|
|
|
|
-### 9) Monitor Github actions to ensure the Nuget publishing worked.
|
|
|
|
|
|
+### 8) Monitor Github Actions to ensure the Nuget publishing worked.
|
|
|
|
|
|
-### 10) Check Nuget to see the new package version (wait a few minutes):
|
|
|
|
|
|
+https://github.com/gui-cs/Terminal.Gui/actions
|
|
|
|
+
|
|
|
|
+### 9) Check Nuget to see the new package version (wait a few minutes)
|
|
https://www.nuget.org/packages/Terminal.Gui
|
|
https://www.nuget.org/packages/Terminal.Gui
|
|
|
|
|
|
-### 11) Add a new Release in Github: https://github.com/gui-cs/Terminal.Gui/releases
|
|
|
|
|
|
+### 10) Add a new Release in Github: https://github.com/gui-cs/Terminal.Gui/releases
|
|
|
|
+
|
|
|
|
+Generate release notes with the list of PRs since the last release
|
|
|
|
|
|
-### 12) Tweet about it
|
|
|
|
|
|
+Use `gh` to get a list with just titles to make it easy to paste into release notes:
|
|
|
|
|
|
-### 13) Update the `develop` branch
|
|
|
|
|
|
+```powershell
|
|
|
|
+gh pr list --limit 500 --search "is:pr is:closed is:merged closed:>=2021-05-18"
|
|
|
|
+```
|
|
|
|
+### 11) Update the `develop` branch with the new version
|
|
|
|
|
|
```powershell
|
|
```powershell
|
|
git checkout develop
|
|
git checkout develop
|