RSCG_AMS 2023.5.21.1551

dotnet add package RSCG_AMS --version 2023.5.21.1551
NuGet\Install-Package RSCG_AMS -Version 2023.5.21.1551
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="RSCG_AMS" Version="2023.5.21.1551" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add RSCG_AMS --version 2023.5.21.1551
#r "nuget: RSCG_AMS, 2023.5.21.1551"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install RSCG_AMS as a Cake Addin
#addin nuget:?package=RSCG_AMS&version=2023.5.21.1551

// Install RSCG_AMS as a Cake Tool
#tool nuget:?package=RSCG_AMS&version=2023.5.21.1551

RSCG_AMS

a Roslyn Source Code Generator for About My Software

You will obtain

RSCG_AMS

( See online at https://netcoreblockly.herokuapp.com/ams )

AMS_BASE RSCG_AMS AMSWebAPI

BuildAndTest

How to use

For Console or DLL

Add to the csproj 2023.5.21.1551

<ItemGroup>
    <PackageReference Include="AMS_Base" Version="2023.5.21.1551" />
    <PackageReference Include="RSCG_AMS" Version="2023.5.21.1551" ReferenceOutputAssembly="false" OutputItemType="Analyzer" />
  </ItemGroup>

And access like this:

 var amsAll = AboutMySoftware.AllDefinitions;
foreach (var amsKV in amsAll)
{
    var ams = amsKV.Value;

    Console.WriteLine($"{amsKV.Key}.{nameof(ams.AssemblyName)} : {ams.AssemblyName}");
    Console.WriteLine($"{amsKV.Key}.{nameof(ams.DateGenerated)} : {ams.DateGenerated}");
    Console.WriteLine($"{amsKV.Key}.{nameof(ams.CommitId)} : {ams.CommitId}");
    Console.WriteLine($"{amsKV.Key}.{nameof(ams.RepoUrl)} : {ams.RepoUrl}");
}

For Web applications

Add to the csproj

    <PackageReference Include="AMSWebAPI" Version="2023.5.21.1551" />
    <PackageReference Include="AMS_Base" Version="2023.5.21.1551" />
    <PackageReference Include="RSCG_AMS" Version="2023.5.21.1551" ReferenceOutputAssembly="false" OutputItemType="Analyzer" />

And in the Startup.cs put

//above the namespace : using AMSWebAPI;
app.UseEndpoints(endpoints =>
{
    endpoints.MapControllers();
    endpoints.UseAMS();
});

The access /ams/all ( for json) or /ams/index ( for html)

Adding releases on date

For adding releases between dates use the following codes:

using AMS_Base;
[assembly:VersionReleased(Name="PreviousReleases",ISODateTime ="2022-03-31",recordData = RecordData.Merges)]
[assembly: VersionReleased(Name = "WithVersioning", ISODateTime = "2022-04-02", recordData = RecordData.Merges)]
[assembly: AMS_Base.VersionReleased(Name = "FutureRelease", ISODateTime = "9999-04-16", recordData = AMS_Base.RecordData.Merges)]

Detecting that you are in a CI build

Put into the .csproj

	<PropertyGroup>
		<EmitCompilerGeneratedFiles>true</EmitCompilerGeneratedFiles>
		<CompilerGeneratedFilesOutputPath>$(BaseIntermediateOutputPath)GeneratedX</CompilerGeneratedFilesOutputPath>
	</PropertyGroup>

In the obj folder see the GeneratedX folder, then AMS folder, than AMS.AMSVersion folder, then edit the .cs file with notepad

you will see something like

public class XAboutMySoftware_digits

Please see what are the digits

In your code put someething like this

bool IsInCI = new XAboutMySoftware_digits().IsInCI;

builder.Services.AddDbContextFactory<ApplicationDBContext>(
    options =>
    {
        if (IsInCI)
        {
            var cn = builder.Configuration.GetConnectionString("DefaultConnection");
            options.UseSqlServer(cn);
        }

        else
        {
            var cn = "Data Source=Tilt.db";
            options.UseSqlite(cn);
        }
    }
     )
   ;

Modifying the subject

Add to the csproj the following

<ItemGroup>
    <CompilerVisibleProperty Include="AMSMerge" />
  </ItemGroup>
  <PropertyGroup>
		<EmitCompilerGeneratedFiles>true</EmitCompilerGeneratedFiles>
		<CompilerGeneratedFilesOutputPath>$(BaseIntermediateOutputPath)GeneratedX</CompilerGeneratedFilesOutputPath>
		<AMSMerge>AMSInterpreter.MergeAnalyzer</AMSMerge>
	</PropertyGroup>
  

and add the following code to a class

public static string MergeAnalyzer(string RepoUrl,string CommitId, string Author,    DateTime ReleaseDate, string Subject)
        {
            try
            {
                /*{
                    //modify the subject 
                    string regex = @"^Merge\ pull\ request\ \#(?<issueID>\d+)\ from\ (?<branch>.+?)$";

                    RegexOptions options = RegexOptions.Multiline;
                    string input = Subject;

                    MatchCollection matches = Regex.Matches(input, regex, options);
                    foreach (Match match in matches)
                    {
                        return $"Issue ID: {RepoUrl}/issues/{match.Groups["issueID"].Value} branch: {match.Groups["branch"].Value}"; ; 
                    }
                    return Subject;
                }*/
            }
            catch (Exception ex)
            {
                return $"{CommitId} {ex.Message}";
            }
            
        }

Diagnostics

//TODO: Add more explanations here

  <ItemGroup>
    <ProjectReference Include="..\AMS\AMS.csproj" ReferenceOutputAssembly="false" OutputItemType="Analyzer" />
    <ProjectReference Include="..\AMS_Base\AMS_Base.csproj" />
	<CompilerVisibleProperty Include="AMSMerge" />
	  <CompilerVisibleProperty Include="FakeWarningForDiagnostics" />
	  

  </ItemGroup>
	<PropertyGroup>
		<FakeWarningForDiagnostics>true</FakeWarningForDiagnostics>
		<EmitCompilerGeneratedFiles>true</EmitCompilerGeneratedFiles>
		<CompilerGeneratedFilesOutputPath>$(BaseIntermediateOutputPath)GeneratedX</CompilerGeneratedFilesOutputPath>
		<AMSMerge>AMSInterpreter.MergeAnalyzer</AMSMerge>
	</PropertyGroup>

CI settings

For GitLab: <img width="901" alt="image" src="https://user-images.githubusercontent.com/153982/164086502-40222b40-676a-4e98-b7ad-ba96dba8e16e.png">

For GitHub actions:

 steps:
    - uses: actions/checkout@v3
      with:
        fetch-depth: 0

How it is built

The AMS_Base project / nuget is containing the definition

The RSCG_AMS project / nuget generates the code for having , in CI , the C# class with the commit / Repo / date / other details.

The AMSWebAPI project / nuget generates the code for endpoints : /ams/index.html and /ams/all ( for json )

See more at http://msprogrammer.serviciipeweb.ro/category/ams/

TBD:

More about https://github.com/ignatandrei/RSCG_AMS/issues/27

<AMSGitArgs>log --merges --pretty='%an|%ai|%H|%s</AMSGitArgs>

More about Angular - to display ams - see src/Angular

More Roslyn Source Code Generators

You can find more RSCG with examples at Roslyn Source Code Generators

Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 was computed.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
.NET Core netcoreapp2.0 was computed.  netcoreapp2.1 was computed.  netcoreapp2.2 was computed.  netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
.NET Standard netstandard2.0 is compatible.  netstandard2.1 was computed. 
.NET Framework net461 was computed.  net462 was computed.  net463 was computed.  net47 was computed.  net471 was computed.  net472 was computed.  net48 was computed.  net481 was computed. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen40 was computed.  tizen60 was computed. 
Xamarin.iOS xamarinios was computed. 
Xamarin.Mac xamarinmac was computed. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (2)

Showing the top 2 NuGet packages that depend on RSCG_AMS:

Package Downloads
NetCore7ShortLinks

Add short url capabilities to every .net core project

NetCoreBlockly

This program will generate ASP.NET Core WebAPI+ ODATA+GraphQL blockly blocks. And from other swagger files. Can be usefull for just making a demo, interacting or others. Please see https://github.com/ignatandrei/NETCoreBlockly for details

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
2023.5.21.1551 591 5/21/2023
2022.5.25.1154 7,846 5/25/2022
2022.5.9.926 2,050 5/9/2022
2022.4.21.349 1,046 4/21/2022
2022.4.7.1155 754 4/7/2022
2022.4.6.1707 400 4/6/2022
2022.4.2.2037 514 4/2/2022
2022.4.2.1928 399 4/2/2022
2021.7.6.628 7,575 7/6/2021
2021.7.5.1025 334 7/5/2021
2021.7.5.834 307 7/5/2021
2021.7.5.748 321 7/5/2021
2021.7.5.422 332 7/5/2021
2021.7.5.353 333 7/5/2021
2021.7.3.1623 332 7/3/2021
2021.6.29.1820 359 6/30/2021
2021.6.27.655 486 6/27/2021
2021.6.27.452 493 6/27/2021
2021.6.26.1937 428 6/26/2021
2021.6.26.1841 320 6/26/2021
2021.6.26.1813 324 6/26/2021
2021.6.26.1746 344 6/26/2021
2021.6.26.1515 377 6/26/2021
2021.6.26.1417 306 6/26/2021
2021.6.26.1301 425 6/26/2021
2021.6.26.1249 401 6/26/2021
2021.6.26.1228 447 6/26/2021
2021.6.26.1216 329 6/26/2021
2021.6.26.1159 329 6/26/2021
2021.6.26.809 618 6/26/2021
2021.6.26.723 612 6/26/2021
2021.6.26.632 542 6/26/2021