使用“dj{command\u name}”运行命令。使用简单配置文件中定义的别名或默认为django管理命令。
dj-command的Python项目详细描述
为什么?
如果通过pip
安装,在每个项目的json文件(.dj-config.json
)中定义了可爱的别名,将根据需要运行任意多个命令,如果找不到别名,则默认为django管理命令,则它在任何地方都可用。
命令可以按dj
(例如dj makemigrations migrate
)顺序运行。但是,调用长时间运行的进程(例如dj runserver
)将阻止运行任何其他命令。例如,dj runserver migrate
永远不会运行migrate
命令,因为runserver
将阻塞进程。
配置文件
示例.dj config.toml
disable_django_management_command=falsepython_interpreter="python"environment_file_path=".env"[[commands]]name="m"help="Does the migration dance"execute="./manage.py makemigrations && ./manage.py migrate"requires_virtualenv=true[[commands]]name="r"help="Runs all the servers"execute="./manage.py runserver"requires_virtualenv=truelong_running=true[[commands]]name="ls"help="Lists all the files, of course"execute="ls"[[commands]]name="up"help="Up all the things"execute="pip3 install -r requirements/development.txt && ./manage.py migrate && ./manage.py runserver"requires_virtualenv=truelong_running=true[[commands]]name="restore_database"help="Restores a Postgres database from live to local"execute="PGPASSWORD=$PGPASSWORD pg_dump $DATABASE_NAME --host=$DATABASE_HOST --port=$DATABASE_PORT --username=$DATABASE_USERNAME --format=tar | pg_restore --clean --dbname=$DATABASE_NAME --no-owner --host=localhost --port=5432"
配置文件位置
如果--config
参数用于指定特定的文件位置,则这是dj
查找配置文件的唯一位置。
否则,dj
将搜索适当的配置文件并将它们“合并”在一起。这允许您在~/.dj-config.toml
中有一个基本配置文件,但可以根据每个文件夹覆盖它。dj
将.toml
配置文件优先于.json
。因此,它将首先查找~/.dj-config.toml
,如果它丢失了,则查找~/.dj-config.json
。然后,它将遵循当前目录的相同模式。如果配置设置中存在重叠,则当前目录的配置文件将优先。
在命令中使用环境变量
dj
将寻找一个.env
文件来使用美妙的python-dotenv库加载环境变量。可以在execute命令中指定环境变量,就像在shell中一样(即$VARIABLE_NAME
)。
基本参数和选项
dj --help
查看所有选项dj --list
查看所有可用的自定义命令dj {command_name}
运行自定义命令或django管理命令(例如dj migrate
)dj {command_name} {command_name} {command_name}
运行多个命令(例如dj makemigrations migrate
)dj {command_name} --dry_run
显示在没有实际执行命令的情况下运行的命令
如何处理源代码
- 复制回购协议
- 在本地运行源:
poetry run python dj
- 测试源:
poetry run pytest
- 本地生成并安装:
poetry build && pip3 install --user --force-reinstall .
- 用
~/.local/bin/dj migrate
测试
- 将源发布到pypi:
poetry publish --build --username USERNAME --password PASSWORD
致谢
- poetry:请,请继续帮助复杂的1)创建Python项目,和2)安装依赖项;严重的是,在没有你 的情况下是令人困惑的。
- click:可笑的全功能库,帮助在python中实现cli程序;它有所有的钟声和大部分的哨声
- attrs:您想要python中的简单类吗?是的,请
- delegator.py:
subprocess
是一种痛苦,但是delegator
在一个好的api背后隐藏了所有丑陋的东西 - python-dotenv:12使用.env文件考虑所有因素
- toml:我生活中的牙套越少越好
现有技术
这不是一个新的想法,还有一些其他的实现可以做类似的事情。但是,呃,我喜欢我的。