11#! /usr/bin/env node
22const { execSync } = require ( "child_process" ) ;
33
4- const [ , packageFromRef , versionFromRef , , prerelease ] =
4+ const [ , packagePatternFromRef , versionFromRef , , prereleaseFromRef ] =
55 / ^ r e f s \/ t a g s \/ ( .+ ) - v ( \d \d * \. \d \d * ( \. \d \d * ) ? ( - .+ ) ? ) $ / . exec ( process . env . GITHUB_REF ?? "" ) ?? [ ] ;
66
77const since = process . env . GITHUB_ACTION
@@ -17,30 +17,36 @@ const lernaList = JSON.parse(
1717const ref = process . env . GITHUB_SHA ?? "HEAD" ;
1818const shortSHA = execSync ( `git rev-parse --short ${ ref } ` ) . toString ( ) . trim ( ) ;
1919
20- const filteredLernaList = JSON . parse (
20+ const scopedLernaList = JSON . parse (
2121 execSync (
22- `lerna list --json --toposort --include-dependents ${
23- packageFromRef ? `--scope='{,*/}${ packageFromRef } '` : since
22+ `lerna list --json --no-private -- toposort --include-dependents ${
23+ packagePatternFromRef ? `--scope='{,*/}${ packagePatternFromRef } '` : since
2424 } `,
2525 { stdio : [ "ignore" , "pipe" , "ignore" ] } ,
2626 ) . toString ( ) ,
27- ) . filter ( ( lerna ) => {
28- if ( lerna . private ) return false ;
29- return true ;
30- } ) ;
27+ ) ;
3128
32- if ( packageFromRef && filteredLernaList . length === 0 ) {
29+ const packagesFromRef = packagePatternFromRef && JSON . parse (
30+ execSync (
31+ `lerna list --json --no-private --scope='{,*/}${ packagePatternFromRef } '` ,
32+ { stdio : [ "ignore" , "pipe" , "ignore" ] } ,
33+ ) . toString ( ) ,
34+ ) ;
35+ if ( packagePatternFromRef && packagesFromRef . length !== 1 ) {
3336 throw new Error ( `Lerna didn't find ${ packageFromRef } in this workspace` ) ;
3437}
38+ const packageFromRef = packagesFromRef ?. [ 0 ] . name ;
3539
36- const lernaScopeArgs = filteredLernaList . map ( ( { name } ) => [ "--scope" , name ] ) . flat ( ) ;
40+ const lernaScopes = scopedLernaList . map ( ( { name } ) => [ "--scope" , name ] ) . flat ( ) ;
3741
3842module . exports = {
39- packageFromRef,
40- versionFromRef,
41- prerelease : ! packageFromRef || ! ! prerelease ,
43+ taggedRelease : packageFromRef ? {
44+ name : packageFromRef ,
45+ version : versionFromRef ,
46+ tag : prereleaseFromRef ? "next" : "latest" ,
47+ } : undefined ,
4248 lernaList,
43- filteredLernaList ,
49+ scopedLernaList ,
4450 shortSHA,
45- lernaScopeArgs ,
51+ lernaScopes ,
4652} ;
0 commit comments