From 3cbe8539a65eefddfae95f985c2e1ab7dd13c771 Mon Sep 17 00:00:00 2001 From: Scott Ehlert Date: Mon, 27 Jun 2011 01:28:15 -0500 Subject: [PATCH] Place server installs into directory specified by "dedicatedserverfolder" if available. --- DepotDownloader/CDRManager.cs | 21 +++++++++++++++++++++ DepotDownloader/ContentDownloader.cs | 10 +++++++++- 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/DepotDownloader/CDRManager.cs b/DepotDownloader/CDRManager.cs index 5fdaa02c..58501ad1 100644 --- a/DepotDownloader/CDRManager.cs +++ b/DepotDownloader/CDRManager.cs @@ -30,6 +30,9 @@ namespace DepotDownloader [BlobField( FieldKey = CDRAppRecordFields.eFieldFilesystemsRecord, Complex = true, Depth = 1 )] public List FileSystems { get; private set; } + + [BlobField( FieldKey = CDRAppRecordFields.eFieldUserDefinedRecord, Depth = 1 )] + public Dictionary UserDefined { get; private set; } } class AppVersion @@ -183,6 +186,24 @@ namespace DepotDownloader return appIDs; } + public static string GetDedicatedServerFolder( int depotId ) + { + App app = GetAppBlob( depotId ); + + if ( app.UserDefined == null ) + return null; + + foreach ( var entry in app.UserDefined ) + { + if ( entry.Key.Equals( "dedicatedserverfolder", StringComparison.OrdinalIgnoreCase ) ) + { + return entry.Value; + } + } + + return null; + } + static byte[] GetCdr() { try diff --git a/DepotDownloader/ContentDownloader.cs b/DepotDownloader/ContentDownloader.cs index b4456d78..db7e5dcd 100644 --- a/DepotDownloader/ContentDownloader.cs +++ b/DepotDownloader/ContentDownloader.cs @@ -34,6 +34,14 @@ namespace DepotDownloader else { Directory.CreateDirectory( installDir ); + + string serverFolder = CDRManager.GetDedicatedServerFolder( depotId ); + if ( serverFolder != null || !serverFolder.Equals( "" ) ) + { + installDir = Path.Combine( installDir, serverFolder ); + Directory.CreateDirectory( installDir ); + + } } } catch @@ -191,7 +199,7 @@ namespace DepotDownloader } float perc = ( ( float )x / ( float )manifest.Nodes.Count ) * 100.0f; - Console.WriteLine( " {0:0.00}%\t{1}", perc, dirEntry.FullName ); + Console.WriteLine( " {0:0.00}%\t{1}", perc, Path.Combine( installDir, dirEntry.FullName ) ); FileInfo fi = new FileInfo( downloadPath );