edgedb-cli icon indicating copy to clipboard operation
edgedb-cli copied to clipboard

Allow users to run arbitrary script(s) after `watch` applies schema updates

Open raddevon opened this issue 2 years ago • 2 comments

Users would like to be able to rerun their generators or rerun tests whenever a schema updates. @elprans suggested we might allow users to point to a script directory to enable this: "Providing a path to a directory with shell scripts (a-la run-parts) is probably most flexible."

raddevon avatar Jul 05 '23 17:07 raddevon

having to create a directory doesn't sound "most flexible" just having a --exec <command> a la find seems more flexible since it doesn't require a dedicated directory/script.

for impatient people on linux with inotify-tools installed it's possible to use:

inotifywait -mqe close_write dbschema/default.esdl | while read f;do echo; edgedb migrate --dev-mode && npm run -s build:edgeql; done

or like this if it should also run immediately

(echo; inotifywait -mqe close_write dbschema/default.esdl) | while read f;do echo;  edgedb migrate --dev-mode && npm run -s build:edgeql; done

ssendev avatar Nov 15 '23 10:11 ssendev

I think this is not required for edgedb-cli. That's what I'm doing

"edgedb:migrate:dev".exec = ''
  edgedb:dev migration apply --schema-dir=api/dbschema --dev-mode
'';

"edgedb:generate".exec = ''
  ${root}/api/node_modules/.bin/generate interfaces --file=${root}/lib/entities.d.ts --force-overwrite ${edb.args}
'';

<...>
watchexec -p -w api -e esdl,edgeql -- 'edgedb:migrate:dev && edgedb:generate

0x241F31 avatar Mar 09 '24 08:03 0x241F31