带选项的Sublime Text Build System

时间:2011-11-09 19:17:47

标签: python json shell sublimetext

我有一个项目的各种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的构建系统中实现这一目标?

谢谢!

3 个答案:

答案 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