Neonizer – interaktivni vyplnovani parametru z composeru

Felix
Nette Core | 1186
+
+10
-

Zdravim!

Z Contributte dilny mame dalsi balicek, ktery bych vam rad ukazal. Zejmena pro ty co delaji se Symfony, tak jim bude pripadat povedomi.

O co jde

Vzali jsme myslenku z balicku Incenteev/ParameterHandler a napsali podporu pro NEON.

O co jde? Predstavme si, ze mame config.local.neon, ktery ma par parametru co musite vyplnit. A tedka vam dalsi vyvojar prida dalsi parametr, ktery je potreba nastavit.

Bud si na to pamatujete nebo v horsim pripadne, vyskoci ladenka a upozorni vas to. Nebylo by skvele, kdybyste po tom, co zavolate composer install/update, mohli ty parametry rovnou vyplnit?

Presne tohle resi contributte/neonizer.



Instalace

Snadno ve 3 krocich:

  1. composer require contributte/neonizer.
  2. Pridat post-install a post-update scripty pro composer.
"scripts": {
  "post-install-cmd": [
    "Contributte\\Neonizer\\NeonizerExtension::process"
  ],
  "post-update-cmd": [
    "Contributte\\Neonizer\\NeonizerExtension::process"
  ]
}

3. Nastavit extra sekci (neonizer) v composeru.

"extra": {
  "neonizer": {
    "files": [{
        "dist-file": "app/config/config.local.neon.dist"
    }]
  }
}

Usage

Nyni, kdyz date composer install nebo composer update, tak vam neonizer projde vsechny parametry, rekurzivne, ze souboru app/config/config.local.neon.dist a nabidne vam je k vyplneni. Zaroven pokud uvedeme defaultni hodnotu, tak ji automaticky predvyplni.

Staci vam vyplnit pouze sablonu, rikejme ji dist-file a neonizer automaticky odstrani koncovku .dist.

  • app/config/config.local.neon.distapp/config/config.local.neon

Funguje i vice koncovek.

  • app/config/config.local.neon.tplapp/config/config.local.neon
  • app/config/config.local.neon.templateapp/config/config.local.neon

Feedback

Moc rad uvitame jakykoli feedback. Uz to pouzivame v produkci a zda se, ze vse funguje jak ma.

Editoval Felix (20. 10. 2017 18:25)

jiri.pudil
Nette Blogger | 1028
+
+1
-

Paráda! Ještě by se mi tam líbila nějaká binárka, kterou bych mohl spustit na produkci v rámci deploy procesu a která by ten deploy zastavila, když zapomenu upravit produkční config.local.neon :)

Pavel Kravčík
Člen | 1180
+
0
-

Trochu strašidelná věta → zdá se že to v produkci funguje.:)

Jinak parádní práce! Zrovna nedávno jsme si to udělali selfmade, škoda. :(

Felix
Nette Core | 1186
+
0
-

jiri.pudil napsal(a):

Paráda! Ještě by se mi tam líbila nějaká binárka, kterou bych mohl spustit na produkci v rámci deploy procesu a která by ten deploy zastavila, když zapomenu upravit produkční config.local.neon :)

Muzeme nastavit, ze v ne-interaktivnim modu by jsi tam mohl mit neco jako autoexit. A proces by skoncil chybou, kdyz by neco chybelo. :-)

Je to to co jsi myslel?

Editoval Felix (20. 10. 2017 21:49)

jiri.pudil
Nette Blogger | 1028
+
0
-

Felix napsal(a):

Muzeme nastavit, ze v ne-interaktivnim modu by jsi tam mohl mit neco jako autoexit. A proces by skoncil chybou, kdyz by neco chybelo. :-)

Je to to co jsi myslel?

Přesně tak jsem to myslel, jen je to trochu složitější :D

My totiž composer install spouštíme ještě na CI serveru a pak už jen rsyncujeme celou složku se sestavenou aplikací na produkční server. Přišel by nám tedy vhod způsob, jak neonizer spustit i explicitně přes ssh přímo na produkci potom, co se tam aplikace nakopíruje, ale předtím, než se přehodí symlink na aktuální release.

Felix
Nette Core | 1186
+
+1
-

jiri.pudil napsal(a):
Přesně tak jsem to myslel, jen je to trochu složitější :D

Zkusim to promyslet, ale myslim, ze by to mohlo byt realizovatelne skrz scripty.

"scripts": {
  "config-valid": [
    "Contributte\\Neonizer\\NeonizerExtension::allFilled"
  ]

Nazvy jsou jenom pro ukazku, ale tohle by mohlo skoncit error(255) trebas.

jiri.pudil
Nette Blogger | 1028
+
0
-

Zkusim to promyslet, ale myslim, ze by to mohlo byt realizovatelne skrz scripty.

Pravda, to mě nenapadlo. Vypadá to elegantně :)