koskit.SteamCmdFluentApi
1.0.1
See the version list below for details.
dotnet add package koskit.SteamCmdFluentApi --version 1.0.1
NuGet\Install-Package koskit.SteamCmdFluentApi -Version 1.0.1
<PackageReference Include="koskit.SteamCmdFluentApi" Version="1.0.1" />
paket add koskit.SteamCmdFluentApi --version 1.0.1
#r "nuget: koskit.SteamCmdFluentApi, 1.0.1"
// Install koskit.SteamCmdFluentApi as a Cake Addin #addin nuget:?package=koskit.SteamCmdFluentApi&version=1.0.1 // Install koskit.SteamCmdFluentApi as a Cake Tool #tool nuget:?package=koskit.SteamCmdFluentApi&version=1.0.1
SteamCmdFluentApi
SteamCmdFluentApi is a wrapper library for SteamCMD.exe (can be found here).
Provides some easy access to the functionality of the executable through C# with a command builder, and manages the running process (when executing any command) while also returning any output of the program.
Fluent API Usage
Everything in a single command:
public static void Main(string[] args)
{
string steamCmdExecutablePath = @"C:\steamcmd\steamcmd.exe";
int valheimAppId = 896660;
string serverInstallDirectory = @"E:\valheimServer";
bool success = SteamCmd.WithExecutable(steamCmdExecutablePath)
.CreateCommand()
.WithAnonymousAuthentication()
.InstallOrUpdateApp(valheimAppId)
.WithWorkingDirectory(serverInstallDirectory)
.BuildAndTryToExecute(out string output);
if (success)
Console.WriteLine($"Successfully installed server. Output: \r\n {output}");
else
Console.WriteLine($"Error while installing server. Output: \r\n {output}");
}
You can create a new instace of SteamCmd
class for multiple uses.
public static void Main(string[] args)
{
SteamCmd steam = new SteamCmd(@"C:\steamcmd\steamcmd.exe");
//Create valheim server.
bool valheimInstallResult =
steam.CreateCommand()
.WithAnonymousAuthentication()
.InstallOrUpdateApp(896660)
.WithWorkingDirectory(@"E:\valheimServer")
.BuildAndTryToExecute(out string valheimOutput);
if (valheimInstallResult)
Console.WriteLine($"Successfully installed valheim server. Output: \r\n {valheimOutput}");
else
Console.WriteLine($"Error while installing valheim server. Output: \r\n {valheimOutput}");
//Create csgo server.
bool csgoInstallResult =
steam.CreateCommand()
.WithAnonymousAuthentication()
.InstallOrUpdateApp(740)
.WithWorkingDirectory(@"E:\csgoServer")
.BuildAndTryToExecute(out string csgoOutput);
if (csgoInstallResult)
Console.WriteLine($"Successfully installed csgo server. Output: \r\n {csgoOutput}");
else
Console.WriteLine($"Error while installing csgo server. Output: \r\n {csgoOutput}");
}
You can create a command and (re)use it at a later time (e.g. in scheduled updates):
public static void Main(string[] args)
{
SteamCmd steam = new SteamCmd(@"C:\steamcmd\steamcmd.exe");
int valheimAppId = 896660;
string valheimServerInstallDirectory = @"E:\valheimServer";
SteamCmdCommand installOrUpdateValheimServerCommand =
steam.CreateCommand()
.WithAnonymousAuthentication()
.InstallOrUpdateApp(valheimAppId)
.WithDirectory(valheimServerInstallDirectory)
.Build();
//Do something else or use the command in another class at a later time...
bool success = steam.TryToExecuteCommand(installOrUpdateValheimServerCommand, out string output);
if (success)
Console.WriteLine($"Successfully installed valheim server. Output: \r\n {output}");
else
Console.WriteLine($"Error while installing valheim server. Output: \r\n {output}");
}
Or, you can even use the SteamCmd class entirely as a wrapper and execute your command without the builder feature:
public static void Main(string[] args)
{
SteamCmd steam = new SteamCmd(@"C:\steamcmd\steamcmd.exe");
string command = @"+login anonymous +force_install_dir E:\valheimServer\ +app_update {896660} +quit";
bool success = steam.TryToExecuteCommand(command, out string output);
if (success)
Console.WriteLine($"Successfully installed valheim server. Output: \r\n {output}");
else
Console.WriteLine($"Error while installing valheim server. Output: \r\n {output}");
}
Contributing
Pull requests are welcome. The project is in pre-alpha (literally anything might not work), still in development. I use the code in some other of my projects and test it there. Any help is welcome.
License
Product | Versions 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. |
-
.NETStandard 2.0
- No dependencies.
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.