2021-01-25 11:58:16 +03:00
import fs from "fs" ;
import { runCheckOverChangedFiles } from "./utils/changedFilesValidator" ;
import { ExitCode } from "./utils/exitCode" ;
import * as logger from "./utils/logger" ;
2021-02-04 15:17:23 +03:00
import { doesNotContainResourceInfo } from "./utils/workbookCheckers/workbookTemplateCheckers/containResourceInfoChecker" ;
2021-02-02 12:31:13 +03:00
import { isFromTemplateIdNotSentinelUserWorkbook } from "./utils/workbookCheckers/workbookTemplateCheckers/fromTemplateIdChecker" ;
2021-01-25 11:58:16 +03:00
import { WorkbookTemplate } from "./utils/workbookTemplate" ;
2021-02-04 15:17:23 +03:00
const workbooksMetadataFilePath : string = "Workbooks/WorkbooksMetadata.json" ;
2021-01-25 11:58:16 +03:00
export async function IsValidWorkbookTemplate ( filePath : string ) : Promise < ExitCode > {
2021-02-04 15:17:23 +03:00
const workbookTemplateString : string = fs . readFileSync ( filePath , "utf8" ) ;
const parsedWorkbookTemplate : WorkbookTemplate = JSON . parse ( workbookTemplateString ) ;
2021-01-25 11:58:16 +03:00
// WorkbooksMetadata.json file is not a workbook template file but is still under the same folder of the templates. Therefore we want to exclude it from this test.
if ( filePath === workbooksMetadataFilePath ) {
return ExitCode . SUCCESS ;
}
2021-04-08 11:07:15 +03:00
if ( isValidWorkbookJson ( parsedWorkbookTemplate ) )
{
isFromTemplateIdNotSentinelUserWorkbook ( parsedWorkbookTemplate ) ;
doesNotContainResourceInfo ( workbookTemplateString ) ; // Pass the json file as string so we can perform a regex search on the content
}
2021-01-25 11:58:16 +03:00
return ExitCode . SUCCESS ;
2021-04-08 11:07:15 +03:00
}
function isValidWorkbookJson ( jsonFile : any ) {
if ( typeof jsonFile . $schema != "undefined" && typeof jsonFile . $schema . includes ( "schema/workbook.json" ) && typeof jsonFile . version != "undefined" && jsonFile . version === "Notebook/1.0" )
{
return true ;
}
return false ;
}
2021-01-25 11:58:16 +03:00
let fileTypeSuffixes = [ ".json" ] ;
2021-04-08 11:07:15 +03:00
let filePathFolderPrefixes = [ "Workbooks" , "Solutions" ] ;
2021-01-25 11:58:16 +03:00
let fileKinds = [ "Added" , "Modified" ] ;
let CheckOptions = {
onCheckFile : ( filePath : string ) = > {
return IsValidWorkbookTemplate ( filePath ) ;
} ,
onExecError : async ( e : any , filePath : string ) = > {
console . log ( ` WorkbooksTemplate Validation Failed. File path: ${ filePath } . Error message: ${ e . message } ` ) ;
} ,
onFinalFailed : async ( ) = > {
logger . logError ( "An error occurred, please open an issue" ) ;
} ,
} ;
runCheckOverChangedFiles ( CheckOptions , fileKinds , fileTypeSuffixes , filePathFolderPrefixes ) ;