From 9ec8093c889c4cef68be7566b1cbee84b4b1178f Mon Sep 17 00:00:00 2001 From: =?utf8?q?Alexis=20Laferri=C3=A8re?= Date: Thu, 21 Jul 2016 21:53:29 -0400 Subject: [PATCH] Android & iOS: collect the arguments from the `app_files` annotation MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Signed-off-by: Alexis Laferrière --- src/platform/app_annotations.nit | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/src/platform/app_annotations.nit b/src/platform/app_annotations.nit index 1d60f15..9cfdec9 100644 --- a/src/platform/app_annotations.nit +++ b/src/platform/app_annotations.nit @@ -44,6 +44,9 @@ class AppProject return local_time_s.to_i end + # Extra folders where to find platform specific resource files + var files = new Array[String] + private var modelbuilder: ModelBuilder private var mainmodule: MModule @@ -64,6 +67,9 @@ class AppProject if val != null then namespace = val end + var annots = modelbuilder.collect_annotations_on_modules("app_files", mainmodule) + for a in annots do files.add_all a.as_relative_paths(modelbuilder) + modelbuilder.toolcontext.check_errors end @@ -134,4 +140,29 @@ redef class AAnnotation return version_fields.join(".") end + + # Parse all arguments as paths relative to the declaring module + # + # If no arguments are given, then use the parent directory of the module. + private fun as_relative_paths(modelbuilder: ModelBuilder): Array[String] + do + var paths = new Array[String] + + var file = location.file + if file == null then return paths + + var args = n_args + if args.is_empty then + paths.add file.filename.dirname + else + for arg in args do + var val = arg.as_string + if val != null then + paths.add file.filename.dirname/val + else modelbuilder.error(arg, "Syntax Error: `app_files` expects String literals as arguments.") + end + end + + return paths + end end -- 1.7.9.5