jasonterando/config-validator

收集和验证配置信息的实用程序

0.1.0 2018-04-04 05:46 UTC

This package is not auto-updated.

Last update: 2024-09-29 05:41:54 UTC


README

概述

这是一个实现了自动加载的实用程序,它提供了一种机制来确保部署的配置文件符合任何依赖项的要求。它应在开发或部署时执行。

应用程序及其/或每个依赖项都定义了一个配置定义文件。当配置验证实用程序执行时,该实用程序将应用程序配置与包含在依赖项中的配置定义进行比较。

目前,配置定义文件位于使用Autoload PSR-4和Classmap目录中包含的目录。应用程序配置文件使用Zend的模块管理器约定(module_listener_options/module_paths)检索。预计将来将添加额外的机制来检索配置定义和应用程序配置。

安装和使用

安装

要使用此

  1. 运行 composer require jasonterando/configuration-validator
  2. 将composer脚本行添加到composer.json中
{
    "scripts": {
        "config-validate": "ConfigurationValidator\\Scripts::ConfigValidate",
        "config-save-template": "ConfigurationValidator\\Scripts::ConfigSaveTemplate"
    }
}

使用方法

从应用程序的主要目录中,运行composer config-validate以运行验证。如果一切正常,将显示成功消息,退出码为零。

如果验证失败,由于缺少或无效的配置条目,将显示警告,退出码为-2。

如果由于致命错误无法运行验证,将显示异常消息,退出码为-1。

如果您需要从头开始创建配置验证文件,可以运行composer config-save-template,这将创建一个基于应用程序当前配置的定义文件,您可以根据需要对其进行细化并包含到您的模块/库中。请注意,此文件将包括所有应用程序配置,因此您可能需要删除不需要特定模块的条目,并且在将文件移动到模块文件夹之前设置一些类型。

上面显示的两个Composer脚本都可以与debug参数一起运行,以提供有关正在访问的文件的更多信息。

CI/CD集成

在部署过程中,在安装/更新配置文件后,运行composer config-validate以验证配置。任何非零退出码都应被视为失败并停止部署。

配置定义

配置定义文件格式

配置定义文件是YAML格式。它们可以命名为config-definition.yamlconfig-definition.yml,并位于Autoload项目的composer.json中定义为PSR-4或Classmap路径的任何目录中。例如

service1:
   endpoint: url
   credentials:
      key: string
      secret: string
options:
   timeout:
      type: integer
      required: false
   logo: file
   logs: directory
   copyright

树中的每个叶子节点对应一个配置项,位于其父节点的层次结构中。配置项有两个属性,类型必需。默认情况下,配置项可以是任何类型,并且是必需的。

在上面的示例中,最后的配置项“版权”可以是任何值,但必须在应用程序配置中存在。如果存在“超时”属性,则不需要在应用程序配置文件中存在,但如果存在,则必须是一个整数(整数)。

有两个条目,“logo”和“logs”,分别必须是一个现有文件和一个目录。请注意,此检查是在测试运行的用户上下文中进行的,这可能与应用程序本身运行的上下文不同,因此这不是一个100%万无一失的检查。

对于“service1”,其端点配置项是必需的,并且必须是一个有效的URL。“key”和“secret”配置项必须定义在“凭证”下,并且必须是非空字符串。

对于这个示例,一个有效的配置文件可能看起来像这样

<?php
return [
   'service1' => [
       'endpoint' => 'https://foo.com/service1',
       'credentials' => [
           'key' => 'abc',
           'secret' => 'def'
       ]
   ],
   'options' => [
       'copyright' => '(c) Me 2018',
       'logo' => '/var/shared/company.jpg',
       'logs' => '/var/log/foo',
   ]
]

配置定义项类型

以下类型目前受支持

  • any:可以是任何值,包括空值
  • string:可以是PHP能将其渲染为字符串的任何内容,但不能为空
  • number:任何数值
  • integer:任何整数(正数或负数),但没有小数部分
  • boolean:任何布尔值(true/value,y/n,yes/no)
  • url:任何结构良好的URL
  • directory:一个现有且可访问的目录
  • file:一个现有且可访问的文件

开发

单元测试

可以通过在库的主要文件夹中运行 vendor/bin/phpunit 来执行单元测试,包括代码覆盖率。

待办事项

  • 添加对PSR-0的支持
  • 添加对其他框架的应用配置文件存储(Symphony?)的支持
  • 为Autoload和应用配置文件等添加更积极的定位和/或配置设置(某个地方)