11const { execSync } = require ( "child_process" ) ;
22const fs = require ( "fs" ) ;
3+ const os = require ( "os" ) ;
34const path = require ( "path" ) ;
45
56const flowFilename = "flow.toml" ;
@@ -18,9 +19,30 @@ const projects = JSON.parse(
1819 execSync ( `npm pkg get ${ workspaces } name version module` ) ,
1920) ;
2021
22+ // create temp folder to used during packaging
23+ const tmpDir = fs . mkdtempSync ( path . join ( os . tmpdir ( ) , "flow-builder" ) ) ;
24+
2125for ( const [ _ , project ] of Object . entries ( projects ) ) {
22- const projectDir = `flows/${ project . name } ` ;
23- if ( fs . existsSync ( path . join ( projectDir , flowFilename ) ) ) {
26+ const sourceProjectDir = `flows/${ project . name } ` ;
27+ const projectDir = `${ tmpDir } /${ project . name } ` ;
28+ console . log (
29+ `Copying files from '${ sourceProjectDir } /' to '${ projectDir } ' (tmpdir)` ,
30+ ) ;
31+ fs . cpSync ( sourceProjectDir , `${ tmpDir } /${ project . name } ` , { recursive : true } ) ;
32+ const flowFile = path . join ( projectDir , flowFilename ) ;
33+
34+ if ( fs . existsSync ( flowFile ) ) {
35+ // inject name and version into the flows.toml file
36+ const contents = fs . readFileSync ( flowFile , { encoding : "utf-8" } ) ;
37+ fs . writeFileSync (
38+ flowFile ,
39+ [
40+ `# name = "${ project . name } "` ,
41+ `# version = "${ project . version || "0.0.0" } "\n` ,
42+ contents ,
43+ ] . join ( "\n" ) ,
44+ ) ;
45+
2446 const image = `${ registry } /${ owner } /${ project . name } :${ project . version } ` ;
2547 console . log (
2648 `\nPublishing flow. project=${ project . name } , version=${ project . version } , module=${ project . module } ` ,
@@ -31,4 +53,6 @@ for (const [_, project] of Object.entries(projects)) {
3153 }
3254}
3355
56+ fs . rmSync ( tmpDir , { recursive : true , force : true } ) ;
57+
3458process . exit ( 0 ) ;
0 commit comments