Skip to content

Commit ff33d90

Browse files
committed
added logic for converting between cs and ts models; CLI restructuring for testability
1 parent d404c6f commit ff33d90

File tree

8 files changed

+226
-103
lines changed

8 files changed

+226
-103
lines changed

src/TypeGen/TypeGen.Cli.Test/Business/ConsoleArgsReaderTest.cs

Lines changed: 13 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,11 @@ namespace TypeGen.Cli.Test.Business
77
{
88
public class ConsoleArgsReaderTest
99
{
10-
private readonly IConsoleArgsReader _consoleArgsReader = new ConsoleArgsReader();
11-
1210
[Theory]
1311
[MemberData(nameof(ContainsGetCwdCommand_TestData))]
1412
public void ContainsGetCwdCommand_Test(string[] args, bool expectedResult)
1513
{
16-
bool actualResult = _consoleArgsReader.ContainsGetCwdCommand(args);
14+
bool actualResult = ConsoleArgsReader.ContainsGetCwdCommand(args);
1715
Assert.Equal(expectedResult, actualResult);
1816
}
1917

@@ -31,7 +29,7 @@ public void ContainsGetCwdCommand_Test(string[] args, bool expectedResult)
3129
[MemberData(nameof(ContainsGenerateCommand_TestData))]
3230
public void ContainsGenerateCommand_Test(string[] args, bool expectedResult)
3331
{
34-
bool actualResult = _consoleArgsReader.ContainsGenerateCommand(args);
32+
bool actualResult = ConsoleArgsReader.ContainsGenerateCommand(args);
3533
Assert.Equal(expectedResult, actualResult);
3634
}
3735

@@ -49,7 +47,7 @@ public void ContainsGenerateCommand_Test(string[] args, bool expectedResult)
4947
[MemberData(nameof(ContainsAnyCommand_TestData))]
5048
public void ContainsAnyCommand_Test(string[] args, bool expectedResult)
5149
{
52-
bool actualResult = _consoleArgsReader.ContainsAnyCommand(args);
50+
bool actualResult = ConsoleArgsReader.ContainsAnyCommand(args);
5351
Assert.Equal(expectedResult, actualResult);
5452
}
5553

@@ -74,7 +72,7 @@ public void ContainsAnyCommand_Test(string[] args, bool expectedResult)
7472
[MemberData(nameof(ContainsHelpOption_TestData))]
7573
public void ContainsHelpOption_Test(string[] args, bool expectedResult)
7674
{
77-
bool actualResult = _consoleArgsReader.ContainsHelpOption(args);
75+
bool actualResult = ConsoleArgsReader.ContainsHelpOption(args);
7876
Assert.Equal(expectedResult, actualResult);
7977
}
8078

@@ -95,7 +93,7 @@ public void ContainsHelpOption_Test(string[] args, bool expectedResult)
9593
[MemberData(nameof(ContainsProjectFolderOption_TestData))]
9694
public void ContainsProjectFolderOption_Test(string[] args, bool expectedResult)
9795
{
98-
bool actualResult = _consoleArgsReader.ContainsProjectFolderOption(args);
96+
bool actualResult = ConsoleArgsReader.ContainsProjectFolderOption(args);
9997
Assert.Equal(expectedResult, actualResult);
10098
}
10199

@@ -116,7 +114,7 @@ public void ContainsProjectFolderOption_Test(string[] args, bool expectedResult)
116114
[MemberData(nameof(ContainsOutputFolderOption_TestData))]
117115
public void ContainsOutputFolderOption_Test(string[] args, bool expectedResult)
118116
{
119-
bool actualResult = _consoleArgsReader.ContainsOutputOption(args);
117+
bool actualResult = ConsoleArgsReader.ContainsOutputOption(args);
120118
Assert.Equal(expectedResult, actualResult);
121119
}
122120

@@ -137,7 +135,7 @@ public void ContainsOutputFolderOption_Test(string[] args, bool expectedResult)
137135
[MemberData(nameof(ContainsVerboseOption_TestData))]
138136
public void ContainsVerboseOption_Test(string[] args, bool expectedResult)
139137
{
140-
bool actualResult = _consoleArgsReader.ContainsVerboseOption(args);
138+
bool actualResult = ConsoleArgsReader.ContainsVerboseOption(args);
141139
Assert.Equal(expectedResult, actualResult);
142140
}
143141

@@ -158,7 +156,7 @@ public void ContainsVerboseOption_Test(string[] args, bool expectedResult)
158156
[MemberData(nameof(GetProjectFolders_TestData))]
159157
public void GetProjectFolders_Test(string[] args, IEnumerable<string> expectedResult)
160158
{
161-
IEnumerable<string> actualResult = _consoleArgsReader.GetProjectFolders(args);
159+
IEnumerable<string> actualResult = ConsoleArgsReader.GetProjectFolders(args);
162160
Assert.Equal(expectedResult, actualResult);
163161
}
164162

@@ -176,14 +174,14 @@ public void GetProjectFolders_Test(string[] args, IEnumerable<string> expectedRe
176174
public void GetProjectFolders_ParameterPresentAndNoPathsSpecified_ExceptionThrown()
177175
{
178176
var args = new[] { "--project-folder" };
179-
Assert.Throws<CliException>(() => _consoleArgsReader.GetProjectFolders(args));
177+
Assert.Throws<CliException>(() => ConsoleArgsReader.GetProjectFolders(args));
180178
}
181179

182180
[Theory]
183181
[MemberData(nameof(GetOutputFolder_TestData))]
184182
public void GetOutputFolder_Test(string[] args, string expectedResult)
185183
{
186-
string actualResult = _consoleArgsReader.GetOutputFolder(args);
184+
string actualResult = ConsoleArgsReader.GetOutputFolder(args);
187185
Assert.Equal(expectedResult, actualResult);
188186
}
189187

@@ -201,14 +199,14 @@ public void GetOutputFolder_Test(string[] args, string expectedResult)
201199
public void GetOutputFolder_ParameterPresentAndNoPathsSpecified_ExceptionThrown()
202200
{
203201
var args = new[] { "--output-folder" };
204-
Assert.Throws<CliException>(() => _consoleArgsReader.GetOutputFolder(args));
202+
Assert.Throws<CliException>(() => ConsoleArgsReader.GetOutputFolder(args));
205203
}
206204

207205
[Theory]
208206
[MemberData(nameof(GetConfigPaths_TestData))]
209207
public void GetConfigPaths_Test(string[] args, IEnumerable<string> expectedResult)
210208
{
211-
IEnumerable<string> actualResult = _consoleArgsReader.GetConfigPaths(args);
209+
IEnumerable<string> actualResult = ConsoleArgsReader.GetConfigPaths(args);
212210
Assert.Equal(expectedResult, actualResult);
213211
}
214212

@@ -228,7 +226,7 @@ public void GetConfigPaths_Test(string[] args, IEnumerable<string> expectedResul
228226
public void GetConfigPaths_ParameterPresentAndNoPathsSpecified_ExceptionThrown()
229227
{
230228
var args = new[] { "--config-path" };
231-
Assert.Throws<CliException>(() => _consoleArgsReader.GetConfigPaths(args));
229+
Assert.Throws<CliException>(() => ConsoleArgsReader.GetConfigPaths(args));
232230
}
233231
}
234232
}

src/TypeGen/TypeGen.Cli/Business/ConsoleArgsReader.cs

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88
namespace TypeGen.Cli.Business
99
{
10-
internal class ConsoleArgsReader : IConsoleArgsReader
10+
internal class ConsoleArgsReader
1111
{
1212
private const string GetCwdCommand = "GETCWD";
1313
private const string GenerateCommand = "GENERATE";
@@ -17,22 +17,22 @@ internal class ConsoleArgsReader : IConsoleArgsReader
1717
/// </summary>
1818
private const string PathSeparator = "|";
1919

20-
public bool ContainsGetCwdCommand(string[] args) => ContainsCommand(args, GetCwdCommand);
21-
public bool ContainsGenerateCommand(string[] args) => ContainsCommand(args, GenerateCommand);
22-
public bool ContainsAnyCommand(string[] args) => ContainsGenerateCommand(args) || ContainsGetCwdCommand(args);
23-
private bool ContainsCommand(string[] args, string command) => args.Any(arg => string.Equals(arg, command, StringComparison.InvariantCultureIgnoreCase));
20+
public static bool ContainsGetCwdCommand(string[] args) => ContainsCommand(args, GetCwdCommand);
21+
public static bool ContainsGenerateCommand(string[] args) => ContainsCommand(args, GenerateCommand);
22+
public static bool ContainsAnyCommand(string[] args) => ContainsGenerateCommand(args) || ContainsGetCwdCommand(args);
23+
private static bool ContainsCommand(string[] args, string command) => args.Any(arg => string.Equals(arg, command, StringComparison.InvariantCultureIgnoreCase));
2424

25-
public bool ContainsHelpOption(string[] args) => ContainsOption(args, "-h", "--help");
26-
public bool ContainsProjectFolderOption(string[] args) => ContainsOption(args, "-p", "--project-folder");
27-
public bool ContainsOutputOption(string[] args) => ContainsOption(args, "-o", "--output-folder");
28-
public bool ContainsVerboseOption(string[] args) => ContainsOption(args, "-v", "--verbose");
29-
private bool ContainsOption(string[] args, string optionShortName, string optionFullName) => args.Any(arg => string.Equals(arg, optionShortName, StringComparison.InvariantCultureIgnoreCase) || string.Equals(arg, optionFullName, StringComparison.InvariantCultureIgnoreCase));
25+
public static bool ContainsHelpOption(string[] args) => ContainsOption(args, "-h", "--help");
26+
public static bool ContainsProjectFolderOption(string[] args) => ContainsOption(args, "-p", "--project-folder");
27+
public static bool ContainsOutputOption(string[] args) => ContainsOption(args, "-o", "--output-folder");
28+
public static bool ContainsVerboseOption(string[] args) => ContainsOption(args, "-v", "--verbose");
29+
private static bool ContainsOption(string[] args, string optionShortName, string optionFullName) => args.Any(arg => string.Equals(arg, optionShortName, StringComparison.InvariantCultureIgnoreCase) || string.Equals(arg, optionFullName, StringComparison.InvariantCultureIgnoreCase));
3030

31-
public IEnumerable<string> GetProjectFolders(string[] args) => GetPathsParam(args, "-p", "--project-folder");
32-
public string GetOutputFolder(string[] args) => GetPathsParam(args, "-o", "--output-folder").FirstOrDefault();
33-
public IEnumerable<string> GetConfigPaths(string[] args) => GetPathsParam(args, "-c", "--config-path");
31+
public static IEnumerable<string> GetProjectFolders(string[] args) => GetPathsParam(args, "-p", "--project-folder");
32+
public static string GetOutputFolder(string[] args) => GetPathsParam(args, "-o", "--output-folder").FirstOrDefault();
33+
public static IEnumerable<string> GetConfigPaths(string[] args) => GetPathsParam(args, "-c", "--config-path");
3434

35-
private IEnumerable<string> GetPathsParam(string[] args, string paramShortName, string paramFullName)
35+
private static IEnumerable<string> GetPathsParam(string[] args, string paramShortName, string paramFullName)
3636
{
3737
int index = -1;
3838

src/TypeGen/TypeGen.Cli/Business/IConsoleArgsReader.cs

Lines changed: 0 additions & 18 deletions
This file was deleted.

src/TypeGen/TypeGen.Cli/Program.cs

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ namespace TypeGen.Cli
1919
{
2020
internal class Program
2121
{
22-
private static IConsoleArgsReader _consoleArgsReader;
2322
private static ILogger _logger;
2423
private static IFileSystem _fileSystem;
2524
private static IConfigProvider _configProvider;
@@ -30,9 +29,7 @@ internal class Program
3029

3130
private static void InitializeServices(string[] args)
3231
{
33-
_consoleArgsReader = new ConsoleArgsReader();
34-
35-
bool verbose = _consoleArgsReader.ContainsVerboseOption(args);
32+
bool verbose = ConsoleArgsReader.ContainsVerboseOption(args);
3633
_logger = new ConsoleLogger(verbose);
3734

3835
_fileSystem = new FileSystem();
@@ -48,27 +45,27 @@ private static int Main(string[] args)
4845
{
4946
InitializeServices(args);
5047

51-
if (args == null || args.Length == 0 || _consoleArgsReader.ContainsHelpOption(args) || _consoleArgsReader.ContainsAnyCommand(args) == false)
48+
if (args == null || args.Length == 0 || ConsoleArgsReader.ContainsHelpOption(args) || ConsoleArgsReader.ContainsAnyCommand(args) == false)
5249
{
5350
ShowHelp();
5451
return (int)ExitCode.Success;
5552
}
5653

57-
if (_consoleArgsReader.ContainsGetCwdCommand(args))
54+
if (ConsoleArgsReader.ContainsGetCwdCommand(args))
5855
{
5956
string cwd = _fileSystem.GetCurrentDirectory();
6057
Console.WriteLine($"Current working directory is: {cwd}");
6158
return (int)ExitCode.Success;
6259
}
6360

64-
string[] configPaths = _consoleArgsReader.GetConfigPaths(args).ToArray();
61+
string[] configPaths = ConsoleArgsReader.GetConfigPaths(args).ToArray();
6562

66-
string[] projectFolders = _consoleArgsReader.ContainsProjectFolderOption(args) ?
67-
_consoleArgsReader.GetProjectFolders(args).ToArray() :
63+
string[] projectFolders = ConsoleArgsReader.ContainsProjectFolderOption(args) ?
64+
ConsoleArgsReader.GetProjectFolders(args).ToArray() :
6865
new [] { "." };
6966

70-
string? outputFolder = _consoleArgsReader.ContainsOutputOption(args) ?
71-
_consoleArgsReader.GetOutputFolder(args) : null;
67+
string? outputFolder = ConsoleArgsReader.ContainsOutputOption(args) ?
68+
ConsoleArgsReader.GetOutputFolder(args) : null;
7269

7370
for (var i = 0; i < projectFolders.Length; i++)
7471
{
@@ -205,7 +202,9 @@ private static void ShowHelp()
205202
"generate Generate TypeScript files" + Environment.NewLine +
206203
"getcwd Get current working directory" + Environment.NewLine +
207204
Environment.NewLine +
208-
"For more information please visit project's website: http://jburzynski.net/TypeGen");
205+
"For more information, visit:" + Environment.NewLine +
206+
"Documentation: https://typegen.readthedocs.io" + Environment.NewLine +
207+
"GitHub: https://github.com/jburzynski/TypeGen");
209208
}
210209
}
211210
}
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
namespace System.Runtime.CompilerServices;
2+
3+
internal static class IsExternalInit {}

0 commit comments

Comments
 (0)