@ -7441,8 +7441,10 @@ class GitCommandManager {
const result = [ ] ;
const result = [ ] ;
// Note, this implementation uses "rev-parse --symbolic-full-name" because the output from
// Note, this implementation uses "rev-parse --symbolic-full-name" because the output from
// "branch --list" is more difficult when in a detached HEAD state.
// "branch --list" is more difficult when in a detached HEAD state.
// Note, this implementation uses "rev-parse --symbolic-full-name" because there is a bug
// TODO(https://github.com/actions/checkout/issues/786): this implementation uses
// in Git 2.18 that causes "rev-parse --symbolic" to output symbolic full names.
// "rev-parse --symbolic-full-name" because there is a bug
// in Git 2.18 that causes "rev-parse --symbolic" to output symbolic full names. When
// 2.18 is no longer supported, we can switch back to --symbolic.
const args = [ 'rev-parse' , '--symbolic-full-name' ] ;
const args = [ 'rev-parse' , '--symbolic-full-name' ] ;
if ( remote ) {
if ( remote ) {
args . push ( '--remotes=origin' ) ;
args . push ( '--remotes=origin' ) ;
@ -7450,19 +7452,43 @@ class GitCommandManager {
else {
else {
args . push ( '--branches' ) ;
args . push ( '--branches' ) ;
}
}
const output = yield this . execGit ( args ) ;
const stderr = [ ] ;
for ( let branch of output . stdout . trim ( ) . split ( '\n' ) ) {
const errline = [ ] ;
const stdout = [ ] ;
const stdline = [ ] ;
const listeners = {
stderr : ( data ) => {
stderr . push ( data . toString ( ) ) ;
} ,
errline : ( data ) => {
errline . push ( data . toString ( ) ) ;
} ,
stdout : ( data ) => {
stdout . push ( data . toString ( ) ) ;
} ,
stdline : ( data ) => {
stdline . push ( data . toString ( ) ) ;
}
} ;
// Suppress the output in order to avoid flooding annotations with innocuous errors.
yield this . execGit ( args , false , true , listeners ) ;
core . debug ( ` stderr callback is: ${ stderr } ` ) ;
core . debug ( ` errline callback is: ${ errline } ` ) ;
core . debug ( ` stdout callback is: ${ stdout } ` ) ;
core . debug ( ` stdline callback is: ${ stdline } ` ) ;
for ( let branch of stdline ) {
branch = branch . trim ( ) ;
branch = branch . trim ( ) ;
if ( branch ) {
if ( ! branch ) {
continue ;
}
if ( branch . startsWith ( 'refs/heads/' ) ) {
if ( branch . startsWith ( 'refs/heads/' ) ) {
branch = branch . substr ( 'refs/heads/' . length ) ;
branch = branch . substr ing ( 'refs/heads/' . length ) ;
}
}
else if ( branch . startsWith ( 'refs/remotes/' ) ) {
else if ( branch . startsWith ( 'refs/remotes/' ) ) {
branch = branch . substr ( 'refs/remotes/' . length ) ;
branch = branch . substr ing ( 'refs/remotes/' . length ) ;
}
}
result . push ( branch ) ;
result . push ( branch ) ;
}
}
}
return result ;
return result ;
} ) ;
} ) ;
}
}
@ -7712,7 +7738,7 @@ class GitCommandManager {
return result ;
return result ;
} ) ;
} ) ;
}
}
execGit ( args , allowAllExitCodes = false , silent = false ) {
execGit ( args , allowAllExitCodes = false , silent = false , customListeners = { } ) {
return _ _awaiter ( this , void 0 , void 0 , function * ( ) {
return _ _awaiter ( this , void 0 , void 0 , function * ( ) {
fshelper . directoryExistsSync ( this . workingDirectory , true ) ;
fshelper . directoryExistsSync ( this . workingDirectory , true ) ;
const result = new GitOutput ( ) ;
const result = new GitOutput ( ) ;
@ -7723,20 +7749,24 @@ class GitCommandManager {
for ( const key of Object . keys ( this . gitEnv ) ) {
for ( const key of Object . keys ( this . gitEnv ) ) {
env [ key ] = this . gitEnv [ key ] ;
env [ key ] = this . gitEnv [ key ] ;
}
}
const defaultListener = {
stdout : ( data ) => {
stdout . push ( data . toString ( ) ) ;
}
} ;
const mergedListeners = Object . assign ( Object . assign ( { } , defaultListener ) , customListeners ) ;
const stdout = [ ] ;
const stdout = [ ] ;
const options = {
const options = {
cwd : this . workingDirectory ,
cwd : this . workingDirectory ,
env ,
env ,
silent ,
silent ,
ignoreReturnCode : allowAllExitCodes ,
ignoreReturnCode : allowAllExitCodes ,
listeners : {
listeners : mergedListeners
stdout : ( data ) => {
stdout . push ( data . toString ( ) ) ;
}
}
} ;
} ;
result . exitCode = yield exec . exec ( ` " ${ this . gitPath } " ` , args , options ) ;
result . exitCode = yield exec . exec ( ` " ${ this . gitPath } " ` , args , options ) ;
result . stdout = stdout . join ( '' ) ;
result . stdout = stdout . join ( '' ) ;
core . debug ( result . exitCode . toString ( ) ) ;
core . debug ( result . stdout ) ;
return result ;
return result ;
} ) ;
} ) ;
}
}
@ -13947,6 +13977,7 @@ var encode = function encode(str, defaultEncoder, charset, kind, format) {
i += 1 ;
i += 1 ;
c = 0x10000 + ( ( ( c & 0x3FF ) << 10 ) | ( string . charCodeAt ( i ) & 0x3FF ) ) ;
c = 0x10000 + ( ( ( c & 0x3FF ) << 10 ) | ( string . charCodeAt ( i ) & 0x3FF ) ) ;
/* eslint operator-linebreak: [2, "before"] */
out += hexTable [ 0xF0 | ( c >> 18 ) ]
out += hexTable [ 0xF0 | ( c >> 18 ) ]
+ hexTable [ 0x80 | ( ( c >> 12 ) & 0x3F ) ]
+ hexTable [ 0x80 | ( ( c >> 12 ) & 0x3F ) ]
+ hexTable [ 0x80 | ( ( c >> 6 ) & 0x3F ) ]
+ hexTable [ 0x80 | ( ( c >> 6 ) & 0x3F ) ]
@ -17572,7 +17603,7 @@ var parseObject = function (chain, val, options, valuesParsed) {
) {
) {
obj = [ ] ;
obj = [ ] ;
obj [ index ] = leaf ;
obj [ index ] = leaf ;
} else {
} else if ( cleanRoot !== '__proto__' ) {
obj [ cleanRoot ] = leaf ;
obj [ cleanRoot ] = leaf ;
}
}
}
}
@ -34704,6 +34735,7 @@ var arrayPrefixGenerators = {
} ;
} ;
var isArray = Array . isArray ;
var isArray = Array . isArray ;
var split = String . prototype . split ;
var push = Array . prototype . push ;
var push = Array . prototype . push ;
var pushToArray = function ( arr , valueOrArray ) {
var pushToArray = function ( arr , valueOrArray ) {
push . apply ( arr , isArray ( valueOrArray ) ? valueOrArray : [ valueOrArray ] ) ;
push . apply ( arr , isArray ( valueOrArray ) ? valueOrArray : [ valueOrArray ] ) ;
@ -34740,10 +34772,13 @@ var isNonNullishPrimitive = function isNonNullishPrimitive(v) {
|| typeof v === 'bigint' ;
|| typeof v === 'bigint' ;
} ;
} ;
var sentinel = { } ;
var stringify = function stringify (
var stringify = function stringify (
object ,
object ,
prefix ,
prefix ,
generateArrayPrefix ,
generateArrayPrefix ,
commaRoundTrip ,
strictNullHandling ,
strictNullHandling ,
skipNulls ,
skipNulls ,
encoder ,
encoder ,
@ -34759,8 +34794,23 @@ var stringify = function stringify(
) {
) {
var obj = object ;
var obj = object ;
if ( sideChannel . has ( object ) ) {
var tmpSc = sideChannel ;
var step = 0 ;
var findFlag = false ;
while ( ( tmpSc = tmpSc . get ( sentinel ) ) !== void undefined && ! findFlag ) {
// Where object last appeared in the ref tree
var pos = tmpSc . get ( object ) ;
step += 1 ;
if ( typeof pos !== 'undefined' ) {
if ( pos === step ) {
throw new RangeError ( 'Cyclic object value' ) ;
throw new RangeError ( 'Cyclic object value' ) ;
} else {
findFlag = true ; // Break while
}
}
if ( typeof tmpSc . get ( sentinel ) === 'undefined' ) {
step = 0 ;
}
}
}
if ( typeof filter === 'function' ) {
if ( typeof filter === 'function' ) {
@ -34787,6 +34837,14 @@ var stringify = function stringify(
if ( isNonNullishPrimitive ( obj ) || utils . isBuffer ( obj ) ) {
if ( isNonNullishPrimitive ( obj ) || utils . isBuffer ( obj ) ) {
if ( encoder ) {
if ( encoder ) {
var keyValue = encodeValuesOnly ? prefix : encoder ( prefix , defaults . encoder , charset , 'key' , format ) ;
var keyValue = encodeValuesOnly ? prefix : encoder ( prefix , defaults . encoder , charset , 'key' , format ) ;
if ( generateArrayPrefix === 'comma' && encodeValuesOnly ) {
var valuesArray = split . call ( String ( obj ) , ',' ) ;
var valuesJoined = '' ;
for ( var i = 0 ; i < valuesArray . length ; ++ i ) {
valuesJoined += ( i === 0 ? '' : ',' ) + formatter ( encoder ( valuesArray [ i ] , defaults . encoder , charset , 'value' , format ) ) ;
}
return [ formatter ( keyValue ) + ( commaRoundTrip && isArray ( obj ) && valuesArray . length === 1 ? '[]' : '' ) + '=' + valuesJoined ] ;
}
return [ formatter ( keyValue ) + '=' + formatter ( encoder ( obj , defaults . encoder , charset , 'value' , format ) ) ] ;
return [ formatter ( keyValue ) + '=' + formatter ( encoder ( obj , defaults . encoder , charset , 'value' , format ) ) ] ;
}
}
return [ formatter ( prefix ) + '=' + formatter ( String ( obj ) ) ] ;
return [ formatter ( prefix ) + '=' + formatter ( String ( obj ) ) ] ;
@ -34801,7 +34859,7 @@ var stringify = function stringify(
var objKeys ;
var objKeys ;
if ( generateArrayPrefix === 'comma' && isArray ( obj ) ) {
if ( generateArrayPrefix === 'comma' && isArray ( obj ) ) {
// we need to join elements in
// we need to join elements in
objKeys = [ { value : obj . length > 0 ? obj . join ( ',' ) || null : undefined } ] ;
objKeys = [ { value : obj . length > 0 ? obj . join ( ',' ) || null : void undefined } ] ;
} else if ( isArray ( filter ) ) {
} else if ( isArray ( filter ) ) {
objKeys = filter ;
objKeys = filter ;
} else {
} else {
@ -34809,24 +34867,28 @@ var stringify = function stringify(
objKeys = sort ? keys . sort ( sort ) : keys ;
objKeys = sort ? keys . sort ( sort ) : keys ;
}
}
for ( var i = 0 ; i < objKeys . length ; ++ i ) {
var adjustedPrefix = commaRoundTrip && isArray ( obj ) && obj . length === 1 ? prefix + '[]' : prefix ;
var key = objKeys [ i ] ;
var value = typeof key === 'object' && key . value !== undefined ? key . value : obj [ key ] ;
for ( var j = 0 ; j < objKeys . length ; ++ j ) {
var key = objKeys [ j ] ;
var value = typeof key === 'object' && typeof key . value !== 'undefined' ? key . value : obj [ key ] ;
if ( skipNulls && value === null ) {
if ( skipNulls && value === null ) {
continue ;
continue ;
}
}
var keyPrefix = isArray ( obj )
var keyPrefix = isArray ( obj )
? typeof generateArrayPrefix === 'function' ? generateArrayPrefix ( prefix, key ) : p refix
? typeof generateArrayPrefix === 'function' ? generateArrayPrefix ( adjustedPrefix, key ) : adjustedP refix
: p refix + ( allowDots ? '.' + key : '[' + key + ']' ) ;
: adjustedP refix + ( allowDots ? '.' + key : '[' + key + ']' ) ;
sideChannel . set ( object , true ) ;
sideChannel . set ( object , step ) ;
var valueSideChannel = getSideChannel ( ) ;
var valueSideChannel = getSideChannel ( ) ;
valueSideChannel . set ( sentinel , sideChannel ) ;
pushToArray ( values , stringify (
pushToArray ( values , stringify (
value ,
value ,
keyPrefix ,
keyPrefix ,
generateArrayPrefix ,
generateArrayPrefix ,
commaRoundTrip ,
strictNullHandling ,
strictNullHandling ,
skipNulls ,
skipNulls ,
encoder ,
encoder ,
@ -34850,7 +34912,7 @@ var normalizeStringifyOptions = function normalizeStringifyOptions(opts) {
return defaults ;
return defaults ;
}
}
if ( opts . encoder !== null && opts . encoder !== undefined && typeof opts . encoder !== 'function' ) {
if ( opts . encoder !== null && typeof opts . encoder !== 'undefined' && typeof opts . encoder !== 'function' ) {
throw new TypeError ( 'Encoder has to be a function.' ) ;
throw new TypeError ( 'Encoder has to be a function.' ) ;
}
}
@ -34923,6 +34985,10 @@ module.exports = function (object, opts) {
}
}
var generateArrayPrefix = arrayPrefixGenerators [ arrayFormat ] ;
var generateArrayPrefix = arrayPrefixGenerators [ arrayFormat ] ;
if ( opts && 'commaRoundTrip' in opts && typeof opts . commaRoundTrip !== 'boolean' ) {
throw new TypeError ( '`commaRoundTrip` must be a boolean, or absent' ) ;
}
var commaRoundTrip = generateArrayPrefix === 'comma' && opts && opts . commaRoundTrip ;
if ( ! objKeys ) {
if ( ! objKeys ) {
objKeys = Object . keys ( obj ) ;
objKeys = Object . keys ( obj ) ;
@ -34943,6 +35009,7 @@ module.exports = function (object, opts) {
obj [ key ] ,
obj [ key ] ,
key ,
key ,
generateArrayPrefix ,
generateArrayPrefix ,
commaRoundTrip ,
options . strictNullHandling ,
options . strictNullHandling ,
options . skipNulls ,
options . skipNulls ,
options . encode ? options . encoder : null ,
options . encode ? options . encoder : null ,