forikal-uk / xml-authoring-project
结构化的目录,用于创建、读取、更新或删除xml文件。
Requires
- xmlsquad/capture-lookups: 0.3.3
- xmlsquad/gsheet-to-xml: 0.3.3
- xmlsquad/ping-drive: 0.3.3
- xmlsquad/xml-authoring-library: 0.3.3
- xmlsquad/xml-authoring-tools: 0.3.3
- xmlsquad/xmlauthor-example-command: 0.3.3
Requires (Dev)
- phpunit/phpunit: ^7.1
This package is not auto-updated.
Last update: 2019-02-20 19:23:35 UTC
README
一个结构化目录,用于构建和存储xml文件。
这是一个项目模板,它构成了创建特定客户的xml-authoring-directory的基础。
先决条件
- Git
- PHP
- 全局安装Composer
使用命令
安装依赖项
对于用户
$ 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
因此,尽管它可能看起来有些痛苦。它是无害的。因此,我们忽略它。我们将在项目更加稳定后将其删除。