statelyai / xstate-tools

Public monorepo for XState tooling
183 stars 36 forks source link

CLI: Unable to specify multiple globs #92

Open simonflk opened 2 years ago

simonflk commented 2 years ago

Hi,

Great work on the CLI, I'm really excited to use this, and this will help me finally get my typegen PR merged.

I just tried it out and ran into a couple of issues:


  1. This is minor, but I could not get the example in the docs to work:
xstate typegen "src/**/*.tsx?"

I believe it needs to change to:

xstate typegen "src/**/*.ts?(x)"

  1. Excessive logging

It logs out ${file} - success for every matching file - even if the file does not contain any machines.


  1. I cannot specify multiple globs

I have a monorepo situation, and I want to be able to run typegen across the "apps" folder, and also the "libs" folder. I was trying this:

xstate typegen "apps/**/*.ts" "libs/**/*.ts"

However, only the 'apps' folder is touched.

I also tried brace expansion:

xstate typegen "{apps,libs}/**/*.ts"

but this is not supported by picomatch (used by chokidar)

I also tried

xstate typegen "**/*.ts"

however, this traverses everything, including node_modules.

Andarist commented 2 years ago

Do you have an example of some other CLI that accepts multiple globs? I rarely need such a thing and would like to take a look at the prior art.

simonflk commented 2 years ago

Do you have an example of some other CLI that accepts multiple globs? I rarely need such a thing and would like to take a look at the prior art.

Good question. In most cases CLIs I use just accept a list of filenames and you can use multiple globs which will be resolved by your shell . E.g. git add *json *ts

But I think an example of a CLI that accepts and interprets multiple globs itself would be prettier

Edit: babel CLI also accepts multiple globs as patterns to excludes