From b40e6cbd6d511a90e6cfe2a33f38fa172b578ef8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Lindqvist?= Date: Tue, 13 Sep 2016 06:07:14 +0200 Subject: [PATCH] vocabs.metadata.resources: new error resource-missing, if a resources.txt line doesnt match something So then if files declared in resources.txt are missing, that will hopefully be caught by the deploy process. --- .../metadata/resources/resources-tests.factor | 8 ++++++-- .../metadata/resources/resources.factor | 19 +++++++++++++------ 2 files changed, 19 insertions(+), 8 deletions(-) diff --git a/basis/vocabs/metadata/resources/resources-tests.factor b/basis/vocabs/metadata/resources/resources-tests.factor index afb0d2ad733..81955100650 100644 --- a/basis/vocabs/metadata/resources/resources-tests.factor +++ b/basis/vocabs/metadata/resources/resources-tests.factor @@ -2,11 +2,15 @@ USING: arrays globs sorting tools.test vocabs.metadata.resources ; IN: vocabs.metadata.resources.tests -! filter-resources +! match-pattern { { "hello.txt" } } [ - "*.txt" 1array { "hello.txt" } filter-resources + "*.txt" { "hello.txt" } match-pattern ] unit-test +[ + "*.txt" { "foo.bar" "foo.factor" } match-pattern +] [ resource-missing? ] must-fail-with + ! vocab-resource-files { { "bar" "bas" "foo" } } [ "vocabs.metadata.resources.test.1" vocab-resource-files natural-sort ] unit-test diff --git a/basis/vocabs/metadata/resources/resources.factor b/basis/vocabs/metadata/resources/resources.factor index 635bd4cc3f4..24f0e8a7ec1 100644 --- a/basis/vocabs/metadata/resources/resources.factor +++ b/basis/vocabs/metadata/resources/resources.factor @@ -1,6 +1,7 @@ ! (c)2010 Joe Groff bsd license -USING: globs io.directories io.directories.hierarchy io.files.info -io.pathnames kernel regexp sequences vocabs.loader vocabs.metadata ; +USING: fry globs io.directories io.directories.hierarchy io.files.info +io.pathnames kernel regexp sequences sets vocabs.loader +vocabs.metadata ; IN: vocabs.metadata.resources dup directory-tree-files [ append-path ] with map ] [ drop { } ] if swap prefix ; -: filter-resources ( resource-globs vocab-files -- vocab-files' ) - [ swap [ matches? ] with any? ] with filter ; +ERROR: resource-missing pattern ; + +: match-pattern ( pattern files -- files' ) + over '[ _ matches? ] filter + [ resource-missing ] [ nip ] if-empty ; + +: match-patterns ( patterns files -- files' ) + '[ _ match-pattern ] map concat members ; : vocab-resource-files ( vocab -- filenames ) - [ vocab-resources [ ] map ] [ vocab-dir-in-root ] bi + [ vocab-resources ] [ vocab-dir-in-root ] bi [ - filter-resources [ expand-resource ] map concat + match-patterns [ expand-resource ] map concat ] with-directory-files ; : copy-vocab-resources ( dir vocab -- )