@@ -4,16 +4,6 @@ import fs from "fs";
44
55export const GITHUB_ACTIONS_OUTPUT = "GITHUB_ACTIONS_OUTPUT" in process . env || "GITHUB_EVENT_PATH" in process . env ;
66
7- export function getChangedFiles ( ) {
8- // "--diff-filter=ACMR" => ignore deleted files.
9- const diffOut = execFileSync ( "git" , [ "diff" , "--name-only" , "--diff-filter=ACMR" , "@{upstream}" ] , { encoding : "utf8" } ) ;
10- const files = diffOut
11- . split ( "\n" )
12- . map ( ( f ) => f . trim ( ) )
13- . filter ( ( f ) => f . length > 0 && fs . existsSync ( f ) ) ;
14- return [ ...new Set ( files ) ] ;
15- }
16-
177export function logInfo ( ...args ) {
188 const text = args . join ( " " ) ;
199 console . log ( styleText ( "yellow" , text ) ) ;
@@ -119,3 +109,28 @@ export async function sh(binary, ...args) {
119109 console . log ( "::endgroup::" ) ;
120110 }
121111}
112+
113+ export function getChangedFiles ( ) {
114+ // "--diff-filter=ACMR" => ignore deleted files.
115+ const diffOut = execFileSync ( "git" , [ "diff" , "--name-only" , "--diff-filter=ACMR" , "@{upstream}" ] , { encoding : "utf8" } ) ;
116+ return parseGitFiles ( diffOut , { isPorcelain : false } ) ;
117+ }
118+
119+ export function parseGitFiles ( output , { isPorcelain = false } = { } ) {
120+ const files = new Set ( ) ;
121+ for ( let line of output . split ( "\n" ) ) {
122+ line = line . trimEnd ( ) ;
123+ if ( isPorcelain ) {
124+ if ( line . length <= 3 )
125+ continue ;
126+ line = line . substring ( 3 ) ;
127+ } else {
128+ if ( line . length === 0 )
129+ continue ;
130+ }
131+ if ( fs . existsSync ( line ) )
132+ files . add ( line ) ;
133+
134+ }
135+ return [ ...files ] ;
136+ }
0 commit comments