mold-用于系统配置和shell工作流的cli。
mold-cli的Python项目详细描述
模具
< Buff行情>用于管理点文件、shell脚本、可执行文件、项目框架和文件模板的cli
关于模具
mold
是一个cli,用于帮助程序员在shell环境中进行建模,使编写代码更有趣、更高效。它的目标是使用户能够将所有的工具、脚本和模板带到家中,并将它们带到任何地方。mold有一个一致的界面,用于执行crud对它跟踪的内容的操作,以及一组用于同步配置的小而有效的git助手任务。
mold并不是一个真正意义上的shell插件管理器,而是帮助用户编写和管理自己的配置文件和脚本。但是,Mold还认为,点文件需要分叉,并支持克隆模根、跟踪Git远程上游以及从URL下载内容。模具甚至可以与Acutal Shell插件管理器一起使用,例如抗原或我的zsh,无需任何匆忙。
Mold有一些固执己见的限制,旨在帮助程序员通过减少配置环境的时间和更多的时间在项目上工作来提高生产力。它通过将系统配置缩小为五个内容分类来实现这一点,每个分类的行为略有不同。mold将其内容存储在一个名为mold root的git repostory中,并使用环境变量$mold_root来确定其位置。模具内容分为以下分类,每个分类在模具根目录中都有自己的目录。
形态
模具配置是点文件。每次加载或创建模具配置时,它都会自动硬链接到$HOME目录。通过使用硬链接,无论您在何处编辑文件,更改都由mold-roots git跟踪。所有mold conf文件都存储在$mold_root/conf中。
插头
模具插件是作为外壳插件的单文件外壳脚本。每次创建一个shell时,它都会在mold根插件目录中循环并为每个插件提供源代码。所有模具插头文件都存储在$mold_root/plug中。
执行
模具执行器是单文件可执行脚本。每次加载或创建exec时,都会自动为其提供可执行的插件。所有的mold exec文件都存储在$mold_root/exec中,添加到$path的begging中。
折叠
模具折叠是目录脚手架模板。折叠可以用来设置项目锅炉板代码,这样就可以减少新项目的开销。模具折叠可以从模具根目录展开到当前工作目录中。所有模具折叠都存储在$MOLD U ROOT/FOLD中。
叶
模具叶片是锉刀的温度。leaf可用于存储许可证、标记模板、.gitIgnors以及任何您发现自己定期添加到项目中的内容。模具叶可以从模具根目录展开到当前工作目录中。所有模具叶都存储在$mold_根/叶中。
功能
- 稳定的积垢内容管理界面
- 一个小型但有效的界面,用于管理mold root的git存储库
- 包括管理原点和上游遥控器的任务
- 能够从URL下载添加内容
- 彩色编码的帮助记录器
- 参数和模具根内容的bash和zsh选项卡完成
警告不稳定
模具正在积极开发中,尚未准备好生产使用。
TOdo:安装模具
下载cli
模具需要蟒蛇3。
` PIP安装模具
设置模根
模根互动安装器
模根快速安装
克隆霉菌根
使用模具
克隆霉菌根
使用模具
用法:mold(command)(task)[选项][--标志]
模具的参数分为四类:命令、任务、选项和标志。Mold Allways需要一个命令,除--version
之外,所有命令都需要一个任务。任务需要的选项和支持的标志的数量非常多。标记始终是布尔truthy值,可以按任何顺序(开始、中间、结束)写入mold的参数中。
模具命令及其使用。
--verson
--打印模具版本根目录
--设置和管理模具根目录(安装、克隆等)同步
--用于与mold root的git存储库交互的git助手任务conf
--管理点文件(crud+到$home的硬链接)插件
--管理单个文件shell脚本(crud+按新shell排序)exec
--管理可执行文件(crud+将其添加到$path上的目录中)leaf
--管理文件模板(crud+导出到需要使用的任何位置)折叠
--管理项目目录脚手架(CRUD+导出到需要使用的任何位置)
获取帮助
mold将-h
、--help
和help
视为触发帮助日志的mold标志。模具的所有命令和任务都有颜色编码的帮助日志。此外,如果您尝试在没有适当参数的情况下运行mold命令或任务,mold将自动记录一个简短的用法:
摘要。阅读mold帮助和用法时,用parens包装的参数是(必需的)
,用方括号包装的参数是[可选的]
因为mold-help标志是truthy布尔标志,所以它们可以按任何顺序应用于mold参数。这意味着以下语句具有相同的行为。
模具配置加载帮助
模具配置--帮助加载
模具-h配置加载
管理内容
模具的主要功能是管理配置文件。它通过提供一个接口来创建、加载、编辑、删除、导出和列出模具根目录中的文件来实现这一点。模具内容管理命令有conf
,plug
,exec
,leaf
和fold
。这些Comands有以下内容管理任务。
生成
--在模具根目录中创建新文件加载
--将文件从路径或url导入到模具根目录列表
--在模具根目录中列出文件编辑
--在模具根目录中编辑文件删除
--删除模具根目录中的文件take
--将文件从模具根目录导出到当前目录(take仅受fold
和leaf
支持)
重要注意事项
- 当
fold
命令应用于任务时,它将创建、更新、删除、导出和列出目录,而不是文件。 - 当
conf
命令应用make
或load
任务时,它将自动执行将新的conf硬链接到$home目录,除非使用--no linking
标志(如下所述)。 - 当
exec
命令应用make
或load
任务时,它将自动提供新内容755可执行权限。
内容管理示例
# Import an existing .bashrc
mold conf load ~/.bashrc
# Create a shell plugin for managing your aliases
mold plug make aliases.sh
# Edit the aliases.sh plug
mold plug edit aliases.sh
# Create a leaf by downloading a url and naming its content node.gitignore
mold leaf load https://www.gitignore.io/api/vim,osx,node,linux,windows node.gitignore
# Export the node.gitignore leaf to the current directory and rename it .gitignore
mold leaf take node.gitignore .gitignore
# Delete the aliases.sh plug
mold leaf drop aliases.sh
管理mold root的git存储库
fold
命令应用于任务时,它将创建、更新、删除、导出和列出目录,而不是文件。conf
命令应用make
或load
任务时,它将自动执行将新的conf硬链接到$home目录,除非使用--no linking
标志(如下所述)。exec
命令应用make
或load
任务时,它将自动提供新内容755可执行权限。# Import an existing .bashrc mold conf load ~/.bashrc # Create a shell plugin for managing your aliases mold plug make aliases.sh # Edit the aliases.sh plug mold plug edit aliases.sh # Create a leaf by downloading a url and naming its content node.gitignore mold leaf load https://www.gitignore.io/api/vim,osx,node,linux,windows node.gitignore # Export the node.gitignore leaf to the current directory and rename it .gitignore mold leaf take node.gitignore .gitignore # Delete the aliases.sh plug mold leaf drop aliases.sh
管理mold root的git存储库
mold的主要目标是帮助编程人员传输和跟踪他们的系统配置,它使用git实现了这一点。mold的sync
命令是一个接口,用于从任何地方与mold root的git存储库进行交互,而不是每次想要管理git时都让用户cd到mold root。mold的sync
任务不仅有助于管理git,还可以自动将conf文件链接到$home目录。但是,如果发生合并冲突,模具在下次提交之前不会自动链接配置文件。
有关sync任务的警告
除了--set origin
和--set upstream
之外,以--
开头的模具同步任务被认为是危险的。这是因为它们都可以以不可更改的方式删除内容,而且它们应用于模根的任何更改都将自动更改您的系统配置。这意味着conf文件将自动链接到主目录,并且在创建下一个shell时将加载任何更改的插件。--
任务是很好的工具,但应小心使用。
模具命令及其使用。
链接
--将手动将conf文件链接到$home目录日志
--将运行git日志add
--将运行git add-a
状态
--将运行Git状态
获取
--将运行git获取
branch
--将运行git branch-av
删除
--将运行git remote-v
自动
--将执行以下步骤- 从原点拉出当前的模具根部分支
- 如果有合并冲突,auto将中止并在下一次通信前不链接您的conf文件。
- 链接配置文件
- 添加所有更改
- 提交git
- 按到原点上的当前分支。 < > >
- 从原点拉出当前的模具根部分支
提交[消息]
- 如果您提供一个消息参数,它将运行
git commit-m[message]
- 如果您不提供消息,它将运行
git commit
,git将打开您的编辑器来编写消息
- 如果您提供一个消息参数,它将运行
拉[分支]
- 如果您提供一个branch参数,它将运行
git pull origin[branch]
- 如果不提供分支参数,它将
git pull origin[当前分支名称是什么]
- 如果您提供一个branch参数,它将运行
按下[分支]
- 如果您提供一个branch参数,它将运行
git push origin[branch]
- 如果不提供分支参数,它将
git push origin head
- 如果您提供一个branch参数,它将运行
diff[hash branch]
- 如果您提供一个散列参数,它将运行
git diff[hash branch]
- 如果您提供一个散列参数,它将运行
--soft reset(hash branch)
--将运行git reset--soft(hash)
--hard reset(hash branch)
--将运行git reset--hard(hash)
--新分支(名称)
--将运行git checkout-b(名称)
--签出(名称)
--将运行git签出(名称)
--强制推送(分支)
--将运行git push origin(分支)
--合并(分支)
--将运行git合并(分支)
--设置原点(git uri)
--将删除远程orgin(如果存在),然后将origin设置为git uri--设置上游(git uri)
--将删除远程上游(如果存在),然后将上游设置为git uri
模具同步使用示例
# use mold auto to pull, link conf, add -A, commit with a message, and push
mold sync auto 'added ll alias to aliases.sh plug'# manualy add changes, commit using a text editor, and push
mold sync add mold sync commit
# if commit is not given an argument it git will open your editor
mold sync push
# diff the changes that have not been commited
mold diff
# diff upstream's master branch
mold diff upstream/master
# merge upstream master
mold fetch
mold --merge upstream/master
根任务
--安装
--运行交互式模具根安装程序
- 可与
--no prompt
标志一起使用以停止交互模式(不使用out--force覆盖$mold_root) - 可与
--force
标志一起使用,以覆盖$mold\u根而无需提示
--克隆
--将回购克隆为模根
- 可与
--force
标志一起使用,以覆盖现有文件或目录
--检查
--检查mold_根目录结构是否正常--修复
--修复mold_根目录结构
标志--高级行为
--帮助-h帮助
--打印帮助--颜色
--强制模具用颜色打印,即使将模具插入另一个程序
--强制
--允许模具根安装程序覆盖现有文件或目录--无提示
--停止安装程序提示任何问题--不链接
--在下次提交之前,停止自动链接conf文件的mold命令
--完成
--为bash或zsh这样的posix shell生成智能制表符完成
Env
(mold_root)
--设置mold将用于安装和管理所有内容的目录
[mold_debug]
--允许在不咳嗽的情况下抛出错误
[模具颜色]
--所有方式都会强制模具使用颜色打印,即使在导入其他程序时也是如此
非目标
- 添加对多文件插件的支持
- 在过去,我花了很多时间维护我自己的大型milti文件shell脚本项目,并且由于各种原因决定停止。我发现Shell具有自动执行短任务的能力,而且当涉及到大量的复杂性时,它更具可维护性和可移植性,可以解决编程语言中的问题,如python、go、rust、c、ruby等。
- 添加对操作系统或主机名特定检测的支持
- 我的类似模具的旧工具具有此功能,我觉得它过于复杂了我系统配置的主要部分。
- 相反,插件、conf和execs可以实现它们自己的条件逻辑示例
- 相反,插件、conf和execs可以实现它们自己的条件逻辑示例
- 让基本安装添加预先定义的配置文件
- 我不相信SysYem配置是不能共享的,因为像这样的系统对很多人来说都很好。然而,模具的目标是帮助自己和其他人保持他们的个人系统配置。
- Github上有一个从现有的mold_root安装的选项,我计划在某个时候创建一个类似zsh的starter kit mold_root存储库。
思想?- 创建一个
名称
任务以重命名内容 -v--详细
--使日志记录更详细- 创建一个mold--shell activate,它将返回一个用于加载插件的shell脚本(对于使用哪个shell可能很聪明)
- 制作一个工具,将新版本发布到pypi、brew、apt和arch aur
- 为tui编写标记解析器/转换器输出以使帮助日志可以以降价方式写入
- (drop,plug,conf,exec)加载--支持URL
- 折叠负载——支持Github存储库?->;子模块支持?
- 为初学者建立一个使用shell(一个哦,我的zsh/bash lite)的开始模子。
- 检测fish并从--install返回一个不同的插件加载程序
- 创建一个漂亮的文档网站
- 可以添加一个用于存放文件的功能,人们可以
mold[command]加载url
--安装
--运行交互式模具根安装程序
- 可与
--no prompt
标志一起使用以停止交互模式(不使用out--force覆盖$mold_root) - 可与
--force
标志一起使用,以覆盖$mold\u根而无需提示
--克隆
--将回购克隆为模根
- 可与
--force
标志一起使用,以覆盖现有文件或目录
--检查
--检查mold_根目录结构是否正常--修复
--修复mold_根目录结构--帮助-h帮助
--打印帮助--颜色
--强制模具用颜色打印,即使将模具插入另一个程序
--强制
--允许模具根安装程序覆盖现有文件或目录--无提示
--停止安装程序提示任何问题--不链接
--在下次提交之前,停止自动链接conf文件的mold命令
--完成
--为bash或zsh这样的posix shell生成智能制表符完成(mold_root)
--设置mold将用于安装和管理所有内容的目录
[mold_debug]
--允许在不咳嗽的情况下抛出错误
[模具颜色]
--所有方式都会强制模具使用颜色打印,即使在导入其他程序时也是如此
- 在过去,我花了很多时间维护我自己的大型milti文件shell脚本项目,并且由于各种原因决定停止。我发现Shell具有自动执行短任务的能力,而且当涉及到大量的复杂性时,它更具可维护性和可移植性,可以解决编程语言中的问题,如python、go、rust、c、ruby等。
- 我的类似模具的旧工具具有此功能,我觉得它过于复杂了我系统配置的主要部分。
- 相反,插件、conf和execs可以实现它们自己的条件逻辑示例
- 相反,插件、conf和execs可以实现它们自己的条件逻辑示例
- 我不相信SysYem配置是不能共享的,因为像这样的系统对很多人来说都很好。然而,模具的目标是帮助自己和其他人保持他们的个人系统配置。
- Github上有一个从现有的mold_root安装的选项,我计划在某个时候创建一个类似zsh的starter kit mold_root存储库。
名称
任务以重命名内容-v--详细
--使日志记录更详细- 可以添加一个用于存放文件的功能,人们可以
mold[command]加载url