1+ import ansi from "#core/ansi" ;
12import NpmApi from "#core/api/npm" ;
23import { TmpDir } from "#core/tmp" ;
34import { repeatAction } from "#core/utils" ;
@@ -29,32 +30,36 @@ export default class Npm {
2930
3031 res = await repeatAction (
3132 async ( ) => {
32- var res ;
33+ var res , error ;
3334
3435 try {
35- process . stdout . write ( `Publishing npm package "${ this . pkg . name } " ...` ) ;
36-
3736 res = await this . #publish( { commitRef, accessStatus } ) ;
38-
39- console . log ( res + "" ) ;
40-
41- return res ;
4237 }
4338 catch ( e ) {
4439 res = result . catch ( e ) ;
4540
46- console . log ( "Publishing npm package ..." , res + "" ) ;
41+ error = true ;
42+ }
4743
44+ console . log ( `Publish npm package "${ this . pkg . name } ":` , res + "" ) ;
45+
46+ if ( error ) {
4847 throw res ;
4948 }
49+ else {
50+ return res ;
51+ }
5052 } ,
5153 {
5254 repeatOnError,
5355 }
5456 ) ;
5557 if ( ! res . ok ) return res ;
5658
57- res = await this . setTags ( { repeatOnError } ) ;
59+ res = await this . setTags ( {
60+ "log" : true ,
61+ repeatOnError,
62+ } ) ;
5863 if ( ! res . ok ) return res ;
5964
6065 if ( accessStatus ) {
@@ -65,17 +70,21 @@ export default class Npm {
6570 return result ( 200 ) ;
6671 }
6772
68- async setTags ( { repeatOnError } = { } ) {
73+ async setTags ( { repeatOnError, logger } = { } ) {
74+ logger ||= globalThis . console ;
75+
6976 if ( this . pkg . isPrivate ) return result ( [ 200 , "Package is private" ] ) ;
7077 if ( ! this . pkg . name ) return result ( [ 500 , "Package has no name" ] ) ;
7178
7279 return repeatAction (
7380 async ( ) => {
74- process . stdout . write ( `Setting npm tags for "${ this . pkg . name } " ...` ) ;
75-
7681 const res = await this . #setTags( ) ;
7782
78- console . log ( res + "" ) ;
83+ logger . log ( "Set npm tags:" , res . ok
84+ ? ( res . data . updated
85+ ? ansi . ok ( " Updated " )
86+ : "Not modified" )
87+ : ansi . error ( " " + res . statusText + " " ) ) ;
7988
8089 if ( ! res . ok ) throw res ;
8190
@@ -89,30 +98,33 @@ export default class Npm {
8998
9099 async setAccessStatus ( accessStatus , { repeatOnError } = { } ) {
91100 if ( this . pkg . isPrivate ) return result ( [ 200 , "Package is private" ] ) ;
92- if ( ! this . pkg . name ) return result ( [ 500 , "Package has no name" ] ) ;
93101
94- if ( accessStatus && this . pkg . name . startsWith ( "@" ) ) {
95- const res = await repeatAction (
96- async ( ) => {
97- process . stdout . write ( `Setting npm access status for "${ this . pkg . name } "...` ) ;
102+ return repeatAction (
103+ async ( ) => {
104+ var res , error ;
98105
99- const res = await this . api . setAccessStatus ( this . pkg . name , accessStatus ) ;
106+ if ( ! this . pkg . name ?. startsWith ( "@" ) ) {
107+ res = result ( [ 500 , "Package name is not valud" ] ) ;
108+ }
109+ else {
110+ res = await this . api . setAccessStatus ( this . pkg . name , accessStatus ) ;
100111
101- console . log ( res + "" ) ;
112+ error = true ;
113+ }
102114
103- if ( ! res . ok ) throw res ;
115+ console . log ( `Set npm access status for " ${ this . pkg . name } ":` , res + "" ) ;
104116
117+ if ( ! res . ok && error ) {
118+ throw res ;
119+ }
120+ else {
105121 return res ;
106- } ,
107- {
108- repeatOnError,
109122 }
110- ) ;
111-
112- if ( ! res . ok ) return res ;
113- }
114-
115- return result ( 200 ) ;
123+ } ,
124+ {
125+ repeatOnError,
126+ }
127+ ) ;
116128 }
117129
118130 // private
@@ -184,7 +196,8 @@ export default class Npm {
184196 }
185197
186198 async #setTags ( ) {
187- var res ;
199+ var res ,
200+ updated = false ;
188201
189202 res = await this . api . getPackageTags ( this . pkg . name ) ;
190203 if ( ! res . ok ) return res ;
@@ -196,24 +209,30 @@ export default class Npm {
196209 if ( ! res . ok ) return res ;
197210 const commit = res . data ;
198211
199- let version ;
212+ let tagVersion ;
200213
201- if ( commit ?. isRelease ) version = commit . releaseVersion . version ;
214+ if ( commit ?. isRelease ) tagVersion = commit . releaseVersion . version ;
202215
203- if ( version ) {
204- if ( versions [ tag ] !== version ) {
205- res = await this . api . setPackageTag ( this . pkg . name , version , tag ) ;
216+ if ( tagVersion ) {
217+ if ( versions [ tag ] !== tagVersion ) {
218+ res = await this . api . setPackageTag ( this . pkg . name , tagVersion , tag ) ;
206219 if ( ! res . ok ) return res ;
220+
221+ updated = true ;
207222 }
208223 }
209224 else {
210225 if ( versions [ tag ] ) {
211226 res = await this . api . deletePackageTag ( this . pkg . name , tag ) ;
212227 if ( ! res . ok ) return res ;
228+
229+ updated = true ;
213230 }
214231 }
215232 }
216233
217- return result ( 200 ) ;
234+ return result ( 200 , {
235+ updated,
236+ } ) ;
218237 }
219238}
0 commit comments