forikal-uk/xml-authoring-project

此软件包已被废弃,不再维护。作者建议使用https://github.com/xmlsquad/xml-authoring-project软件包代替。

结构化的目录,用于创建、读取、更新或删除xml文件。

v0.3.3 2018-10-17 08:14 UTC

This package is not auto-updated.

Last update: 2019-02-20 19:23:35 UTC


README

一个结构化目录,用于构建和存储xml文件。

这是一个项目模板,它构成了创建特定客户的xml-authoring-directory的基础。

先决条件

使用命令

安装依赖项

对于用户

$ composer install

开发者可能希望使用--prefer-source来工作在依赖组件的git仓库中)

$ composer install --prefer-source
  • 尝试从xml-authoring-tools中的示例hello-world命令

    # Stream some example content into the config file (creating it if it does not exist) 
    $ pwd
    /Users/x/Documents/Projects/XmlAuthoringSuite/xml-authoring-project
    $ cat vendor/xmlsquad/xmlauthor-example-command/XmlAuthoringProjectSettings.yaml.dist >> XmlAuthoringProjectSettings.yaml
    
    # Try
    bin/console hello-world
  • (可选) 需要额外的命令包

    composer require xmlsquad/some-package

    要研究/尝试所需的包中的命令 - 请参阅包的README.md

谁需要这个?

所以,你是一名负责创建和编辑客户Xml文件的工作人员。

我们有一位客户希望创建一些Xml文件。我们需要在您的计算机上设置一个文件夹,作为客户Xml项目的“工作目录”。

我们使用Git SCM来跟踪该目录中文件的变化。

xml-authoring-project的每个实例在其根目录中都有一个composer.json文件,该文件指定了一个不断增加的定制软件工具集,可以加快您最重复的任务。

定制软件工具

这些工具是为在xml-authoring-project的上下文中工作而构建的。

我们将使用软件工具来

  • 操纵和查询存储在此目录中的Xml文件;
  • Bitbucket Pipelines中运行时,在提交更改时测试和报告Xml文件的状态。

我们还使用自定义工具(以及项目的配置设置)将客户的Google Sheets转换为存储在此处的Xml片段。

入门

我们假设您已安装

导航到您的项目目录

  • 在工作站上,打开MacOs Terminal或Windows Git Bash
  • 导航到您在计算机上存储Xml作者项目的文件夹。
$ cd /Users/Bob/Documents/Projects/XmlAuthoring

给定一个客户端,我们可能已经或者尚未将其工作目录设置为云中的git仓库。

使用现有的工作目录。

  • 确定该客户端工作目录的"origin" Git仓库位置(询问账户经理)。
  • 运行git clone以获取客户端工作目录的本地副本。
  • 使用cd切换到工作目录。

现在,你应该可以开始修改Xml文件了。

一旦编辑完成,使用git将更改提交到origin

为客户端设置新的Xml创作项目工作目录

我们创建一个新的git仓库(基于此xml-authoring-project),然后更改远程仓库并将其推送到我们的git托管解决方案。实际上,我们分叉了它

  • 确保为客户端创建了一个空的"origin" Git仓库(询问客户的账户经理)。
  • 运行git clone以获取https://github.com/xmlsquad/xml-authoring-project的本地副本。
  • 使用cd切换到工作目录。
  • 使用git remote set-url命令将origin设置为客户端的仓库。例如。
$ git remote set-url origin git@github.com:path/to/git/repo.git

查询设置以确保它已成功。

$ git remote -v
origin	git@github.com:path/to/git/repo.git (fetch)
origin	git@github.com:path/to/git/repo.git (push)
  • git push将基本项目推送到客户端的origin仓库。

确保工具已安装

  • 运行composer install以确保所有工具都已安装。

现在,你应该可以开始修改Xml文件了。

一旦编辑完成,使用git将更改提交到origin

配置工具

作为最终用户,您需要将一些配置文件添加到项目的根目录。

连接到GSuite

注意:在编写本文时,我们有两个正在连接到GSuite的子项目。每个项目的开发者都获得了自由,以他们需要的方式解决Google API身份验证的问题。在接下来的几个小时里,我将查看所有解决方案,并选择一个作为最终方法。

同时,您可以复制其他开发者使用的模式,以确定您的凭证文件将存储的位置。

检查项目的开发分支和pull请求。那些连接到GSuite的是

  • gsheet-to-xml - 给定Google电子表格的URL,这个Symfony控制台命令获取Google电子表格并以Xml形式输出。
  • ping-drive - 报告其定位和读取Google Drive文件夹或文件内容的尝试的Symfony控制台命令。

正在构建的第三个子项目是

  • capture-lookups - 一个Symfony 3.4控制台命令。当给出包含Google电子表格URL的配置文件时,获取它们并将它们作为CSV文件存储在本地。

我们在以下位置有一个共享代码的库

XmlAuthoringProjectSettings.yaml

为公司的每位客户创建一个xml-authoring-project的实例。此配置文件用于存储客户端的配置信息,如GSuite上客户端密钥文件和文件夹的位置。

使用工具

请参阅: https://github.com/xmlsquad/xml-authoring-tools

保持工具更新

自定义工具一直在改进。

要更新到工具的最新版本。

  • 首先确保所有客户端文件的更改都已提交并推送到仓库
  • 在命令行终端中,导航到客户端工作目录的根目录,并运行 composer update

已知问题

我们使用OAuth身份验证来访问Google Sheets的bin/console inventory:gsheet-to-xml命令。

然而,当您首次运行该命令时,它会要求输入授权码,但不会提供如何获取授权码的建议。

解决方案是运行不同的命令ping-drive,以“登录”并保存您的身份验证令牌。完成后,gsheet-to-xml将使用该令牌访问Google Sheets。

示例

假设您有一个Google OAuth密钥,并且XmlAuthoringProjectSettings.yaml定义了OAuth密钥(gApiOAuthSecretFile)的位置和令牌文件(gApiAccessTokenFile)的名称。

确保您已导航到项目文件夹

$ pwd
/Users/x/Documents/Projects/XmlAuthoringSuite/xml-authoring-project

运行 ping-drive

$ bin/console ping-drive  https://drive.google.com/drive/folders/<someFolderID> 
You need to authenticate to your Google account to proceed
Open the following URL in a browser, get an auth code and paste it below:

<UrlToGetTheAuthCode>

Auth code: <AuthCode>

现在您可以使用令牌运行inventory:gsheet-to-xml

开发说明

Composer验证通知是正常的

团队 使用一种技巧 来检查依赖项。这种技巧在项目的composer.json文件被composer validate检查时会产生一个验证警告。

$ pwd
/Users/x/Documents/Projects/XmlAuthoring/xml-authoring-project
$ composer validate
./composer.json is valid for simple usage with composer but has
strict errors that make it unable to be published as a package:
See https://getcomposer.org/doc/04-schema.md for details on the schema
The property repositories-local is not defined and the definition does not allow additional properties

因此,尽管它可能看起来有些痛苦。它是无害的。因此,我们忽略它。我们将在项目更加稳定后将其删除。