我有一个项目的各种shell构建脚本,并希望创建一个集中构建系统,其中包含允许运行哪个shell脚本的选项。例如,用户按下Cmd + B,然后为用户提供选项:
1)shellscript1.sh
2)shellscript2.sh
3)shellscript3.sh
用户按3,Sublime Text运行'sh shellscript3.sh'。
我一直在阅读http://sublimetext.info/docs/en/reference/build_systems.html,但我不确定如何在Sublime Text构建系统的JSON代码中集成此选项。
如何在Sublime Text 2的构建系统中实现这一目标?
谢谢!
答案 0 :(得分:2)
实际上,您不需要自己的插件。您只需要 build variants 。以下是使用示例命令的简单示例:
{
"name Script 1",
"cmd": ["shellscript1.sh", "$file"],
"file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$",
"working_dir": "${project_path:${folder:${file_path}}}",
"variants":
[
{
"name": "Script 2",
"cmd": ["shellscript2.sh", "$file"]
},
{
"name": "Script 3",
"cmd": ["shellscript3.sh", "$file"]
}
]
}
将其保存在用户偏好设置文件夹中,保存为MyScript.sublime-build。然后,您可以从构建菜单中选择它,关闭自动目标。
现在,在Windows和Linux上按 Command + B (在Mac上, Control + B ),默认目标在您的文件上执行脚本1 ,但您也可以选择其中一种变体。
另请参阅this answer,了解我个人使用的构建文件,为不同的Make目标提供变体。
答案 1 :(得分:1)
我不知道足够的python给你特定的代码,但看起来你需要编写自己的exec.py来处理命令数组并提供控制逻辑。然后在JSON文件中,您只需要将“cmd”键的值写为[["first cmd"], ["second cmd"],..., ["last cmd"]],
。
我正在关注这个问题;我非常喜欢你的主意。
答案 2 :(得分:1)
我最终制作了自己的插件并在run()中放置了以下内容:
self.view.window().run_command('exec', {'cmd': ['sh', 'script.sh'], 'quiet': False})
我的基础是这个Git支持插件的代码:https://github.com/notanumber/gitst2