@@ -3,6 +3,7 @@ const path = require('path');
33const YAML = require ( 'yaml' ) ;
44
55const samplesDir = process . argv [ 2 ] ;
6+ let samplesMdContent = ''
67
78// Inspired by https://github.com/compose-spec/compose-go/blob/main/template/template.go
89const interpolationRegex =
@@ -23,6 +24,12 @@ directories.forEach((sample) => {
2324 let readme ;
2425 try {
2526 readme = fs . readFileSync ( path . join ( samplesDir , sample , 'README.md' ) , 'utf8' ) ;
27+ // replace the text after the first `#` with a link to the sample
28+ // readme = readme.replace(/^# (.*)/, `# [$1](https://github.com/DefangLabs/samples/tree/main/samples/${sample})`);
29+ readme = readme . replace ( / ^ # ( .* ) / , ( match , p1 ) => {
30+ return `# [${ p1 } ](https://github.com/DefangLabs/samples/tree/main/samples/${ sample } )` ;
31+ } ) ;
32+ samplesMdContent += readme + "\n\n" ;
2633 } catch ( error ) {
2734 readme = `# ${ sample } ` ;
2835 }
@@ -102,14 +109,30 @@ directories.forEach((sample) => {
102109
103110const stringified = JSON . stringify ( jsonArray , null , 2 ) ;
104111
105- // fs.writeFileSync(path.join(__dirname, '..', 'samples.json'), stringified);
112+ // exclude any lines which start with '---'
113+ samplesMdContent = samplesMdContent . replace ( / - - - .* \n / g, '' ) ;
114+ // exclude any lines which include markdown images `![`
115+ samplesMdContent = samplesMdContent . replace ( / ^ .* ! \[ .* \] \( .* \) .* \n ? / gm, '' ) ;
106116
107- // we're going to open up the ../docs/samples.md file and replce [] with the stringified JSON
117+ // increase the header level of all headers in the markdown content
118+ samplesMdContent = samplesMdContent . replace ( / ^ ( # { 1 , 6 } ) \s / gm, ( match ) => {
119+ const headerLevel = match . length - 1 ; // number of '#' characters
120+ const newHeaderLevel = Math . min ( headerLevel + 1 , 6 ) ;
121+ return '#' . repeat ( newHeaderLevel ) + ' ' ;
122+ } ) ;
108123
109- // const samplesMd = path.join(__dirname, '..', 'docs', 'samples.md');
110- // let samplesMdContents = fs.readFileSync(samplesMd, 'utf8');
111- // samplesMdContents += `<Samples samples={${stringified}} />`;
112- // fs.writeFileSync(samplesMd, samplesMdContents);
124+ const frontMatter = `---
125+ sidebar_class_name: hidden
126+ title: Samples
127+ description: A collection of sample applications and configurations for Defang Labs.
128+ ---
129+ ` ;
130+ // prefix samplesMdContent with the front matter
131+ samplesMdContent = frontMatter + "\n\n" + samplesMdContent ;
132+
133+ const samplesMd = path . join ( __dirname , '..' , 'docs' , 'samples.md' ) ;
134+ console . log ( `@@ Writing samples markdown to ${ samplesMd } ` ) ;
135+ fs . writeFileSync ( samplesMd , samplesMdContent ) ;
113136
114137// save the json to the samples.json file in static
115138fs . writeFileSync ( path . join ( __dirname , '..' , 'static' , 'samples-v2.json' ) , stringified ) ;
0 commit comments