Sublime Text Build System с опциями - PullRequest
5 голосов
/ 09 ноября 2011

У меня есть различные сценарии сборки оболочки для проекта, и я хочу создать одну централизованную систему сборки с параметрами, которые позволят запускать сценарий оболочки.Например, пользователь нажимает Cmd + B, затем ему предоставляется опция:

1) shellscript1.sh2) shellscript2.sh3) shellscript3.sh

Пользователь нажимает 3, и Sublime Text запускает 'sh shellscript3.sh'.

Я читал http://sublimetext.info/docs/en/reference/build_systems.html,, но не уверен, как интегрировать эту опцию в код JSONдля системы сборки Sublime Text.

Как этого добиться в системе сборки Sublime Text 2?

Спасибо!

Ответы [ 3 ]

2 голосов
/ 15 декабря 2012

На самом деле вам не нужен собственный плагин.Все, что вам нужно, это варианты сборки .Вот простой пример использования ваших примеров команд:

{
  "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.После этого вы сможете выбрать его из меню сборки, отключив автоматическую цель.

Теперь, когда вы нажимаете Команда + B (на Mac, Управление + B в Windows и Linux), цель по умолчанию выполняет Сценарий 1 в вашем файле, но вы также можете выбрать любой из вариантов.

См. этот ответ также для файла сборки, который я лично использую, предоставляя варианты для различных целей Make.

1 голос
/ 14 ноября 2011

В итоге я создал свой собственный плагин и поместил в run () следующее:

self.view.window().run_command('exec', {'cmd': ['sh', 'script.sh'], 'quiet': False})        

Я основал его на коде этого плагина поддержки Git: https://github.com/notanumber/gitst2

1 голос
/ 10 ноября 2011

Я не знаю достаточно Python, чтобы дать вам конкретный код, но похоже, что вам нужно написать собственный exec.py для обработки массива команд и обеспечения логики управления.Затем в файле JSON вам просто нужно записать значение ключа «cmd» как [["first cmd"], ["second cmd"],..., ["last cmd"]],.

Я следую за этим вопросом;Мне очень нравится твоя идея.

...