4
4
import fs from 'node:fs/promises' ;
5
5
import path from 'node:path' ;
6
6
7
- // @ts -ignore
8
- import { exists , getDirs } from '@magicbell/codegen/fs' ;
9
7
// @ts -ignore
10
8
import * as md from '@magicbell/codegen/markdown' ;
11
9
import glob from 'glob' ;
12
-
13
- function pascalToHyphenCase ( str : string ) : string {
14
- return str . replace ( / ( [ a - z ] ) ( [ A - Z ] ) / g, '$1-$2' ) . toLowerCase ( ) ;
15
- }
16
-
17
- function rewriteHref ( url : string ) {
18
- if ( ! url . endsWith ( '.md' ) ) return url ;
19
- return url . replace ( / ^ d o c u m e n t a t i o n \/ / , '' ) . replace ( / ( [ ^ / ] + ) \. m d $ / , ( _ , fileName ) => pascalToHyphenCase ( fileName ) ) ;
20
- }
10
+ import urlJoin from 'url-join' ;
21
11
22
12
const root = process . cwd ( ) ;
23
13
const outdir = path . join ( root , 'docs-dist' ) ;
24
14
await fs . rm ( outdir , { recursive : true , force : true } ) ;
25
15
26
16
const pkg = JSON . parse ( await fs . readFile ( 'package.json' , 'utf-8' ) ) ;
17
+ const repoUrl = urlJoin ( pkg . repository . url . replace ( / \. g i t $ / , '' ) , 'blob/main/' , pkg . repository . directory || '' ) ;
18
+
19
+ function rewriteHref ( url : string ) {
20
+ if ( url . startsWith ( 'http://' ) || url . startsWith ( 'https://' ) ) return url ;
21
+ return urlJoin ( repoUrl , url ) ;
22
+ }
27
23
28
24
// process readme
29
25
const [ readme ] = glob . sync ( 'README.md' , { cwd : root } ) ;
@@ -34,29 +30,3 @@ md.mapLinks(readmeAst, rewriteHref);
34
30
md . insertFrontMatter ( readmeAst , { title : pkg . name } ) ;
35
31
36
32
await md . write ( readmeAst , path . join ( outdir , 'index.mdx' ) ) ;
37
-
38
- // process pages
39
- const docs = glob . sync ( '**/*.md' , {
40
- cwd : path . join ( root , 'documentation' ) ,
41
- } ) ;
42
-
43
- for ( const file of docs ) {
44
- const ast = await md . read ( path . join ( root , 'documentation' , file ) ) ;
45
-
46
- md . reIndentHeadings ( ast , 1 ) ;
47
- md . mapLinks ( ast , rewriteHref ) ;
48
-
49
- const title = md . getTitle ( ast ) ;
50
- md . insertFrontMatter ( ast , { title } ) ;
51
- md . removeFirstHeading ( ast ) ;
52
-
53
- await md . write ( ast , path . join ( outdir , pascalToHyphenCase ( file ) + 'x' ) ) ;
54
- }
55
-
56
- for ( const dir of getDirs ( docs ) ) {
57
- const file = path . join ( outdir , dir , 'index.mdx' ) ;
58
- if ( await exists ( file ) ) continue ;
59
- const ast : md . Root = { type : 'root' , children : [ ] } ;
60
- md . insertFrontMatter ( ast , { title : path . basename ( dir ) } ) ;
61
- await md . write ( ast , file ) ;
62
- }
0 commit comments