@@ -14,25 +14,21 @@ public interface ITemplateFileHandlerProvider
14
14
15
15
public class TemplateFileHandlerProvider : ITemplateFileHandlerProvider
16
16
{
17
- private readonly string _rootPath ;
17
+ private readonly Lazy < string > _rootPath ;
18
18
private readonly IFileSystem _filesystem ;
19
19
20
20
public TemplateFileHandlerProvider (
21
21
IPersistencePathProvider pathProvider ,
22
22
IFileSystem fileSystem )
23
23
{
24
- _rootPath = pathProvider . DataFolderPath ( "Templates" ) ;
24
+ _rootPath = new Lazy < string > ( ( ) => pathProvider . DataFolderPath ( "Templates" ) ) ;
25
25
_filesystem = fileSystem ;
26
26
}
27
27
28
28
public ITemplateFileHandler CreateTemplateFileHandler ( string templateName )
29
29
{
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 ) ;
36
32
if ( ! _filesystem . Directory . Exists ( _filesystem . Path . GetDirectoryName ( fullPath ) ) )
37
33
{
38
34
throw new InvalidOperationException ( "Cannot provide a path for where the parent directory do not exist" ) ;
@@ -42,9 +38,18 @@ public ITemplateFileHandler CreateTemplateFileHandler(string templateName)
42
38
43
39
public IEnumerable < string > GetTemplateNames ( )
44
40
{
45
- var info = _filesystem . DirectoryInfo . FromDirectoryName ( _rootPath ) ;
41
+ EnsureRootPathExists ( ) ;
42
+ var info = _filesystem . DirectoryInfo . FromDirectoryName ( _rootPath . Value ) ;
46
43
return info . GetFiles ( ) . Select ( file => file . Name ) . ToList ( ) ;
47
44
}
45
+
46
+ private void EnsureRootPathExists ( )
47
+ {
48
+ if ( ! _filesystem . Directory . Exists ( _rootPath . Value ) )
49
+ {
50
+ _filesystem . Directory . CreateDirectory ( _rootPath . Value ) ;
51
+ }
52
+ }
48
53
}
49
54
50
55
public interface ITemplateFileHandler
0 commit comments