From 20a017681dce547f0246651e8152aaf84c0c0f27 Mon Sep 17 00:00:00 2001 From: Sean Whitton Date: Thu, 3 Mar 2022 15:19:39 -0700 Subject: rework prerequisite data naming conventions & add some validation We now give an exhaustive specification of which IDEN1 are valid, rather than simply reserving some patterns. Also introduce terminology of "prerequisite data identifiers". Drop the idea that IDEN1 might be nil. Additionally reserve IDEN1 beginning with three hyphens. State that third party extensions shouldn't use _CONTEXT. Disallow forms not listed. Thanks to David Bremner for discussion. Signed-off-by: Sean Whitton --- src/data.lisp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'src/data.lisp') diff --git a/src/data.lisp b/src/data.lisp index 307d0c1..ac5c6e9 100644 --- a/src/data.lisp +++ b/src/data.lisp @@ -1,6 +1,6 @@ ;;; Consfigurator -- Lisp declarative configuration management system -;;; Copyright (C) 2021 Sean Whitton +;;; Copyright (C) 2021-2022 Sean Whitton ;;; This file is free software; you can redistribute it and/or modify ;;; it under the terms of the GNU General Public License as published by @@ -173,6 +173,9 @@ This function is called by property :APPLY and :UNAPPLY subroutines." (missing-iden1 condition) (missing-iden2 condition))))) (defun %get-data (iden1 iden2) + (alet (first-char iden1) + (unless (or (char= #\_ it) (char= #\- it) (valid-hostname-p iden1)) + (simple-program-error "Invalid IDEN1: ~S" iden1))) (let* ((idenpair (cons iden1 iden2)) (from-source (query-data-sources iden1 iden2)) (from-source-version (and from-source (car from-source))) -- cgit v1.2.3