From a9c0910f2242adb417fdb6faf6152bc2082c5489 Mon Sep 17 00:00:00 2001 From: Mike Mitterer Date: Thu, 23 Apr 2015 16:55:50 +0200 Subject: [PATCH] feature: Accepting images in content-dir --- lib/src/Generator.dart | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/lib/src/Generator.dart b/lib/src/Generator.dart index ee4eb61..6eed531 100644 --- a/lib/src/Generator.dart +++ b/lib/src/Generator.dart @@ -36,8 +36,8 @@ class Generator { Validate.isTrue(templateDir.existsSync(),"Templatefolder ${templateDir.path} must exist!"); Validate.isTrue(outputDir.existsSync(),"OutputDir ${outputDir.path} must exist!"); - // TODO: support directory hierarchies for markdown, templates and output final List files = _listContentFilesIn(contentDir); + final List images = _listImagesFilesIn(contentDir); final List templates = _listTemplatesIn(templateDir); final List dataFiles = dataDir.existsSync() ? _listDataFilesIn(dataDir) : new List(); @@ -100,6 +100,17 @@ class Generator { outputFile.writeAsStringSync(content); _logger.info(" ${outputFile.path.replaceFirst(outputDir.path,"")} - done!"); } + + for(final File image in images) { + final String relativeFileName = image.path.replaceAll("${contentDir.path}","").replaceFirst("/",""); + final String relativePath = path.dirname(relativeFileName).replaceFirst(".",""); + + final Directory outputPath = _createOutputPath(outputDir,relativePath); + final File outputFile = new File("${outputPath.path}/${path.basename(relativeFileName)}"); + image.copySync(outputFile.path); + + _logger.info(" ${outputFile.path.replaceFirst(outputDir.path,"")} - copied!"); + } } @@ -187,6 +198,17 @@ class Generator { ) && !file.path.contains("packages") ).toList(); } + List _listImagesFilesIn(final Directory contentDir) { + return contentDir.listSync(recursive: true) + .where((file) => file is File && ( + + file.path.endsWith('.png') || + file.path.endsWith(".jpg") || + file.path.endsWith(".gif") + + ) && !file.path.contains("packages") ).toList(); + } + List _listTemplatesIn(final Directory templateDir) { return templateDir.listSync().where((file) => file is File && !file.path.contains("packages")).toList(); }