Spouštění úloh na příkazové řádce ze Sublime Text (ve Windows)

Vydal Jan Bien | 06/2015 | Trvalý odkaz | Komentáře (1)

Moc jsem si k produkci veškerého kódu oblíbil textový editor Sublime Text. Poslední dobou jsem si ho docela vytunil, abych mohl jet řadu úkonů na klávesové zkratky a autopilota, čímž šetřím mentální energii na kreativní práci. A jak přibývá projektů, tak má taková optimalizace docela velký efekt.

Jedním z úkonů, které provádím hodně často, je spouštění grunt úloh. (Pro neznalce vzhůru více o gruntu.) Na to se hodí třeba výborný plugin sublime-grunt, který jsem chvíli také používal. U něj mi ale vadí, že a) k úlohám se musím prokousávat několika údery klávesnice a b) se příkaz spouští přímo v konzoli editoru. Já chci chci pouštět na příkazové řádce v novém okně mimo editor a mít možnost pouštět i jiné úlohy, než jen grunt.

Vytvořil jsem si proto řešení vlastní, které jsem celé přiřadil ke klávesové zkratce Ctrl+F12. Řešení je složené z pluginu do editoru (ten otevírá konzoli) a souboru console.cmd (spouští úlohy). Plugin obsahuje tyto 3 soubory:

1. console.py. Zde vytvořím příkaz, který mi otevře příkazovou řádku, nastaví aktuální adresář do rootu projektu a spustí soubor console.cmd.

import os, sublime_plugin
class jbconsoleCommand(sublime_plugin.WindowCommand):
	def run(self):
		if len(self.window.folders()) == 0:
			return
		path = self.window.folders()[0] + "\\"
		os.system("cd " + path + " & start cmd /c console.cmd" )

2. Main.sublime-menu: Zde přidám příkaz do menu nástroje.


[
    {
        "id": "tools",
        "children":
        [
            {
                "caption": "Console",
                "command": "jbconsole"
            }
        ]
    }
] 

3. Default (Windows).sublime-keymap: Zde přiřadím k příkazu klávesovou zkratku Ctrl+F12.

[
	{
		"keys": ["ctrl+f12"],
		"command": "jbconsole"
	}
]

A teď k souboru console.cmd. Jde o dávkový soubor, který je uložen v rootu každého projektu a většinou (podle typu projektu s mírnými obměnami) vypadá takto:

@ECHO OFF

:begin

echo ===============================================
echo c – console
echo d – deploy
echo g – grunt
echo w – grunt watch
echo s – grunt styles
echo j – grunt javascripts
echo q – quit

CHOICE /C cdgwsjq /N

IF ERRORLEVEL 7 GOTO end
IF ERRORLEVEL 6 GOTO js
IF ERRORLEVEL 5 GOTO css
IF ERRORLEVEL 4 GOTO dev
IF ERRORLEVEL 3 GOTO grunt
IF ERRORLEVEL 2 GOTO deploy
IF ERRORLEVEL 1 GOTO console

:console
cmd
GOTO end

:deploy
php e:\deployment\deployment.php deployment.ini
GOTO begin

:grunt
call grunt
GOTO begin

:dev
call grunt dev
GOTO begin

:css
call grunt css
GOTO begin

:js
call grunt js
GOTO begin

:end

O čekání na můj vstup (výběr písmenka) se stará funkce CHOICE, následovaná podmínkami IF, které se postarají o skok GOTO na kotvu :css, tam se spustí příkaz call grunt css a po skončení skok GOTO na kotvu :begin na začátku dávky, kde se čeká na mou další volbu.

Netřeba podotýkat, že toto řešení je funkční jen u nás widláků.

Pro zkompletování stylů stisknu v editoru Ctrl+F12 a v konzoli S. Pro deployment D, pro spuštění browser syncusledování změn W, atd.. Z ukázky je také patrné, že pro deployment nepoužívám grunt úlohu (nenašel jsem žádnou, která by mi dost vyhovovala), ale výborný FTP Deployment by David Grudl.

… a přitom taková blbost. Tož tak.

O autorovi

Jan Bien
Jan Bien
Jako kluk jsem si hrál se stavebnicí Merkur, kterou jsem v dospělosti (lze-li o něčem takovém u muže vůbec mluvit) vyměnil za WordPress. S WordPressem kouzlím zajímavé weby, radím lidem, zda je WordPress dobrý nápad pro konkrétní projekt, a občas koučuji jiné freelancery, co a jak s WordPressem podniknout ke spokojenosti své i svých klientů.

Jeden komentář: “Spouštění úloh na příkazové řádce ze Sublime Text (ve Windows)”

  1. Daniel Střelec napsal:

    Tohle je super řešení – díky za něj! Ještě doporučuju zkombinovat s nějakým “hezčím příkazovým řádkem”, třeba ConEmu nebo Console2 a pak je to paráda. A když se to přemapuje na ctrl+alt+d, tak stačí jen pak stisknout jedno d navíc a už to frčí.

Napsat komentář

Vaše emailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *