1515
1616import { readdirSync , readFileSync , writeFileSync } from 'node:fs' ;
1717import { join } from 'node:path' ;
18+ import { pathToFileURL } from 'node:url' ;
1819
1920export const CLI_PACKAGE = '@pymodel/pythinker-code' ;
2021export const DESKTOP_PACKAGE = '@pymodel/pythinker-desktop' ;
2122
22- const FRONTMATTER_LINE = / ^ ( \s * ) (?: " ( [ ^ " ] + ) " | ' ( [ ^ ' ] + ) ' | ( [ ^ : ' " ] + ?) ) \s * : \s * ( [ A - Z a - z ] + ) \s * $ / u;
23+ const FRONTMATTER_LINE = / ^ ( \s * ) (?: " ( [ ^ " ] + ) " | ' ( [ ^ ' ] + ) ' | ( [ ^ : ' " ] + ?) ) \s * : \s * (?: " ( [ A - Z a - z ] + ) " | ' ( [ A - Z a - z ] + ) ' | ( [ A - Z a - z ] + ) ) \s * $ / u;
2324
2425/**
2526 * Add the desktop package to one changeset when it names the CLI alone.
@@ -36,19 +37,21 @@ export function linkDesktop(source) {
3637
3738 let cliLine = - 1 ;
3839 let cliLevel = null ;
40+ let cliIndent = '' ;
3941 for ( const [ index , line ] of lines . entries ( ) ) {
4042 const match = FRONTMATTER_LINE . exec ( line ) ;
4143 if ( match === null ) continue ;
4244 const name = match [ 2 ] ?? match [ 3 ] ?? match [ 4 ] ;
4345 if ( name === DESKTOP_PACKAGE ) return null ;
4446 if ( name === CLI_PACKAGE ) {
4547 cliLine = index ;
46- cliLevel = match [ 5 ] . toLowerCase ( ) ;
48+ cliLevel = ( match [ 5 ] ?? match [ 6 ] ?? match [ 7 ] ) . toLowerCase ( ) ;
49+ cliIndent = match [ 1 ] ;
4750 }
4851 }
4952 if ( cliLine === - 1 ) return null ;
5053
51- lines . splice ( cliLine + 1 , 0 , `"${ DESKTOP_PACKAGE } ": ${ cliLevel } ` ) ;
54+ lines . splice ( cliLine + 1 , 0 , `${ cliIndent } "${ DESKTOP_PACKAGE } ": ${ cliLevel } ` ) ;
5255 return `---\n${ lines . join ( '\n' ) } ${ normalized . slice ( end + 1 ) } ` ;
5356}
5457
@@ -71,7 +74,7 @@ export function linkDesktopChangesets(dir) {
7174 return changed ;
7275}
7376
74- if ( process . argv [ 1 ] !== undefined && import . meta. url === new URL ( `file:// ${ process . argv [ 1 ] } ` ) . href ) {
77+ if ( process . argv [ 1 ] !== undefined && import . meta. url === pathToFileURL ( process . argv [ 1 ] ) . href ) {
7578 const changed = linkDesktopChangesets ( process . argv [ 2 ] ?? '.changeset' ) ;
7679 for ( const name of changed ) console . log ( `linked desktop bump: ${ name } ` ) ;
7780 console . log ( `${ changed . length } changeset(s) now bump ${ DESKTOP_PACKAGE } alongside ${ CLI_PACKAGE } .` ) ;
0 commit comments