From 123a32ff9b2798e882378612dbe3b84a0284b0d2 Mon Sep 17 00:00:00 2001 From: Robert McRackan Date: Tue, 10 Dec 2019 10:33:51 -0500 Subject: [PATCH] Move application logic from view to Launcher --- FileManager/UNTESTED/Configuration.cs | 68 +----------------- Libation.sln | 9 ++- LibationLauncher/LibationLauncher.csproj | 26 +++++++ .../UNTESTED => LibationLauncher}/Program.cs | 30 +++++--- LibationLauncher/appsettings.json | 11 +++ LibationLauncher/libation.ico | Bin 0 -> 93828 bytes LibationWinForm/LibationWinForm.csproj | 10 +-- LibationWinForm/UNTESTED/Form1.cs | 3 - LibationWinForm/appsettings.json | 3 - _DB_NOTES.txt | 1 + 10 files changed, 68 insertions(+), 93 deletions(-) create mode 100644 LibationLauncher/LibationLauncher.csproj rename {LibationWinForm/UNTESTED => LibationLauncher}/Program.cs (76%) create mode 100644 LibationLauncher/appsettings.json create mode 100644 LibationLauncher/libation.ico delete mode 100644 LibationWinForm/appsettings.json diff --git a/FileManager/UNTESTED/Configuration.cs b/FileManager/UNTESTED/Configuration.cs index c02d2b61..3f291695 100644 --- a/FileManager/UNTESTED/Configuration.cs +++ b/FileManager/UNTESTED/Configuration.cs @@ -31,12 +31,10 @@ namespace FileManager */ #endregion - private const string configFilename = "LibationSettings.json"; - private PersistentDictionary persistentDictionary { get; } [Description("Location of the configuration file where these settings are saved. Please do not edit this file directly while Libation is running.")] - public string Filepath { get; } + public string Filepath => Path.Combine(Path.GetDirectoryName(Exe.FileLocationOnDisk), "Settings.json"); [Description("[Advanced. Leave alone in most cases.] Your user-specific key used to decrypt your audible files (*.aax) into audio files you can use anywhere (*.m4b)")] public string DecryptKey @@ -90,13 +88,10 @@ namespace FileManager public static Configuration Instance { get; } = new Configuration(); private Configuration() { - Filepath = getPath(); - // load json values into memory persistentDictionary = new PersistentDictionary(Filepath); ensureDictionaryEntries(); - // setUserFilesDirectoryDefault // don't create dir. dir creation is the responsibility of places that use the dir if (string.IsNullOrWhiteSpace(LibationFiles)) LibationFiles = Path.Combine(Path.GetDirectoryName(Exe.FileLocationOnDisk), "Libation"); @@ -113,67 +108,6 @@ namespace FileManager return attribute?.Description; } - private static string getPath() - { - // search folders for config file. accept the first match - var defaultdir = Path.GetDirectoryName(Exe.FileLocationOnDisk); - - var baseDirs = new HashSet - { - defaultdir, - getNonDevelopmentDir(defaultdir), - Environment.GetFolderPath(Environment.SpecialFolder.Personal) - }; - - var subDirs = baseDirs.Select(dir => Path.Combine(dir, "Libation")); - var dirs = baseDirs.Concat(subDirs).ToList(); - - foreach (var dir in dirs) - { - var f = Path.Combine(dir, configFilename); - if (File.Exists(f)) - return f; - } - - return Path.Combine(defaultdir, configFilename); - } - - private static string getNonDevelopmentDir(string path) - { - // examples: - // \Libation\Core2_0\bin\Debug\netcoreapp3.1 - // \Libation\StndLib\bin\Debug\netstandard2.1 - // \Libation\MyWnfrm\bin\Debug - // \Libation\Core2_0\bin\Release\netcoreapp3.1 - // \Libation\StndLib\bin\Release\netstandard2.1 - // \Libation\MyWnfrm\bin\Release - - var curr = new DirectoryInfo(path); - - if (!curr.Name.EqualsInsensitive("debug") && !curr.Name.EqualsInsensitive("release") && !curr.Name.StartsWithInsensitive("netcoreapp") && !curr.Name.StartsWithInsensitive("netstandard")) - return path; - - // get out of netcore/standard dir => debug - if (curr.Name.StartsWithInsensitive("netcoreapp") || curr.Name.StartsWithInsensitive("netstandard")) - curr = curr.Parent; - - if (!curr.Name.EqualsInsensitive("debug") && !curr.Name.EqualsInsensitive("release")) - return path; - - // get out of debug => bin - curr = curr.Parent; - if (!curr.Name.EqualsInsensitive("bin")) - return path; - - // get out of bin - curr = curr.Parent; - // get out of csproj-level dir - curr = curr.Parent; - - // curr should now be sln-level dir - return curr.FullName; - } - private void ensureDictionaryEntries() { var stringProperties = getDictionaryProperties().Select(p => p.Name).ToList(); diff --git a/Libation.sln b/Libation.sln index f3cb2547..c9cfefb8 100644 --- a/Libation.sln +++ b/Libation.sln @@ -78,7 +78,9 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ApplicationServices", "Appl EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Dinah.Core.WindowsDesktop", "..\Dinah.Core\Dinah.Core.WindowsDesktop\Dinah.Core.WindowsDesktop.csproj", "{059CE32C-9AD6-45E9-A166-790DFFB0B730}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WindowsDesktopUtilities", "WindowsDesktopUtilities\WindowsDesktopUtilities.csproj", "{E7EFD64D-6630-4426-B09C-B6862A92E3FD}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WindowsDesktopUtilities", "WindowsDesktopUtilities\WindowsDesktopUtilities.csproj", "{E7EFD64D-6630-4426-B09C-B6862A92E3FD}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LibationLauncher", "LibationLauncher\LibationLauncher.csproj", "{F3B04A3A-20C8-4582-A54A-715AF6A5D859}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -194,6 +196,10 @@ Global {E7EFD64D-6630-4426-B09C-B6862A92E3FD}.Debug|Any CPU.Build.0 = Debug|Any CPU {E7EFD64D-6630-4426-B09C-B6862A92E3FD}.Release|Any CPU.ActiveCfg = Release|Any CPU {E7EFD64D-6630-4426-B09C-B6862A92E3FD}.Release|Any CPU.Build.0 = Release|Any CPU + {F3B04A3A-20C8-4582-A54A-715AF6A5D859}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F3B04A3A-20C8-4582-A54A-715AF6A5D859}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F3B04A3A-20C8-4582-A54A-715AF6A5D859}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F3B04A3A-20C8-4582-A54A-715AF6A5D859}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -226,6 +232,7 @@ Global {B95650EA-25F0-449E-BA5D-99126BC5D730} = {41CDCC73-9B81-49DD-9570-C54406E852AF} {059CE32C-9AD6-45E9-A166-790DFFB0B730} = {43E3ACB3-E0BC-4370-8DBB-E3720C8C8FD1} {E7EFD64D-6630-4426-B09C-B6862A92E3FD} = {F0CBB7A7-D3FB-41FF-8F47-CF3F6A592249} + {F3B04A3A-20C8-4582-A54A-715AF6A5D859} = {8679CAC8-9164-4007-BDD2-F004810EDA14} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {615E00ED-BAEF-4E8E-A92A-9B82D87942A9} diff --git a/LibationLauncher/LibationLauncher.csproj b/LibationLauncher/LibationLauncher.csproj new file mode 100644 index 00000000..38cb83d8 --- /dev/null +++ b/LibationLauncher/LibationLauncher.csproj @@ -0,0 +1,26 @@ + + + + WinExe + netcoreapp3.1 + true + libation.ico + Libation + + true + true + + win-x64 + + + + + + + + + PreserveNewest + + + + \ No newline at end of file diff --git a/LibationWinForm/UNTESTED/Program.cs b/LibationLauncher/Program.cs similarity index 76% rename from LibationWinForm/UNTESTED/Program.cs rename to LibationLauncher/Program.cs index 48f8bef7..48cafe95 100644 --- a/LibationWinForm/UNTESTED/Program.cs +++ b/LibationLauncher/Program.cs @@ -1,29 +1,33 @@ -using System; +using System; using System.Windows.Forms; using Dinah.Core.Logging; +using FileManager; +using LibationWinForm; +using Microsoft.Extensions.Configuration; using Serilog; -namespace LibationWinForm +namespace LibationLauncher { - static class Program - { - [STAThread] - static void Main() + static class Program + { + [STAThread] + static void Main() { + Application.SetHighDpiMode(HighDpiMode.SystemAware); Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); if (!createSettings()) return; - init(); + initLogging(); Application.Run(new Form1()); } private static bool createSettings() { - if (!string.IsNullOrWhiteSpace(FileManager.Configuration.Instance.Books)) + if (!string.IsNullOrWhiteSpace(Configuration.Instance.Books)) return true; var welcomeText = @" @@ -44,7 +48,7 @@ Go to Import > Scan Library return true; } - private static void init() + private static void initLogging() { // default. for reference. output example: // 2019-11-26 08:48:40.224 -05:00 [DBG] Begin Libation @@ -54,8 +58,14 @@ Go to Import > Scan Library var code_outputTemplate = "{Timestamp:yyyy-MM-dd HH:mm:ss.fff zzz} [{Level:u3}] (at {Caller}) {Message:lj}{NewLine}{Exception}"; - var logPath = System.IO.Path.Combine(FileManager.Configuration.Instance.LibationFiles, "Log.log"); + var logPath = System.IO.Path.Combine(Configuration.Instance.LibationFiles, "Log.log"); +//var configuration = new ConfigurationBuilder() +// .AddJsonFile("appsettings.json") +// .Build(); +//Log.Logger = new LoggerConfiguration() +// .ReadFrom.Configuration(configuration) +// .CreateLogger(); Log.Logger = new LoggerConfiguration() .Enrich.WithCaller() .MinimumLevel.Debug() diff --git a/LibationLauncher/appsettings.json b/LibationLauncher/appsettings.json new file mode 100644 index 00000000..7da4be1a --- /dev/null +++ b/LibationLauncher/appsettings.json @@ -0,0 +1,11 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Debug" + } + }, + "Serilog": { + "MinimumLevel": "Debug", + "Enrich": "WithCaller" + } +} diff --git a/LibationLauncher/libation.ico b/LibationLauncher/libation.ico new file mode 100644 index 0000000000000000000000000000000000000000..5fb771359a25941db76f3267f5ec6ec522767fba GIT binary patch literal 93828 zcmeHQ30zET8$VN2H&M21(Vk?hY$3{CS6q}WTuGMf>lGJ`C5l2x>9c%xx%QoFOOirG z*{`LtZz-XW`ktre<$UKl=gg#&nQ8t%k9T{v|MQ-iIdkUBL{TEDJf){cL2E>fE=N)Q zD2g&NDjG+^{ArkTbSxTMcBH70)hS9WmW;JT)Uy6y06_c1N)&ZusED$JF_^+k(L6L1 z1%7T;ERw?U_y2Q*=>itPHCZ4AWt8GV42CGhg%}J`iVHCqq7)ZmFhr3R?ZIF-$Qy}Z zALpdOcu;x-G6Q6aM6i!@xW)xTSbPRD79<;l90%CPIb1^>HY|mO0FcKZ#Fn%;hij4}{n-TUaYPH z`ls0zVLl23b=V++g{vThFSErp)cJ}`U5d*0{kP;AQWUPGYW}}GeM(V8a1Eblj6fVg z@cE|@@Wdm<^GuQM|NnmshRmG##%NPg_}THW|03 z&q8S*f9gQAEr=N8JP3)8eVoHJ)DZ$!;1pluNldmDbx^k?F%_KUf?!N|rKS8p@b$jF zM6i!@xQ05Yi#8>J;ot;)=7X#TsRrT!5(W}2k#J}|LEs%op$_Vz4ch()Ou#q?1bvMF zX$O)b8RHyNuESh=5Y)vrv_&7q1@b~a@gQ|TK1jyQxb!jVpf1|rJo+dOw7>}S$6B@o z!Fto8(G6>f2lVr>lm#m>K+Mq4Yp)Xl61Psu2J;-QDpZJ%i zMH{q5UGya@@I49IP6AmZ=}Qxr=%5YS;uw9&io;-lwjDt>OZvpOG%eboE$X5#S#b^w z&=wzaXC-}U;u0OSL0cT7FIlk_4A9n9RzsRT+M*BiB`X$#0osm{)sUu-w&(+W$qH{U zK->AU8q)O97JZ;ES@A0vpzSqT4Qcvli$2hotf&YE??BMLtE|Qn8?;3q=&Lv&&mTvN zVT?8yAAJ-TMqv0B1pO38(AEg#M=%VGixV4d(3TSgVo^b%#5 zV_+Co3x6~N7noaZ_>(Yuju-OH)$1}kF5C< z-lUb)UeWalZ_+9{A6fG!yh$soy`t+A-lSD@KCloL z27!-rr2cFKb@6j%yx#-va922JK*o44b_NJJzKh$w0v~w40s2$~I6{*5K#I$k%?^E{ zZ+XT9NbWNT8;4u4whUwlh!cpdM6i!@xQ04x_UId9$Rk!mQs2w_JY@$W ze$OYyk|&IVWSDv4b67A)bw;8!VB84=_whdx!9LF68XahhKA667j4|Z_tsseyAoLtF zVf-5{xhBxZdv)-+jIQ^+KI)(@+7R@C4&L)X*TLk~ zx?XYndnE)h2F9ZM@sg~SX2X1)o+%0bJ0mxGovR=K z_=}7+dY(VpN8bpH#XL8#C|oI>|3*U?I+sXESbWW*&kNBfuZtLy?jIkIr3L0|8i^eO z3D9#AqK`2U%;z7n2SuyG{{IZz)47pj4&`MUs*rjUOW>UYq?{z}R&Dn48d;1p(+WX9yjT!#~ER=YqKjjR_Ed9y3(v zfE@lYHa!>2O=yts-jTQ`gbv8zA7hg|u*KYj2J`$EufhE+Ft0t9#`!ODeFH-3o)7(s zI9bZTm>8SnfjN~HPD3CP7u$ZN6_^$WW72cLoJtEzAP_w^UJod3Ft0&iPNfBW|3&AY z4P&j+3NDF-G3hxpFU9y6>KY?Hxdv1kX)v$-Tq%v9j2KfG{9nLWm!TuX5My90`riMH z&jRtY$xn?6N~0F!y3-F4gdZJ%Bd7qt))wSB;BtZ7w)m?F05}!) z#TE`lLu@nQ)d<^Eih`e30DgwKg^J=ymEflt3JOGGkr3IbMu>@!;{ zU}%+VIj8{JzLR-5NKuu7fE6J7%+?ARTIE^}D!{hyWL^$ZRHYzb1;{?LwE~7#xt4

3IbMu>@!;{ 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 - WinExe + Library netcoreapp3.1 true libation.ico - Libation true true @@ -39,11 +38,4 @@ - - - PreserveNewest - true - - - \ No newline at end of file diff --git a/LibationWinForm/UNTESTED/Form1.cs b/LibationWinForm/UNTESTED/Form1.cs index 9b71c2c3..56915bbd 100644 --- a/LibationWinForm/UNTESTED/Form1.cs +++ b/LibationWinForm/UNTESTED/Form1.cs @@ -13,9 +13,6 @@ namespace LibationWinForm { public partial class Form1 : Form { - // initial call here will initiate config loading - private Configuration config { get; } = Configuration.Instance; - private string backupsCountsLbl_Format { get; } private string pdfsCountsLbl_Format { get; } private string visibleCountLbl_Format { get; } diff --git a/LibationWinForm/appsettings.json b/LibationWinForm/appsettings.json deleted file mode 100644 index 4fc8b29b..00000000 --- a/LibationWinForm/appsettings.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "": "" -} \ No newline at end of file diff --git a/_DB_NOTES.txt b/_DB_NOTES.txt index 5cfdb4dd..d40d6e90 100644 --- a/_DB_NOTES.txt +++ b/_DB_NOTES.txt @@ -9,6 +9,7 @@ see comments at top of file: LocalDb ======= +only works if LocalDb is separately installed on host box SSMS db connection: (LocalDb)\MSSQLLocalDB eg: Server=(localdb)\mssqllocaldb;Database=DataLayer.LibationContext;Integrated Security=true; LocalDb database files live at: