Fix package reference bug
This commit is contained in:
@@ -20,7 +20,10 @@ public class GenerationController : IController
|
||||
{
|
||||
try
|
||||
{
|
||||
foreach (var task in process) await _genService.Launch(task);
|
||||
foreach (var task in process)
|
||||
{
|
||||
await _genService.Launch(task);
|
||||
}
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
|
||||
@@ -4,11 +4,13 @@ namespace Generator.Daos;
|
||||
|
||||
public abstract class AbstractDao
|
||||
{
|
||||
protected readonly ConfigManager ConfManager;
|
||||
|
||||
protected readonly ConfigManager _confManager;
|
||||
protected readonly string _spec;
|
||||
|
||||
protected AbstractDao(ConfigManager confManager, string spec)
|
||||
{
|
||||
ConfManager = confManager;
|
||||
_confManager = confManager;
|
||||
_spec = spec;
|
||||
}
|
||||
|
||||
protected AbstractDao(ConfigManager confManager) : this(confManager, confManager.GetDefArgs().SpecIdentifier)
|
||||
|
||||
@@ -6,14 +6,14 @@ namespace Generator.Daos;
|
||||
|
||||
public class CredentialsDao : AbstractDao
|
||||
{
|
||||
public string Username => ConfManager.Credentials.Username;
|
||||
public string Password => ConfManager.Credentials.Password;
|
||||
public string Username => _confManager.Credentials.Username;
|
||||
public string Password => _confManager.Credentials.Password;
|
||||
|
||||
public CredentialsDao(ConfigManager confManager)
|
||||
: base(confManager, confManager.GetDefArgs().SpecIdentifier)
|
||||
{
|
||||
}
|
||||
|
||||
public PackageDeletion GetPackageDeletion() => ConfManager.Credentials.ToPackageDeletion();
|
||||
public PackageDeletion GetPackageDeletion() => _confManager.Credentials.ToPackageDeletion();
|
||||
|
||||
}
|
||||
@@ -17,7 +17,7 @@ public class DotnetDao : AbstractDao
|
||||
|
||||
public DotnetConfig GetDotnetGenerate(GenerationType type, ISpecFile file)
|
||||
{
|
||||
var config = ConfManager.Dotnet.Map(ConfManager, file);
|
||||
var config = _confManager.Dotnet.Map(_confManager, file);
|
||||
config.Type = type;
|
||||
return config ;
|
||||
}
|
||||
|
||||
@@ -5,9 +5,9 @@ namespace Generator.Daos;
|
||||
|
||||
public class EnvironmentDao : AbstractDao
|
||||
{
|
||||
public Location ApiFolder() => new ([ConfManager.GetBase().LocalRoot, ConfManager.GetGeneral().ApiFolder]);
|
||||
public Location ApiFolder() => new ([_confManager.GetBase().LocalRoot, _confManager.GetGeneral().ApiFolder]);
|
||||
|
||||
public string Invite => ConfManager.GetBase().Invite;
|
||||
public string Invite => _confManager.GetBase().Invite;
|
||||
|
||||
public EnvironmentDao(ConfigManager confManager) : base(confManager)
|
||||
{ }
|
||||
|
||||
@@ -13,7 +13,7 @@ public class JavaDao : AbstractDao
|
||||
public JavaDao(ConfigManager confManager) : base(confManager)
|
||||
{ }
|
||||
|
||||
public JavaConfig GetJavaGenerate(ISpecFile file) => ConfManager.Java.Map(ConfManager, file);
|
||||
public JavaConfig GetJavaGenerate(ISpecFile file) => _confManager.Java.Map(_confManager, file);
|
||||
|
||||
public JavaPublish GetJavaPublish(GenerationType type, ISpecFile file)
|
||||
{
|
||||
|
||||
@@ -13,7 +13,7 @@ public class JavascriptDao : AbstractDao
|
||||
public JavascriptDao(ConfigManager confManager) : base(confManager, confManager.GetDefArgs().SpecIdentifier)
|
||||
{ }
|
||||
|
||||
public JavascriptConfig GetJavascript(ISpecFile file) => ConfManager.Javascript.Map(ConfManager, file);
|
||||
public JavascriptConfig GetJavascript(ISpecFile file) => _confManager.Javascript.Map(_confManager, file);
|
||||
|
||||
public JavascriptPublish GetJavascriptPublish(GenerationType type, ISpecFile file)
|
||||
{
|
||||
|
||||
@@ -13,11 +13,12 @@ public class OpenApiDao : AbstractDao
|
||||
|
||||
public Location ConfigOf(string spec) => GetOpenApi(true, spec).SpecConfig;
|
||||
|
||||
public OpenApiConfig GetOpenApi(bool isLocal, string file)
|
||||
public OpenApiConfig GetOpenApi(bool isLocal, string specPath)
|
||||
{
|
||||
var items = file.Split("/");
|
||||
var o = ConfManager.OpenApi.Map(ConfManager, items[0], items[1]);
|
||||
o.AddRoot(ConfManager.GetRoot(isLocal));
|
||||
specPath = specPath ?? _spec;
|
||||
string[] items = specPath.Split("/");
|
||||
OpenApiConfig o = _confManager.OpenApi.Map(_confManager, items[0], items[1]);
|
||||
o.AddRoot(_confManager.GetRoot(isLocal));
|
||||
return o;
|
||||
}
|
||||
}
|
||||
@@ -12,12 +12,12 @@ public class TemplateDao : AbstractDao
|
||||
|
||||
public PlantUmlExport PlantUml(ISpecFile file)
|
||||
{
|
||||
var config = ConfManager.Templates.Map();
|
||||
var config = _confManager.Templates.Map();
|
||||
return new PlantUmlExport
|
||||
{
|
||||
LocalRoot = ConfManager.GetBase().LocalRoot,
|
||||
LocalRoot = _confManager.GetBase().LocalRoot,
|
||||
Template = config.PlantUml,
|
||||
Output = ConfManager.GetGeneral().ApiFolder.ConcatenateWith([file.Folder, $"{file.Name}.puml"])
|
||||
Output = _confManager.GetGeneral().ApiFolder.ConcatenateWith([file.Folder, $"{file.Name}.puml"])
|
||||
};
|
||||
}
|
||||
}
|
||||
@@ -43,8 +43,8 @@ public class ConfigManager
|
||||
{
|
||||
_args = args;
|
||||
_env = env.Value;
|
||||
Publish = publish.Value;
|
||||
Credentials = creds.Value;
|
||||
Publish = publish.Value;
|
||||
Credentials = creds.Value;
|
||||
_defArgs = defArgs.Value;
|
||||
_general = general.Value;
|
||||
|
||||
|
||||
@@ -1,12 +1,26 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net8.0</TargetFramework>
|
||||
<OutputType>Exe</OutputType>
|
||||
<TargetFramework>net8.0</TargetFramework>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<Nullable>enable</Nullable>
|
||||
<RootNamespace>Generator</RootNamespace>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Content Include="appsettings.Development.json">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
<ExcludeFromSingleFile>true</ExcludeFromSingleFile>
|
||||
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
|
||||
</Content>
|
||||
<Content Include="appsettings.json">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
<ExcludeFromSingleFile>true</ExcludeFromSingleFile>
|
||||
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
|
||||
</Content>
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="CommandLineParser" Version="2.9.1" />
|
||||
<PackageReference Include="Microsoft.OpenApi" Version="1.6.13" />
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
using Core;
|
||||
using Core.Dto;
|
||||
using Core.Events;
|
||||
using Core.Process;
|
||||
using Generator.Controllers;
|
||||
using Microsoft.Extensions.Hosting;
|
||||
using Microsoft.Extensions.Logging;
|
||||
@@ -44,9 +45,10 @@ public class GeneratorHostedService : IHostedService
|
||||
var startTime = DateTime.Now;
|
||||
try
|
||||
{
|
||||
var extractor = new ArgumentsExtractor(_args);
|
||||
|
||||
var genProcess = _preGenController.ComputeGeneration(extractor.Spec, extractor.GenType, extractor.PublishType);
|
||||
ArgumentsExtractor extractor = new ArgumentsExtractor(_args);
|
||||
string spec = extractor.Spec ?? "";
|
||||
|
||||
GenerationProcess genProcess = _preGenController.ComputeGeneration(spec, extractor.GenType, extractor.PublishType);
|
||||
|
||||
if (extractor.ExportPuml) _exportController.PlantUml(genProcess.BaseFile);
|
||||
|
||||
@@ -55,14 +57,14 @@ public class GeneratorHostedService : IHostedService
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
_logger.Log(LogLevel.Critical, e, $"A critical exception was thrown. {e.Message}");
|
||||
_logger.Log(LogLevel.Critical, "Critical failure : " + e.Message + "\nReason : " + e.StackTrace);
|
||||
}
|
||||
finally
|
||||
{
|
||||
var endTime = DateTime.Now;
|
||||
Console.WriteLine($"Process started at : {startTime}");
|
||||
Console.WriteLine($"Process ended at : {endTime}");
|
||||
Console.WriteLine($"Duration : {(endTime - startTime).Duration():mm':'ss}");
|
||||
Console.WriteLine($"Duration : {(endTime - startTime).Duration():mm':'ss}");
|
||||
_applicationLifetime.StopApplication();
|
||||
}
|
||||
}, cancellationToken);
|
||||
|
||||
@@ -54,7 +54,7 @@ public class CommandExecutor
|
||||
while (!output.EndOfStream)
|
||||
{
|
||||
var line = await output.ReadLineAsync();
|
||||
_emitter.Warn(this, line);
|
||||
_emitter.Warn(this, line.ToString());
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@@ -40,13 +40,17 @@ public class OpenApiDotnetServerBuilder : AbstractBuilder<OpenApiYaml>
|
||||
|
||||
var templateFolder = new Location([_config.DockerRoot, _config.TemplateFolder]);
|
||||
var packageFolder = new Location([_config.DockerRoot, _config.PackageFolderPath()]);
|
||||
|
||||
var outputDir =
|
||||
_config.DockerRoot
|
||||
.ConcatenateWith("generated")
|
||||
.ConcatenateWith("localFeed");
|
||||
|
||||
var stringBuilder = new StringBuilder();
|
||||
stringBuilder
|
||||
.Append($"docker run --rm -it -v {_config.LocalRoot}:{_config.DockerRoot} {_config.BuildImage} /bin/sh -c '")
|
||||
.Append($"cp {templateFolder}/NuGet.config {packageFolder} && ")
|
||||
.Append($"cd {packageFolder} && ")
|
||||
.Append($"dotnet pack -c Release -o out -p:PackageVersion={SpecFile.Version}'");
|
||||
.Append($"dotnet pack -c Release -o {outputDir} -p:PackageVersion={SpecFile.Version}'");
|
||||
|
||||
var command = stringBuilder.ToString();
|
||||
Executor.Register(command);
|
||||
@@ -71,7 +75,7 @@ public class OpenApiDotnetServerBuilder : AbstractBuilder<OpenApiYaml>
|
||||
{"generatorVersion", "7.3.0"},
|
||||
{"outputFolder", new Location([_config.DockerRoot, _config.OutputFolder()]).ToString()},
|
||||
{"modelSuffix", SpecFile.Config.ModelSuffix},
|
||||
{"aspnetCoreVersion", "3.1"},
|
||||
{"aspnetCoreVersion", "6.0"},
|
||||
{"packageName", SpecFile.Config.NugetPackage},
|
||||
{"packageVersion", SpecFile.Info!["version"]},
|
||||
{"refs", SpecFile.ReferencedSchemas},
|
||||
|
||||
@@ -47,7 +47,7 @@ public static class SettingsMapper
|
||||
public static OpenApiConfig Map(this OpenApiConfigDto dto, ConfigManager configManager, string folder, string name)
|
||||
{
|
||||
var apiFolder = configManager.GetGeneral().ApiFolder;
|
||||
|
||||
|
||||
var config = new OpenApiConfig
|
||||
{
|
||||
Folder = new Location(dto.OutputFolder),
|
||||
|
||||
33
Generator/Program.cs
Normal file
33
Generator/Program.cs
Normal file
@@ -0,0 +1,33 @@
|
||||
using CommandLine;
|
||||
using Core.Dto;
|
||||
using Core.Interfaces;
|
||||
using Generator;
|
||||
using Generator.DataSource;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Microsoft.Extensions.Hosting;
|
||||
|
||||
|
||||
namespace Generator
|
||||
{
|
||||
public class Program
|
||||
{
|
||||
|
||||
public static async Task Main(string[] args)
|
||||
{
|
||||
var parserResult = LoadArguments(args);
|
||||
var parsedArgs = parserResult.Value;
|
||||
|
||||
var hostBuilder = Host.CreateDefaultBuilder();
|
||||
hostBuilder.ConfigureServices((hostContext, services) =>
|
||||
{
|
||||
IDataSourceLoader loader = new JsonLoader(services, hostContext.Configuration);
|
||||
services.AddServices(loader, parsedArgs);
|
||||
services.AddHostedService<GeneratorHostedService>();
|
||||
});
|
||||
await hostBuilder.Build().RunAsync();
|
||||
}
|
||||
|
||||
private static ParserResult<ArgumentsDto> LoadArguments(string[] args) => Parser.Default.ParseArguments<ArgumentsDto>(args);
|
||||
|
||||
}
|
||||
}
|
||||
8
Generator/Properties/launchSettings.json
Normal file
8
Generator/Properties/launchSettings.json
Normal file
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"profiles": {
|
||||
"Generator": {
|
||||
"commandName": "Project",
|
||||
"commandLineArgs": "--name example/example"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,8 +1,8 @@
|
||||
using Core;
|
||||
using Core.Dto;
|
||||
using Core.Interfaces;
|
||||
using Core.SpecConfig;
|
||||
using Generator.Daos;
|
||||
using Generator.DataSource.Packages;
|
||||
using Generator.Mappers;
|
||||
|
||||
namespace Generator.Repo;
|
||||
@@ -15,17 +15,19 @@ public class RepositoryActions
|
||||
public RepositoryActions(CredentialsDao credentialsDao)
|
||||
{
|
||||
_credentialsDao = credentialsDao;
|
||||
_requester = new NexusRequester(_credentialsDao.Username, _credentialsDao.Password);
|
||||
//_requester = new NexusRequester(_credentialsDao.Username, _credentialsDao.Password);
|
||||
}
|
||||
|
||||
public async Task<List<PackageData>> GetVersions(Language language, string package)
|
||||
{
|
||||
var packages = await _requester.GetVersions(language, package);
|
||||
throw new NotImplementedException("Repository actions cannot be user for now. It is missing a repository requester");
|
||||
List<PackageDataDto> packages = await _requester.GetVersions(language, package);
|
||||
return packages.Map();
|
||||
}
|
||||
|
||||
public async Task DeleteVersion(string packageId)
|
||||
{
|
||||
throw new NotImplementedException("Repository actions cannot be user for now. It is missing a repository requester");
|
||||
await _requester.DeleteVersion(packageId);
|
||||
}
|
||||
|
||||
|
||||
81
Generator/appsettings.Development.json
Normal file
81
Generator/appsettings.Development.json
Normal file
@@ -0,0 +1,81 @@
|
||||
{
|
||||
"Logging": {
|
||||
"LogLevel": {
|
||||
"Default": "Information",
|
||||
"Microsoft.AspNetCore": "Warning"
|
||||
}
|
||||
},
|
||||
|
||||
"Environment": {
|
||||
"invite": "powershell.exe",
|
||||
"localRoot": "C:/Users/Laurent/Desktop/api-generator/architecture/api/apis/",
|
||||
"dockerRoot": "/api/"
|
||||
},
|
||||
|
||||
"DefaultArguments": {
|
||||
"specIdentifier": "example/example",
|
||||
"generatorVersion": "7.3.0"
|
||||
},
|
||||
|
||||
"General": {
|
||||
"apiFolder": "apis",
|
||||
"outputFolder": "generated"
|
||||
},
|
||||
|
||||
"Dotnet": {
|
||||
"ServerFolder": "dotnet-api",
|
||||
"CommonFolder": "dotnet-models",
|
||||
"ClientFolder": "dotnet-client"
|
||||
},
|
||||
|
||||
"Javascript": {
|
||||
"Folder": "javascript-client"
|
||||
},
|
||||
|
||||
"Java": {
|
||||
"Folder": "java"
|
||||
},
|
||||
|
||||
"OpenApi": {
|
||||
"OutputFolder": "openapi",
|
||||
"GeneratorConfigFile": "openapi-generator-config.yaml",
|
||||
"GeneratorIgnoreFile": ".openapi-generator-ignore",
|
||||
"specExtension": ".yaml",
|
||||
"schemasIdentifier": "-schemas",
|
||||
"configExtension": ".json",
|
||||
"configIdentifier": "-config"
|
||||
},
|
||||
|
||||
"Templates": {
|
||||
"folder": "templates",
|
||||
"plantUml": "plantUml.mustache",
|
||||
"dotnetServerGeneratorConfig": "dotnet-server-generator-config.mustache",
|
||||
"dotnetClientGeneratorConfig": "dotnet-client-generator-config.mustache",
|
||||
"javaGeneratorConfig": "java-generator-config.mustache",
|
||||
"serverIgnore": "dotnet-server-ignore.mustache",
|
||||
"clientIgnore": "dotnet-client-ignore.mustache"
|
||||
},
|
||||
|
||||
"DockerImages": {
|
||||
"javascriptImage": "temporaly_missing_please_fill_javascripImage_field_in_appsettings.json",
|
||||
"openapiGeneratorImageName": "openapitools/openapi-generator-cli",
|
||||
"openapiGeneratorVersion": "7.3.0",
|
||||
"openapiGeneratorImage": "openapitools/openapi-generator-cli:v7.3.0",
|
||||
"dotnetSdkImage": "mcr.microsoft.com/dotnet/sdk:8.0",
|
||||
"mavenImage": "maven:3.9.5"
|
||||
},
|
||||
|
||||
"Publish": {
|
||||
"npmRegistry": "https://npm-registry-sample.url",
|
||||
"nugetRegistry": "https://nuget-registry-sample.url",
|
||||
"mavenRegistry": "https://maven-registry-sample.url"
|
||||
},
|
||||
|
||||
"Credentials": {
|
||||
"token": "TOKEN_SAMPLE",
|
||||
"email": "EMAIL_SAMPLE",
|
||||
"username": "USERNAME_SAMPLE",
|
||||
"password": "PASSWORD_SAMPLE",
|
||||
"always-auth": "true"
|
||||
}
|
||||
}
|
||||
74
Generator/appsettings.json
Normal file
74
Generator/appsettings.json
Normal file
@@ -0,0 +1,74 @@
|
||||
{
|
||||
"Environment": {
|
||||
"invite" : "powershell.exe",
|
||||
"localRoot": "C:/Users/Laurent/Desktop/api-generator/architecture/api/",
|
||||
"dockerRoot" : "/api/"
|
||||
},
|
||||
|
||||
"DefaultArguments": {
|
||||
"specIdentifier" : "example/example",
|
||||
"generatorVersion" : "7.3.0"
|
||||
},
|
||||
|
||||
"General": {
|
||||
"apiFolder" : "apis",
|
||||
"outputFolder": "generated"
|
||||
},
|
||||
|
||||
"Dotnet" : {
|
||||
"ServerFolder": "dotnet-api",
|
||||
"CommonFolder": "dotnet-models",
|
||||
"ClientFolder": "dotnet-client"
|
||||
},
|
||||
|
||||
"Javascript" : {
|
||||
"Folder": "javascript-client"
|
||||
},
|
||||
|
||||
"Java": {
|
||||
"Folder": "java"
|
||||
},
|
||||
|
||||
"OpenApi" : {
|
||||
"OutputFolder": "openapi",
|
||||
"GeneratorConfigFile" : "openapi-generator-config.yaml",
|
||||
"GeneratorIgnoreFile" : ".openapi-generator-ignore",
|
||||
"specExtension": ".yaml",
|
||||
"schemasIdentifier": "-schemas",
|
||||
"configExtension": ".json",
|
||||
"configIdentifier": "-config"
|
||||
},
|
||||
|
||||
"Templates" : {
|
||||
"folder": "templates",
|
||||
"plantUml": "plantUml.mustache",
|
||||
"dotnetServerGeneratorConfig": "dotnet-server-generator-config.mustache",
|
||||
"dotnetClientGeneratorConfig": "dotnet-client-generator-config.mustache",
|
||||
"javaGeneratorConfig": "java-generator-config.mustache",
|
||||
"serverIgnore": "dotnet-server-ignore.mustache",
|
||||
"clientIgnore": "dotnet-client-ignore.mustache"
|
||||
},
|
||||
|
||||
"DockerImages": {
|
||||
"javascriptImage":"temporaly_missing_please_fill_javascripImage_field_in_appsettings.json",
|
||||
"openapiGeneratorImageName":"openapitools/openapi-generator-cli",
|
||||
"openapiGeneratorVersion":"7.3.0",
|
||||
"openapiGeneratorImage":"openapitools/openapi-generator-cli:v7.3.0",
|
||||
"dotnetSdkImage":"mcr.microsoft.com/dotnet/sdk:8.0",
|
||||
"mavenImage":"maven:3.9.5"
|
||||
},
|
||||
|
||||
"Publish": {
|
||||
"npmRegistry":"https://npm-registry-sample.url",
|
||||
"nugetRegistry":"https://nuget-registry-sample.url",
|
||||
"mavenRegistry":"https://maven-registry-sample.url"
|
||||
},
|
||||
|
||||
"Credentials": {
|
||||
"token": "TOKEN_SAMPLE",
|
||||
"email":"EMAIL_SAMPLE",
|
||||
"username": "USERNAME_SAMPLE",
|
||||
"password": "PASSWORD_SAMPLE",
|
||||
"always-auth": "true"
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user