2022-12-29 21:50:56 -05:00
/ * *
2023-01-17 04:52:54 -05:00
* This script runs a task to check alteration files sequence :
* Newest files should come last .
2022-12-29 21:50:56 -05:00
* /
2022-12-29 22:08:09 -05:00
import { execSync } from "child_process" ;
2022-12-29 21:50:56 -05:00
const alterationFilePrefix = "packages/schemas/alterations/" ;
const allAlterations = execSync ( "pnpm cli db alter list" , {
encoding : "utf-8" ,
} )
. split ( "\n" )
. filter ( ( filename ) => Boolean ( filename ) )
. map ( ( filename ) => filename . replace ( ".js" , "" ) ) ;
const diffFiles = execSync ( "git diff --name-only HEAD HEAD~1" , {
encoding : "utf-8" ,
} ) ;
const committedAlterations = diffFiles
. split ( "\n" )
. filter ( ( filename ) => filename . startsWith ( alterationFilePrefix ) )
. map ( ( filename ) =>
filename . replace ( alterationFilePrefix , "" ) . replace ( ".ts" , "" )
) ;
for ( const alteration of committedAlterations ) {
const index = allAlterations . indexOf ( alteration ) ;
if ( index < allAlterations . length - committedAlterations . length ) {
throw new Error (
` Wrong alteration sequence for commited file: ${ alteration } \n All timestamps of committed alteration files should be greater than the biggest one in the base branch. `
) ;
}
}