跳转到主要内容

用于创建Plone包的Plone CLI

项目描述

https://github.com/plone/plonecli/actions/workflows/python-package.yml/badge.svg Latest Version PyPI - Python Version

Plone CLI

https://raw.githubusercontent.com/plone/plonecli/master/docs/plone_cli_logo.svg

用于创建Plone包的Plone CLI

Plone CLI旨在用于开发Plone包,我们 不会 添加安装或运行生产中Plone的功能。为此,我们应该构建另一个包,比如 plonectl,它将提供安装和部署功能。

它还默认支持GIT,以跟踪对模板所做的更改。

安装

我们将plonecli安装到全局用户的site-packages中,这样我们就可以在多个项目中使用它。

版本号高于0.1.1b4的版本可以像其他任何包一样使用pip进行安装.

pip install plonecli --user
plonecli -l

要升级plonecli,只需执行

pip install -U plonecli --user

注意:有时在升级后,您系统中可能会保留bobtemplates.plone的旧版本。解决此问题的最佳方法是多次卸载bobtemplates.plone,直到它显示“没有安装任何包”。

请确保安装目录在$PATH(例如:export PATH=$PATH:$HOME/.local/bin/)中。

注意:我们现在使用的是CLICK库的原始版本,请在安装新的plonecli版本之前卸载plonecli-click。

如果您想使用pipenv与plonecli一起使用,可以按照以下步骤操作

mkdir cli
cd cli
pipenv install plonecli
pipenv shell
plonecli -l

如果您使用其他工具(如pyenv virtualenv),同样适用。

注意:当使用pyenv或pipenv等工具时,您应该在您的.mrbob配置文件中将package.venv.disabled设置为y来禁用本地虚拟环境创建。您也可以使用plonecli配置来为您生成配置。

在macOS上的安装

将以下行添加到您的.bash_profile中。运行pip后,您可以根据您的系统看到文件的位置。

# plonecli
export PATH="$HOME/Library/Python/3.7/bin:$PATH"
source $HOME/Library/Python/3.7/bin/plonecli_autocomplete.sh

Bash自动完成

要启用自动完成,plonecli提供了plonecli_autocomplete.sh脚本,将以下bash命令放入您的bashrc

如果您在用户全局包中安装了plonecli

. ~/.local/bin/plonecli_autocomplete.sh

如果您在虚拟环境中安装了plonecli,它是这样的

. /path/to/your/virtualenv/bin/plonecli_autocomplete.sh

如果您使用pipenv安装了plonecli,您必须先找出虚拟环境路径

pipenv --virtualenv
/home/maik/.local/share/virtualenvs/pe-WnXOnVWH
. /home/maik/.local/share/virtualenvs/pe-WnXOnVWH/bin/plonecli_autocomplete.sh

对于除BASH之外的其他shell(如Zsh或Fish),请参阅click-docs:https://click.palletsprojects.com/en/7.x/bashcomplete/#activation

文档

完整文档可以在“docs”文件夹中找到,这将在某个时刻在Plone文档中提供。

注意:您可以为mr.bob问题设置默认答案,请参阅bobtemplates.plone README

有关plonecli使用的模板的详细信息,您可以在bobtemplates.plone文档中找到。https://bobtemplatesplone.readthedocs.io

用法

可用命令

plonecli --help
Usage: plonecli [OPTIONS] COMMAND1 [ARGS]... [COMMAND2 [ARGS]...]...

  Plone Command Line Interface (CLI)

Options:
  -l, --list-templates
  -V, --versions
  -h, --help            Show this message and exit.

Commands:
  build         Bootstrap and build the package
  buildout      Run the package buildout
  config        Configure mr.bob global settings
  create        Create a new Plone package
  debug         Run the Plone client in debug mode
  requirements  Install the local package requirements
  serve         Run the Plone client in foreground mode
  test          Run the tests in your package
  venv          Create/update the local virtual environment...

创建Plone插件

$ plonecli -l
Available mr.bob templates:
 - addon
  - behavior
  - content_type
  - indexer
  - portlet
  - restapi_service
  - subscriber
  - svelte_app
  - theme
  - theme_barceloneta
  - upgrade_step
  - view
  - viewlet
  - vocabulary
  - buildout

$ plonecli create addon src/collective.todo

向您的Plone插件添加功能

您可以通过子模板添加不同的功能。您也可以多次使用它们来创建同一类型的不同功能,例如两种不同的内容类型。

cd collective.todo

plonecli add behavior
plonecli add content_type
plonecli add theme
plonecli add view
plonecli add viewlet
plonecli add vocabulary

构建您的软件包

plonecli build

这将

python3 -m venv venv
./bin/pip install -r requirements.txt --upgrade
./bin/buildout bootstrap
./bin/buildout

在您的目标目录中运行。

您始终可以通过使用venvrequirementsbuildout而不是build来明确运行3个步骤。如果您想升级/重置构建,请在build上使用--upgrade--clear选项。

这将清除您的虚拟环境,然后安装要求,并运行buildout使用-n以获取最新版本。

运行您的应用程序

plonecli serve

运行应用程序测试

plonecli test

或运行特定的测试

plonecli test -t test_the_thing

或运行包括Robot测试在内的所有测试

plonecli test --all

组合命令

您可以像这样组合上述步骤

plonecli create addon src/collective.todo build test --all serve

开发者指南

设置开发者环境

git clone https://github.com/plone/plonecli/
cd plonecli
python3 -m venv venv .
./venv/bin/pip install -r requirements.txt
./venv/bin/pip install -e .[dev,test]
plonecli --help

运行测试

您可以使用以下命令运行测试

tox

或安装py.test并直接运行测试而无需tox

py.test test/

或单个测试

py.test test/ -k test_get_package_root

将Bobtemplates包注册到Plonecli

所有mr.bob模板都可以通过添加setup.py中的entry_point来为plonecli注册。

以下是bobtemplates.plone包的一些entry_points

entry_points={
    'mrbob_templates': [
        'plone_addon = bobtemplates.plone.bobregistry:plone_addon',
        'plone_buildout = bobtemplates.plone.bobregistry:plone_buildout',  # NOQA E501
        'plone_content_type = bobtemplates.plone.bobregistry:plone_content_type',  # NOQA E501
        'plone_view = bobtemplates.plone.bobregistry:plone_view',
        'plone_viewlet = bobtemplates.plone.bobregistry:plone_viewlet',
        'plone_portlet = bobtemplates.plone.bobregistry:plone_portlet',
        'plone_theme = bobtemplates.plone.bobregistry:plone_theme',
        'plone_theme_barceloneta = bobtemplates.plone.bobregistry:plone_theme_barceloneta',  # NOQA E501
        'plone_vocabulary = bobtemplates.plone.bobregistry:plone_vocabulary',  # NOQA E501
        'plone_behavior = bobtemplates.plone.bobregistry:plone_behavior',  # NOQA E501
        'plone_restapi_service = bobtemplates.plone.bobregistry:plone_restapi_service', # NOQA E501
    ],
},

entry_point名称用作mr.bob的全局模板名称。

您还需要提供一个bobregistry.py文件,其中包含每个entry_point的方法,它应与entry_point名称同名

# -*- coding: utf-8 -*-

class RegEntry(object):
    def __init__(self):
        self.template = ''
        self.plonecli_alias = ''
        self.depend_on = None
        self.deprecated = False
        self.info = ''


# standalone template
def plone_addon():
    reg = RegEntry()
    reg.template = 'bobtemplates.plone:addon'
    reg.plonecli_alias = 'addon'
    return reg


# sub template
def plone_theme():
    reg = RegEntry()
    reg.template = 'bobtemplates.plone:theme'
    reg.plonecli_alias = 'theme'
    reg.depend_on = 'plone_addon'
    return reg

对于您添加的每个模板,向entry_points添加一行,并在bobregistry.py中定义一个方法,该方法将返回一个包含一些属性的注册对象。

  • template - 包含实际mr.bob模板的名称。

  • plonecli_alias - 定义在 plonecli 中使用的模板的名称

  • depend_on:
    1. 对于独立模板,depend_on 属性为 None

    2. 对于子模板,depend_on 包含父独立模板的名称,通常是 addon

  • deprecated - 一个布尔值,表示此模板是否已弃用,将在未来的版本中删除

  • info - 当模板被弃用时将在模板旁边显示的消息

贡献

许可证

本项目采用 BSD 许可证。

历史

2.5 (2022-11-03)

  • 提供传递 mrbob 配置文件的方法 [erral]

2.4 (2022-10-10)

  • 依赖 bobtemplates.plone >=6.0b15 ;)

2.3 (2022-10-08)

  • 依赖 bobtemplates.plone >=6.0b16

2.2 (2022-05-04)

  • 移除对 virtualenv 的依赖。 [wesleybl]

  • 将已弃用的 autocompletion 参数重命名为 shell_complete [zshashz]

2.1.2 (2021-05-06)

  • 修复 2.1/2.1.1 版本的错误 [MrTango]

2.1.1 (2021-05-05)

  • 修复 setup.cfg - v2.1 是一个棕色纸袋发布。 [jensens]

  • 改进 README [svx]

2.1 (2021-05-05)

  • 使用 mr.bob 的 API 调用 mr.bob,不再作为子进程。这简化了在虚拟环境中的使用。 [jensens]

  • 不要使用 plonecli 安装 zest.releaser(保留用于 dev/tox)。 [jensens]

  • 如果不在 Python 2.7 上,则不安装 virtualenv [jensens]

2.0 (2020-12-10)

  • 发布

2.0b1 (2020-11-20)

  • 为 venv 命令添加别名 upport 和别名 “virtualenv” [MrTango]

  • 改进全局/本地命令的处理,我们使用 ClickFilteredAliasedGroup 来过滤命令,而不是在代码中使用 if 条件。 [MrTango]

2.0a2 (2020-11-19)

  • 修复 #63 generate_mrbob_ini 和相应的测试 [MrTango]

  • 停止支持 Python2.7 并将其从 tox 和 travis 设置中删除。同时使用新的 isort 和 black 改进代码审查。 [MrTango]

  • 添加配置命令以在 plonecli 构建命令上禁用 venv 的创建/更新 [MrTango]

  • 允许自动完成模板名称 [MrTango]

  • 改进 mrbob 配置生成,现在在警告后覆盖现有配置文件 [MrTango]

  • 修复拼写错误、ReST 格式化和更新 README.rst 的内容。 [staeff]

1.1 (2019-04-14)

  • 添加新的构建选项 -p 以定义用于虚拟环境的 Python 可执行文件 [MrTango]

1.0 (2019-03-08)

  • 添加说明,包括安装目录到 $PATH [fgrcon]

  • 记录新的 deprecatedinfo 选项 [erral]

  • 为 Python 3 支持现代化代码 [MrTango]

0.3.0 (2018-10-17)

  • 按 –list-templates/-l 命令输出排序模板 [MrTango]

  • 显示模板列表中的弃用标志和信息 [MrTango]

  • 使用现在已发布的 click 库(版本 >= 7.0),在升级之前您必须卸载 plonecli-click! [MrTango]

0.2.2 (2018-08-13)

  • 为测试命令添加 -t 和 -s 选项 [kakshay21]

  • 修复 #33 ConfigParser.NoOptionError [kakshay21]

0.2.1 (2018-07-09)

  • 添加 plonecli 配置命令以配置 mrbob 的全局用户设置 [kakshay21]

  • 添加 -V/–versions 命令以显示版本 [kakshay21]

  • 在 README 中添加 -h、-V、test 和 config 命令 [kakshay21]

0.2.0 (2018-04-03)

  • 添加测试命令以允许从 plonecli 运行测试 [MrTango]

0.1.1 (2018-03-28)

  • 通过颜色和删除详细选项改进命令行输出 [MrTango]

  • 将 virtualenv 作为依赖项并改进 README [MrTango]

0.1.1b6 (2018-03-28)

  • 修复顶级命令的自动补全 [MrTango]

0.1.1b5 (2018-03-27)

  • 使用 bobtemplates.plone>=3.0.0b5 [MrTango]

0.1.1b4 (2018-03-26)

  • 暂时使用 click 库的分支版本(plonecli-click)作为依赖项 [MrTango]

0.1.1b3 (2018-03-23)

  • 修复损坏的发布

0.1.1b2 (2018-03-22)

  • 修复 dist 在 PyPI 上的问题

0.1.1b1 (2018-03-22)

  • 添加 requirements.txt,引用特殊的 Click 版本。这使得 pip 安装成为可能。[jensens]

  • 将注册表重构为使用新的 bobtemplate.cfg [MrTango]

0.1.0a4 (2017-10-30)

  • 提供 plonecli_autocomplete.sh 用于 bash 自动补全 [MrTango]

  • 修复依赖项到 bobtemplates.plone,我们需要 >=3.0.0a3 [MrTango]

0.1.0a3 (2017-10-24)

  • 更新 README,现在使用 easy_install 而不是 pip [MrTango]

0.1.0a2 (2017-10-24)

  • 修复 setup.py 以使用 click 的 github 版本,直到 click >6.7 发布 [MrTango]

0.1.0a1 (2017-10-24)

  • 初始版本,支持列表模板和支持 bobtemplates.plone 集成 [MrTango, tmassman, Gomez]

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于 安装软件包 的信息。

源分发

plonecli-2.5.tar.gz (13.6 MB 查看哈希值)

上传时间

由以下组织支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面