@@ -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