@@ -3,6 +3,7 @@ const path = require('path');
3
3
const YAML = require ( 'yaml' ) ;
4
4
5
5
const samplesDir = process . argv [ 2 ] ;
6
+ let samplesMdContent = ''
6
7
7
8
// Inspired by https://github.com/compose-spec/compose-go/blob/main/template/template.go
8
9
const interpolationRegex =
@@ -23,6 +24,12 @@ directories.forEach((sample) => {
23
24
let readme ;
24
25
try {
25
26
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" ;
26
33
} catch ( error ) {
27
34
readme = `# ${ sample } ` ;
28
35
}
@@ -102,14 +109,30 @@ directories.forEach((sample) => {
102
109
103
110
const stringified = JSON . stringify ( jsonArray , null , 2 ) ;
104
111
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, '' ) ;
106
116
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
+ } ) ;
108
123
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 ) ;
113
136
114
137
// save the json to the samples.json file in static
115
138
fs . writeFileSync ( path . join ( __dirname , '..' , 'static' , 'samples-v2.json' ) , stringified ) ;
0 commit comments