1- # Consumer module for the Nabla-Asset-Manifests repository .
1+ # Consumer module with Nabla-Asset-Manifests defaults .
22#
33# Maintainer-side source of truth:
44# - physical layout under channel roots such as `media/`
@@ -167,17 +167,30 @@ function(_nam_resolve_cache_root OUT_VAR)
167167 set (${OUT_VAR} "${_root} " PARENT_SCOPE )
168168endfunction ()
169169
170+ function (_nam_resolve_manifest_root OUT_VAR )
171+ set (options)
172+ set (oneValueArgs MANIFEST_ROOT)
173+ cmake_parse_arguments (NAM "${options} " "${oneValueArgs} " "" ${ARGN} )
174+
175+ if (DEFINED NAM_MANIFEST_ROOT AND NOT "${NAM_MANIFEST_ROOT} " STREQUAL "" )
176+ file (TO_CMAKE_PATH "${NAM_MANIFEST_ROOT} " _root )
177+ else ()
178+ nam_get_repo_root (_root )
179+ endif ()
180+ set (${OUT_VAR} "${_root} " PARENT_SCOPE )
181+ endfunction ()
182+
170183function (_nam_get_channel_root OUT_VAR )
171184 set (options)
172- set (oneValueArgs CHANNEL)
185+ set (oneValueArgs CHANNEL MANIFEST_ROOT )
173186 cmake_parse_arguments (NAM "${options} " "${oneValueArgs} " "" ${ARGN} )
174187
175188 if (NOT DEFINED NAM_CHANNEL OR "${NAM_CHANNEL} " STREQUAL "" )
176189 set (NAM_CHANNEL "media" )
177190 endif ()
178191
179- nam_get_repo_root ( _repo_root )
180- set (_channel_root "${_repo_root } /${NAM_CHANNEL} " )
192+ _nam_resolve_manifest_root ( _manifest_root MANIFEST_ROOT " ${NAM_MANIFEST_ROOT} " )
193+ set (_channel_root "${_manifest_root } /${NAM_CHANNEL} " )
181194 if (NOT EXISTS "${_channel_root} " )
182195 message (FATAL_ERROR "NablaAssetManifests: channel root `${_channel_root} ` does not exist" )
183196 endif ()
@@ -186,14 +199,14 @@ endfunction()
186199
187200function (_nam_parse_dvc_file )
188201 set (options)
189- set (oneValueArgs DVC_FILE CHANNEL OUT_RELATIVE_PATH OUT_RELEASE_ASSET OUT_KEY)
202+ set (oneValueArgs DVC_FILE CHANNEL MANIFEST_ROOT OUT_RELATIVE_PATH OUT_RELEASE_ASSET OUT_KEY)
190203 cmake_parse_arguments (NAM "${options} " "${oneValueArgs} " "" ${ARGN} )
191204
192205 if (NOT NAM_DVC_FILE)
193206 message (FATAL_ERROR "NablaAssetManifests: DVC_FILE is required" )
194207 endif ()
195208
196- _nam_get_channel_root (_channel_root CHANNEL "${NAM_CHANNEL} " )
209+ _nam_get_channel_root (_channel_root CHANNEL "${NAM_CHANNEL} " MANIFEST_ROOT " ${NAM_MANIFEST_ROOT} " )
197210 file (STRINGS "${NAM_DVC_FILE} " _lines )
198211
199212 set (_path "" )
@@ -230,14 +243,14 @@ endfunction()
230243
231244function (nam_get_channel_asset_keys OUT_VAR )
232245 set (options)
233- set (oneValueArgs CHANNEL)
246+ set (oneValueArgs CHANNEL MANIFEST_ROOT )
234247 cmake_parse_arguments (NAM "${options} " "${oneValueArgs} " "" ${ARGN} )
235248
236249 if (NOT DEFINED NAM_CHANNEL OR "${NAM_CHANNEL} " STREQUAL "" )
237250 set (NAM_CHANNEL "media" )
238251 endif ()
239252
240- _nam_get_channel_root (_channel_root CHANNEL "${NAM_CHANNEL} " )
253+ _nam_get_channel_root (_channel_root CHANNEL "${NAM_CHANNEL} " MANIFEST_ROOT " ${NAM_MANIFEST_ROOT} " )
241254 file (GLOB_RECURSE _dvc_files "${_channel_root} /*.dvc" )
242255 list (SORT _dvc_files)
243256
@@ -246,6 +259,7 @@ function(nam_get_channel_asset_keys OUT_VAR)
246259 _nam_parse_dvc_file (
247260 DVC_FILE "${_dvc} "
248261 CHANNEL "${NAM_CHANNEL} "
262+ MANIFEST_ROOT "${NAM_MANIFEST_ROOT} "
249263 OUT_RELATIVE_PATH _relative_path
250264 OUT_RELEASE_ASSET _release_asset
251265 OUT_KEY _key
@@ -257,7 +271,7 @@ endfunction()
257271
258272function (_nam_find_channel_asset )
259273 set (options)
260- set (oneValueArgs CHANNEL ASSET OUT_RELATIVE_PATH OUT_RELEASE_ASSET OUT_KEY)
274+ set (oneValueArgs CHANNEL MANIFEST_ROOT ASSET OUT_RELATIVE_PATH OUT_RELEASE_ASSET OUT_KEY)
261275 cmake_parse_arguments (NAM "${options} " "${oneValueArgs} " "" ${ARGN} )
262276
263277 if (NOT DEFINED NAM_CHANNEL OR "${NAM_CHANNEL} " STREQUAL "" )
@@ -267,7 +281,7 @@ function(_nam_find_channel_asset)
267281 message (FATAL_ERROR "NablaAssetManifests: ASSET is required" )
268282 endif ()
269283
270- _nam_get_channel_root (_channel_root CHANNEL "${NAM_CHANNEL} " )
284+ _nam_get_channel_root (_channel_root CHANNEL "${NAM_CHANNEL} " MANIFEST_ROOT " ${NAM_MANIFEST_ROOT} " )
271285 file (GLOB_RECURSE _dvc_files "${_channel_root} /*.dvc" )
272286 list (SORT _dvc_files)
273287
@@ -276,6 +290,7 @@ function(_nam_find_channel_asset)
276290 _nam_parse_dvc_file (
277291 DVC_FILE "${_dvc} "
278292 CHANNEL "${NAM_CHANNEL} "
293+ MANIFEST_ROOT "${NAM_MANIFEST_ROOT} "
279294 OUT_RELATIVE_PATH _relative_path
280295 OUT_RELEASE_ASSET _release_asset
281296 OUT_KEY _key
@@ -427,7 +442,7 @@ endfunction()
427442
428443function (nam_add_channel_target )
429444 set (options NO_SYMLINKS VERBOSE)
430- set (oneValueArgs TARGET CHANNEL REPO TAG CACHE_ROOT DESTINATION_ROOT SHOW_PROGRESS)
445+ set (oneValueArgs TARGET CHANNEL MANIFEST_ROOT REPO TAG CACHE_ROOT DESTINATION_ROOT SHOW_PROGRESS)
431446 set (multiValueArgs ITEMS)
432447 cmake_parse_arguments (NAM "${options} " "${oneValueArgs} " "${multiValueArgs} " ${ARGN} )
433448
@@ -450,17 +465,19 @@ function(nam_add_channel_target)
450465 set (NAM_SHOW_PROGRESS ON )
451466 endif ()
452467
468+ _nam_resolve_manifest_root (_manifest_root MANIFEST_ROOT "${NAM_MANIFEST_ROOT} " )
469+
453470 if (NAM_ITEMS)
454471 set (_items ${NAM_ITEMS} )
455472 else ()
456- nam_get_channel_asset_keys (_items CHANNEL "${NAM_CHANNEL} " )
473+ nam_get_channel_asset_keys (_items CHANNEL "${NAM_CHANNEL} " MANIFEST_ROOT " ${_manifest_root} " )
457474 endif ()
458475
459476 list (LENGTH _items _item_count)
460477 _nam_get_backend_kind (_backend_kind )
461478 _nam_resolve_cache_root (_cache_root CACHE_ROOT "${NAM_CACHE_ROOT} " )
462479 _nam_include_externaldata (_externaldata_provider )
463- _nam_summary ("configure channel target `${NAM_TARGET} `: channel=`${NAM_CHANNEL} `, repo=`${NAM_REPO} `, tag=`${NAM_TAG} `, backend=`${_backend_kind} `, externaldata=`${_externaldata_provider} `, cache_root=`${_cache_root} `, total=${_item_count} " )
480+ _nam_summary ("configure channel target `${NAM_TARGET} `: channel=`${NAM_CHANNEL} `, manifest_root=` ${_manifest_root} `, repo=`${NAM_REPO} `, tag=`${NAM_TAG} `, backend=`${_backend_kind} `, externaldata=`${_externaldata_provider} `, cache_root=`${_cache_root} `, total=${_item_count} " )
464481
465482 _nam_get_github_release_index_file (_index_file REPO "${NAM_REPO} " TAG "${NAM_TAG} " CACHE_ROOT "${NAM_CACHE_ROOT} " )
466483
@@ -495,6 +512,7 @@ function(nam_add_channel_target)
495512 foreach (_asset IN LISTS _items)
496513 _nam_find_channel_asset (
497514 CHANNEL "${NAM_CHANNEL} "
515+ MANIFEST_ROOT "${_manifest_root} "
498516 ASSET "${_asset} "
499517 OUT_RELATIVE_PATH _relative_path
500518 OUT_RELEASE_ASSET _release_asset
0 commit comments