mirror of https://github.com/aminya/setup-cpp
3 lines
53 KiB
JavaScript
3 lines
53 KiB
JavaScript
function isDigit(t){return t>=CHAR_0&&CHAR_9>=t}function isHexit(t){return t>=CHAR_A&&CHAR_F>=t||t>=CHAR_a&&CHAR_f>=t||t>=CHAR_0&&CHAR_9>=t}function isBit(t){return t===CHAR_1||t===CHAR_0}function isOctit(t){return t>=CHAR_0&&CHAR_7>=t}function isAlphaNumQuoteHyphen(t){return t>=CHAR_A&&CHAR_Z>=t||t>=CHAR_a&&CHAR_z>=t||t>=CHAR_0&&CHAR_9>=t||t===CHAR_APOS||t===CHAR_QUOT||t===CHAR_LOWBAR||t===CHAR_HYPHEN}function isAlphaNumHyphen(t){return t>=CHAR_A&&CHAR_Z>=t||t>=CHAR_a&&CHAR_z>=t||t>=CHAR_0&&CHAR_9>=t||t===CHAR_LOWBAR||t===CHAR_HYPHEN}function hasKey(t,e){return!!hasOwnProperty.call(t,e)||("__proto__"===e&&defineProperty(t,"__proto__",descriptor),!1)}function InlineTable(){return Object.defineProperties({},{[_type]:{value:INLINE_TABLE}})}function isInlineTable(t){return null!==t&&"object"==typeof t&&t[_type]===INLINE_TABLE}function Table(){return Object.defineProperties({},{[_type]:{value:TABLE},[_declared]:{value:!1,writable:!0}})}function isTable(t){return null!==t&&"object"==typeof t&&t[_type]===TABLE}function InlineList(t){return Object.defineProperties([],{[_type]:{value:INLINE_LIST},[_contentType]:{value:t}})}function isInlineList(t){return null!==t&&"object"==typeof t&&t[_type]===INLINE_LIST}function List(){return Object.defineProperties([],{[_type]:{value:LIST}})}function isList(t){return null!==t&&"object"==typeof t&&t[_type]===LIST}function Integer(t){let e=Number(t);return Object.is(e,-0)&&(e=0),commonjsGlobal.BigInt&&!Number.isSafeInteger(e)?new BoxedBigInt(t):Object.defineProperties(new Number(e),{isNaN:{value:function(){return isNaN(this)}},[_type]:{value:INTEGER},[_inspect]:{value:()=>`[Integer: ${t}]`}})}function isInteger(t){return null!==t&&"object"==typeof t&&t[_type]===INTEGER}function Float(t){return Object.defineProperties(new Number(t),{[_type]:{value:FLOAT},[_inspect]:{value:()=>`[Float: ${t}]`}})}function isFloat(t){return null!==t&&"object"==typeof t&&t[_type]===FLOAT}function tomlType$1(t){const e=typeof t;if("object"===e){if(null===t)return"null";if(t instanceof Date)return"datetime";if(_type in t)switch(t[_type]){case INLINE_TABLE:return"inline-table";case INLINE_LIST:return"inline-list";case TABLE:return"table";case LIST:return"list";case FLOAT:return"float";case INTEGER:return"integer"}}return e}function makeParserClass(t){return class extends t{constructor(){super(),this.ctx=this.obj=Table()}atEndOfWord(){return this.char===CHAR_NUM||this.char===CTRL_I||this.char===CHAR_SP||this.atEndOfLine()}atEndOfLine(){return this.char===t.END||this.char===CTRL_J||this.char===CTRL_M}parseStart(){if(this.char===t.END)return null;if(this.char===CHAR_LSQB)return this.call(this.parseTableOrList);if(this.char===CHAR_NUM)return this.call(this.parseComment);if(this.char===CTRL_J||this.char===CHAR_SP||this.char===CTRL_I||this.char===CTRL_M)return null;if(isAlphaNumQuoteHyphen(this.char))return this.callNow(this.parseAssignStatement);throw this.error(new TomlError(`Unknown character "${this.char}"`))}parseWhitespaceToEOL(){if(this.char===CHAR_SP||this.char===CTRL_I||this.char===CTRL_M)return null;if(this.char===CHAR_NUM)return this.goto(this.parseComment);if(this.char===t.END||this.char===CTRL_J)return this.return();throw this.error(new TomlError("Unexpected character, expected only whitespace or comments till end of line"))}parseAssignStatement(){return this.callNow(this.parseAssign,this.recordAssignStatement)}recordAssignStatement(t){let e=this.ctx,r=t.key.pop();for(let i of t.key){if(hasKey(e,i)&&!isTable(e[i]))throw this.error(new TomlError("Can't redefine existing key"));e=e[i]=e[i]||Table()}if(hasKey(e,r))throw this.error(new TomlError("Can't redefine existing key"));return e[_declared]=!0,e[r]=isInteger(t.value)||isFloat(t.value)?t.value.valueOf():t.value,this.goto(this.parseWhitespaceToEOL)}parseAssign(){return this.callNow(this.parseKeyword,this.recordAssignKeyword)}recordAssignKeyword(t){return this.state.resultTable?this.state.resultTable.push(t):this.state.resultTable=[t],this.goto(this.parseAssignKeywordPreDot)}parseAssignKeywordPreDot(){return this.char===CHAR_PERIOD?this.next(this.parseAssignKeywordPostDot):this.char!==CHAR_SP&&this.char!==CTRL_I?this.goto(this.parseAssignEqual):void 0}parseAssignKeywordPostDot(){if(this.char!==CHAR_SP&&this.char!==CTRL_I)return this.callNow(this.parseKeyword,this.recordAssignKeyword)}parseAssignEqual(){if(this.char===CHAR_EQUALS)return this.next(this.parseAssignPreValue);throw this.error(new TomlError('Invalid character, expected "="'))}parseAssignPreValue(){return this.char===CHAR_SP||this.char===CTRL_I?null:this.callNow(this.parseValue,this.recordAssignValue)}recordAssignValue(t){return this.returnNow({key:this.state.resultTable,value:t})}parseComment(){do{if(this.char===t.END||this.char===CTRL_J)return this.return();if(this.char===CHAR_DEL||CTRL_CHAR_BOUNDARY>=this.char&&this.char!==CTRL_I)throw this.errorControlCharIn("comments")}while(this.nextChar())}parseTableOrList(){if(this.char!==CHAR_LSQB)return this.goto(this.parseTable);this.next(this.parseList)}parseTable(){return this.ctx=this.obj,this.goto(this.parseTableNext)}parseTableNext(){return this.char===CHAR_SP||this.char===CTRL_I?null:this.callNow(this.parseKeyword,this.parseTableMore)}parseTableMore(t){if(this.char===CHAR_SP||this.char===CTRL_I)return null;if(this.char===CHAR_RSQB){if(hasKey(this.ctx,t)&&(!isTable(this.ctx[t])||this.ctx[t][_declared]))throw this.error(new TomlError("Can't redefine existing key"));return this.ctx=this.ctx[t]=this.ctx[t]||Table(),this.ctx[_declared]=!0,this.next(this.parseWhitespaceToEOL)}if(this.char===CHAR_PERIOD){if(hasKey(this.ctx,t))if(isTable(this.ctx[t]))this.ctx=this.ctx[t];else{if(!isList(this.ctx[t]))throw this.error(new TomlError("Can't redefine existing key"));this.ctx=this.ctx[t][this.ctx[t].length-1]}else this.ctx=this.ctx[t]=Table();return this.next(this.parseTableNext)}throw this.error(new TomlError("Unexpected character, expected whitespace, . or ]"))}parseList(){return this.ctx=this.obj,this.goto(this.parseListNext)}parseListNext(){return this.char===CHAR_SP||this.char===CTRL_I?null:this.callNow(this.parseKeyword,this.parseListMore)}parseListMore(t){if(this.char===CHAR_SP||this.char===CTRL_I)return null;if(this.char===CHAR_RSQB){if(hasKey(this.ctx,t)||(this.ctx[t]=List()),isInlineList(this.ctx[t]))throw this.error(new TomlError("Can't extend an inline array"));if(!isList(this.ctx[t]))throw this.error(new TomlError("Can't redefine an existing key"));{const e=Table();this.ctx[t].push(e),this.ctx=e}return this.next(this.parseListEnd)}if(this.char===CHAR_PERIOD){if(hasKey(this.ctx,t)){if(isInlineList(this.ctx[t]))throw this.error(new TomlError("Can't extend an inline array"));if(isInlineTable(this.ctx[t]))throw this.error(new TomlError("Can't extend an inline table"));if(isList(this.ctx[t]))this.ctx=this.ctx[t][this.ctx[t].length-1];else{if(!isTable(this.ctx[t]))throw this.error(new TomlError("Can't redefine an existing key"));this.ctx=this.ctx[t]}}else this.ctx=this.ctx[t]=Table();return this.next(this.parseListNext)}throw this.error(new TomlError("Unexpected character, expected whitespace, . or ]"))}parseListEnd(t){if(this.char===CHAR_RSQB)return this.next(this.parseWhitespaceToEOL);throw this.error(new TomlError("Unexpected character, expected whitespace, . or ]"))}parseValue(){if(this.char===t.END)throw this.error(new TomlError("Key without value"));if(this.char===CHAR_QUOT)return this.next(this.parseDoubleString);if(this.char===CHAR_APOS)return this.next(this.parseSingleString);if(this.char===CHAR_HYPHEN||this.char===CHAR_PLUS)return this.goto(this.parseNumberSign);if(this.char===CHAR_i)return this.next(this.parseInf);if(this.char===CHAR_n)return this.next(this.parseNan);if(isDigit(this.char))return this.goto(this.parseNumberOrDateTime);if(this.char===CHAR_t||this.char===CHAR_f)return this.goto(this.parseBoolean);if(this.char===CHAR_LSQB)return this.call(this.parseInlineList,this.recordValue);if(this.char===CHAR_LCUB)return this.call(this.parseInlineTable,this.recordValue);throw this.error(new TomlError("Unexpected character, expecting string, number, datetime, boolean, inline array or inline table"))}recordValue(t){return this.returnNow(t)}parseInf(){if(this.char===CHAR_n)return this.next(this.parseInf2);throw this.error(new TomlError('Unexpected character, expected "inf", "+inf" or "-inf"'))}parseInf2(){if(this.char===CHAR_f)return this.return("-"===this.state.buf?-1/0:1/0);throw this.error(new TomlError('Unexpected character, expected "inf", "+inf" or "-inf"'))}parseNan(){if(this.char===CHAR_a)return this.next(this.parseNan2);throw this.error(new TomlError('Unexpected character, expected "nan"'))}parseNan2(){if(this.char===CHAR_n)return this.return(NaN);throw this.error(new TomlError('Unexpected character, expected "nan"'))}parseKeyword(){return this.char===CHAR_QUOT?this.next(this.parseBasicString):this.char===CHAR_APOS?this.next(this.parseLiteralString):this.goto(this.parseBareKey)}parseBareKey(){do{if(this.char===t.END)throw this.error(new TomlError("Key ended without value"));if(!isAlphaNumHyphen(this.char)){if(0===this.state.buf.length)throw this.error(new TomlError("Empty bare keys are not allowed"));return this.returnNow()}this.consume()}while(this.nextChar())}parseSingleString(){return this.char===CHAR_APOS?this.next(this.parseLiteralMultiStringMaybe):this.goto(this.parseLiteralString)}parseLiteralString(){do{if(this.char===CHAR_APOS)return this.return();if(this.atEndOfLine())throw this.error(new TomlError("Unterminated string"));if(this.char===CHAR_DEL||CTRL_CHAR_BOUNDARY>=this.char&&this.char!==CTRL_I)throw this.errorControlCharIn("strings");this.consume()}while(this.nextChar())}parseLiteralMultiStringMaybe(){return this.char===CHAR_APOS?this.next(this.parseLiteralMultiString):this.returnNow()}parseLiteralMultiString(){return this.char===CTRL_M?null:this.char===CTRL_J?this.next(this.parseLiteralMultiStringContent):this.goto(this.parseLiteralMultiStringContent)}parseLiteralMultiStringContent(){do{if(this.char===CHAR_APOS)return this.next(this.parseLiteralMultiEnd);if(this.char===t.END)throw this.error(new TomlError("Unterminated multi-line string"));if(this.char===CHAR_DEL||CTRL_CHAR_BOUNDARY>=this.char&&this.char!==CTRL_I&&this.char!==CTRL_J&&this.char!==CTRL_M)throw this.errorControlCharIn("strings");this.consume()}while(this.nextChar())}parseLiteralMultiEnd(){return this.char===CHAR_APOS?this.next(this.parseLiteralMultiEnd2):(this.state.buf+="'",this.goto(this.parseLiteralMultiStringContent))}parseLiteralMultiEnd2(){return this.char===CHAR_APOS?this.next(this.parseLiteralMultiEnd3):(this.state.buf+="''",this.goto(this.parseLiteralMultiStringContent))}parseLiteralMultiEnd3(){return this.char===CHAR_APOS?(this.state.buf+="'",this.next(this.parseLiteralMultiEnd4)):this.returnNow()}parseLiteralMultiEnd4(){return this.char===CHAR_APOS?(this.state.buf+="'",this.return()):this.returnNow()}parseDoubleString(){return this.char===CHAR_QUOT?this.next(this.parseMultiStringMaybe):this.goto(this.parseBasicString)}parseBasicString(){do{if(this.char===CHAR_BSOL)return this.call(this.parseEscape,this.recordEscapeReplacement);if(this.char===CHAR_QUOT)return this.return();if(this.atEndOfLine())throw this.error(new TomlError("Unterminated string"));if(this.char===CHAR_DEL||CTRL_CHAR_BOUNDARY>=this.char&&this.char!==CTRL_I)throw this.errorControlCharIn("strings");this.consume()}while(this.nextChar())}recordEscapeReplacement(t){return this.state.buf+=t,this.goto(this.parseBasicString)}parseMultiStringMaybe(){return this.char===CHAR_QUOT?this.next(this.parseMultiString):this.returnNow()}parseMultiString(){return this.char===CTRL_M?null:this.char===CTRL_J?this.next(this.parseMultiStringContent):this.goto(this.parseMultiStringContent)}parseMultiStringContent(){do{if(this.char===CHAR_BSOL)return this.call(this.parseMultiEscape,this.recordMultiEscapeReplacement);if(this.char===CHAR_QUOT)return this.next(this.parseMultiEnd);if(this.char===t.END)throw this.error(new TomlError("Unterminated multi-line string"));if(this.char===CHAR_DEL||CTRL_CHAR_BOUNDARY>=this.char&&this.char!==CTRL_I&&this.char!==CTRL_J&&this.char!==CTRL_M)throw this.errorControlCharIn("strings");this.consume()}while(this.nextChar())}errorControlCharIn(t){let e="\\u00";return 16>this.char&&(e+="0"),e+=this.char.toString(16),this.error(new TomlError(`Control characters (codes < 0x1f and 0x7f) are not allowed in ${t}, use ${e} instead`))}recordMultiEscapeReplacement(t){return this.state.buf+=t,this.goto(this.parseMultiStringContent)}parseMultiEnd(){return this.char===CHAR_QUOT?this.next(this.parseMultiEnd2):(this.state.buf+='"',this.goto(this.parseMultiStringContent))}parseMultiEnd2(){return this.char===CHAR_QUOT?this.next(this.parseMultiEnd3):(this.state.buf+='""',this.goto(this.parseMultiStringContent))}parseMultiEnd3(){return this.char===CHAR_QUOT?(this.state.buf+='"',this.next(this.parseMultiEnd4)):this.returnNow()}parseMultiEnd4(){return this.char===CHAR_QUOT?(this.state.buf+='"',this.return()):this.returnNow()}parseMultiEscape(){return this.char===CTRL_M||this.char===CTRL_J?this.next(this.parseMultiTrim):this.char===CHAR_SP||this.char===CTRL_I?this.next(this.parsePreMultiTrim):this.goto(this.parseEscape)}parsePreMultiTrim(){if(this.char===CHAR_SP||this.char===CTRL_I)return null;if(this.char===CTRL_M||this.char===CTRL_J)return this.next(this.parseMultiTrim);throw this.error(new TomlError("Can't escape whitespace"))}parseMultiTrim(){return this.char===CTRL_J||this.char===CHAR_SP||this.char===CTRL_I||this.char===CTRL_M?null:this.returnNow()}parseEscape(){if(this.char in escapes)return this.return(escapes[this.char]);if(this.char===CHAR_u)return this.call(this.parseSmallUnicode,this.parseUnicodeReturn);if(this.char===CHAR_U)return this.call(this.parseLargeUnicode,this.parseUnicodeReturn);throw this.error(new TomlError("Unknown escape character: "+this.char))}parseUnicodeReturn(t){try{const e=parseInt(t,16);if(e>=SURROGATE_FIRST&&SURROGATE_LAST>=e)throw this.error(new TomlError("Invalid unicode, character in range 0xD800 - 0xDFFF is reserved"));return this.returnNow(String.fromCodePoint(e))}catch(e){throw this.error(TomlError.wrap(e))}}parseSmallUnicode(){if(!isHexit(this.char))throw this.error(new TomlError("Invalid character in unicode sequence, expected hex"));if(this.consume(),this.state.buf.length>=4)return this.return()}parseLargeUnicode(){if(!isHexit(this.char))throw this.error(new TomlError("Invalid character in unicode sequence, expected hex"));if(this.consume(),this.state.buf.length>=8)return this.return()}parseNumberSign(){return this.consume(),this.next(this.parseMaybeSignedInfOrNan)}parseMaybeSignedInfOrNan(){return this.char===CHAR_i?this.next(this.parseInf):this.char===CHAR_n?this.next(this.parseNan):this.callNow(this.parseNoUnder,this.parseNumberIntegerStart)}parseNumberIntegerStart(){return this.char===CHAR_0?(this.consume(),this.next(this.parseNumberIntegerExponentOrDecimal)):this.goto(this.parseNumberInteger)}parseNumberIntegerExponentOrDecimal(){return this.char===CHAR_PERIOD?(this.consume(),this.call(this.parseNoUnder,this.parseNumberFloat)):this.char===CHAR_E||this.char===CHAR_e?(this.consume(),this.next(this.parseNumberExponentSign)):this.returnNow(Integer(this.state.buf))}parseNumberInteger(){if(!isDigit(this.char)){if(this.char===CHAR_LOWBAR)return this.call(this.parseNoUnder);if(this.char===CHAR_E||this.char===CHAR_e)return this.consume(),this.next(this.parseNumberExponentSign);if(this.char===CHAR_PERIOD)return this.consume(),this.call(this.parseNoUnder,this.parseNumberFloat);{const t=Integer(this.state.buf);if(t.isNaN())throw this.error(new TomlError("Invalid number"));return this.returnNow(t)}}this.consume()}parseNoUnder(){if(this.char===CHAR_LOWBAR||this.char===CHAR_PERIOD||this.char===CHAR_E||this.char===CHAR_e)throw this.error(new TomlError("Unexpected character, expected digit"));if(this.atEndOfWord())throw this.error(new TomlError("Incomplete number"));return this.returnNow()}parseNoUnderHexOctBinLiteral(){if(this.char===CHAR_LOWBAR||this.char===CHAR_PERIOD)throw this.error(new TomlError("Unexpected character, expected digit"));if(this.atEndOfWord())throw this.error(new TomlError("Incomplete number"));return this.returnNow()}parseNumberFloat(){return this.char===CHAR_LOWBAR?this.call(this.parseNoUnder,this.parseNumberFloat):isDigit(this.char)?void this.consume():this.char===CHAR_E||this.char===CHAR_e?(this.consume(),this.next(this.parseNumberExponentSign)):this.returnNow(Float(this.state.buf))}parseNumberExponentSign(){if(isDigit(this.char))return this.goto(this.parseNumberExponent);if(this.char!==CHAR_HYPHEN&&this.char!==CHAR_PLUS)throw this.error(new TomlError("Unexpected character, expected -, + or digit"));this.consume(),this.call(this.parseNoUnder,this.parseNumberExponent)}parseNumberExponent(){if(!isDigit(this.char))return this.char===CHAR_LOWBAR?this.call(this.parseNoUnder):this.returnNow(Float(this.state.buf));this.consume()}parseNumberOrDateTime(){return this.char===CHAR_0?(this.consume(),this.next(this.parseNumberBaseOrDateTime)):this.goto(this.parseNumberOrDateTimeOnly)}parseNumberOrDateTimeOnly(){return this.char===CHAR_LOWBAR?this.call(this.parseNoUnder,this.parseNumberInteger):isDigit(this.char)?(this.consume(),void(this.state.buf.length>4&&this.next(this.parseNumberInteger))):this.char===CHAR_E||this.char===CHAR_e?(this.consume(),this.next(this.parseNumberExponentSign)):this.char===CHAR_PERIOD?(this.consume(),this.call(this.parseNoUnder,this.parseNumberFloat)):this.char===CHAR_HYPHEN?this.goto(this.parseDateTime):this.char===CHAR_COLON?this.goto(this.parseOnlyTimeHour):this.returnNow(Integer(this.state.buf))}parseDateTimeOnly(){if(4>this.state.buf.length){if(isDigit(this.char))return this.consume();if(this.char===CHAR_COLON)return this.goto(this.parseOnlyTimeHour);throw this.error(new TomlError("Expected digit while parsing year part of a date"))}if(this.char===CHAR_HYPHEN)return this.goto(this.parseDateTime);throw this.error(new TomlError("Expected hyphen (-) while parsing year part of date"))}parseNumberBaseOrDateTime(){return this.char===CHAR_b?(this.consume(),this.call(this.parseNoUnderHexOctBinLiteral,this.parseIntegerBin)):this.char===CHAR_o?(this.consume(),this.call(this.parseNoUnderHexOctBinLiteral,this.parseIntegerOct)):this.char===CHAR_x?(this.consume(),this.call(this.parseNoUnderHexOctBinLiteral,this.parseIntegerHex)):this.char===CHAR_PERIOD?this.goto(this.parseNumberInteger):isDigit(this.char)?this.goto(this.parseDateTimeOnly):this.returnNow(Integer(this.state.buf))}parseIntegerHex(){if(!isHexit(this.char)){if(this.char===CHAR_LOWBAR)return this.call(this.parseNoUnderHexOctBinLiteral);{const t=Integer(this.state.buf);if(t.isNaN())throw this.error(new TomlError("Invalid number"));return this.returnNow(t)}}this.consume()}parseIntegerOct(){if(!isOctit(this.char)){if(this.char===CHAR_LOWBAR)return this.call(this.parseNoUnderHexOctBinLiteral);{const t=Integer(this.state.buf);if(t.isNaN())throw this.error(new TomlError("Invalid number"));return this.returnNow(t)}}this.consume()}parseIntegerBin(){if(!isBit(this.char)){if(this.char===CHAR_LOWBAR)return this.call(this.parseNoUnderHexOctBinLiteral);{const t=Integer(this.state.buf);if(t.isNaN())throw this.error(new TomlError("Invalid number"));return this.returnNow(t)}}this.consume()}parseDateTime(){if(4>this.state.buf.length)throw this.error(new TomlError("Years less than 1000 must be zero padded to four characters"));return this.state.result=this.state.buf,this.state.buf="",this.next(this.parseDateMonth)}parseDateMonth(){if(this.char===CHAR_HYPHEN){if(2>this.state.buf.length)throw this.error(new TomlError("Months less than 10 must be zero padded to two characters"));return this.state.result+="-"+this.state.buf,this.state.buf="",this.next(this.parseDateDay)}if(!isDigit(this.char))throw this.error(new TomlError("Incomplete datetime"));this.consume()}parseDateDay(){if(this.char===CHAR_T||this.char===CHAR_SP){if(2>this.state.buf.length)throw this.error(new TomlError("Days less than 10 must be zero padded to two characters"));return this.state.result+="-"+this.state.buf,this.state.buf="",this.next(this.parseStartTimeHour)}if(this.atEndOfWord())return this.returnNow(createDate(this.state.result+"-"+this.state.buf));if(!isDigit(this.char))throw this.error(new TomlError("Incomplete datetime"));this.consume()}parseStartTimeHour(){return this.atEndOfWord()?this.returnNow(createDate(this.state.result)):this.goto(this.parseTimeHour)}parseTimeHour(){if(this.char===CHAR_COLON){if(2>this.state.buf.length)throw this.error(new TomlError("Hours less than 10 must be zero padded to two characters"));return this.state.result+="T"+this.state.buf,this.state.buf="",this.next(this.parseTimeMin)}if(!isDigit(this.char))throw this.error(new TomlError("Incomplete datetime"));this.consume()}parseTimeMin(){if(this.state.buf.length>=2||!isDigit(this.char)){if(2===this.state.buf.length&&this.char===CHAR_COLON)return this.state.result+=":"+this.state.buf,this.state.buf="",this.next(this.parseTimeSec);throw this.error(new TomlError("Incomplete datetime"))}this.consume()}parseTimeSec(){if(!isDigit(this.char))throw this.error(new TomlError("Incomplete datetime"));if(this.consume(),2===this.state.buf.length)return this.state.result+=":"+this.state.buf,this.state.buf="",this.next(this.parseTimeZoneOrFraction)}parseOnlyTimeHour(){if(this.char===CHAR_COLON){if(2>this.state.buf.length)throw this.error(new TomlError("Hours less than 10 must be zero padded to two characters"));return this.state.result=this.state.buf,this.state.buf="",this.next(this.parseOnlyTimeMin)}throw this.error(new TomlError("Incomplete time"))}parseOnlyTimeMin(){if(this.state.buf.length>=2||!isDigit(this.char)){if(2===this.state.buf.length&&this.char===CHAR_COLON)return this.state.result+=":"+this.state.buf,this.state.buf="",this.next(this.parseOnlyTimeSec);throw this.error(new TomlError("Incomplete time"))}this.consume()}parseOnlyTimeSec(){if(!isDigit(this.char))throw this.error(new TomlError("Incomplete time"));if(this.consume(),2===this.state.buf.length)return this.next(this.parseOnlyTimeFractionMaybe)}parseOnlyTimeFractionMaybe(){if(this.state.result+=":"+this.state.buf,this.char!==CHAR_PERIOD)return this.return(createTime(this.state.result));this.state.buf="",this.next(this.parseOnlyTimeFraction)}parseOnlyTimeFraction(){if(!isDigit(this.char)){if(this.atEndOfWord()){if(0===this.state.buf.length)throw this.error(new TomlError("Expected digit in milliseconds"));return this.returnNow(createTime(this.state.result+"."+this.state.buf))}throw this.error(new TomlError("Unexpected character in datetime, expected period (.), minus (-), plus (+) or Z"))}this.consume()}parseTimeZoneOrFraction(){if(this.char===CHAR_PERIOD)this.consume(),this.next(this.parseDateTimeFraction);else{if(this.char!==CHAR_HYPHEN&&this.char!==CHAR_PLUS){if(this.char===CHAR_Z)return this.consume(),this.return(createDateTime(this.state.result+this.state.buf));if(this.atEndOfWord())return this.returnNow(createDateTimeFloat(this.state.result+this.state.buf));throw this.error(new TomlError("Unexpected character in datetime, expected period (.), minus (-), plus (+) or Z"))}this.consume(),this.next(this.parseTimeZoneHour)}}parseDateTimeFraction(){if(isDigit(this.char))this.consume();else{if(1===this.state.buf.length)throw this.error(new TomlError("Expected digit in milliseconds"));if(this.char!==CHAR_HYPHEN&&this.char!==CHAR_PLUS){if(this.char===CHAR_Z)return this.consume(),this.return(createDateTime(this.state.result+this.state.buf));if(this.atEndOfWord())return this.returnNow(createDateTimeFloat(this.state.result+this.state.buf));throw this.error(new TomlError("Unexpected character in datetime, expected period (.), minus (-), plus (+) or Z"))}this.consume(),this.next(this.parseTimeZoneHour)}}parseTimeZoneHour(){if(!isDigit(this.char))throw this.error(new TomlError("Unexpected character in datetime, expected digit"));if(this.consume(),/\d\d$/.test(this.state.buf))return this.next(this.parseTimeZoneSep)}parseTimeZoneSep(){if(this.char!==CHAR_COLON)throw this.error(new TomlError("Unexpected character in datetime, expected colon"));this.consume(),this.next(this.parseTimeZoneMin)}parseTimeZoneMin(){if(!isDigit(this.char))throw this.error(new TomlError("Unexpected character in datetime, expected digit"));if(this.consume(),/\d\d$/.test(this.state.buf))return this.return(createDateTime(this.state.result+this.state.buf))}parseBoolean(){return this.char===CHAR_t?(this.consume(),this.next(this.parseTrue_r)):this.char===CHAR_f?(this.consume(),this.next(this.parseFalse_a)):void 0}parseTrue_r(){if(this.char===CHAR_r)return this.consume(),this.next(this.parseTrue_u);throw this.error(new TomlError("Invalid boolean, expected true or false"))}parseTrue_u(){if(this.char===CHAR_u)return this.consume(),this.next(this.parseTrue_e);throw this.error(new TomlError("Invalid boolean, expected true or false"))}parseTrue_e(){if(this.char===CHAR_e)return this.return(!0);throw this.error(new TomlError("Invalid boolean, expected true or false"))}parseFalse_a(){if(this.char===CHAR_a)return this.consume(),this.next(this.parseFalse_l);throw this.error(new TomlError("Invalid boolean, expected true or false"))}parseFalse_l(){if(this.char===CHAR_l)return this.consume(),this.next(this.parseFalse_s);throw this.error(new TomlError("Invalid boolean, expected true or false"))}parseFalse_s(){if(this.char===CHAR_s)return this.consume(),this.next(this.parseFalse_e);throw this.error(new TomlError("Invalid boolean, expected true or false"))}parseFalse_e(){if(this.char===CHAR_e)return this.return(!1);throw this.error(new TomlError("Invalid boolean, expected true or false"))}parseInlineList(){if(this.char===CHAR_SP||this.char===CTRL_I||this.char===CTRL_M||this.char===CTRL_J)return null;if(this.char===t.END)throw this.error(new TomlError("Unterminated inline array"));return this.char===CHAR_NUM?this.call(this.parseComment):this.char===CHAR_RSQB?this.return(this.state.resultArr||InlineList()):this.callNow(this.parseValue,this.recordInlineListValue)}recordInlineListValue(t){return this.state.resultArr||(this.state.resultArr=InlineList(tomlType$1(t))),isFloat(t)||isInteger(t)?this.state.resultArr.push(t.valueOf()):this.state.resultArr.push(t),this.goto(this.parseInlineListNext)}parseInlineListNext(){if(this.char===CHAR_SP||this.char===CTRL_I||this.char===CTRL_M||this.char===CTRL_J)return null;if(this.char===CHAR_NUM)return this.call(this.parseComment);if(this.char===CHAR_COMMA)return this.next(this.parseInlineList);if(this.char===CHAR_RSQB)return this.goto(this.parseInlineList);throw this.error(new TomlError("Invalid character, expected whitespace, comma (,) or close bracket (])"))}parseInlineTable(){if(this.char===CHAR_SP||this.char===CTRL_I)return null;if(this.char===t.END||this.char===CHAR_NUM||this.char===CTRL_J||this.char===CTRL_M)throw this.error(new TomlError("Unterminated inline array"));return this.char===CHAR_RCUB?this.return(this.state.resultTable||InlineTable()):(this.state.resultTable||(this.state.resultTable=InlineTable()),this.callNow(this.parseAssign,this.recordInlineTableValue))}recordInlineTableValue(t){let e=this.state.resultTable,r=t.key.pop();for(let i of t.key){if(hasKey(e,i)&&(!isTable(e[i])||e[i][_declared]))throw this.error(new TomlError("Can't redefine existing key"));e=e[i]=e[i]||Table()}if(hasKey(e,r))throw this.error(new TomlError("Can't redefine existing key"));return e[r]=isInteger(t.value)||isFloat(t.value)?t.value.valueOf():t.value,this.goto(this.parseInlineTableNext)}parseInlineTableNext(){if(this.char===CHAR_SP||this.char===CTRL_I)return null;if(this.char===t.END||this.char===CHAR_NUM||this.char===CTRL_J||this.char===CTRL_M)throw this.error(new TomlError("Unterminated inline array"));if(this.char===CHAR_COMMA)return this.next(this.parseInlineTablePostComma);if(this.char===CHAR_RCUB)return this.goto(this.parseInlineTable);throw this.error(new TomlError("Invalid character, expected whitespace, comma (,) or close bracket (])"))}parseInlineTablePostComma(){if(this.char===CHAR_SP||this.char===CTRL_I)return null;if(this.char===t.END||this.char===CHAR_NUM||this.char===CTRL_J||this.char===CTRL_M)throw this.error(new TomlError("Unterminated inline array"));if(this.char===CHAR_COMMA)throw this.error(new TomlError("Empty elements in inline tables are not permitted"));if(this.char===CHAR_RCUB)throw this.error(new TomlError("Trailing commas in inline tables are not permitted"));return this.goto(this.parseInlineTable)}}}function prettyError$2(t,e){if(null==t.pos||null==t.line)return t;let r=t.message;if(r+=` at row ${t.line+1}, col ${t.col+1}, pos ${t.pos}:\n`,e&&e.split){const i=e.split(/\n/),s=(Math.min(i.length,t.line+3)+"").length;let n=" ";for(;s>n.length;)n+=" ";for(let e=Math.max(0,t.line-1);Math.min(i.length,t.line+2)>e;++e){let o=e+1+"";if(s>o.length&&(o=" "+o),t.line===e){r+=o+"> "+i[e]+"\n",r+=n+" ";for(let e=0;t.col>e;++e)r+=" ";r+="^\n"}else r+=o+": "+i[e]+"\n"}}return t.message=r+"\n",t}function parseString(t){commonjsGlobal.Buffer&&commonjsGlobal.Buffer.isBuffer(t)&&(t=t.toString("utf8"));const e=new TOMLParser$2;try{return e.parse(t),e.finish()}catch(r){throw prettyError$1(r,t)}}function parseAsync(t,e){function r(e,i,n,o){if(e>=t.length)try{return n(s.finish())}catch(a){return o(prettyError(a,t))}try{s.parse(t.slice(e,e+i)),setImmediate(r,e+i,i,n,o)}catch(a){o(prettyError(a,t))}}e||(e={});const i=e.blocksize||40960,s=new TOMLParser$1;return new Promise(((t,e)=>{setImmediate(r,0,i,t,e)}))}function parseStream(t){return t?parseReadable(t):parseTransform()}function parseReadable(t){const e=new TOMLParser;return t.setEncoding("utf8"),new Promise(((r,i)=>{function s(){if(a=!0,!o)try{r(e.finish())}catch(t){i(t)}}function n(t){h=!0,i(t)}let o,a=!1,h=!1;t.once("end",s),t.once("error",n),function r(){let i;for(o=!0;null!==(i=t.read());)try{e.parse(i)}catch(c){return n(c)}if(o=!1,a)return s();h||t.once("readable",r)}()}))}function parseTransform(){const t=new TOMLParser;return new stream.Transform({objectMode:!0,transform(e,r,i){try{t.parse(e.toString(r))}catch(s){this.emit("error",s)}i()},flush(e){try{this.push(t.finish())}catch(r){this.emit("error",r)}e()}})}function stringify(t){if(null===t)throw typeError("null");if(void 0===t)throw typeError("undefined");if("object"!=typeof t)throw typeError(typeof t);if("function"==typeof t.toJSON&&(t=t.toJSON()),null==t)return null;const e=tomlType(t);if("table"!==e)throw typeError(e);return stringifyObject("","",t)}function typeError(t){return Error("Can only stringify objects, not "+t)}function getInlineKeys(t){return Object.keys(t).filter((e=>isInline(t[e])))}function getComplexKeys(t){return Object.keys(t).filter((e=>!isInline(t[e])))}function toJSON(t){let e=Array.isArray(t)?[]:{}.hasOwnProperty.call(t,"__proto__")?{["__proto__"]:void 0}:{};for(let r of Object.keys(t))e[r]=t[r]&&"function"==typeof t[r].toJSON&&!("toISOString"in t[r])?t[r].toJSON():t[r];return e}function stringifyObject(t,e,r){let i,s;i=getInlineKeys(r=toJSON(r)),s=getComplexKeys(r);const n=[],o=e||"";i.forEach((t=>{var e=tomlType(r[t]);"undefined"!==e&&"null"!==e&&n.push(o+stringifyKey(t)+" = "+stringifyAnyInline(r[t],!0))})),n.length>0&&n.push("");const a=t&&i.length>0?e+" ":"";return s.forEach((e=>{n.push(stringifyComplex(t,a,e,r[e]))})),n.join("\n")}function isInline(t){switch(tomlType(t)){case"undefined":case"null":case"integer":case"nan":case"float":case"boolean":case"string":case"datetime":return!0;case"array":return 0===t.length||"table"!==tomlType(t[0]);case"table":return 0===Object.keys(t).length;default:return!1}}function tomlType(t){return void 0===t?"undefined":null===t?"null":"bigint"==typeof t||Number.isInteger(t)&&!Object.is(t,-0)?"integer":"number"==typeof t?"float":"boolean"==typeof t?"boolean":"string"==typeof t?"string":"toISOString"in t?isNaN(t)?"undefined":"datetime":Array.isArray(t)?"array":"table"}function stringifyKey(t){const e=t+"";return/^[-A-Za-z0-9_]+$/.test(e)?e:stringifyBasicString(e)}function stringifyBasicString(t){return'"'+escapeString(t).replace(/"/g,'\\"')+'"'}function stringifyLiteralString(t){return"'"+t+"'"}function numpad(t,e){for(;t>e.length;)e="0"+e;return e}function escapeString(t){return t.replace(/\\/g,"\\\\").replace(/[\b]/g,"\\b").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\f/g,"\\f").replace(/\r/g,"\\r").replace(/([\u0000-\u001f\u007f])/,(t=>"\\u"+numpad(4,t.codePointAt(0).toString(16))))}function stringifyMultilineString(t){let e=t.split(/\n/).map((t=>escapeString(t).replace(/"(?="")/g,'\\"'))).join("\n");return'"'===e.slice(-1)&&(e+="\\\n"),'"""\n'+e+'"""'}function stringifyAnyInline(t,e){let r=tomlType(t);return"string"===r&&(e&&/\n/.test(t)?r="string-multiline":!/[\b\t\n\f\r']/.test(t)&&/"/.test(t)&&(r="string-literal")),stringifyInline(t,r)}function stringifyInline(t,e){switch(e||(e=tomlType(t)),e){case"string-multiline":return stringifyMultilineString(t);case"string":return stringifyBasicString(t);case"string-literal":return stringifyLiteralString(t);case"integer":return stringifyInteger(t);case"float":return stringifyFloat(t);case"boolean":return stringifyBoolean(t);case"datetime":return stringifyDatetime(t);case"array":return stringifyInlineArray(t.filter((t=>"null"!==tomlType(t)&&"undefined"!==tomlType(t)&&"nan"!==tomlType(t))));case"table":return stringifyInlineTable(t);default:throw typeError(e)}}function stringifyInteger(t){return(t+"").replace(/\B(?=(\d{3})+(?!\d))/g,"_")}function stringifyFloat(t){if(t===1/0)return"inf";if(t===-1/0)return"-inf";if(Object.is(t,NaN))return"nan";if(Object.is(t,-0))return"-0.0";const[e,r]=(t+"").split(".");return stringifyInteger(e)+"."+r}function stringifyBoolean(t){return t+""}function stringifyDatetime(t){return t.toISOString()}function stringifyInlineArray(t){let e="[";const r=(t=toJSON(t)).map((t=>stringifyInline(t)));return r.join(", ").length>60||/\n/.test(r)?e+="\n "+r.join(",\n ")+"\n":e+=" "+r.join(", ")+(r.length>0?" ":""),e+"]"}function stringifyInlineTable(t){t=toJSON(t);const e=[];return Object.keys(t).forEach((r=>{e.push(stringifyKey(r)+" = "+stringifyAnyInline(t[r],!1))})),"{ "+e.join(", ")+(e.length>0?" ":"")+"}"}function stringifyComplex(t,e,r,i){const s=tomlType(i);if("array"===s)return stringifyArrayOfTables(t,e,r,i);if("table"===s)return stringifyComplexTable(t,e,r,i);throw typeError(s)}function stringifyArrayOfTables(t,e,r,i){const s=tomlType((i=toJSON(i))[0]);if("table"!==s)throw typeError(s);const n=t+stringifyKey(r);let o="";return i.forEach((t=>{o.length>0&&(o+="\n"),o+=e+"[["+n+"]]\n",o+=stringifyObject(n+".",e,t)})),o}function stringifyComplexTable(t,e,r,i){const s=t+stringifyKey(r);let n="";return getInlineKeys(i).length>0&&(n+=e+"["+s+"]\n"),n+stringifyObject(s+".",e,i)}function createSymlinkInFolder(t,e,r,i=!1){const s=path.join(t,e),n=path.join(t,r);fs.existsSync(n)||(fs.symlinkSync(s,n),!IS_WINDOWS&&i&&fs.chmodSync(n,"755"))}function validateVersion(t){return isNightlyKeyword(t)||!!semver.validRange(t)}function isNightlyKeyword(t){return"nightly"===t}function getPyPyVersionFromPath(t){return path.basename(path.dirname(t))}function readExactPyPyVersionFile(t){let e="";const r=path.join(t,PYPY_VERSION_FILE);return fs.existsSync(r)&&(e=(""+fs.readFileSync(r)).trim()),e}function writeExactPyPyVersionFile(t,e){const r=path.join(t,PYPY_VERSION_FILE);fs.writeFileSync(r,e)}function validatePythonVersionFormatForPyPy(t){return/^\d+\.\d+$/.test(t)}async function getWindowsInfo(){const{stdout:t}=await execExports.getExecOutput('powershell -command "(Get-CimInstance -ClassName Win32_OperatingSystem).Caption"',void 0,{silent:!0});return{osName:"Windows",osVersion:t.trim().split(" ")[3]}}async function getMacOSInfo(){const{stdout:t}=await execExports.getExecOutput("sw_vers",["-productVersion"],{silent:!0});return{osName:"macOS",osVersion:t.trim()}}async function getLinuxInfo(){const{stdout:t}=await execExports.getExecOutput("lsb_release",["-i","-r","-s"],{silent:!0}),[e,r]=t.trim().split("\n");return coreExports.debug(`OS Name: ${e}, Version: ${r}`),{osName:e,osVersion:r}}async function getOSInfo(){let t;try{IS_WINDOWS?t=await getWindowsInfo():IS_LINUX?t=await getLinuxInfo():IS_MAC&&(t=await getMacOSInfo())}catch(e){coreExports.debug(e.message)}finally{return t}}function getBinaryDirectory(t){return IS_WINDOWS?t:path.join(t,"bin")}function getDownloadFileName(t){const e=process.env.RUNNER_TEMP||".";return IS_WINDOWS?path.join(e,path.basename(t)):void 0}async function installPyPy(t,e,r,i,s){let n;if(!(s=s??await getAvailablePyPyVersions())||0===s.length)throw Error("No release was found in PyPy version.json");let o=findRelease(s,e,t,r,!1);if(!o||!o.foundAsset)throw Error(`PyPy version ${e} (${t}) with arch ${r} not found`);const{foundAsset:a,resolvedPythonVersion:h,resolvedPyPyVersion:c}=o,l=""+a.download_url;coreExports.info(`Downloading PyPy from "${l}" ...`);try{const t=getDownloadFileName(l),e=await downloadTool_1(l,t);coreExports.info("Extracting downloaded archive..."),n=IS_WINDOWS?await extractZip_1(e):await extractTar_1(e,void 0,"x");const i=fs.readdirSync(n)[0],s=path.join(n,i);let o=s;isNightlyKeyword(c)||(o=await cacheDir_1(s,"PyPy",h,r)),writeExactPyPyVersionFile(o,c);const a=getBinaryDirectory(o);return await createPyPySymlink(a,h),await installPip(a),{installDir:o,resolvedPythonVersion:h,resolvedPyPyVersion:c}}catch(u){throw u instanceof Error&&(coreExports.info(u instanceof HTTPError_1&&(403===u.httpStatusCode||429===u.httpStatusCode)?`Received HTTP status code ${u.httpStatusCode}. This usually indicates the rate limit has been exceeded`:u.message),void 0!==u.stack&&coreExports.debug(u.stack)),u}}async function getAvailablePyPyVersions(){const t="https://downloads.python.org/pypy/versions.json",e=new HttpClient("tool-cache"),r=await e.getJson(t);if(!r.result)throw Error(`Unable to retrieve the list of available PyPy versions from '${t}'`);return r.result}async function createPyPySymlink(t,e){const r=semver.coerce(e),i=semver.major(r),s=2===i?"":"3",n=`${i}.${semver.minor(r)}`,o=IS_WINDOWS?".exe":"";coreExports.info("Creating symlinks..."),createSymlinkInFolder(t,`pypy${s}${o}`,`python${i}${o}`,!0),createSymlinkInFolder(t,`pypy${s}${o}`,"python"+o,!0),createSymlinkInFolder(t,`pypy${s}${o}`,`pypy${n}${o}`,!0)}async function installPip(t){coreExports.info("Installing and updating pip");const e=path.join(t,"python");await execExports.exec(e+" -m ensurepip"),await execExports.exec(t+"/python -m pip install --ignore-installed pip")}function findRelease(t,e,r,i,s){const n={includePrerelease:s},o=t.filter((t=>{const s=semver.satisfies(semver.coerce(t.python_version),e),o=isNightlyKeyword(r)&&isNightlyKeyword(t.pypy_version)||semver.satisfies(pypyVersionToSemantic(t.pypy_version),r,n),a=t.files&&(IS_WINDOWS?isArchPresentForWindows(t,i):isArchPresentForMacOrLinux(t,i,process.platform));return s&&o&&a}));if(0===o.length)return null;const a=o.sort(((t,e)=>semver.compare(semver.coerce(pypyVersionToSemantic(e.pypy_version)),semver.coerce(pypyVersionToSemantic(t.pypy_version)))||semver.compare(semver.coerce(e.python_version),semver.coerce(t.python_version))))[0];return{foundAsset:IS_WINDOWS?findAssetForWindows(a,i):findAssetForMacOrLinux(a,i,process.platform),resolvedPythonVersion:a.python_version,resolvedPyPyVersion:a.pypy_version.trim()}}function pypyVersionToSemantic(t){return t.replace(/(\d+\.\d+\.\d+)((?:a|b|rc))(\d*)/g,"$1-$2.$3")}function isArchPresentForWindows(t,e){return e=replaceX32toX86(e),t.files.some((t=>WINDOWS_PLATFORMS.includes(t.platform)&&t.arch===e))}function isArchPresentForMacOrLinux(t,e,r){return t.files.some((t=>t.arch===e&&t.platform===r))}function findAssetForWindows(t,e){return e=replaceX32toX86(e),t.files.find((t=>WINDOWS_PLATFORMS.includes(t.platform)&&t.arch===e))}function findAssetForMacOrLinux(t,e,r){return t.files.find((t=>t.arch===e&&t.platform===r))}function replaceX32toX86(t){return"x32"===t&&(t="x86"),t}async function findPyPyVersion(t,e,r,i,s){let n,o="",a="";const h=parsePyPyVersion(t);({installDir:n,resolvedPythonVersion:a,resolvedPyPyVersion:o}=findPyPyToolCache(h.pythonVersion,h.pypyVersion,e)),n||({installDir:n,resolvedPythonVersion:a,resolvedPyPyVersion:o}=await installPyPy(h.pypyVersion,h.pythonVersion,e,s,void 0));const c=path.join(n,IS_WINDOWS?"Scripts":"bin"),l=path.join(IS_WINDOWS?n:c,"python"+(IS_WINDOWS?".exe":"")),u=getBinaryDirectory(n);return coreExports.exportVariable("pythonLocation",n),coreExports.exportVariable("Python_ROOT_DIR",n),coreExports.exportVariable("Python2_ROOT_DIR",n),coreExports.exportVariable("Python3_ROOT_DIR",n),coreExports.exportVariable("PKG_CONFIG_PATH",u+"/lib/pkgconfig"),coreExports.addPath(u),coreExports.addPath(c),coreExports.setOutput("python-version","pypy"+o),coreExports.setOutput("python-path",l),{resolvedPyPyVersion:o,resolvedPythonVersion:a}}function findPyPyToolCache(t,e,r){let i="",s="",n=IS_WINDOWS?findPyPyInstallDirForWindows(t):find_1("PyPy",t,r);return n&&(s=getPyPyVersionFromPath(n),i=readExactPyPyVersionFile(n),semver.satisfies(i,e)||(n=null,i="",s="")),n||coreExports.info(`PyPy version ${t} (${e}) was not found in the local cache`),{installDir:n,resolvedPythonVersion:s,resolvedPyPyVersion:i}}function parsePyPyVersion(t){const e=t.split("-").filter((t=>!!t));if(/^(pypy)(.+)/.test(e[0])){const t=e[0].replace("pypy","");e.splice(0,1,"pypy",t)}if(2>e.length||"pypy"!=e[0])throw Error("Invalid 'version' property for PyPy. PyPy version should be specified as 'pypy<python-version>' or 'pypy-<python-version>'. See README for examples and documentation.");const r=e[1];let i;if(i=e.length>2?pypyVersionToSemantic(e[2]):"x",!validateVersion(r)||!validateVersion(i))throw Error("Invalid 'version' property for PyPy. Both Python version and PyPy versions should satisfy SemVer notation. See README for examples and documentation.");if(!validatePythonVersionFormatForPyPy(r))throw Error("Invalid format of Python version for PyPy. Python version should be specified in format 'x.y'. See README for examples and documentation.");return{pypyVersion:i,pythonVersion:r}}function findPyPyInstallDirForWindows(t){let e="";return WINDOWS_ARCHS.forEach((r=>e=e||find_1("PyPy",t,r))),e}async function findReleaseFromManifest(t,e,r){return r||(r=await getManifest()),await findFromManifest_1(t,!1,r,e)}async function getManifest(){try{return await getManifestFromRepo()}catch(t){coreExports.debug("Fetching the manifest via the API failed."),t instanceof Error&&coreExports.debug(t.message)}return await getManifestFromURL()}function getManifestFromRepo(){return coreExports.debug(`Getting manifest from ${MANIFEST_REPO_OWNER}/${MANIFEST_REPO_NAME}@${MANIFEST_REPO_BRANCH}`),getManifestFromRepo_1(MANIFEST_REPO_OWNER,MANIFEST_REPO_NAME,AUTH,MANIFEST_REPO_BRANCH)}async function getManifestFromURL(){coreExports.debug("Falling back to fetching the manifest using raw URL.");const t=new HttpClient("tool-cache"),e=await t.getJson(MANIFEST_URL);if(!e.result)throw Error("Unable to get manifest from "+MANIFEST_URL);return e.result}async function installPython(t){const e={cwd:t,env:{...process.env,...IS_LINUX&&{LD_LIBRARY_PATH:path.join(t,"lib")}},silent:!0,listeners:{stdout:t=>{coreExports.info((""+t).trim())},stderr:t=>{coreExports.error((""+t).trim())}}};IS_WINDOWS?await execExports.exec("powershell",["./setup.ps1"],e):await execExports.exec("bash",["./setup.sh"],e)}async function installCpythonFromRelease(t){const e=t.files[0].download_url;coreExports.info(`Download from "${e}"`);let r="";try{const t=getDownloadFileName(e);let i;r=await downloadTool_1(e,t,AUTH),coreExports.info("Extract downloaded archive"),i=IS_WINDOWS?await extractZip_1(r):await extractTar_1(r),coreExports.info("Execute installation script"),await installPython(i)}catch(i){throw i instanceof HTTPError_1&&(coreExports.info(403===i.httpStatusCode||429===i.httpStatusCode?`Received HTTP status code ${i.httpStatusCode}. This usually indicates the rate limit has been exceeded`:i.message),i.stack&&coreExports.debug(i.stack)),i}}function binDir(t){return path.join(t,IS_WINDOWS?"Scripts":"bin")}async function useCpythonVersion(t,e,r,i,s){let n=pythonVersionToSemantic(desugarDevVersion(t));coreExports.debug(`Semantic version spec of ${t} is ${n}`);let o=find_1("Python",n,e);if(!o){coreExports.info(`Version ${n} was not found in the local cache`);const t=await findReleaseFromManifest(n,e,null);t&&t.files&&t.files.length>0&&(coreExports.info(`Version ${n} is available for downloading`),await installCpythonFromRelease(t),o=find_1("Python",n,e))}if(!o){const r=await getOSInfo();throw Error([`The version '${t}' with architecture '${e}' was not found for ${r?`${r.osName} ${r.osVersion}`:"this operating system"}.`,"The list of all available versions can be found here: "+MANIFEST_URL].join(require$$0.EOL))}const a=binDir(o),h=path.join(IS_WINDOWS?o:a,"python"+(IS_WINDOWS?".exe":""));if(coreExports.exportVariable("pythonLocation",o),coreExports.exportVariable("PKG_CONFIG_PATH",o+"/lib/pkgconfig"),coreExports.exportVariable("pythonLocation",o),coreExports.exportVariable("Python_ROOT_DIR",o),coreExports.exportVariable("Python2_ROOT_DIR",o),coreExports.exportVariable("Python3_ROOT_DIR",o),coreExports.exportVariable("PKG_CONFIG_PATH",o+"/lib/pkgconfig"),IS_LINUX){const t=process.env.LD_LIBRARY_PATH?":"+process.env.LD_LIBRARY_PATH:"",e=path.join(o,"lib");t.split(":").includes(e)||coreExports.exportVariable("LD_LIBRARY_PATH",e+t)}if(coreExports.addPath(o),coreExports.addPath(a),IS_WINDOWS){const t=path.basename(path.dirname(o)),e=semver.major(t),r=semver.minor(t),i=path.join(process.env.APPDATA||"","Python",`Python${e}${r}`,"Scripts");coreExports.addPath(i)}const c=versionFromPath(o);return coreExports.setOutput("python-version",c),coreExports.setOutput("python-path",h),{impl:"CPython",version:c}}function desugarDevVersion(t){return t.replace(/^(\d+)\.(\d+)-dev$/,"~$1.$2.0-0")}function versionFromPath(t){const e=t.split(path.sep),r=e.findIndex((t=>"PyPy"===t||"Python"===t));return e[r+1]||""}function pythonVersionToSemantic(t,e){return t.replace(/(\d+\.\d+\.\d+)((?:a|b|rc)\d*)/g,"$1-$2")}function isPyPyVersion(t){return t.startsWith("pypy")}async function setupActionsPython(t,e,r){IS_MAC&&(process.env.AGENT_TOOLSDIRECTORY="/Users/runner/hostedtoolcache");const i=process.env.AGENT_TOOLSDIRECTORY?.trim();if("string"==typeof i&&""!==i&&(process.env.RUNNER_TOOL_CACHE=process.env.AGENT_TOOLSDIRECTORY),coreExports.debug("Python is expected to be installed into "+process.env.RUNNER_TOOL_CACHE),t){let e;if(isPyPyVersion(t)){const i=await findPyPyVersion(t,r,!0,checkLatest,!1);e=`${i.resolvedPyPyVersion}-${i.resolvedPythonVersion}`,info(`Successfully set up PyPy ${i.resolvedPyPyVersion} with Python (${i.resolvedPythonVersion})`)}else{const i=await useCpythonVersion(t,r);e=i.version,info(`Successfully set up ${i.impl} (${e})`)}}GITHUB_ACTIONS&&await addPythonLoggingMatcher()}async function addPythonLoggingMatcher(){const t=join(dirname,"python_matcher.json");if(!(await pathExists(t)))return warning("the python_matcher.json file does not exist in the same folder as setup-cpp.js");info("::add-matcher::"+t)}import*as path from"path";import path__default,{join}from"path";import{fileURLToPath}from"url";import{c as commonjsGlobal,s as semver,a as coreExports,e as execExports,d as downloadTool_1,b as extractZip_1,f as extractTar_1,g as cacheDir_1,H as HTTPError_1,h as HttpClient,i as find_1,j as findFromManifest_1,k as getManifestFromRepo_1,l as info,p as pathExists,w as warning,m as ciInfo}from"../setup-cpp.mjs";import fs from"fs";import require$$0$1 from"stream";import*as require$$0 from"os";import"crypto";import"http";import"https";import"net";import"tls";import"events";import"util";import"string_decoder";import"child_process";import"assert";import"timers";import"fs/promises";import"node:buffer";import"node:path";import"node:child_process";import"node:process";import"node:url";import"node:os";import"node:fs";import"buffer";import"node:util";import"process";import"node:string_decoder";import"node:tty";import"node:timers/promises";import"node:events";import"node:v8";import"node:stream";import"node:stream/promises";import"console";var parse={exports:{}},tomlParser={exports:{}};const ParserEND=1114112;class ParserError extends Error{constructor(t,e,r){super("[ParserError] "+t,e,r),this.name="ParserError",this.code="ParserError",Error.captureStackTrace&&Error.captureStackTrace(this,ParserError)}}class State{constructor(t){this.parser=t,this.buf="",this.returned=null,this.result=null,this.resultTable=null,this.resultArr=null}}class Parser{constructor(){this.pos=0,this.col=0,this.line=0,this.obj={},this.ctx=this.obj,this.stack=[],this._buf="",this.char=null,this.ii=0,this.state=new State(this.parseStart)}parse(t){if(0===t.length||null==t.length)return;let e;for(this._buf=t+"",this.ii=-1,this.char=-1;!1===e||this.nextChar();)e=this.runOne();this._buf=null}nextChar(){return 10===this.char&&(++this.line,this.col=-1),++this.ii,this.char=this._buf.codePointAt(this.ii),++this.pos,++this.col,this.haveBuffer()}haveBuffer(){return this._buf.length>this.ii}runOne(){return this.state.parser.call(this,this.state.returned)}finish(){let t;this.char=ParserEND;do{t=this.state.parser,this.runOne()}while(this.state.parser!==t);return this.ctx=null,this.state=null,this._buf=null,this.obj}next(t){if("function"!=typeof t)throw new ParserError("Tried to set state to non-existent state: "+JSON.stringify(t));this.state.parser=t}goto(t){return this.next(t),this.runOne()}call(t,e){e&&this.next(e),this.stack.push(this.state),this.state=new State(t)}callNow(t,e){return this.call(t,e),this.runOne()}return(t){if(0===this.stack.length)throw this.error(new ParserError("Stack underflow"));void 0===t&&(t=this.state.buf),this.state=this.stack.pop(),this.state.returned=t}returnNow(t){return this.return(t),this.runOne()}consume(){if(this.char===ParserEND)throw this.error(new ParserError("Unexpected end-of-buffer"));this.state.buf+=this._buf[this.ii]}error(t){return t.line=this.line,t.col=this.col,t.pos=this.pos,t}parseStart(){throw new ParserError("Must declare a parseStart method")}}Parser.END=ParserEND,Parser.Error=ParserError;var parser=Parser,createDatetime=t=>{const e=new Date(t);if(isNaN(e))throw new TypeError("Invalid Datetime");return e},formatNum=(t,e)=>{for(e+="";t>e.length;)e="0"+e;return e};const f$2=formatNum;class FloatingDateTime extends Date{constructor(t){super(t+"Z"),this.isFloating=!0}toISOString(){return`${this.getUTCFullYear()}-${f$2(2,this.getUTCMonth()+1)}-${f$2(2,this.getUTCDate())}T${f$2(2,this.getUTCHours())}:${f$2(2,this.getUTCMinutes())}:${f$2(2,this.getUTCSeconds())}.${f$2(3,this.getUTCMilliseconds())}`}}var createDatetimeFloat=t=>{const e=new FloatingDateTime(t);if(isNaN(e))throw new TypeError("Invalid Datetime");return e};const f$1=formatNum,DateTime=commonjsGlobal.Date;let Date$1=class extends DateTime{constructor(t){super(t),this.isDate=!0}toISOString(){return`${this.getUTCFullYear()}-${f$1(2,this.getUTCMonth()+1)}-${f$1(2,this.getUTCDate())}`}};var createDate$1=t=>{const e=new Date$1(t);if(isNaN(e))throw new TypeError("Invalid Datetime");return e};const f=formatNum;class Time extends Date{constructor(t){super(`0000-01-01T${t}Z`),this.isTime=!0}toISOString(){return`${f(2,this.getUTCHours())}:${f(2,this.getUTCMinutes())}:${f(2,this.getUTCSeconds())}.${f(3,this.getUTCMilliseconds())}`}}var createTime$1=t=>{const e=new Time(t);if(isNaN(e))throw new TypeError("Invalid Datetime");return e};tomlParser.exports=makeParserClass(parser),tomlParser.exports.makeParserClass=makeParserClass;class TomlError extends Error{constructor(t){super(t),this.name="TomlError",Error.captureStackTrace&&Error.captureStackTrace(this,TomlError),this.fromTOML=!0,this.wrapped=null}}TomlError.wrap=t=>{const e=new TomlError(t.message);return e.code=t.code,e.wrapped=t,e},tomlParser.exports.TomlError=TomlError;const createDateTime=createDatetime,createDateTimeFloat=createDatetimeFloat,createDate=createDate$1,createTime=createTime$1,CTRL_I=9,CTRL_J=10,CTRL_M=13,CTRL_CHAR_BOUNDARY=31,CHAR_SP=32,CHAR_QUOT=34,CHAR_NUM=35,CHAR_APOS=39,CHAR_PLUS=43,CHAR_COMMA=44,CHAR_HYPHEN=45,CHAR_PERIOD=46,CHAR_0=48,CHAR_1=49,CHAR_7=55,CHAR_9=57,CHAR_COLON=58,CHAR_EQUALS=61,CHAR_A=65,CHAR_E=69,CHAR_F=70,CHAR_T=84,CHAR_U=85,CHAR_Z=90,CHAR_LOWBAR=95,CHAR_a=97,CHAR_b=98,CHAR_e=101,CHAR_f=102,CHAR_i=105,CHAR_l=108,CHAR_n=110,CHAR_o=111,CHAR_r=114,CHAR_s=115,CHAR_t=116,CHAR_u=117,CHAR_x=120,CHAR_z=122,CHAR_LCUB=123,CHAR_RCUB=125,CHAR_LSQB=91,CHAR_BSOL=92,CHAR_RSQB=93,CHAR_DEL=127,SURROGATE_FIRST=55296,SURROGATE_LAST=57343,escapes={[CHAR_b]:"\b",[CHAR_t]:"\t",[CHAR_n]:"\n",[CHAR_f]:"\f",[CHAR_r]:"\r",[CHAR_QUOT]:'"',[CHAR_BSOL]:"\\"},_type=Symbol(),_declared=Symbol(),hasOwnProperty={}.hasOwnProperty,defineProperty=Object.defineProperty,descriptor={configurable:!0,enumerable:!0,writable:!0,value:void 0},INLINE_TABLE=Symbol(),TABLE=Symbol(),_contentType=Symbol(),INLINE_LIST=Symbol(),LIST=Symbol();let _custom;try{const utilInspect=eval("require('util').inspect");_custom=utilInspect.custom}catch(_){}const _inspect=_custom||"inspect";class BoxedBigInt{constructor(t){try{this.value=commonjsGlobal.BigInt.asIntN(64,t)}catch(_){this.value=null}Object.defineProperty(this,_type,{value:INTEGER})}isNaN(){return null===this.value}toString(){return this.value+""}[_inspect](){return`[BigInt: ${""+this}]}`}valueOf(){return this.value}}const INTEGER=Symbol(),FLOAT=Symbol();var tomlParserExports=tomlParser.exports,parsePrettyError=prettyError$2,parseString_1=parseString;const TOMLParser$2=tomlParserExports,prettyError$1=parsePrettyError;var parseAsync_1=parseAsync;const TOMLParser$1=tomlParserExports,prettyError=parsePrettyError;var parseStream_1=parseStream;const stream=require$$0$1,TOMLParser=tomlParserExports;parse.exports=parseString_1,parse.exports.async=parseAsync_1,parse.exports.stream=parseStream_1,parse.exports.prettyError=parsePrettyError;var stringify$1={exports:{}};stringify$1.exports=stringify,stringify$1.exports.value=stringifyInline;const IS_WINDOWS="win32"===process.platform,IS_LINUX="linux"===process.platform,IS_MAC="darwin"===process.platform,WINDOWS_ARCHS=["x86","x64"],WINDOWS_PLATFORMS=["win32","win64"],PYPY_VERSION_FILE="PYPY_VERSION",TOKEN=coreExports.getInput("token"),AUTH=TOKEN?"token "+TOKEN:void 0,MANIFEST_REPO_OWNER="actions",MANIFEST_REPO_NAME="python-versions",MANIFEST_REPO_BRANCH="main",MANIFEST_URL=`https://raw.githubusercontent.com/${MANIFEST_REPO_OWNER}/${MANIFEST_REPO_NAME}/${MANIFEST_REPO_BRANCH}/versions-manifest.json`,{GITHUB_ACTIONS:GITHUB_ACTIONS}=ciInfo,dirname="string"==typeof __dirname?__dirname:path__default.dirname(fileURLToPath(import.meta.url)),checkLatest=!1;export{setupActionsPython};
|
|
//# sourceMappingURL=actions_python-Dhv0XnAw.mjs.map
|