Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/dependabot.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ version: 2
updates:
# Maintain dependencies for NPM
- package-ecosystem: "npm"
directory: "library"
directory: "lib/nodejs"
schedule:
interval: "weekly"

Expand Down
4 changes: 4 additions & 0 deletions api/api.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,8 @@
<ImplicitUsings>enable</ImplicitUsings>
</PropertyGroup>

<ItemGroup>
<ProjectReference Include="..\lib\dotnet\ValidIp.csproj" />
</ItemGroup>

</Project>
10 changes: 5 additions & 5 deletions api/Program.cs → api/src/Program.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
namespace api;
using ValidIp;

public class Program
{
Expand All @@ -10,25 +10,25 @@ public static void Main(string[] args)
app.MapGet("/validate/ipv4/{ip}", (string ip) =>
{
// TODO
return $"Validating... {ip} IPv4";
return Validate.IpV4(ip);
});

app.MapGet("/validate/ipv6/{ip}", (string ip) =>
{
// TODO
return $"Validating... {ip} IPv6";
return Validate.IpV6(ip);
});

app.MapGet("/generate/ipv4/{generateAmount}", (int generateAmount) =>
{
// TODO
return $"Generating... {generateAmount} x ipV4";
return Generate.IpV4(generateAmount);
});

app.MapGet("/generate/ipv6/{generateAmount}", (int generateAmount) =>
{
// TODO
return $"Generating... {generateAmount} x ipV6";
return Generate.IpV6(generateAmount);
});

app.Run();
Expand Down
1 change: 1 addition & 0 deletions cli/nuget.config
Original file line number Diff line number Diff line change
Expand Up @@ -4,5 +4,6 @@
<!--To inherit the global NuGet package sources remove the <clear/> line below -->
<clear />
<add key="nuget" value="https://api.nuget.org/v3/index.json" />
<add key="local" value="../lib/dotnet/bin/Debug" />
</packageSources>
</configuration>
120 changes: 0 additions & 120 deletions cli/src/CliManager.cs

This file was deleted.

16 changes: 0 additions & 16 deletions cli/src/Generate.cs

This file was deleted.

120 changes: 117 additions & 3 deletions cli/src/Program.cs
Original file line number Diff line number Diff line change
@@ -1,9 +1,123 @@
namespace ValidIp;
using System.CommandLine;
using ValidIp;

class Program
{
static void Main(string[] args)
static int Main(string[] args)
{
CliManager.ParseArgs(args);
var isV4Option = new Option<string>(
name: "--v4",
description: "Test if <ip> is a valid IPv4"
);

var isV6Option = new Option<string>(
name: "--v6",
description: "Test if <ip> is a valid IPv6"
);

isV4Option.ArgumentHelpName = "ip";
isV6Option.ArgumentHelpName = "ip";

var rootCommand = new RootCommand(
"Validate or generate random IP addresses.\n"
+ "Example usage: valid-ip --v4 8.8.8.8"
);

rootCommand.AddOption(isV4Option);
rootCommand.AddOption(isV6Option);

rootCommand.AddValidator(result =>
{
if (
result.FindResultFor(isV4Option) is not null
&& result.FindResultFor(isV6Option) is not null
)
{
result.ErrorMessage = "You cannot use options --v4 and --v6 together";
}
});

rootCommand.SetHandler(
(ipV4, ipV6) =>
{
if (ipV4 is not null)
{
var result = Validate.IpV4(ipV4);
Console.WriteLine(result);
return;
}

if (ipV6 is not null)
{
var result = Validate.IpV6(ipV6);
Console.WriteLine(result);
return;
}
else
rootCommand.Invoke("--help");
},
isV4Option,
isV6Option
);

var generateV4Option = new Option<int>(
name: "--v4",
description: "Generate <amount> of IPv4 addresses"
);

var generateV6Option = new Option<int>(
name: "--v6",
description: "Generate <amount> of IPv6 addresses"
);

generateV4Option.ArgumentHelpName = "amount";
generateV6Option.ArgumentHelpName = "amount";

var generateCommand = new Command(
name: "generate",
description: "Generate random IP addresses.\n"
+ "Example usage: valid-ip generate --v4 8"
);

generateCommand.AddOption(generateV4Option);
generateCommand.AddOption(generateV6Option);

generateCommand.AddAlias("gen");

rootCommand.AddCommand(generateCommand);

generateCommand.AddValidator(result =>
{
if (result.FindResultFor(generateV4Option) is not null
&& result.FindResultFor(generateV6Option) is not null)
{
result.ErrorMessage = "You cannot use options --v4 and --v6 together";
}
});

generateCommand.SetHandler(
(ipV4Amount, ipV6Amount) =>
{
if (ipV4Amount is not 0)
{
var result = Generate.IpV4(ipV4Amount);
Console.WriteLine(result);
return;
}

if (ipV6Amount is not 0)
{
var result = Generate.IpV6(ipV6Amount);
Console.WriteLine(result);
return;
}
else
generateCommand.Invoke("--help");
},
generateV4Option,
generateV6Option
);

return rootCommand.Invoke(args);
}
}
16 changes: 0 additions & 16 deletions cli/src/Validate.cs

This file was deleted.

4 changes: 4 additions & 0 deletions cli/valid-ip.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -11,4 +11,8 @@
<PackageReference Include="System.CommandLine" Version="2.0.0-beta4.22272.1" />
</ItemGroup>

<ItemGroup>
<ProjectReference Include="..\lib\dotnet\ValidIp.csproj" />
</ItemGroup>

</Project>
Loading