| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- using System;
- using System.IO;
- using System.IO.Abstractions;
- using System.Reflection;
- using Quadarax.Foundation.Core.Value.Extensions;
- namespace Quadarax.Foundation.Core.IO
- {
- public static class FileUtils
- {
- private const string CS_CFG_VAR = "LocalAppData";
- public static void TestWriteTempFile(IFileSystem fileSystemAbstraction, string directory)
- {
- if (fileSystemAbstraction == null)
- throw new ArgumentNullException(nameof(fileSystemAbstraction));
- var fileName = fileSystemAbstraction.Path.GetRandomFileName();
- var fullFileName = directory.EnsurePathBackslash() + fileName;
- using (var sw = fileSystemAbstraction.File.CreateText(fullFileName))
- {
- sw.Write('T');
- sw.Flush();
- }
- if (fileSystemAbstraction.File.Exists(fullFileName))
- fileSystemAbstraction.File.Delete(fullFileName);
- }
- public static string EnsurePathEndsWithDirSeparator(IFileSystem fileSystemAbstraction, string directoryPath)
- {
- if (fileSystemAbstraction == null && !string.IsNullOrEmpty(directoryPath))
- throw new ArgumentNullException(nameof(fileSystemAbstraction));
- if (string.IsNullOrEmpty(directoryPath))
- return directoryPath;
- directoryPath = directoryPath.Trim();
- if (directoryPath.EndsWith(fileSystemAbstraction.Path.DirectorySeparatorChar))
- return directoryPath;
- return directoryPath + fileSystemAbstraction.Path.DirectorySeparatorChar;
- }
- public static string EnsurePathNotEndsWithDirSeparator(IFileSystem fileSystemAbstraction, string directoryPath)
- {
- if (fileSystemAbstraction == null && !string.IsNullOrEmpty(directoryPath))
- throw new ArgumentNullException(nameof(fileSystemAbstraction));
- if (string.IsNullOrEmpty(directoryPath))
- return directoryPath;
- directoryPath = directoryPath.Trim();
- if (!directoryPath.EndsWith(fileSystemAbstraction.Path.DirectorySeparatorChar))
- return directoryPath;
- return directoryPath.RemoveLast();
- }
- public static string GetConfigBasePath(IFileSystem fileSystemAbstraction)
- {
- #if LINUX
- return $"{fileSystemAbstraction.Path.DirectorySeparatorChar}etc";
- #else
- #if DEBUG
- var localAppDir = fileSystemAbstraction.Directory.GetCurrentDirectory();
- #else
- var localAppDir = Environment.GetEnvironmentVariable(CS_CFG_VAR);
- #endif
- if (string.IsNullOrEmpty(localAppDir))
- return Assembly.GetEntryAssembly().Location;
- return EnsurePathNotEndsWithDirSeparator(fileSystemAbstraction, localAppDir.EnsurePathNonBackslash());
- #endif
- }
- public static string GetConfigPath(IFileSystem fileSystemAbstraction)
- {
- return EnsurePathNotEndsWithDirSeparator(fileSystemAbstraction, (GetConfigBasePath(fileSystemAbstraction) + fileSystemAbstraction.Path.DirectorySeparatorChar + Assembly.GetEntryAssembly().GetName().Name));
- }
- public static string GetLogsPath(IFileSystem fileSystemAbstraction)
- {
- return EnsurePathNotEndsWithDirSeparator(fileSystemAbstraction,(GetLogBasePath(fileSystemAbstraction) + Path.DirectorySeparatorChar + Assembly.GetEntryAssembly().GetName().Name));
- }
- public static string GetLogBasePath(IFileSystem fileSystemAbstraction)
- {
- #if LINUX
- return $"{fileSystemAbstraction.Path.DirectorySeparatorChar}var{fileSystemAbstraction.Path.DirectorySeparatorChar}logs";
- #else
- return GetConfigBasePath(fileSystemAbstraction);
- #endif
- }
- }
- }
|