Download

Sources

not relevant

https://github.com/pluginsGLPI/empty

这个插件什么…也没做。真的!

这是设计用于编写插件的起点,具有非常有用的脚本默认值和一些建议。如果您正在寻找插件的可能性,请查看:doc:示例插件<../example/index>

新建插件

提供了一个用于创建新插件的实用程序脚本 - “plugin.sh”。您将使用插件名称,版本,可选择的路径来调用它:

$ ./plugin.sh MyGreatPlugin 0.0.1

该脚本将对您提供的名称进行审查和小写,将模板文件复制到新目录中,然后进行一些替换。

使用没有目标参数的脚本,它将创建你的目录插件,``mygreatplugin``就在它自己的目录旁边。否则,它将在指定的路径中创建新目录:

$ ./plugin.sh MyGreatPlugin 0.0.1 /path/to/glpi/plugins/

更新现有插件

没有自动更新现有插件的方法,因为要处理的案例太多。但不要担心,程序很简单;)

使用空功能就像创建一些文件一样简单:

  • composer.json,

  • .travis.yml,

  • Robofile.php,

  • .gitignore.

如果您还没有任何composer或travis配置文件,则可以从空插件中复制那些文件。在你``composer.json``中,只需添加:

{
  "minimum-stability": "dev",
  "prefer-stable": true
}

然后运行``composer require glpi-project/tools``。

在travis配置文件中,只需添加CS调用:

script:
  - vendor/bin/robo --no-interaction code:cs

在``.gitignore``文件中,添加以下内容:

dist/
vendor/
.gh_token
*.min.*

至于Robo.li配置文件,请注意嵌入空插件的那个有点特别,你必须编辑它才能使它正常工作。有关更多信息,请参见下文。

最后,由于``tools``项目将为您提供一些功能,您可以删除重复的工具脚本(例如``release``,extract_template.sh,…等文件)。

特征

编码标准

GLPI PHPCodeSniffer rulesets以``vendor/glpi-project/coding-standard/GlpiStandard/``的形式提供。

检查编码标准,只需使用Robo.li任务``code:cs``:

$ ./vendor/bin/robo code:cs

备注

上面的命令将忽略``vendor``并在当前目录上运行。

如果你想修改忽略列表或检查目录,你可以在插件的``RoboFile.php``中覆盖``$csignore``和/或``$csfiles``:

<?php

class RoboFile extends Glpi\Tools\RoboFile
{
   protected $csignore = ['/vendor/', '/lib/'];
   protected $csfiles  = ['./', 'setup.php.tpl']
   [...]
}

自动检查

为了方便;还提供了``.travis.yml``文件,设置为:

  • 检查编码标准,

  • 在不同的配置上运行堆

您仍然必须从网站启用travis-ci构建才能激活自动化测试。

当然,``.travis.yml``文件可能原型;您可以运行单元测试,创建/更新数据库,激活通知等。请参阅`Travis-CI文档<https://docs.travis-ci.com/>`_了解更多信息。

Minifying CSS and JS

警告

Disabled as of 0.1.13, because libs used from Robo are out of date and connot be replaced.

使用`Robo.li <http://robo.li>`_提供了一个方便的脚本。``RoboFile.php``文件是一个空类,它扩展了``GlpiToolsRoboFile``(由``glpi-project/tools``依赖提供),你可以在其中设置自己的东西。

这样,您可以非常轻松地更新公共文件并使您自己的任务保持不变。

要安装所需的库,你必须“安装镜像<http://getcomposer.org>`_然后运行:

$ composer install -o

有三个目标:

  • ``minify``将缩小所有CSS和JS文件(见下文),

  • minify:css``将缩小插件的``css``目录中的所有css样式表文件,创建一个.min.css``版本以及原始文件,

  • minify:js``将缩小插件的``js``目录中的所有javascript文件,创建一个.min.js``版本以及原始文件。

只需选择目标,然后执行以下操作:

$ ./vendor/bin/robo minify:css

备注

请记住,不应在存储库源上提交已编译的文件。这是一个缩小文件的发布过程。

还记得调整你的脚本,以便加载如果可用的缩小版本,原来的版本:)

截至GLPI 9.2;使用``add_css``和``add_javascript``挂钩时,你不必关心加载缩小的文件!你只需要调用不缩小的脚本;如果存在,则GLPI将使用缩小版本,如果不存在,则使用“DEBUG”模式。

翻译

GLPI及其插件使用gettext进行国际化。在此之前需要执行几个步骤:

1 必须从源文件中提取1个可翻译的字符串,相应地创建或更新``POT``文件,2 ``PO``文件必须从``POT``文件创建或更新,3``PO``文件必须翻译,4``MO``文件必须从最新的``PO``编译。

在``vendor/bin``目录中,你会找到一个``extract_template.sh``脚本。这旨在从源代码中提取可翻译的字符串(请参阅上面的第一点)。

一旦运行,将创建/更新``locale/mygreatplugin.pot``文件。

对于第二步和第三步,您必须做出选择。您可以使用gettext工具更新``PO``文件并使用专用工具进行翻译,例如`poedit <https://poedit.net/>`_;或者你可以使用在线翻译系统,如`Transifex <http://transifex.com/>`_或`Zanata <http://zanata.org/>`_。GLPI核心和许多现有插件现在都使用Transifex进行翻译。

一旦获得更新的``PO``文件,就必须将它们编译为``MO``文件。你可以手动运行它,发布脚本会再次编译它们;请参阅:ref:编译MO文件部分<compile_mo>

发布脚本

在``vendor/bin/plugin-release``中提供了一个发布脚本。这是一个“简单的”Python script;你应该在系统上安装Python(默认安装在大多数Linux发行版上)。

警告

Note that the release script is only compatible if you use semantic versionning!

仅使用默认值,脚本将尝试检索git存储库中的最新标记,添加第三方依赖项并在github项目上创建“Release”:

$ ./vendor/bin/plugin-release
Do you want to build version 1.9.5? [Yes/no] y
Building glpi-order-1.9.5...
Archiving GIT tag 1.9.5
Adding vendor libraries
$ ls dist
glpi-order-1.9.5.tar.bz2  glpi-order-1.9.5.tar.bz2.asc

要求

您将需要安装python解释器以及以下模块:

  • termcolor,

  • gitdb,

  • github <https://github.com/PyGithub/PyGithub>`_(在草稿中检查现有版本,并创建github版本),除非你使用`–nogithub``选项

如果你想获得有关脚本的帮助,请尝试运行``./vendor/bin/plugin-release -h``。

进程

发布过程将为您完成以下任务:

  • 检查版本常量是否与您请求的标记相同;

  • 检查网站XML文件中的版本是否与您请求的标记相同;

  • 检查版本是否已存在,本地和远程(假设您的项目托管在* pluginsGLPI *组织中,并且该版本是公开的);

  • 制作一个未被排除的路径的`git archive`(.gittoolstests,…);

  • 如果有的话,请安装composer依赖项;

  • 如果有的话,编译你的``MO``文件;

  • 如果有的话,编译你的CSS样式表和Javascript文件(使用`Robo.li <http://robo.li>`_);

  • 创建一个包含所有这些的发布存档;这将在``dist``目录中提供;

  • 使用GPG对存档进行签名。

备注

标准的发布过程不能直接对你的文件起作用,它会在``dist/src``目录中复制。唯一的例外是:ref:MO编译选项<compile_mo>

在进行实际发布之前检查是否一切正常;创建你的标签并在推动你的标签**之前运行`./vendor/bin/plugin-release -C`` **。这样,您就可以解决潜在问题并在本地重新创建标记(请记住,发布的标记应该永远不会被删除)。

编译MO文件

发布过程将自动编译它将在``locales``目录中找到的每个``PO``文件。但是你可能希望源包含最后的``MO``文件,用于测试目的。发布脚本提供``–compile-mo``(或``-m``)来实现:

$ ./vendor/bin/plugin-release --compile-mo

警告

以上命令将直接对您的插件文件起作用;不像其他命令那样在副本上。

预览版

默认情况下,发布脚本仅适用于现有标记。任何预发布都应该有自己的标签;但在某些情况下,您可能希望创建没有任何标记的版本存档。

为了告诉发布脚本它应归档的内容,您必须指定几个参数:

  • --commit``(或-c``)给出提交哈希,

  • --release``(或-r``)给出发布版本(通常,它将是下一个发行版本),

  • --extra``(或-e``)指定一个额外的字符串(例如* alpha beta rc1 *等…)

作为* order *插件的示例:

$ ./vendor/bin/plugin-release --commit 632d515d4ac0 --release 1.9.5 --extra alpha1
$ ls dist
glpi-order-1.9.5-alpha1-20161103-632d515d4a.tar.bz2

签署版本

使用GPG密钥签名版本将允许用户在安装之前检查下载完整性。您需要向用户公开提供GPG密钥;默认情况下会激活sign选项,您可以使用``–nosign``(或``-S``)选项取消激活。

将在``dist``目录中创建一个包含与具有“.asc``扩展名的存档同名的签名的文件。

GitHub发布

发布脚本将在您的GitHub存储库上创建一个发布版本,除非您使用``–nogithub``(或``-g``)选项。

备注

不幸的是,我无法将新创建的档案上传到这个新版本……也许这可以在将来修复。

要使用此功能,您需要安装`github <https://github.com/PyGithub/PyGithub>`_;你需要一个访问口令。访问口令对每个用户有效,并提供对其所有存储库的访问权限。

您必须访问个人访问令牌选项卡<https://github.com/settings/tokens>`_中的`github帐户设置页面。单击*生成新令牌*,给出您想要的描述,并确保您只检查* public_repo *框(无需检查任何其他内容,如果需要,您可以创建多个访问令牌)。

令牌只会显示一次;将它存储在插件目录中的``.gh_token``文件中;结束!

Excluding files

You can create a .ignore-release file at the root of your plugin and list here files and directories you want to explicitely exclude from the release archive. Write one expression per line

.+\.png
screenshots/

Some files will automatically be excluded:

  • .git*,

  • .gh_token

  • .tx/

  • tools/

  • tests/

  • .atoum.php

  • .travis.yml

  • .circleci/

  • .ignore-release

  • composer.lock

  • Robofile.php

|CC-BY-NC-ND|