consolidation/site-alias

管理本地和远程站点的别名记录。


README

管理本地和远程站点的别名记录。

ci scrutinizer codecov License

概述

此项目提供了Drush站点别名的实现。它在Drush 9及更高版本中使用。也可以使用此库来管理类似命令行工具的站点别名。

别名命名规范

站点别名名称始终以一个 @ 开头,通常分为三部分:别名文件位置(可选)、站点名称和环境名称,每个部分之间用点分隔。这些名称中不能包含点。例如,一个引用了 myisp 目录中 example 站点 dev 环境的别名可能看起来如下

@myisp.example.dev

位置名称是可选的。如果指定,它将只考虑位于具有相同位置名称的目录中的别名文件。路径的其余部分无关紧要;只有站点别名文件的直接父目录是相关的。位置名称可以省略,例如

@example.dev

如果没有指定位置,则别名管理器将考虑所有适用的站点别名文件的位置。请注意,默认情况下,深度搜索是禁用的;除非应用程序明确启用深度搜索,否则位置名称必须引用显式列出以放置站点别名文件的位置(例如,在应用程序的配置文件中)。

还可以使用单词别名。这些有时可能具有歧义;别名管理器将按以下方式解析单词别名

  1. @self 被解释为已选择的站点,或者在没有任何别名的情况下将要选择的站点。
  2. @none 被解释为空别名——没有定义任何项的别名。
  3. @<env>,对于任何 <env>,如果定义了这样的别名,则等同于 @self.<env>。见下文。
  4. @<site>,对于任何 <site>,等同于 <site> 的默认环境,例如 @<site>.<default>。默认环境默认为 dev,但在别名中可以明确设置。

在命令行上放置别名

每个单独的命令行工具如何利用别名由各自决定。有两个主要示例

  1. 站点选择别名: tool @sitealias command
  2. 别名参数: tool command @source @destination

在第一个示例中,别名出现在命令名称之前,别名用于确定当前命令的目标站点。在第二个示例中,命令的参数用于指定源站点和目标站点。

别名文件名和位置

每个单独的命令行工具也决定在哪里搜索别名文件。可以通过API调用将搜索位置添加到SiteAliasManager。默认情况下,只有别名文件出现在指定的搜索位置之一中时,才能找到别名文件。深度搜索只有在应用程序明确启用时才会执行。

别名通常存储在Yaml文件中,但也可以使用其他格式,如果提供了自定义别名数据文件加载器。文件的扩展名决定了加载器类型(.yml用于Yaml)。文件的基本名称(不带扩展名)是在命令行上用于表示别名的站点名称。站点名称不能包含点。

别名文件内容

规范站点别名将包含有关如何在本地文件系统中定位站点的信息,以及站点在网络上的地址(当通过网页浏览器访问时)。

dev:
  root: /path/to/site
  uri: https://example.com

更复杂的别名可能还会包含有关站点运行的服务器信息(当通过ssh进行部署和维护时)。

dev:
  root: /path/to/site
  uri: https://example.com
  remote: server.com
  user: www-data

通配符环境

还可以定义“通配符”环境,该环境将匹配任何提供的环境名称。只有在通配符别名的所有内容都相同,除了出现环境名称的位置之外,才能做到这一点。要将环境名称替换到通配符域名中,请使用变量替换字符串${env-name}。例如,以下示例可能是一个匹配Drupal站点的任何多站点的通配符别名:

'*':
  root: /wild/path/to/wild
  uri: https://${env-name}.example.com

'Self'环境别名

如前所述,形式为@<env>的别名被解释为@self.<env>。这允许站点定义一个包含团队共享的常见别名的self.site.yml文件——例如,@stage@live

站点规范

站点规范是专门设计的命令行参数,可以用作简单站点别名的替代。站点规范对于可能希望在不生成临时别名文件的情况下在远程站点上运行的脚本特别有用。

站点规范的基本形式是

user.name@example.com/path#uri

这相当于以下别名记录

env:
  user: user.name
  host: example.com
  root: /path
  uri: somemultisite

入门

要开始为此项目做出贡献,只需在本地克隆它,然后运行composer install

运行测试

可以通过一些简单的composer脚本在本地运行测试套件

开发命令行工具

此库附带一个名为alias-tool的命令行工具。该工具的唯一目的是为此库提供一种进行临时实验和测试的方法。

示例

$ ./alias-tool site:list tests/fixtures/sitealiases/sites/

 ! [NOTE] Add search location: tests/fixtures/sitealiases/sites/                                    

'@single.alternate':
  foo: bar
  root: /alternate/path/to/single
'@single.dev':
  foo: bar
  root: /path/to/single
'@wild.*':
  foo: bar
  root: /wild/path/to/wild
  uri: 'https://*.example.com'
'@wild.dev':
  foo: bar
  root: /path/to/wild
  uri: 'https://dev.example.com'

$ ./alias-tool site:get tests/fixtures/sitealiases/sites/ @single.dev

 ! [NOTE] Add search location: tests/fixtures/sitealiases/sites/                                    

 ! [NOTE] Alias parameter: '@single.dev'                                                            

foo: bar
root: /path/to/single

请参阅./alias-tool help./alias-tool list以获取更多信息。

发布流程

要创建一个发布

  • 编辑VERSION文件以包含要发布的版本,然后提交更改。
  • 运行composer release

构建工具

此库是用g1a/starter项目创建的,这是一种快速创建php库和Robo / Symfony应用程序的方法。

贡献

请阅读CONTRIBUTING.md以获取有关向我们提交拉取请求的流程的详细信息。

版本控制

我们使用SemVer进行版本控制。有关可用版本,请参阅发布页面。

作者

  • Greg Anderson
  • Moshe Weitzman

还可以查看参与此项目的贡献者列表。还要感谢所有直接或间接为站点别名做出贡献的drush贡献者

许可证

本项目采用MIT许可证——有关详细信息,请参阅LICENSE文件。