Maze / Library /PackageCache /com.unity.ide.rider@3.0.21 /Rider /Editor /ProjectGeneration /FileIOProvider.cs
| using System; | |
| using System.IO; | |
| using System.Security; | |
| using System.Text; | |
| using Packages.Rider.Editor.Util; | |
| namespace Packages.Rider.Editor.ProjectGeneration { | |
| class FileIOProvider : IFileIO | |
| { | |
| public bool Exists(string fileName) | |
| { | |
| return File.Exists(fileName); | |
| } | |
| public string ReadAllText(string fileName) | |
| { | |
| return File.ReadAllText(fileName); | |
| } | |
| public void WriteAllText(string path, string content) | |
| { | |
| File.WriteAllText(path, content, Encoding.UTF8); | |
| LastWriteTracker.UpdateLastWriteIfNeeded(path); | |
| } | |
| public string EscapedRelativePathFor(string file, string projectDirectory) | |
| { | |
| var projectDir = Path.GetFullPath(projectDirectory); | |
| // We have to normalize the path, because the PackageManagerRemapper assumes | |
| // dir seperators will be os specific. | |
| var absolutePath = Path.GetFullPath(file.NormalizePath()); | |
| var path = SkipPathPrefix(absolutePath, projectDir); | |
| return SecurityElement.Escape(path); | |
| } | |
| private static string SkipPathPrefix(string path, string prefix) | |
| { | |
| return path.StartsWith($@"{prefix}{Path.DirectorySeparatorChar}", StringComparison.Ordinal) | |
| ? path.Substring(prefix.Length + 1) | |
| : path; | |
| } | |
| } | |
| } | |