Skip to content

Commit a0d0311

Browse files
committed
fix #6072
1 parent 1be0d0f commit a0d0311

File tree

1 file changed

+14
-9
lines changed

1 file changed

+14
-9
lines changed

Rubberduck.Core/Templates/TemplateFileHandler.cs

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -14,25 +14,21 @@ public interface ITemplateFileHandlerProvider
1414

1515
public class TemplateFileHandlerProvider : ITemplateFileHandlerProvider
1616
{
17-
private readonly string _rootPath;
17+
private readonly Lazy<string> _rootPath;
1818
private readonly IFileSystem _filesystem;
1919

2020
public TemplateFileHandlerProvider(
2121
IPersistencePathProvider pathProvider,
2222
IFileSystem fileSystem)
2323
{
24-
_rootPath = pathProvider.DataFolderPath("Templates");
24+
_rootPath = new Lazy<string>(() => pathProvider.DataFolderPath("Templates"));
2525
_filesystem = fileSystem;
2626
}
2727

2828
public ITemplateFileHandler CreateTemplateFileHandler(string templateName)
2929
{
30-
if (!_filesystem.Directory.Exists(_rootPath))
31-
{
32-
_filesystem.Directory.CreateDirectory(_rootPath);
33-
}
34-
35-
var fullPath = _filesystem.Path.Combine(_rootPath, templateName);
30+
EnsureRootPathExists();
31+
var fullPath = _filesystem.Path.Combine(_rootPath.Value, templateName);
3632
if (!_filesystem.Directory.Exists(_filesystem.Path.GetDirectoryName(fullPath)))
3733
{
3834
throw new InvalidOperationException("Cannot provide a path for where the parent directory do not exist");
@@ -42,9 +38,18 @@ public ITemplateFileHandler CreateTemplateFileHandler(string templateName)
4238

4339
public IEnumerable<string> GetTemplateNames()
4440
{
45-
var info = _filesystem.DirectoryInfo.FromDirectoryName(_rootPath);
41+
EnsureRootPathExists();
42+
var info = _filesystem.DirectoryInfo.FromDirectoryName(_rootPath.Value);
4643
return info.GetFiles().Select(file => file.Name).ToList();
4744
}
45+
46+
private void EnsureRootPathExists()
47+
{
48+
if (!_filesystem.Directory.Exists(_rootPath.Value))
49+
{
50+
_filesystem.Directory.CreateDirectory(_rootPath.Value);
51+
}
52+
}
4853
}
4954

5055
public interface ITemplateFileHandler

0 commit comments

Comments
 (0)