kontent-ai / cli

Kontent.ai command line interface supporting migrations scripts processing written by Management SDK JS.
MIT License
6 stars 5 forks source link

Unable to run a TypeScript migration #4

Open chriscarrillo opened 4 years ago

chriscarrillo commented 4 years ago

Bug Description

There is a way to create both JavaScript and TypeScript migrations but I can only run JavaScript migrations. When I try to run my new TypeScript migration, it says Couldn't import the migration script from C:\CFAS\KenticoKontentCli\Migrations\test.ts.js due to an error: "Cannot find module C:\CFAS\KenticoKontentCli\Migrations\test.ts.js".

It looks like it is looking for a JavaScript file by default. It assumes the migration is JavaScript.

Repro Steps

  1. Run kontent migration add --name test --template-type "typescript".
  2. Create your migration.
  3. Run kontent migration run --name test --environment DEV.
  4. Observe error.

Expected Behavior

It should run the TypeScript migration file.

Additional Context

I attempted to run the TypeScript migration file provided by the boilerplate. I deleted the JavaScript file and left the TypeScript file alone to see what it would do. It gave me an error because it is looking for a JavaScript file.

I was looking at the code for run and I have a feeling this might have something to do with it.

Perhaps there could be a flag to specify if the migration is JavaScript or TypeScript. If not, have run determine it automatically. If it cannot find the .js file, then look for a .ts file.

Screenshots

image

Please let me know if I can provide any further details. Thank you! :)

jupl commented 4 years ago

I think the real issue is that the .js extension is hardcoded. I tried to run the lib/index.js command with ts-node and node -r ts-node/register so TypeScript files can be imported, but the hardcoding is messing things up.

michalpaukert commented 4 years ago

Hello @chriscarrillo this scenario is probably poorly documented but it should work like this: 1) create typescript migration 2) run transpilation 3) run migration

As you can see in the boilerplate there is tsc command before running migration.

This behavior is there so you can write the migrations in any language (for example coffescript).

Let me know if you have more questions about running typescript migrations.

chriscarrillo commented 4 years ago

Ah that makes sense. Thank you!

michalpaukert commented 4 years ago

We have to update documentation for kontent-cli that will explain how this tool works, at least typescript/javascript usage.

mahpour commented 4 years ago

It would be preferred as an option to use a json schema to drive the migrations where no deep processing is needed. For simple migrations we shouldn't need to deal with any programming language as a dependency to do the job. just a suggestion...