From 767b0ae9c8f82fc74badba1cfc0531d533493763 Mon Sep 17 00:00:00 2001 From: Shivam Mathur Date: Mon, 23 Feb 2026 15:43:47 +0530 Subject: [PATCH] testing [skip ci] --- __tests__/utils.test.ts | 6 +-- dist/index.js | 2 +- src/config.ts | 2 +- src/scripts/darwin.sh | 34 ++++++++-------- src/scripts/extensions/add_extensions.sh | 24 +++++------ src/scripts/extensions/blackfire.sh | 6 +-- src/scripts/extensions/couchbase.sh | 8 ++-- src/scripts/extensions/cubrid.sh | 2 +- src/scripts/extensions/event.sh | 4 +- src/scripts/extensions/firebird.sh | 6 +-- src/scripts/extensions/gearman.sh | 2 +- src/scripts/extensions/geos.sh | 2 +- src/scripts/extensions/http.ps1 | 8 ++-- src/scripts/extensions/http.sh | 6 +-- src/scripts/extensions/ibm.sh | 6 +-- src/scripts/extensions/intl.sh | 2 +- src/scripts/extensions/ioncube.sh | 4 +- src/scripts/extensions/oci.ps1 | 2 +- src/scripts/extensions/oci.sh | 4 +- src/scripts/extensions/phalcon.sh | 4 +- src/scripts/extensions/relay.sh | 6 +-- src/scripts/extensions/source.sh | 12 +++--- src/scripts/extensions/sqlsrv.ps1 | 4 +- src/scripts/extensions/zephir_parser.ps1 | 2 +- src/scripts/extensions/zephir_parser.sh | 2 +- src/scripts/linux.sh | 52 ++++++++++++------------ src/scripts/tools/add_tools.ps1 | 14 +++---- src/scripts/tools/add_tools.sh | 20 ++++----- src/scripts/tools/blackfire.ps1 | 8 ++-- src/scripts/tools/blackfire.sh | 6 +-- src/scripts/tools/brew.sh | 16 ++++---- src/scripts/tools/grpc_php_plugin.ps1 | 4 +- src/scripts/tools/grpc_php_plugin.sh | 6 +-- src/scripts/tools/mago.ps1 | 4 +- src/scripts/tools/mago.sh | 2 +- src/scripts/tools/ppa.sh | 10 ++--- src/scripts/tools/protoc.ps1 | 4 +- src/scripts/tools/protoc.sh | 2 +- src/scripts/tools/symfony.sh | 2 +- src/scripts/unix.sh | 18 ++++---- src/scripts/win32.ps1 | 16 ++++---- src/utils.ts | 4 +- 42 files changed, 174 insertions(+), 174 deletions(-) diff --git a/__tests__/utils.test.ts b/__tests__/utils.test.ts index c8982bd8..4dffa820 100644 --- a/__tests__/utils.test.ts +++ b/__tests__/utils.test.ts @@ -173,9 +173,9 @@ describe('Utils tests', () => { }); it('checking suppressOutput', async () => { - expect(await utils.suppressOutput('win32')).toEqual(' >$null 2>&1'); - expect(await utils.suppressOutput('linux')).toEqual(' >/dev/null 2>&1'); - expect(await utils.suppressOutput('darwin')).toEqual(' >/dev/null 2>&1'); + expect(await utils.suppressOutput('win32')).toEqual(' '); + expect(await utils.suppressOutput('linux')).toEqual(' '); + expect(await utils.suppressOutput('darwin')).toEqual(' '); expect(await utils.suppressOutput('openbsd')).toContain( 'Platform openbsd is not supported' ); diff --git a/dist/index.js b/dist/index.js index 4dfcdb97..71122677 100644 --- a/dist/index.js +++ b/dist/index.js @@ -1 +1 @@ -(()=>{var e={472:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){if(n===undefined)n=r;var i=Object.getOwnPropertyDescriptor(t,r);if(!i||("get"in i?!t.__esModule:i.writable||i.configurable)){i={enumerable:true,get:function(){return t[r]}}}Object.defineProperty(e,n,i)}:function(e,t,r,n){if(n===undefined)n=r;e[n]=t[r]});var i=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:true,value:t})}:function(e,t){e["default"]=t});var s=this&&this.__importStar||function(){var ownKeys=function(e){ownKeys=Object.getOwnPropertyNames||function(e){var t=[];for(var r in e)if(Object.prototype.hasOwnProperty.call(e,r))t[t.length]=r;return t};return ownKeys(e)};return function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r=ownKeys(e),s=0;s/dev/null 2>&1'+r}async function addINIValuesWindows(e){const t=await o.CSVArray(e);let r="\n";await o.asyncForEach(t,(async function(e){r+=await o.addLog("$tick",e,"Added to php.ini","win32")+"\n"}));return'Add-Content "$php_dir\\php.ini" "'+t.join("\n")+'"'+r}async function addINIValues(e,t,r=false){let n="\n";switch(r){case true:n+=await o.stepLog("Add php.ini values",t)+await o.suppressOutput(t)+"\n";break;case false:default:n+=await o.stepLog("Add php.ini values",t)+"\n";break}switch(t){case"win32":return n+await addINIValuesWindows(e);case"darwin":case"linux":return n+await addINIValuesUnix(e);default:return await o.log("Platform "+t+" is not supported",t,"error")}}},469:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:true});t.issueCommand=issueCommand;t.error=error;t.setFailed=setFailed;t.getInput=getInput;const n=r(857);function toCommandValue(e){if(e instanceof Error){return e.toString()}return e}function escapeData(e){return toCommandValue(e).replace(/%/g,"%25").replace(/\r/g,"%0D").replace(/\n/g,"%0A")}function escapeProperty(e){return e.replace(/%/g,"%25").replace(/\r/g,"%0D").replace(/\n/g,"%0A").replace(/:/g,"%3A").replace(/,/g,"%2C")}function issueCommand(e,t,r){let i=`::${e}`;if(t&&Object.keys(t).length>0){i+=" ";const e=Object.entries(t).filter((([,e])=>e)).map((([e,t])=>`${e}=${escapeProperty(t)}`)).join(",");i+=e}i+=`::${escapeData(r)}`;process.stdout.write(i+n.EOL)}function error(e){issueCommand("error",{},e)}function setFailed(e){process.exitCode=1;error(e)}function getInput(e,t=false){const r=process.env[`INPUT_${e.replace(/ /g,"_").toUpperCase()}`]||"";if(t&&!r){throw new Error(`Input required and not supplied: ${e}`)}return r.trim()}},524:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){if(n===undefined)n=r;var i=Object.getOwnPropertyDescriptor(t,r);if(!i||("get"in i?!t.__esModule:i.writable||i.configurable)){i={enumerable:true,get:function(){return t[r]}}}Object.defineProperty(e,n,i)}:function(e,t,r,n){if(n===undefined)n=r;e[n]=t[r]});var i=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:true,value:t})}:function(e,t){e["default"]=t});var s=this&&this.__importStar||function(){var ownKeys=function(e){ownKeys=Object.getOwnPropertyNames||function(e){var t=[];for(var r in e)if(Object.prototype.hasOwnProperty.call(e,r))t[t.length]=r;return t};return ownKeys(e)};return function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r=ownKeys(e),s=0;s{"use strict";Object.defineProperty(t,"__esModule",{value:true});t.fetch=fetch;const r=new Set([301,302,303,307,308]);async function fetch(e,t,n=5){const i={"User-Agent":`Mozilla/5.0 (${process.platform} ${process.arch}) setup-php`};if(t){i["Authorization"]="Bearer "+t}try{const t=await globalThis.fetch(e,{headers:i,redirect:n>0?"follow":"manual"});if(t.ok){const e=await t.text();return{data:e}}else if(r.has(t.status)&&n<=0){return{error:`${t.status}: Redirect error`}}else{return{error:`${t.status}: ${t.statusText}`}}}catch(e){return{error:`Fetch error: ${e.message}`}}}},755:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){if(n===undefined)n=r;var i=Object.getOwnPropertyDescriptor(t,r);if(!i||("get"in i?!t.__esModule:i.writable||i.configurable)){i={enumerable:true,get:function(){return t[r]}}}Object.defineProperty(e,n,i)}:function(e,t,r,n){if(n===undefined)n=r;e[n]=t[r]});var i=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:true,value:t})}:function(e,t){e["default"]=t});var s=this&&this.__importStar||function(){var ownKeys=function(e){ownKeys=Object.getOwnPropertyNames||function(e){var t=[];for(var r in e)if(Object.prototype.hasOwnProperty.call(e,r))t[t.length]=r;return t};return ownKeys(e)};return function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r=ownKeys(e),s=0;s{await run()})().catch((e=>{l.setFailed(e.message)}))},75:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){if(n===undefined)n=r;var i=Object.getOwnPropertyDescriptor(t,r);if(!i||("get"in i?!t.__esModule:i.writable||i.configurable)){i={enumerable:true,get:function(){return t[r]}}}Object.defineProperty(e,n,i)}:function(e,t,r,n){if(n===undefined)n=r;e[n]=t[r]});var i=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:true,value:t})}:function(e,t){e["default"]=t});var s=this&&this.__importStar||function(){var ownKeys=function(e){ownKeys=Object.getOwnPropertyNames||function(e){var t=[];for(var r in e)if(Object.prototype.hasOwnProperty.call(e,r))t[t.length]=r;return t};return ownKeys(e)};return function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r=ownKeys(e),s=0;so.compareVersions(t.version,e.version)));const i=r.find((e=>{if(e?.require?.php){return e?.require?.php.split("|").some((e=>e&&o.satisfies(t+".0",e)))}return false}));return i?i.version:null}return null}},159:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){if(n===undefined)n=r;var i=Object.getOwnPropertyDescriptor(t,r);if(!i||("get"in i?!t.__esModule:i.writable||i.configurable)){i={enumerable:true,get:function(){return t[r]}}}Object.defineProperty(e,n,i)}:function(e,t,r,n){if(n===undefined)n=r;e[n]=t[r]});var i=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:true,value:t})}:function(e,t){e["default"]=t});var s=this&&this.__importStar||function(){var ownKeys=function(e){ownKeys=Object.getOwnPropertyNames||function(e){var t=[];for(var r in e)if(Object.prototype.hasOwnProperty.call(e,r))t[t.length]=r;return t};return ownKeys(e)};return function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r=ownKeys(e),s=0;s{if(/^\d+\.\d+\.\d+(-|$)/.test(e))return e;const t=e.match(/^(\d+\.\d+\.\d+)([A-Za-z]+[0-9A-Za-z.]+)$/);return t?`${t[1]}-${t[2]}`:e};const t=e["version_prefix"]+e["version"];const r=`https://api.github.com/repos/${e["repository"]}/git/matching-refs/tags%2F${t}.`;const n=await f.readEnv("GITHUB_TOKEN")||await f.readEnv("COMPOSER_TOKEN");const i=await d.fetch(r,n);if(i.error||i.data==="[]"){e.error=i.error??`No version found with prefix ${t}.`;return e.version}else{const e=JSON.parse(i.data);const t=e.map((e=>(e.ref?.split("/").pop()??"").replace(/^v(?=\d)/,""))).filter((e=>e.length>0));const r=new Map;const n=t.map((e=>{const t=fixSemver(e);r.set(t,e);return t}));const s=n.toSorted(((e,t)=>{try{return u.compareVersions(t,e)}catch{return t.localeCompare(e,"en",{numeric:true,sensitivity:"base"})}}));return r.get(s[0])??s[0]}}async function getLatestVersion(e){if(!e.version&&e.fetch_latest==="false"){return"latest"}if(e.fetch_latest==="true"&&!e.repository){return"latest"}const t=await d.fetch(`${e.github}/${e.repository}/releases.atom`);if(t.data){const e=[...t.data.matchAll(/releases\/tag\/([a-zA-Z]*)?(\d+\.\d+\.\d+)"/g)].map((e=>e[2]));const r=e.toSorted(((e,t)=>e.localeCompare(t,undefined,{numeric:true})));return r.at(-1)||"latest"}return"latest"}async function getVersion(e,t){const r=/^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$/;const n=/^composer:(stable|preview|snapshot|[12])$/;const i=/[><=^~]+.*/;const s=/^\d+(\.\d+)?$/;t.version=e.replace(/v?(\d)/,"$1").replace(/\.x/,"");switch(true){case n.test(t.release):case r.test(t.version):case i.test(t.version)&&t.type==="composer":return t.version;case s.test(t.version)&&t.type==="composer":t.release=`${t.tool}:${t.version}.*`;return`${t.version}.*`;case!!t.repository&&s.test(t.version):return await getSemverVersion(t);default:return t.version.replace(/[><=^~]*/,"")}}async function getRelease(e,t){e=e.includes("/")?e.split("/")[1]:e;return e.includes(":")?[t.tool,e.split(":")[1]].join(":"):t.tool}async function filterList(e){const t=/^composer($|:.*)/;const r=/^composer:?($|preview$|snapshot$|v?\d+(\.\d+)?$|v?\d+\.\d+\.\d+[\w-]*$)/;const n=e.filter((e=>r.test(e)));let i="composer";e=e.filter((e=>!t.test(e)));switch(true){case n[0]==undefined:break;default:i=n.at(-1).replace(/v(\d\S*)/,"$1");break}e.unshift(i);return e}async function getUrl(e){if((e.version??"latest")==="latest"){return[e.domain,e.repository,e.prefix,e.version,e.verb,e.tool+e.extension].filter(Boolean).join("/")}else{return[e.domain,e.repository,e.prefix,e.verb,e.version_prefix+e.version,e.tool+e.extension].filter(Boolean).join("/")}}async function getPharUrl(e){if(e.version==="latest"){return e.domain+"/"+e.tool+".phar"}else{return e.domain+"/"+e.tool+"-"+e.version_prefix+e.version+".phar"}}async function addArchive(e){return await f.getCommand(e.os,"tool")+await f.joins(e.url,e.tool,e.version_parameter)}async function addPackage(e){const t=await f.getCommand(e.os,"composer_tool");const r=e.repository.split("/");const n=await f.joins(r[1],e.release,r[0]+"/",e.scope);return t+n}async function addBlackfirePlayer(e){switch(e.os){case"win32":return await f.addLog("$cross",e.tool,e.tool+" is not a windows tool","win32");default:if(e.version=="latest"){if(/5\.[5-6]|7\.0/.test(e.php_version)){e.version="1.9.3"}else if(/7\.[1-4]|8\.0/.test(e.php_version)){e.version="1.22.0"}}e.url=await getPharUrl(e);return addArchive(e)}}async function addCastor(e){e.tool="castor."+e.os.replace("win32","windows")+"-amd64";e.url=await getUrl(e);e.tool="castor";e.version_parameter=c.default.existsSync("castor.php")?e.version_parameter:"";return await addArchive(e)}async function addComposer(e){const t=e.version.replace("latest","stable");const r=e.github;const n=e.domain;const i="https://dl.cloudsmith.io";const s="https://artifacts.setup-php.com";const o=`composer-${e.php_version}-${t}.phar`;const a=`${r}/shivammathur/composer-cache/releases/latest/download/${o}`;const c=`${i}/public/shivammathur/composer-cache/raw/files/${o}`;const u=`${s}/composer/${o}`;const d=`${n}/download/latest-2.2.x/composer.phar`;const l=/^5\.[3-6]$|^7\.[0-1]$/.test(e.php_version);const p=`${n}/composer-${t}.phar`;const h=`${n}/download/${t}/composer.phar`;let g=`${a},${u},${c}`;let w=`${n}/composer.phar`;switch(true){case/^snapshot$/.test(t):w=l?d:w;break;case/^preview$|^2$/.test(t):w=l?d:p;break;case/^1$/.test(t):w=p;break;case/^\d+\.\d+\.\d+[\w-]*$/.test(e.version):g=`${r}/${e.repository}/releases/download/${e.version}/composer.phar`;w=h;break;default:w=l?d:p}const v=await f.readEnv("NO_TOOLS_CACHE")!=="true";e.url=v?`${g},${w}`:w;e.version_parameter=e.version;return await addArchive(e)}async function addDeployer(e){if(e.version==="latest"){e.url=e.domain+"/deployer.phar"}else{const t=await d.fetch("https://deployer.org/manifest.json");const r=JSON.parse(t.data);const n=Object.keys(r).find((t=>r[t].version===e.version));if(n){e.url=r[n].url}else{return await f.addLog("$cross","deployer","Version missing in deployer manifest",e.os)}}return await addArchive(e)}async function addDevTools(e){switch(e.os){case"linux":case"darwin":return"add_devtools "+e.tool;case"win32":return await f.addLog("$tick",e.tool,e.tool+" is not a windows tool","win32");default:return await f.log("Platform "+e.os+" is not supported",e.os,"error")}}async function addPECL(e){return await f.getCommand(e.os,"pecl")}async function addPhing(e){e.url=e.domain+"/get/phing-"+e.version+e.extension;if(e.version!="latest"){[e.prefix,e.verb]=["releases","download"];e.domain=e.github;e.extension="-"+e.version+e.extension;e.url+=","+await getUrl(e)}return await addArchive(e)}async function addPhive(e){switch(true){case/5\.[3-5]/.test(e.php_version):return await f.addLog("$cross","phive","Phive is not supported on PHP "+e.php_version,e.os);case/5\.6|7\.0/.test(e.php_version):e.version="0.12.1";break;case/7\.1/.test(e.php_version):e.version="0.13.5";break;case/7\.2/.test(e.php_version):e.version="0.14.5";break;case/7\.3|7\.4/.test(e.php_version):e.version="0.15.3";break;case/^latest$/.test(e.version):e.version=await getLatestVersion(e);break}e.extension="-"+e.version+e.extension;e.url=await getUrl(e);return await addArchive(e)}async function addPHPUnitTools(e){if(e.version==="latest"){e.version=await l.search(e.packagist,e.php_version)??"latest"}e.url=await getPharUrl(e);if(e.url.match(/-\d+/)){e.url+=","+e.url.replace(/-(\d+)\.\d+\.\d+/,"-$1")}return await addArchive(e)}async function addWPCLI(e){if(e.version==="latest"){e.uri="wp-cli/builds/blob/gh-pages/phar/wp-cli.phar?raw=true";e.url=[e.domain,e.uri].join("/")}else{e.extension="-"+e.version+e.extension;e.url=await getUrl(e)}return await addArchive(e)}async function getData(e,t,r){const n=a.default.join(__dirname,"../src/configs/tools.json");const i=c.default.readFileSync(n,"utf8");const s=JSON.parse(i);e=e.replace(/\s+/g,"");const o=e.split(":");const u=o[0];const d=o[1];let l;if(Object.hasOwn(s,u)){l={...s[u],tool:u}}else{const e=Object.keys(s).find((e=>s[e].alias==u));if(e){l={...s[e],tool:e}}else if(u.includes("/")){l={tool:u.split("/")[1],repository:u,type:"composer"}}else{l={tool:u}}}const f="https://github.com";const p=l.domain??f;const h={tool:l.tool,version:"",url:"",os:r,php_version:t,github:f,domain:p,extension:l.extension??".phar",repository:l.repository??"",prefix:p===f?"releases":"",verb:p===f?"download":"",fetch_latest:l.fetch_latest??"false",scope:l.scope??"global",version_parameter:l.version_parameter!=null?JSON.stringify(l.version_parameter):"",version_prefix:l.version_prefix??"",release:"",packagist:l.packagist??l.repository??"",type:l.type,function:l.function,alias:l.alias};h.release=await getRelease(e,h);h.version=d?await getVersion(d,h):await getLatestVersion(h);h.url=await getUrl(h);return h}t.functionRecord={castor:addCastor,composer:addComposer,deployer:addDeployer,dev_tools:addDevTools,phive:addPhive,blackfire_player:addBlackfirePlayer,pecl:addPECL,phing:addPhing,phpunit:addPHPUnitTools,phpcpd:addPHPUnitTools,wp_cli:addWPCLI};async function addTools(e,r,n){let i="\n";if(e==="none"){return""}else{i+=await f.stepLog("Setup Tools",n)}const s=await filterList(await f.CSVArray(e));await f.asyncForEach(s,(async function(e){const s=await getData(e,r,n);i+="\n";switch(true){case s.error!==undefined:i+=await f.addLog("$cross",s.tool,s.error,s.os);break;case"phar"===s.type:i+=await addArchive(s);break;case"composer"===s.type:i+=await addPackage(s);break;case"custom-package"===s.type:i+=await f.customPackage(s.tool.split("-")[0],"tools",s.version,s.os);break;case"custom-function"===s.type:if(!s.function){i+=await f.addLog("$cross",s.tool,s.tool+" has no function defined. Please report this issue.",s.os)}else{i+=await t.functionRecord[s.function](s)}break;case/^none$/.test(s.tool):break;default:i+=await f.addLog("$cross",s.tool,"Tool "+s.tool+" is not supported",s.os);break}}));return i}},277:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){if(n===undefined)n=r;var i=Object.getOwnPropertyDescriptor(t,r);if(!i||("get"in i?!t.__esModule:i.writable||i.configurable)){i={enumerable:true,get:function(){return t[r]}}}Object.defineProperty(e,n,i)}:function(e,t,r,n){if(n===undefined)n=r;e[n]=t[r]});var i=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:true,value:t})}:function(e,t){e["default"]=t});var s=this&&this.__importStar||function(){var ownKeys=function(e){ownKeys=Object.getOwnPropertyNames||function(e){var t=[];for(var r in e)if(Object.prototype.hasOwnProperty.call(e,r))t[t.length]=r;return t};return ownKeys(e)};return function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r=ownKeys(e),s=0;s1:return e.slice(0,3);default:return e+".0"}}}async function parseIniFile(e){switch(true){case/^(production|development|none)$/.test(e):return e;case/php\.ini-(production|development)$/.test(e):return e.split("-")[1];default:return"production"}}async function asyncForEach(e,t){for(const[r,n]of e.entries()){await t(n,r,e)}}async function color(e){switch(e){case"error":return"31";default:case"success":return"32";case"warning":return"33"}}async function log(e,t,r){switch(t){case"win32":return'printf "\\033['+await color(r)+";1m"+e+' \\033[0m"';case"linux":case"darwin":default:return'echo "\\033['+await color(r)+";1m"+e+'\\033[0m"'}}async function stepLog(e,t){switch(t){case"win32":return'Step-Log "'+e+'"';case"linux":case"darwin":return'step_log "'+e+'"';default:return await log("Platform "+t+" is not supported",t,"error")}}async function addLog(e,t,r,n){switch(n){case"win32":return'Add-Log "'+e+'" "'+t+'" "'+r+'"';case"linux":case"darwin":return'add_log "'+e+'" "'+t+'" "'+r+'"';default:return await log("Platform "+n+" is not supported",n,"error")}}async function extensionArray(e){switch(e){case"":case" ":return[];default:return[e.match(/(^|,\s?)none(\s?,|$)/)?"none":"",...e.split(",").map((function(e){if(/.+-.+\/.+@.+/.test(e)){return e}return e.trim().toLowerCase().replace(/^(:)?(php[-_]|none|zend )|(-[^-]*)-/,"$1$3")}))].filter(Boolean)}}async function CSVArray(e){switch(e){case"":case" ":return[];default:return e.split(/,(?=(?:(?:[^"']*["']){2})*[^"']*$)/).map((function(e){return e.trim().replace(/^["']|["']$|(?<==)["']/g,"").replace(/=(((?!E_).)*[?{}|&~![()^]+((?!E_).)+)/,"='$1'").replace(/=(.*?)(=.*)/,"='$1$2'").replace(/:\s*["'](.*?)/g,":$1")})).filter(Boolean)}}async function getExtensionPrefix(e){switch(true){default:return"extension";case/xdebug([2-3])?$|opcache|ioncube|eaccelerator/.test(e):return"zend_extension"}}async function suppressOutput(e){switch(e){case"win32":return" >$null 2>&1";case"linux":case"darwin":return" >/dev/null 2>&1";default:return await log("Platform "+e+" is not supported",e,"error")}}async function getUnsupportedLog(e,t,r){return"\n"+await addLog("$cross",e,[e,"is not supported on PHP",t].join(" "),r)+"\n"}async function getCommand(e,t){switch(e){case"linux":case"darwin":return"add_"+t+" ";case"win32":return"Add-"+t.split("_").map((e=>e.charAt(0).toUpperCase()+e.slice(1))).join("")+" ";default:return await log("Platform "+e+" is not supported",e,"error")}}async function joins(...e){return[...e].join(" ")}async function scriptExtension(e){switch(e){case"win32":return".ps1";case"linux":case"darwin":return".sh";default:return await log("Platform "+e+" is not supported",e,"error")}}async function scriptTool(e){switch(e){case"win32":return"pwsh ";case"linux":case"darwin":return"bash ";default:return await log("Platform "+e+" is not supported",e,"error")}}async function customPackage(e,t,r,n){const i=e.replace(/\d+|(pdo|pecl)[_-]|[_-]db2/,"");const s=await scriptExtension(n);const o=c.join(__dirname,"../src/scripts/"+t+"/"+i+s);const a=await getCommand(n,i);return"\n. "+o+"\n"+a+r}async function parseExtensionSource(e,t){const r=/(\w+)-(\w+:\/\/.{1,253}(?:[.:][^:/\s]{2,63})+\/)?([\w.-]+)\/([\w.-]+)@(.+)/;const n=r.exec(e);n[2]=n[2]?n[2].slice(0,-1):"https://github.com";return await joins("\nadd_extension_from_source",...n.splice(1,n.length),t)}async function readPHPVersion(){const e=await getInput("php-version",false);if(e){return e}const t=await getInput("php-version-file",false)||".php-version";if(a.default.existsSync(t)){const e=a.default.readFileSync(t,"utf8");const r=e.match(/^(?:php\s)?(\d+\.\d+\.\d+)$/m);return r?r[1]:e.trim()}else if(t!==".php-version"){throw new Error(`Could not find '${t}' file.`)}const r=await readEnv("COMPOSER_PROJECT_DIR");const n=c.join(r,"composer.lock");if(a.default.existsSync(n)){const e=JSON.parse(a.default.readFileSync(n,"utf8"));if(e["platform-overrides"]&&e["platform-overrides"]["php"]){return e["platform-overrides"]["php"]}}const i=c.join(r,"composer.json");if(a.default.existsSync(i)){const e=JSON.parse(a.default.readFileSync(i,"utf8"));if(e["config"]&&e["config"]["platform"]&&e["config"]["platform"]["php"]){return e["config"]["platform"]["php"]}}return"latest"}async function setVariable(e,t,r){switch(r){case"win32":return"\n$"+e+" = "+t+"\n";case"linux":case"darwin":default:return"\n"+e+'="$('+t+')"\n'}}},236:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){if(n===undefined)n=r;var i=Object.getOwnPropertyDescriptor(t,r);if(!i||("get"in i?!t.__esModule:i.writable||i.configurable)){i={enumerable:true,get:function(){return t[r]}}}Object.defineProperty(e,n,i)}:function(e,t,r,n){if(n===undefined)n=r;e[n]=t[r]});var i=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:true,value:t})}:function(e,t){e["default"]=t});var s=this&&this.__importStar||function(){var ownKeys=function(e){ownKeys=Object.getOwnPropertyNames||function(e){var t=[];for(var r in e)if(Object.prototype.hasOwnProperty.call(e,r))t[t.length]=r;return t};return ownKeys(e)};return function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r=ownKeys(e),s=0;s{o+=u.write(e);if(l){l(e)}};const stdOutListener=e=>{s+=c.write(e);if(d){d(e)}};const f=Object.assign(Object.assign({},r===null||r===void 0?void 0:r.listeners),{stdout:stdOutListener,stderr:stdErrListener});const p=yield exec(e,t,Object.assign(Object.assign({},r),{listeners:f}));s+=c.end();o+=u.end();return{exitCode:p,stdout:s,stderr:o}}))}},665:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){if(n===undefined)n=r;var i=Object.getOwnPropertyDescriptor(t,r);if(!i||("get"in i?!t.__esModule:i.writable||i.configurable)){i={enumerable:true,get:function(){return t[r]}}}Object.defineProperty(e,n,i)}:function(e,t,r,n){if(n===undefined)n=r;e[n]=t[r]});var i=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:true,value:t})}:function(e,t){e["default"]=t});var s=this&&this.__importStar||function(){var ownKeys=function(e){ownKeys=Object.getOwnPropertyNames||function(e){var t=[];for(var r in e)if(Object.prototype.hasOwnProperty.call(e,r))t[t.length]=r;return t};return ownKeys(e)};return function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r=ownKeys(e),s=0;s-1){const e=n.substring(0,i);r(e);n=n.substring(i+a.EOL.length);i=n.indexOf(a.EOL)}return n}catch(e){this._debug(`error processing line. Failed with error ${e}`);return""}}_getSpawnFileName(){if(h){if(this._isCmdFile()){return process.env["COMSPEC"]||"cmd.exe"}}return this.toolPath}_getSpawnArgs(e){if(h){if(this._isCmdFile()){let t=`/D /S /C "${this._windowsQuoteCmdArg(this.toolPath)}`;for(const r of this.args){t+=" ";t+=e.windowsVerbatimArguments?r:this._windowsQuoteCmdArg(r)}t+='"';return[t]}}return this.args}_endsWith(e,t){return e.endsWith(t)}_isCmdFile(){const e=this.toolPath.toUpperCase();return this._endsWith(e,".CMD")||this._endsWith(e,".BAT")}_windowsQuoteCmdArg(e){if(!this._isCmdFile()){return this._uvQuoteCmdArg(e)}if(!e){return'""'}const t=[" ","\t","&","(",")","[","]","{","}","^","=",";","!","'","+",",","`","~","|","<",">",'"'];let r=false;for(const n of e){if(t.some((e=>e===n))){r=true;break}}if(!r){return e}let n='"';let i=true;for(let t=e.length;t>0;t--){n+=e[t-1];if(i&&e[t-1]==="\\"){n+="\\"}else if(e[t-1]==='"'){i=true;n+='"'}else{i=false}}n+='"';return n.split("").reverse().join("")}_uvQuoteCmdArg(e){if(!e){return'""'}if(!e.includes(" ")&&!e.includes("\t")&&!e.includes('"')){return e}if(!e.includes('"')&&!e.includes("\\")){return`"${e}"`}let t='"';let r=true;for(let n=e.length;n>0;n--){t+=e[n-1];if(r&&e[n-1]==="\\"){t+="\\"}else if(e[n-1]==='"'){r=true;t+="\\"}else{r=false}}t+='"';return t.split("").reverse().join("")}_cloneExecOptions(e){e=e||{};const t={cwd:e.cwd||process.cwd(),env:e.env||process.env,silent:e.silent||false,windowsVerbatimArguments:e.windowsVerbatimArguments||false,failOnStdErr:e.failOnStdErr||false,ignoreReturnCode:e.ignoreReturnCode||false,delay:e.delay||1e4};t.outStream=e.outStream||process.stdout;t.errStream=e.errStream||process.stderr;return t}_getSpawnOptions(e,t){e=e||{};const r={};r.cwd=e.cwd;r.env=e.env;r["windowsVerbatimArguments"]=e.windowsVerbatimArguments||this._isCmdFile();if(e.windowsVerbatimArguments){r.argv0=`"${t}"`}return r}exec(){return o(this,void 0,void 0,(function*(){if(!f.isRooted(this.toolPath)&&(this.toolPath.includes("/")||h&&this.toolPath.includes("\\"))){this.toolPath=d.resolve(process.cwd(),this.options.cwd||process.cwd(),this.toolPath)}this.toolPath=yield l.which(this.toolPath,true);return new Promise(((e,t)=>o(this,void 0,void 0,(function*(){this._debug(`exec tool: ${this.toolPath}`);this._debug("arguments:");for(const e of this.args){this._debug(` ${e}`)}const r=this._cloneExecOptions(this.options);if(!r.silent&&r.outStream){r.outStream.write(this._getCommandString(r)+a.EOL)}const n=new ExecState(r,this.toolPath);n.on("debug",(e=>{this._debug(e)}));if(this.options.cwd&&!(yield f.exists(this.options.cwd))){return t(new Error(`The cwd: ${this.options.cwd} does not exist!`))}const i=this._getSpawnFileName();const s=u.spawn(i,this._getSpawnArgs(r),this._getSpawnOptions(this.options,i));let o="";if(s.stdout){s.stdout.on("data",(e=>{if(this.options.listeners&&this.options.listeners.stdout){this.options.listeners.stdout(e)}if(!r.silent&&r.outStream){r.outStream.write(e)}o=this._processLineBuffer(e,o,(e=>{if(this.options.listeners&&this.options.listeners.stdline){this.options.listeners.stdline(e)}}))}))}let c="";if(s.stderr){s.stderr.on("data",(e=>{n.processStderr=true;if(this.options.listeners&&this.options.listeners.stderr){this.options.listeners.stderr(e)}if(!r.silent&&r.errStream&&r.outStream){const t=r.failOnStdErr?r.errStream:r.outStream;t.write(e)}c=this._processLineBuffer(e,c,(e=>{if(this.options.listeners&&this.options.listeners.errline){this.options.listeners.errline(e)}}))}))}s.on("error",(e=>{n.processError=e.message;n.processExited=true;n.processClosed=true;n.CheckComplete()}));s.on("exit",(e=>{n.processExitCode=e;n.processExited=true;this._debug(`Exit code ${e} received from tool '${this.toolPath}'`);n.CheckComplete()}));s.on("close",(e=>{n.processExitCode=e;n.processExited=true;n.processClosed=true;this._debug(`STDIO streams have closed for tool '${this.toolPath}'`);n.CheckComplete()}));n.on("done",((r,n)=>{if(o.length>0){this.emit("stdline",o)}if(c.length>0){this.emit("errline",c)}s.removeAllListeners();if(r){t(r)}else{e(n)}}));if(this.options.input){if(!s.stdin){throw new Error("child process missing stdin")}s.stdin.end(this.options.input)}}))))}))}}t.ToolRunner=ToolRunner;function argStringToArray(e){const t=[];let r=false;let n=false;let i="";function append(e){if(n&&e!=='"'){i+="\\"}i+=e;n=false}for(let s=0;s0){t.push(i);i=""}continue}append(o)}if(i.length>0){t.push(i.trim())}return t}class ExecState extends c.EventEmitter{constructor(e,t){super();this.processClosed=false;this.processError="";this.processExitCode=0;this.processExited=false;this.processStderr=false;this.delay=1e4;this.done=false;this.timeout=null;if(!t){throw new Error("toolPath must not be empty")}this.options=e;this.toolPath=t;if(e.delay){this.delay=e.delay}}CheckComplete(){if(this.done){return}if(this.processClosed){this._setResult()}else if(this.processExited){this.timeout=(0,p.setTimeout)(ExecState.HandleTimeout,this.delay,this)}}_debug(e){this.emit("debug",e)}_setResult(){let e;if(this.processExited){if(this.processError){e=new Error(`There was an error when attempting to execute the process '${this.toolPath}'. This may indicate the process failed to start. Error: ${this.processError}`)}else if(this.processExitCode!==0&&!this.options.ignoreReturnCode){e=new Error(`The process '${this.toolPath}' failed with exit code ${this.processExitCode}`)}else if(this.processStderr&&this.options.failOnStdErr){e=new Error(`The process '${this.toolPath}' failed because one or more lines were written to the STDERR stream`)}}if(this.timeout){clearTimeout(this.timeout);this.timeout=null}this.done=true;this.emit("done",e,this.processExitCode)}static HandleTimeout(e){if(e.done){return}if(!e.processClosed&&e.processExited){const t=`The STDIO streams did not close within ${e.delay/1e3} seconds of the exit event from process '${e.toolPath}'. This may indicate a child process inherited the STDIO streams and has not yet exited.`;e._debug(t)}e._setResult()}}},207:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){if(n===undefined)n=r;var i=Object.getOwnPropertyDescriptor(t,r);if(!i||("get"in i?!t.__esModule:i.writable||i.configurable)){i={enumerable:true,get:function(){return t[r]}}}Object.defineProperty(e,n,i)}:function(e,t,r,n){if(n===undefined)n=r;e[n]=t[r]});var i=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:true,value:t})}:function(e,t){e["default"]=t});var s=this&&this.__importStar||function(){var ownKeys=function(e){ownKeys=Object.getOwnPropertyNames||function(e){var t=[];for(var r in e)if(Object.prototype.hasOwnProperty.call(e,r))t[t.length]=r;return t};return ownKeys(e)};return function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r=ownKeys(e),s=0;se.toUpperCase()===t))){return e}}else{if(isUnixExecutable(n)){return e}}}const i=e;for(const s of r){e=i+s;n=undefined;try{n=yield(0,t.stat)(e)}catch(t){if(t.code!=="ENOENT"){console.log(`Unexpected error attempting to determine if executable file exists '${e}': ${t}`)}}if(n&&n.isFile()){if(t.IS_WINDOWS){try{const r=u.dirname(e);const n=u.basename(e).toUpperCase();for(const i of yield(0,t.readdir)(r)){if(n===i.toUpperCase()){e=u.join(r,i);break}}}catch(t){console.log(`Unexpected error attempting to determine the actual case of the file '${e}': ${t}`)}return e}else{if(isUnixExecutable(n)){return e}}}}return""}))}function normalizeSeparators(e){e=e||"";if(t.IS_WINDOWS){e=e.replace(/\//g,"\\");return e.replace(/\\\\+/g,"\\")}return e.replace(/\/\/+/g,"/")}function isUnixExecutable(e){return(e.mode&1)>0||(e.mode&8)>0&&process.getgid!==undefined&&e.gid===process.getgid()||(e.mode&64)>0&&process.getuid!==undefined&&e.uid===process.getuid()}function getCmdPath(){var e;return(e=process.env["COMSPEC"])!==null&&e!==void 0?e:`cmd.exe`}},994:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){if(n===undefined)n=r;var i=Object.getOwnPropertyDescriptor(t,r);if(!i||("get"in i?!t.__esModule:i.writable||i.configurable)){i={enumerable:true,get:function(){return t[r]}}}Object.defineProperty(e,n,i)}:function(e,t,r,n){if(n===undefined)n=r;e[n]=t[r]});var i=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:true,value:t})}:function(e,t){e["default"]=t});var s=this&&this.__importStar||function(){var ownKeys=function(e){ownKeys=Object.getOwnPropertyNames||function(e){var t=[];for(var r in e)if(Object.prototype.hasOwnProperty.call(e,r))t[t.length]=r;return t};return ownKeys(e)};return function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r=ownKeys(e),s=0;s|]/.test(e)){throw new Error('File path must not contain `*`, `"`, `<`, `>` or `|` on Windows')}}try{yield u.rm(e,{force:true,maxRetries:3,recursive:true,retryDelay:300})}catch(e){throw new Error(`File was unable to be removed ${e}`)}}))}function mkdirP(e){return o(this,void 0,void 0,(function*(){(0,a.ok)(e,"a path argument must be provided");yield u.mkdir(e,{recursive:true})}))}function which(e,t){return o(this,void 0,void 0,(function*(){if(!e){throw new Error("parameter 'tool' is required")}if(t){const t=yield which(e,false);if(!t){if(u.IS_WINDOWS){throw new Error(`Unable to locate executable file: ${e}. Please verify either the file path exists or the file can be found within a directory specified by the PATH environment variable. Also verify the file has a valid extension for an executable file.`)}else{throw new Error(`Unable to locate executable file: ${e}. Please verify either the file path exists or the file can be found within a directory specified by the PATH environment variable. Also check the file mode to verify the file is executable.`)}}return t}const r=yield findInPath(e);if(r&&r.length>0){return r[0]}return""}))}function findInPath(e){return o(this,void 0,void 0,(function*(){if(!e){throw new Error("parameter 'tool' is required")}const t=[];if(u.IS_WINDOWS&&process.env["PATHEXT"]){for(const e of process.env["PATHEXT"].split(c.delimiter)){if(e){t.push(e)}}}if(u.isRooted(e)){const r=yield u.tryGetExecutablePath(e,t);if(r){return[r]}return[]}if(e.includes(c.sep)){return[]}const r=[];if(process.env.PATH){for(const e of process.env.PATH.split(c.delimiter)){if(e){r.push(e)}}}const n=[];for(const i of r){const r=yield u.tryGetExecutablePath(c.join(i,e),t);if(r){n.push(r)}}return n}))}function readCopyOptions(e){const t=e.force==null?true:e.force;const r=Boolean(e.recursive);const n=e.copySourceDirectory==null?true:Boolean(e.copySourceDirectory);return{force:t,recursive:r,copySourceDirectory:n}}function cpDirRecursive(e,t,r,n){return o(this,void 0,void 0,(function*(){if(r>=255)return;r++;yield mkdirP(t);const i=yield u.readdir(e);for(const s of i){const i=`${e}/${s}`;const o=`${t}/${s}`;const a=yield u.lstat(i);if(a.isDirectory()){yield cpDirRecursive(i,o,r,n)}else{yield copyFile(i,o,n)}}yield u.chmod(t,(yield u.stat(e)).mode)}))}function copyFile(e,t,r){return o(this,void 0,void 0,(function*(){if((yield u.lstat(e)).isSymbolicLink()){try{yield u.lstat(t);yield u.unlink(t)}catch(e){if(e.code==="EPERM"){yield u.chmod(t,"0666");yield u.unlink(t)}}const r=yield u.readlink(e);yield u.symlink(r,t,u.IS_WINDOWS?"junction":null)}else if(!(yield u.exists(t))||r){yield u.copyFile(e,t)}}))}},26:function(e,t){(function(e,r){true?r(t):0})(this,(function(e){"use strict";const t=/^[v^~<>=]*?(\d+)(?:\.([x*]|\d+)(?:\.([x*]|\d+)(?:\.([x*]|\d+))?(?:-([\da-z\-]+(?:\.[\da-z\-]+)*))?(?:\+[\da-z\-]+(?:\.[\da-z\-]+)*)?)?)?$/i;const validateAndParse=e=>{if(typeof e!=="string"){throw new TypeError("Invalid argument expected string")}const r=e.match(t);if(!r){throw new Error(`Invalid argument not valid semver ('${e}' received)`)}r.shift();return r};const isWildcard=e=>e==="*"||e==="x"||e==="X";const tryParse=e=>{const t=parseInt(e,10);return isNaN(t)?e:t};const forceType=(e,t)=>typeof e!==typeof t?[String(e),String(t)]:[e,t];const compareStrings=(e,t)=>{if(isWildcard(e)||isWildcard(t))return 0;const[r,n]=forceType(tryParse(e),tryParse(t));if(r>n)return 1;if(r{for(let r=0;r{const r=validateAndParse(e);const n=validateAndParse(t);const i=r.pop();const s=n.pop();const o=compareSegments(r,n);if(o!==0)return o;if(i&&s){return compareSegments(i.split("."),s.split("."))}else if(i||s){return i?-1:1}return 0};const compare=(e,t,n)=>{assertValidOperator(n);const i=compareVersions(e,t);return r[n].includes(i)};const r={">":[1],">=":[0,1],"=":[0],"<=":[-1,0],"<":[-1],"!=":[-1,1]};const n=Object.keys(r);const assertValidOperator=e=>{if(typeof e!=="string"){throw new TypeError(`Invalid operator type, expected string but got ${typeof e}`)}if(n.indexOf(e)===-1){throw new Error(`Invalid operator, expected one of ${n.join("|")}`)}};const satisfies=(e,t)=>{t=t.replace(/([><=]+)\s+/g,"$1");if(t.includes("||")){return t.split("||").some((t=>satisfies(e,t)))}else if(t.includes(" - ")){const[r,n]=t.split(" - ",2);return satisfies(e,`>=${r} <=${n}`)}else if(t.includes(" ")){return t.trim().replace(/\s{2,}/g," ").split(" ").every((t=>satisfies(e,t)))}const r=t.match(/^([<>=~^]+)/);const n=r?r[1]:"=";if(n!=="^"&&n!=="~")return compare(e,t,n);const[i,s,o,,a]=validateAndParse(e);const[c,u,d,,l]=validateAndParse(t);const f=[i,s,o];const p=[c,u!==null&&u!==void 0?u:"x",d!==null&&d!==void 0?d:"x"];if(l){if(!a)return false;if(compareSegments(f,p)!==0)return false;if(compareSegments(a.split("."),l.split("."))===-1)return false}const h=p.findIndex((e=>e!=="0"))+1;const g=n==="~"?2:h>1?h:1;if(compareSegments(f.slice(0,g),p.slice(0,g))!==0)return false;if(compareSegments(f.slice(g),p.slice(g))===-1)return false;return true};const validate=e=>typeof e==="string"&&/^[v\d]/.test(e)&&t.test(e);const validateStrict=e=>typeof e==="string"&&/^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$/.test(e);e.compare=compare;e.compareVersions=compareVersions;e.satisfies=satisfies;e.validate=validate;e.validateStrict=validateStrict}))},613:e=>{"use strict";e.exports=require("assert")},317:e=>{"use strict";e.exports=require("child_process")},434:e=>{"use strict";e.exports=require("events")},896:e=>{"use strict";e.exports=require("fs")},857:e=>{"use strict";e.exports=require("os")},928:e=>{"use strict";e.exports=require("path")},193:e=>{"use strict";e.exports=require("string_decoder")},557:e=>{"use strict";e.exports=require("timers")}};var t={};function __nccwpck_require__(r){var n=t[r];if(n!==undefined){return n.exports}var i=t[r]={exports:{}};var s=true;try{e[r].call(i.exports,i,i.exports,__nccwpck_require__);s=false}finally{if(s)delete t[r]}return i.exports}if(typeof __nccwpck_require__!=="undefined")__nccwpck_require__.ab=__dirname+"/";var r=__nccwpck_require__(755);module.exports=r})(); \ No newline at end of file +(()=>{var e={472:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){if(n===undefined)n=r;var i=Object.getOwnPropertyDescriptor(t,r);if(!i||("get"in i?!t.__esModule:i.writable||i.configurable)){i={enumerable:true,get:function(){return t[r]}}}Object.defineProperty(e,n,i)}:function(e,t,r,n){if(n===undefined)n=r;e[n]=t[r]});var i=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:true,value:t})}:function(e,t){e["default"]=t});var s=this&&this.__importStar||function(){var ownKeys=function(e){ownKeys=Object.getOwnPropertyNames||function(e){var t=[];for(var r in e)if(Object.prototype.hasOwnProperty.call(e,r))t[t.length]=r;return t};return ownKeys(e)};return function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r=ownKeys(e),s=0;s{"use strict";Object.defineProperty(t,"__esModule",{value:true});t.issueCommand=issueCommand;t.error=error;t.setFailed=setFailed;t.getInput=getInput;const n=r(857);function toCommandValue(e){if(e instanceof Error){return e.toString()}return e}function escapeData(e){return toCommandValue(e).replace(/%/g,"%25").replace(/\r/g,"%0D").replace(/\n/g,"%0A")}function escapeProperty(e){return e.replace(/%/g,"%25").replace(/\r/g,"%0D").replace(/\n/g,"%0A").replace(/:/g,"%3A").replace(/,/g,"%2C")}function issueCommand(e,t,r){let i=`::${e}`;if(t&&Object.keys(t).length>0){i+=" ";const e=Object.entries(t).filter((([,e])=>e)).map((([e,t])=>`${e}=${escapeProperty(t)}`)).join(",");i+=e}i+=`::${escapeData(r)}`;process.stdout.write(i+n.EOL)}function error(e){issueCommand("error",{},e)}function setFailed(e){process.exitCode=1;error(e)}function getInput(e,t=false){const r=process.env[`INPUT_${e.replace(/ /g,"_").toUpperCase()}`]||"";if(t&&!r){throw new Error(`Input required and not supplied: ${e}`)}return r.trim()}},524:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){if(n===undefined)n=r;var i=Object.getOwnPropertyDescriptor(t,r);if(!i||("get"in i?!t.__esModule:i.writable||i.configurable)){i={enumerable:true,get:function(){return t[r]}}}Object.defineProperty(e,n,i)}:function(e,t,r,n){if(n===undefined)n=r;e[n]=t[r]});var i=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:true,value:t})}:function(e,t){e["default"]=t});var s=this&&this.__importStar||function(){var ownKeys=function(e){ownKeys=Object.getOwnPropertyNames||function(e){var t=[];for(var r in e)if(Object.prototype.hasOwnProperty.call(e,r))t[t.length]=r;return t};return ownKeys(e)};return function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r=ownKeys(e),s=0;s{"use strict";Object.defineProperty(t,"__esModule",{value:true});t.fetch=fetch;const r=new Set([301,302,303,307,308]);async function fetch(e,t,n=5){const i={"User-Agent":`Mozilla/5.0 (${process.platform} ${process.arch}) setup-php`};if(t){i["Authorization"]="Bearer "+t}try{const t=await globalThis.fetch(e,{headers:i,redirect:n>0?"follow":"manual"});if(t.ok){const e=await t.text();return{data:e}}else if(r.has(t.status)&&n<=0){return{error:`${t.status}: Redirect error`}}else{return{error:`${t.status}: ${t.statusText}`}}}catch(e){return{error:`Fetch error: ${e.message}`}}}},755:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){if(n===undefined)n=r;var i=Object.getOwnPropertyDescriptor(t,r);if(!i||("get"in i?!t.__esModule:i.writable||i.configurable)){i={enumerable:true,get:function(){return t[r]}}}Object.defineProperty(e,n,i)}:function(e,t,r,n){if(n===undefined)n=r;e[n]=t[r]});var i=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:true,value:t})}:function(e,t){e["default"]=t});var s=this&&this.__importStar||function(){var ownKeys=function(e){ownKeys=Object.getOwnPropertyNames||function(e){var t=[];for(var r in e)if(Object.prototype.hasOwnProperty.call(e,r))t[t.length]=r;return t};return ownKeys(e)};return function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r=ownKeys(e),s=0;s{await run()})().catch((e=>{l.setFailed(e.message)}))},75:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){if(n===undefined)n=r;var i=Object.getOwnPropertyDescriptor(t,r);if(!i||("get"in i?!t.__esModule:i.writable||i.configurable)){i={enumerable:true,get:function(){return t[r]}}}Object.defineProperty(e,n,i)}:function(e,t,r,n){if(n===undefined)n=r;e[n]=t[r]});var i=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:true,value:t})}:function(e,t){e["default"]=t});var s=this&&this.__importStar||function(){var ownKeys=function(e){ownKeys=Object.getOwnPropertyNames||function(e){var t=[];for(var r in e)if(Object.prototype.hasOwnProperty.call(e,r))t[t.length]=r;return t};return ownKeys(e)};return function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r=ownKeys(e),s=0;so.compareVersions(t.version,e.version)));const i=r.find((e=>{if(e?.require?.php){return e?.require?.php.split("|").some((e=>e&&o.satisfies(t+".0",e)))}return false}));return i?i.version:null}return null}},159:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){if(n===undefined)n=r;var i=Object.getOwnPropertyDescriptor(t,r);if(!i||("get"in i?!t.__esModule:i.writable||i.configurable)){i={enumerable:true,get:function(){return t[r]}}}Object.defineProperty(e,n,i)}:function(e,t,r,n){if(n===undefined)n=r;e[n]=t[r]});var i=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:true,value:t})}:function(e,t){e["default"]=t});var s=this&&this.__importStar||function(){var ownKeys=function(e){ownKeys=Object.getOwnPropertyNames||function(e){var t=[];for(var r in e)if(Object.prototype.hasOwnProperty.call(e,r))t[t.length]=r;return t};return ownKeys(e)};return function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r=ownKeys(e),s=0;s{if(/^\d+\.\d+\.\d+(-|$)/.test(e))return e;const t=e.match(/^(\d+\.\d+\.\d+)([A-Za-z]+[0-9A-Za-z.]+)$/);return t?`${t[1]}-${t[2]}`:e};const t=e["version_prefix"]+e["version"];const r=`https://api.github.com/repos/${e["repository"]}/git/matching-refs/tags%2F${t}.`;const n=await f.readEnv("GITHUB_TOKEN")||await f.readEnv("COMPOSER_TOKEN");const i=await d.fetch(r,n);if(i.error||i.data==="[]"){e.error=i.error??`No version found with prefix ${t}.`;return e.version}else{const e=JSON.parse(i.data);const t=e.map((e=>(e.ref?.split("/").pop()??"").replace(/^v(?=\d)/,""))).filter((e=>e.length>0));const r=new Map;const n=t.map((e=>{const t=fixSemver(e);r.set(t,e);return t}));const s=n.toSorted(((e,t)=>{try{return u.compareVersions(t,e)}catch{return t.localeCompare(e,"en",{numeric:true,sensitivity:"base"})}}));return r.get(s[0])??s[0]}}async function getLatestVersion(e){if(!e.version&&e.fetch_latest==="false"){return"latest"}if(e.fetch_latest==="true"&&!e.repository){return"latest"}const t=await d.fetch(`${e.github}/${e.repository}/releases.atom`);if(t.data){const e=[...t.data.matchAll(/releases\/tag\/([a-zA-Z]*)?(\d+\.\d+\.\d+)"/g)].map((e=>e[2]));const r=e.toSorted(((e,t)=>e.localeCompare(t,undefined,{numeric:true})));return r.at(-1)||"latest"}return"latest"}async function getVersion(e,t){const r=/^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$/;const n=/^composer:(stable|preview|snapshot|[12])$/;const i=/[><=^~]+.*/;const s=/^\d+(\.\d+)?$/;t.version=e.replace(/v?(\d)/,"$1").replace(/\.x/,"");switch(true){case n.test(t.release):case r.test(t.version):case i.test(t.version)&&t.type==="composer":return t.version;case s.test(t.version)&&t.type==="composer":t.release=`${t.tool}:${t.version}.*`;return`${t.version}.*`;case!!t.repository&&s.test(t.version):return await getSemverVersion(t);default:return t.version.replace(/[><=^~]*/,"")}}async function getRelease(e,t){e=e.includes("/")?e.split("/")[1]:e;return e.includes(":")?[t.tool,e.split(":")[1]].join(":"):t.tool}async function filterList(e){const t=/^composer($|:.*)/;const r=/^composer:?($|preview$|snapshot$|v?\d+(\.\d+)?$|v?\d+\.\d+\.\d+[\w-]*$)/;const n=e.filter((e=>r.test(e)));let i="composer";e=e.filter((e=>!t.test(e)));switch(true){case n[0]==undefined:break;default:i=n.at(-1).replace(/v(\d\S*)/,"$1");break}e.unshift(i);return e}async function getUrl(e){if((e.version??"latest")==="latest"){return[e.domain,e.repository,e.prefix,e.version,e.verb,e.tool+e.extension].filter(Boolean).join("/")}else{return[e.domain,e.repository,e.prefix,e.verb,e.version_prefix+e.version,e.tool+e.extension].filter(Boolean).join("/")}}async function getPharUrl(e){if(e.version==="latest"){return e.domain+"/"+e.tool+".phar"}else{return e.domain+"/"+e.tool+"-"+e.version_prefix+e.version+".phar"}}async function addArchive(e){return await f.getCommand(e.os,"tool")+await f.joins(e.url,e.tool,e.version_parameter)}async function addPackage(e){const t=await f.getCommand(e.os,"composer_tool");const r=e.repository.split("/");const n=await f.joins(r[1],e.release,r[0]+"/",e.scope);return t+n}async function addBlackfirePlayer(e){switch(e.os){case"win32":return await f.addLog("$cross",e.tool,e.tool+" is not a windows tool","win32");default:if(e.version=="latest"){if(/5\.[5-6]|7\.0/.test(e.php_version)){e.version="1.9.3"}else if(/7\.[1-4]|8\.0/.test(e.php_version)){e.version="1.22.0"}}e.url=await getPharUrl(e);return addArchive(e)}}async function addCastor(e){e.tool="castor."+e.os.replace("win32","windows")+"-amd64";e.url=await getUrl(e);e.tool="castor";e.version_parameter=c.default.existsSync("castor.php")?e.version_parameter:"";return await addArchive(e)}async function addComposer(e){const t=e.version.replace("latest","stable");const r=e.github;const n=e.domain;const i="https://dl.cloudsmith.io";const s="https://artifacts.setup-php.com";const o=`composer-${e.php_version}-${t}.phar`;const a=`${r}/shivammathur/composer-cache/releases/latest/download/${o}`;const c=`${i}/public/shivammathur/composer-cache/raw/files/${o}`;const u=`${s}/composer/${o}`;const d=`${n}/download/latest-2.2.x/composer.phar`;const l=/^5\.[3-6]$|^7\.[0-1]$/.test(e.php_version);const p=`${n}/composer-${t}.phar`;const h=`${n}/download/${t}/composer.phar`;let g=`${a},${u},${c}`;let w=`${n}/composer.phar`;switch(true){case/^snapshot$/.test(t):w=l?d:w;break;case/^preview$|^2$/.test(t):w=l?d:p;break;case/^1$/.test(t):w=p;break;case/^\d+\.\d+\.\d+[\w-]*$/.test(e.version):g=`${r}/${e.repository}/releases/download/${e.version}/composer.phar`;w=h;break;default:w=l?d:p}const v=await f.readEnv("NO_TOOLS_CACHE")!=="true";e.url=v?`${g},${w}`:w;e.version_parameter=e.version;return await addArchive(e)}async function addDeployer(e){if(e.version==="latest"){e.url=e.domain+"/deployer.phar"}else{const t=await d.fetch("https://deployer.org/manifest.json");const r=JSON.parse(t.data);const n=Object.keys(r).find((t=>r[t].version===e.version));if(n){e.url=r[n].url}else{return await f.addLog("$cross","deployer","Version missing in deployer manifest",e.os)}}return await addArchive(e)}async function addDevTools(e){switch(e.os){case"linux":case"darwin":return"add_devtools "+e.tool;case"win32":return await f.addLog("$tick",e.tool,e.tool+" is not a windows tool","win32");default:return await f.log("Platform "+e.os+" is not supported",e.os,"error")}}async function addPECL(e){return await f.getCommand(e.os,"pecl")}async function addPhing(e){e.url=e.domain+"/get/phing-"+e.version+e.extension;if(e.version!="latest"){[e.prefix,e.verb]=["releases","download"];e.domain=e.github;e.extension="-"+e.version+e.extension;e.url+=","+await getUrl(e)}return await addArchive(e)}async function addPhive(e){switch(true){case/5\.[3-5]/.test(e.php_version):return await f.addLog("$cross","phive","Phive is not supported on PHP "+e.php_version,e.os);case/5\.6|7\.0/.test(e.php_version):e.version="0.12.1";break;case/7\.1/.test(e.php_version):e.version="0.13.5";break;case/7\.2/.test(e.php_version):e.version="0.14.5";break;case/7\.3|7\.4/.test(e.php_version):e.version="0.15.3";break;case/^latest$/.test(e.version):e.version=await getLatestVersion(e);break}e.extension="-"+e.version+e.extension;e.url=await getUrl(e);return await addArchive(e)}async function addPHPUnitTools(e){if(e.version==="latest"){e.version=await l.search(e.packagist,e.php_version)??"latest"}e.url=await getPharUrl(e);if(e.url.match(/-\d+/)){e.url+=","+e.url.replace(/-(\d+)\.\d+\.\d+/,"-$1")}return await addArchive(e)}async function addWPCLI(e){if(e.version==="latest"){e.uri="wp-cli/builds/blob/gh-pages/phar/wp-cli.phar?raw=true";e.url=[e.domain,e.uri].join("/")}else{e.extension="-"+e.version+e.extension;e.url=await getUrl(e)}return await addArchive(e)}async function getData(e,t,r){const n=a.default.join(__dirname,"../src/configs/tools.json");const i=c.default.readFileSync(n,"utf8");const s=JSON.parse(i);e=e.replace(/\s+/g,"");const o=e.split(":");const u=o[0];const d=o[1];let l;if(Object.hasOwn(s,u)){l={...s[u],tool:u}}else{const e=Object.keys(s).find((e=>s[e].alias==u));if(e){l={...s[e],tool:e}}else if(u.includes("/")){l={tool:u.split("/")[1],repository:u,type:"composer"}}else{l={tool:u}}}const f="https://github.com";const p=l.domain??f;const h={tool:l.tool,version:"",url:"",os:r,php_version:t,github:f,domain:p,extension:l.extension??".phar",repository:l.repository??"",prefix:p===f?"releases":"",verb:p===f?"download":"",fetch_latest:l.fetch_latest??"false",scope:l.scope??"global",version_parameter:l.version_parameter!=null?JSON.stringify(l.version_parameter):"",version_prefix:l.version_prefix??"",release:"",packagist:l.packagist??l.repository??"",type:l.type,function:l.function,alias:l.alias};h.release=await getRelease(e,h);h.version=d?await getVersion(d,h):await getLatestVersion(h);h.url=await getUrl(h);return h}t.functionRecord={castor:addCastor,composer:addComposer,deployer:addDeployer,dev_tools:addDevTools,phive:addPhive,blackfire_player:addBlackfirePlayer,pecl:addPECL,phing:addPhing,phpunit:addPHPUnitTools,phpcpd:addPHPUnitTools,wp_cli:addWPCLI};async function addTools(e,r,n){let i="\n";if(e==="none"){return""}else{i+=await f.stepLog("Setup Tools",n)}const s=await filterList(await f.CSVArray(e));await f.asyncForEach(s,(async function(e){const s=await getData(e,r,n);i+="\n";switch(true){case s.error!==undefined:i+=await f.addLog("$cross",s.tool,s.error,s.os);break;case"phar"===s.type:i+=await addArchive(s);break;case"composer"===s.type:i+=await addPackage(s);break;case"custom-package"===s.type:i+=await f.customPackage(s.tool.split("-")[0],"tools",s.version,s.os);break;case"custom-function"===s.type:if(!s.function){i+=await f.addLog("$cross",s.tool,s.tool+" has no function defined. Please report this issue.",s.os)}else{i+=await t.functionRecord[s.function](s)}break;case/^none$/.test(s.tool):break;default:i+=await f.addLog("$cross",s.tool,"Tool "+s.tool+" is not supported",s.os);break}}));return i}},277:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){if(n===undefined)n=r;var i=Object.getOwnPropertyDescriptor(t,r);if(!i||("get"in i?!t.__esModule:i.writable||i.configurable)){i={enumerable:true,get:function(){return t[r]}}}Object.defineProperty(e,n,i)}:function(e,t,r,n){if(n===undefined)n=r;e[n]=t[r]});var i=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:true,value:t})}:function(e,t){e["default"]=t});var s=this&&this.__importStar||function(){var ownKeys=function(e){ownKeys=Object.getOwnPropertyNames||function(e){var t=[];for(var r in e)if(Object.prototype.hasOwnProperty.call(e,r))t[t.length]=r;return t};return ownKeys(e)};return function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r=ownKeys(e),s=0;s1:return e.slice(0,3);default:return e+".0"}}}async function parseIniFile(e){switch(true){case/^(production|development|none)$/.test(e):return e;case/php\.ini-(production|development)$/.test(e):return e.split("-")[1];default:return"production"}}async function asyncForEach(e,t){for(const[r,n]of e.entries()){await t(n,r,e)}}async function color(e){switch(e){case"error":return"31";default:case"success":return"32";case"warning":return"33"}}async function log(e,t,r){switch(t){case"win32":return'printf "\\033['+await color(r)+";1m"+e+' \\033[0m"';case"linux":case"darwin":default:return'echo "\\033['+await color(r)+";1m"+e+'\\033[0m"'}}async function stepLog(e,t){switch(t){case"win32":return'Step-Log "'+e+'"';case"linux":case"darwin":return'step_log "'+e+'"';default:return await log("Platform "+t+" is not supported",t,"error")}}async function addLog(e,t,r,n){switch(n){case"win32":return'Add-Log "'+e+'" "'+t+'" "'+r+'"';case"linux":case"darwin":return'add_log "'+e+'" "'+t+'" "'+r+'"';default:return await log("Platform "+n+" is not supported",n,"error")}}async function extensionArray(e){switch(e){case"":case" ":return[];default:return[e.match(/(^|,\s?)none(\s?,|$)/)?"none":"",...e.split(",").map((function(e){if(/.+-.+\/.+@.+/.test(e)){return e}return e.trim().toLowerCase().replace(/^(:)?(php[-_]|none|zend )|(-[^-]*)-/,"$1$3")}))].filter(Boolean)}}async function CSVArray(e){switch(e){case"":case" ":return[];default:return e.split(/,(?=(?:(?:[^"']*["']){2})*[^"']*$)/).map((function(e){return e.trim().replace(/^["']|["']$|(?<==)["']/g,"").replace(/=(((?!E_).)*[?{}|&~![()^]+((?!E_).)+)/,"='$1'").replace(/=(.*?)(=.*)/,"='$1$2'").replace(/:\s*["'](.*?)/g,":$1")})).filter(Boolean)}}async function getExtensionPrefix(e){switch(true){default:return"extension";case/xdebug([2-3])?$|opcache|ioncube|eaccelerator/.test(e):return"zend_extension"}}async function suppressOutput(e){switch(e){case"win32":return" ";case"linux":case"darwin":return" ";default:return await log("Platform "+e+" is not supported",e,"error")}}async function getUnsupportedLog(e,t,r){return"\n"+await addLog("$cross",e,[e,"is not supported on PHP",t].join(" "),r)+"\n"}async function getCommand(e,t){switch(e){case"linux":case"darwin":return"add_"+t+" ";case"win32":return"Add-"+t.split("_").map((e=>e.charAt(0).toUpperCase()+e.slice(1))).join("")+" ";default:return await log("Platform "+e+" is not supported",e,"error")}}async function joins(...e){return[...e].join(" ")}async function scriptExtension(e){switch(e){case"win32":return".ps1";case"linux":case"darwin":return".sh";default:return await log("Platform "+e+" is not supported",e,"error")}}async function scriptTool(e){switch(e){case"win32":return"pwsh ";case"linux":case"darwin":return"bash ";default:return await log("Platform "+e+" is not supported",e,"error")}}async function customPackage(e,t,r,n){const i=e.replace(/\d+|(pdo|pecl)[_-]|[_-]db2/,"");const s=await scriptExtension(n);const o=c.join(__dirname,"../src/scripts/"+t+"/"+i+s);const a=await getCommand(n,i);return"\n. "+o+"\n"+a+r}async function parseExtensionSource(e,t){const r=/(\w+)-(\w+:\/\/.{1,253}(?:[.:][^:/\s]{2,63})+\/)?([\w.-]+)\/([\w.-]+)@(.+)/;const n=r.exec(e);n[2]=n[2]?n[2].slice(0,-1):"https://github.com";return await joins("\nadd_extension_from_source",...n.splice(1,n.length),t)}async function readPHPVersion(){const e=await getInput("php-version",false);if(e){return e}const t=await getInput("php-version-file",false)||".php-version";if(a.default.existsSync(t)){const e=a.default.readFileSync(t,"utf8");const r=e.match(/^(?:php\s)?(\d+\.\d+\.\d+)$/m);return r?r[1]:e.trim()}else if(t!==".php-version"){throw new Error(`Could not find '${t}' file.`)}const r=await readEnv("COMPOSER_PROJECT_DIR");const n=c.join(r,"composer.lock");if(a.default.existsSync(n)){const e=JSON.parse(a.default.readFileSync(n,"utf8"));if(e["platform-overrides"]&&e["platform-overrides"]["php"]){return e["platform-overrides"]["php"]}}const i=c.join(r,"composer.json");if(a.default.existsSync(i)){const e=JSON.parse(a.default.readFileSync(i,"utf8"));if(e["config"]&&e["config"]["platform"]&&e["config"]["platform"]["php"]){return e["config"]["platform"]["php"]}}return"latest"}async function setVariable(e,t,r){switch(r){case"win32":return"\n$"+e+" = "+t+"\n";case"linux":case"darwin":default:return"\n"+e+'="$('+t+')"\n'}}},236:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){if(n===undefined)n=r;var i=Object.getOwnPropertyDescriptor(t,r);if(!i||("get"in i?!t.__esModule:i.writable||i.configurable)){i={enumerable:true,get:function(){return t[r]}}}Object.defineProperty(e,n,i)}:function(e,t,r,n){if(n===undefined)n=r;e[n]=t[r]});var i=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:true,value:t})}:function(e,t){e["default"]=t});var s=this&&this.__importStar||function(){var ownKeys=function(e){ownKeys=Object.getOwnPropertyNames||function(e){var t=[];for(var r in e)if(Object.prototype.hasOwnProperty.call(e,r))t[t.length]=r;return t};return ownKeys(e)};return function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r=ownKeys(e),s=0;s{o+=u.write(e);if(l){l(e)}};const stdOutListener=e=>{s+=c.write(e);if(d){d(e)}};const f=Object.assign(Object.assign({},r===null||r===void 0?void 0:r.listeners),{stdout:stdOutListener,stderr:stdErrListener});const p=yield exec(e,t,Object.assign(Object.assign({},r),{listeners:f}));s+=c.end();o+=u.end();return{exitCode:p,stdout:s,stderr:o}}))}},665:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){if(n===undefined)n=r;var i=Object.getOwnPropertyDescriptor(t,r);if(!i||("get"in i?!t.__esModule:i.writable||i.configurable)){i={enumerable:true,get:function(){return t[r]}}}Object.defineProperty(e,n,i)}:function(e,t,r,n){if(n===undefined)n=r;e[n]=t[r]});var i=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:true,value:t})}:function(e,t){e["default"]=t});var s=this&&this.__importStar||function(){var ownKeys=function(e){ownKeys=Object.getOwnPropertyNames||function(e){var t=[];for(var r in e)if(Object.prototype.hasOwnProperty.call(e,r))t[t.length]=r;return t};return ownKeys(e)};return function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r=ownKeys(e),s=0;s-1){const e=n.substring(0,i);r(e);n=n.substring(i+a.EOL.length);i=n.indexOf(a.EOL)}return n}catch(e){this._debug(`error processing line. Failed with error ${e}`);return""}}_getSpawnFileName(){if(h){if(this._isCmdFile()){return process.env["COMSPEC"]||"cmd.exe"}}return this.toolPath}_getSpawnArgs(e){if(h){if(this._isCmdFile()){let t=`/D /S /C "${this._windowsQuoteCmdArg(this.toolPath)}`;for(const r of this.args){t+=" ";t+=e.windowsVerbatimArguments?r:this._windowsQuoteCmdArg(r)}t+='"';return[t]}}return this.args}_endsWith(e,t){return e.endsWith(t)}_isCmdFile(){const e=this.toolPath.toUpperCase();return this._endsWith(e,".CMD")||this._endsWith(e,".BAT")}_windowsQuoteCmdArg(e){if(!this._isCmdFile()){return this._uvQuoteCmdArg(e)}if(!e){return'""'}const t=[" ","\t","&","(",")","[","]","{","}","^","=",";","!","'","+",",","`","~","|","<",">",'"'];let r=false;for(const n of e){if(t.some((e=>e===n))){r=true;break}}if(!r){return e}let n='"';let i=true;for(let t=e.length;t>0;t--){n+=e[t-1];if(i&&e[t-1]==="\\"){n+="\\"}else if(e[t-1]==='"'){i=true;n+='"'}else{i=false}}n+='"';return n.split("").reverse().join("")}_uvQuoteCmdArg(e){if(!e){return'""'}if(!e.includes(" ")&&!e.includes("\t")&&!e.includes('"')){return e}if(!e.includes('"')&&!e.includes("\\")){return`"${e}"`}let t='"';let r=true;for(let n=e.length;n>0;n--){t+=e[n-1];if(r&&e[n-1]==="\\"){t+="\\"}else if(e[n-1]==='"'){r=true;t+="\\"}else{r=false}}t+='"';return t.split("").reverse().join("")}_cloneExecOptions(e){e=e||{};const t={cwd:e.cwd||process.cwd(),env:e.env||process.env,silent:e.silent||false,windowsVerbatimArguments:e.windowsVerbatimArguments||false,failOnStdErr:e.failOnStdErr||false,ignoreReturnCode:e.ignoreReturnCode||false,delay:e.delay||1e4};t.outStream=e.outStream||process.stdout;t.errStream=e.errStream||process.stderr;return t}_getSpawnOptions(e,t){e=e||{};const r={};r.cwd=e.cwd;r.env=e.env;r["windowsVerbatimArguments"]=e.windowsVerbatimArguments||this._isCmdFile();if(e.windowsVerbatimArguments){r.argv0=`"${t}"`}return r}exec(){return o(this,void 0,void 0,(function*(){if(!f.isRooted(this.toolPath)&&(this.toolPath.includes("/")||h&&this.toolPath.includes("\\"))){this.toolPath=d.resolve(process.cwd(),this.options.cwd||process.cwd(),this.toolPath)}this.toolPath=yield l.which(this.toolPath,true);return new Promise(((e,t)=>o(this,void 0,void 0,(function*(){this._debug(`exec tool: ${this.toolPath}`);this._debug("arguments:");for(const e of this.args){this._debug(` ${e}`)}const r=this._cloneExecOptions(this.options);if(!r.silent&&r.outStream){r.outStream.write(this._getCommandString(r)+a.EOL)}const n=new ExecState(r,this.toolPath);n.on("debug",(e=>{this._debug(e)}));if(this.options.cwd&&!(yield f.exists(this.options.cwd))){return t(new Error(`The cwd: ${this.options.cwd} does not exist!`))}const i=this._getSpawnFileName();const s=u.spawn(i,this._getSpawnArgs(r),this._getSpawnOptions(this.options,i));let o="";if(s.stdout){s.stdout.on("data",(e=>{if(this.options.listeners&&this.options.listeners.stdout){this.options.listeners.stdout(e)}if(!r.silent&&r.outStream){r.outStream.write(e)}o=this._processLineBuffer(e,o,(e=>{if(this.options.listeners&&this.options.listeners.stdline){this.options.listeners.stdline(e)}}))}))}let c="";if(s.stderr){s.stderr.on("data",(e=>{n.processStderr=true;if(this.options.listeners&&this.options.listeners.stderr){this.options.listeners.stderr(e)}if(!r.silent&&r.errStream&&r.outStream){const t=r.failOnStdErr?r.errStream:r.outStream;t.write(e)}c=this._processLineBuffer(e,c,(e=>{if(this.options.listeners&&this.options.listeners.errline){this.options.listeners.errline(e)}}))}))}s.on("error",(e=>{n.processError=e.message;n.processExited=true;n.processClosed=true;n.CheckComplete()}));s.on("exit",(e=>{n.processExitCode=e;n.processExited=true;this._debug(`Exit code ${e} received from tool '${this.toolPath}'`);n.CheckComplete()}));s.on("close",(e=>{n.processExitCode=e;n.processExited=true;n.processClosed=true;this._debug(`STDIO streams have closed for tool '${this.toolPath}'`);n.CheckComplete()}));n.on("done",((r,n)=>{if(o.length>0){this.emit("stdline",o)}if(c.length>0){this.emit("errline",c)}s.removeAllListeners();if(r){t(r)}else{e(n)}}));if(this.options.input){if(!s.stdin){throw new Error("child process missing stdin")}s.stdin.end(this.options.input)}}))))}))}}t.ToolRunner=ToolRunner;function argStringToArray(e){const t=[];let r=false;let n=false;let i="";function append(e){if(n&&e!=='"'){i+="\\"}i+=e;n=false}for(let s=0;s0){t.push(i);i=""}continue}append(o)}if(i.length>0){t.push(i.trim())}return t}class ExecState extends c.EventEmitter{constructor(e,t){super();this.processClosed=false;this.processError="";this.processExitCode=0;this.processExited=false;this.processStderr=false;this.delay=1e4;this.done=false;this.timeout=null;if(!t){throw new Error("toolPath must not be empty")}this.options=e;this.toolPath=t;if(e.delay){this.delay=e.delay}}CheckComplete(){if(this.done){return}if(this.processClosed){this._setResult()}else if(this.processExited){this.timeout=(0,p.setTimeout)(ExecState.HandleTimeout,this.delay,this)}}_debug(e){this.emit("debug",e)}_setResult(){let e;if(this.processExited){if(this.processError){e=new Error(`There was an error when attempting to execute the process '${this.toolPath}'. This may indicate the process failed to start. Error: ${this.processError}`)}else if(this.processExitCode!==0&&!this.options.ignoreReturnCode){e=new Error(`The process '${this.toolPath}' failed with exit code ${this.processExitCode}`)}else if(this.processStderr&&this.options.failOnStdErr){e=new Error(`The process '${this.toolPath}' failed because one or more lines were written to the STDERR stream`)}}if(this.timeout){clearTimeout(this.timeout);this.timeout=null}this.done=true;this.emit("done",e,this.processExitCode)}static HandleTimeout(e){if(e.done){return}if(!e.processClosed&&e.processExited){const t=`The STDIO streams did not close within ${e.delay/1e3} seconds of the exit event from process '${e.toolPath}'. This may indicate a child process inherited the STDIO streams and has not yet exited.`;e._debug(t)}e._setResult()}}},207:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){if(n===undefined)n=r;var i=Object.getOwnPropertyDescriptor(t,r);if(!i||("get"in i?!t.__esModule:i.writable||i.configurable)){i={enumerable:true,get:function(){return t[r]}}}Object.defineProperty(e,n,i)}:function(e,t,r,n){if(n===undefined)n=r;e[n]=t[r]});var i=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:true,value:t})}:function(e,t){e["default"]=t});var s=this&&this.__importStar||function(){var ownKeys=function(e){ownKeys=Object.getOwnPropertyNames||function(e){var t=[];for(var r in e)if(Object.prototype.hasOwnProperty.call(e,r))t[t.length]=r;return t};return ownKeys(e)};return function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r=ownKeys(e),s=0;se.toUpperCase()===t))){return e}}else{if(isUnixExecutable(n)){return e}}}const i=e;for(const s of r){e=i+s;n=undefined;try{n=yield(0,t.stat)(e)}catch(t){if(t.code!=="ENOENT"){console.log(`Unexpected error attempting to determine if executable file exists '${e}': ${t}`)}}if(n&&n.isFile()){if(t.IS_WINDOWS){try{const r=u.dirname(e);const n=u.basename(e).toUpperCase();for(const i of yield(0,t.readdir)(r)){if(n===i.toUpperCase()){e=u.join(r,i);break}}}catch(t){console.log(`Unexpected error attempting to determine the actual case of the file '${e}': ${t}`)}return e}else{if(isUnixExecutable(n)){return e}}}}return""}))}function normalizeSeparators(e){e=e||"";if(t.IS_WINDOWS){e=e.replace(/\//g,"\\");return e.replace(/\\\\+/g,"\\")}return e.replace(/\/\/+/g,"/")}function isUnixExecutable(e){return(e.mode&1)>0||(e.mode&8)>0&&process.getgid!==undefined&&e.gid===process.getgid()||(e.mode&64)>0&&process.getuid!==undefined&&e.uid===process.getuid()}function getCmdPath(){var e;return(e=process.env["COMSPEC"])!==null&&e!==void 0?e:`cmd.exe`}},994:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){if(n===undefined)n=r;var i=Object.getOwnPropertyDescriptor(t,r);if(!i||("get"in i?!t.__esModule:i.writable||i.configurable)){i={enumerable:true,get:function(){return t[r]}}}Object.defineProperty(e,n,i)}:function(e,t,r,n){if(n===undefined)n=r;e[n]=t[r]});var i=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:true,value:t})}:function(e,t){e["default"]=t});var s=this&&this.__importStar||function(){var ownKeys=function(e){ownKeys=Object.getOwnPropertyNames||function(e){var t=[];for(var r in e)if(Object.prototype.hasOwnProperty.call(e,r))t[t.length]=r;return t};return ownKeys(e)};return function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r=ownKeys(e),s=0;s|]/.test(e)){throw new Error('File path must not contain `*`, `"`, `<`, `>` or `|` on Windows')}}try{yield u.rm(e,{force:true,maxRetries:3,recursive:true,retryDelay:300})}catch(e){throw new Error(`File was unable to be removed ${e}`)}}))}function mkdirP(e){return o(this,void 0,void 0,(function*(){(0,a.ok)(e,"a path argument must be provided");yield u.mkdir(e,{recursive:true})}))}function which(e,t){return o(this,void 0,void 0,(function*(){if(!e){throw new Error("parameter 'tool' is required")}if(t){const t=yield which(e,false);if(!t){if(u.IS_WINDOWS){throw new Error(`Unable to locate executable file: ${e}. Please verify either the file path exists or the file can be found within a directory specified by the PATH environment variable. Also verify the file has a valid extension for an executable file.`)}else{throw new Error(`Unable to locate executable file: ${e}. Please verify either the file path exists or the file can be found within a directory specified by the PATH environment variable. Also check the file mode to verify the file is executable.`)}}return t}const r=yield findInPath(e);if(r&&r.length>0){return r[0]}return""}))}function findInPath(e){return o(this,void 0,void 0,(function*(){if(!e){throw new Error("parameter 'tool' is required")}const t=[];if(u.IS_WINDOWS&&process.env["PATHEXT"]){for(const e of process.env["PATHEXT"].split(c.delimiter)){if(e){t.push(e)}}}if(u.isRooted(e)){const r=yield u.tryGetExecutablePath(e,t);if(r){return[r]}return[]}if(e.includes(c.sep)){return[]}const r=[];if(process.env.PATH){for(const e of process.env.PATH.split(c.delimiter)){if(e){r.push(e)}}}const n=[];for(const i of r){const r=yield u.tryGetExecutablePath(c.join(i,e),t);if(r){n.push(r)}}return n}))}function readCopyOptions(e){const t=e.force==null?true:e.force;const r=Boolean(e.recursive);const n=e.copySourceDirectory==null?true:Boolean(e.copySourceDirectory);return{force:t,recursive:r,copySourceDirectory:n}}function cpDirRecursive(e,t,r,n){return o(this,void 0,void 0,(function*(){if(r>=255)return;r++;yield mkdirP(t);const i=yield u.readdir(e);for(const s of i){const i=`${e}/${s}`;const o=`${t}/${s}`;const a=yield u.lstat(i);if(a.isDirectory()){yield cpDirRecursive(i,o,r,n)}else{yield copyFile(i,o,n)}}yield u.chmod(t,(yield u.stat(e)).mode)}))}function copyFile(e,t,r){return o(this,void 0,void 0,(function*(){if((yield u.lstat(e)).isSymbolicLink()){try{yield u.lstat(t);yield u.unlink(t)}catch(e){if(e.code==="EPERM"){yield u.chmod(t,"0666");yield u.unlink(t)}}const r=yield u.readlink(e);yield u.symlink(r,t,u.IS_WINDOWS?"junction":null)}else if(!(yield u.exists(t))||r){yield u.copyFile(e,t)}}))}},26:function(e,t){(function(e,r){true?r(t):0})(this,(function(e){"use strict";const t=/^[v^~<>=]*?(\d+)(?:\.([x*]|\d+)(?:\.([x*]|\d+)(?:\.([x*]|\d+))?(?:-([\da-z\-]+(?:\.[\da-z\-]+)*))?(?:\+[\da-z\-]+(?:\.[\da-z\-]+)*)?)?)?$/i;const validateAndParse=e=>{if(typeof e!=="string"){throw new TypeError("Invalid argument expected string")}const r=e.match(t);if(!r){throw new Error(`Invalid argument not valid semver ('${e}' received)`)}r.shift();return r};const isWildcard=e=>e==="*"||e==="x"||e==="X";const tryParse=e=>{const t=parseInt(e,10);return isNaN(t)?e:t};const forceType=(e,t)=>typeof e!==typeof t?[String(e),String(t)]:[e,t];const compareStrings=(e,t)=>{if(isWildcard(e)||isWildcard(t))return 0;const[r,n]=forceType(tryParse(e),tryParse(t));if(r>n)return 1;if(r{for(let r=0;r{const r=validateAndParse(e);const n=validateAndParse(t);const i=r.pop();const s=n.pop();const o=compareSegments(r,n);if(o!==0)return o;if(i&&s){return compareSegments(i.split("."),s.split("."))}else if(i||s){return i?-1:1}return 0};const compare=(e,t,n)=>{assertValidOperator(n);const i=compareVersions(e,t);return r[n].includes(i)};const r={">":[1],">=":[0,1],"=":[0],"<=":[-1,0],"<":[-1],"!=":[-1,1]};const n=Object.keys(r);const assertValidOperator=e=>{if(typeof e!=="string"){throw new TypeError(`Invalid operator type, expected string but got ${typeof e}`)}if(n.indexOf(e)===-1){throw new Error(`Invalid operator, expected one of ${n.join("|")}`)}};const satisfies=(e,t)=>{t=t.replace(/([><=]+)\s+/g,"$1");if(t.includes("||")){return t.split("||").some((t=>satisfies(e,t)))}else if(t.includes(" - ")){const[r,n]=t.split(" - ",2);return satisfies(e,`>=${r} <=${n}`)}else if(t.includes(" ")){return t.trim().replace(/\s{2,}/g," ").split(" ").every((t=>satisfies(e,t)))}const r=t.match(/^([<>=~^]+)/);const n=r?r[1]:"=";if(n!=="^"&&n!=="~")return compare(e,t,n);const[i,s,o,,a]=validateAndParse(e);const[c,u,d,,l]=validateAndParse(t);const f=[i,s,o];const p=[c,u!==null&&u!==void 0?u:"x",d!==null&&d!==void 0?d:"x"];if(l){if(!a)return false;if(compareSegments(f,p)!==0)return false;if(compareSegments(a.split("."),l.split("."))===-1)return false}const h=p.findIndex((e=>e!=="0"))+1;const g=n==="~"?2:h>1?h:1;if(compareSegments(f.slice(0,g),p.slice(0,g))!==0)return false;if(compareSegments(f.slice(g),p.slice(g))===-1)return false;return true};const validate=e=>typeof e==="string"&&/^[v\d]/.test(e)&&t.test(e);const validateStrict=e=>typeof e==="string"&&/^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$/.test(e);e.compare=compare;e.compareVersions=compareVersions;e.satisfies=satisfies;e.validate=validate;e.validateStrict=validateStrict}))},613:e=>{"use strict";e.exports=require("assert")},317:e=>{"use strict";e.exports=require("child_process")},434:e=>{"use strict";e.exports=require("events")},896:e=>{"use strict";e.exports=require("fs")},857:e=>{"use strict";e.exports=require("os")},928:e=>{"use strict";e.exports=require("path")},193:e=>{"use strict";e.exports=require("string_decoder")},557:e=>{"use strict";e.exports=require("timers")}};var t={};function __nccwpck_require__(r){var n=t[r];if(n!==undefined){return n.exports}var i=t[r]={exports:{}};var s=true;try{e[r].call(i.exports,i,i.exports,__nccwpck_require__);s=false}finally{if(s)delete t[r]}return i.exports}if(typeof __nccwpck_require__!=="undefined")__nccwpck_require__.ab=__dirname+"/";var r=__nccwpck_require__(755);module.exports=r})(); \ No newline at end of file diff --git a/src/config.ts b/src/config.ts index 07f89766..bd6e008c 100644 --- a/src/config.ts +++ b/src/config.ts @@ -17,7 +17,7 @@ export async function addINIValuesUnix( return ( 'echo "' + ini_values.join('\n') + - '" | sudo tee -a "${pecl_file:-${ini_file[@]}}" >/dev/null 2>&1' + + '" | sudo tee -a "${pecl_file:-${ini_file[@]}}" ' + script ); } diff --git a/src/scripts/darwin.sh b/src/scripts/darwin.sh index 279f84f4..05c20857 100644 --- a/src/scripts/darwin.sh +++ b/src/scripts/darwin.sh @@ -13,9 +13,9 @@ handle_dependency_extensions() { suffix="$(get_php_formula_suffix)" if [[ -n "$suffix" ]]; then brew_opts=(-sf) - patch_abstract_file >/dev/null 2>&1 + patch_abstract_file for dependency_extension in "${dependency_extensions[@]}"; do - safe_brew install "${brew_opts[@]}" "$ext_tap/$dependency_extension@$version" >/dev/null 2>&1 && copy_brew_extensions "$dependency_extension" + safe_brew install "${brew_opts[@]}" "$ext_tap/$dependency_extension@$version" && copy_brew_extensions "$dependency_extension" done fi } @@ -31,7 +31,7 @@ disable_extension_helper() { sudo sed -Ei '' "/=(.*\/)?\"?$extension(.so)?$/d" "${ini_file:?}" sudo rm -rf "$scan_dir"/*"$extension"* /tmp/php"$version"_extensions mkdir -p /tmp/extdisabled/"$version" - echo '' | sudo tee /tmp/extdisabled/"$version"/"$extension" >/dev/null 2>&1 + echo '' | sudo tee /tmp/extdisabled/"$version"/"$extension" } # Function to get extension name from brew formula. @@ -81,9 +81,9 @@ add_brew_extension() { add_brew_tap "$php_tap" add_brew_tap "$ext_tap" formula="$(get_renamed_formula "$formula")" - update_dependencies >/dev/null 2>&1 - handle_dependency_extensions "$formula" "$extension" >/dev/null 2>&1 - (safe_brew install "${brew_opts[@]}" "$ext_tap/$formula@$version" >/dev/null 2>&1 && copy_brew_extensions "$formula") || pecl_install "$extension" >/dev/null 2>&1 + update_dependencies + handle_dependency_extensions "$formula" "$extension" + (safe_brew install "${brew_opts[@]}" "$ext_tap/$formula@$version" && copy_brew_extensions "$formula") || pecl_install "$extension" add_extension_log "$extension" "Installed and enabled" fi } @@ -92,7 +92,7 @@ add_brew_extension() { patch_abstract_file() { abstract_path="$tap_dir"/"$ext_tap"/Abstract/abstract-php-extension.rb if [[ -e "$abstract_path" && ! -e /tmp/abstract_patch ]]; then - echo '' | sudo tee /tmp/abstract_patch >/dev/null 2>&1 + echo '' | sudo tee /tmp/abstract_patch sudo sed -i '' -e "s|php@#{\(.*\)}|php@#{\1}$suffix|g" -e "s|php_version /|\"#{php_version}$suffix\" /|g" "$abstract_path" fi } @@ -102,9 +102,9 @@ add_extension_helper() { local extension=$1 prefix=$2 if [[ "$version" =~ ${old_versions:?} ]] && [ "$extension" = "imagick" ]; then - run_script "php5-darwin" "${version/./}" "$extension" >/dev/null 2>&1 + run_script "php5-darwin" "${version/./}" "$extension" else - pecl_install "$extension" >/dev/null 2>&1 && + pecl_install "$extension" && if [[ "$version" =~ ${old_versions:?} ]]; then echo "$prefix=$ext_dir/$extension.so" >>"$ini_file"; fi fi add_extension_log "$extension" "Installed and enabled" @@ -118,8 +118,8 @@ add_devtools() { # Function to handle request to add PECL. add_pecl() { - enable_extension xml extension >/dev/null 2>&1 - configure_pecl >/dev/null 2>&1 + enable_extension xml extension + configure_pecl pear_version=$(get_tool_version "pecl" "version") add_log "${tick:?}" "PECL" "Found PECL $pear_version" } @@ -151,7 +151,7 @@ update_dependencies() { git_retry -C "$repo" fetch origin main && git -C "$repo" reset --hard origin/main fi done - echo '' | sudo tee /tmp/update_dependencies >/dev/null 2>&1 + echo '' | sudo tee /tmp/update_dependencies fi } @@ -217,7 +217,7 @@ add_php_config() { if [[ "$ini" = "production" || "$ini" = "development" ]]; then sudo cp "$ini_dir"/php.ini-"$ini" "$ini_dir"/php.ini elif [ "$ini" = "none" ]; then - echo '' | sudo tee "${ini_file[@]}" >/dev/null 2>&1 + echo '' | sudo tee "${ini_file[@]}" fi } @@ -232,7 +232,7 @@ get_scan_dir() { # Function to handle self-hosted runner setup. self_hosted_helper() { - sudo mkdir -p /opt/hostedtoolcache >/dev/null 2>&1 || true + sudo mkdir -p /opt/hostedtoolcache || true } # Function to Setup PHP. @@ -244,15 +244,15 @@ setup_php() { existing_version=$(get_brewed_php) status="Found" if [[ "$version" =~ ${old_versions:?} ]]; then - run_script "php5-darwin" "${version/./}" >/dev/null 2>&1 + run_script "php5-darwin" "${version/./}" status="Installed" elif [ "${existing_version:0:3}" != "$version" ]; then - add_php "install" "$existing_version" >/dev/null 2>&1 + add_php "install" "$existing_version" status="Installed" elif [[ "${existing_version:0:3}" = "$version" && "${update:?}" = "true" ]]; then brew_php_version="$(brew info --json "php@$version" 2>/dev/null | jq -r '.[].versions.stable')" if [ "$brew_php_version" != "$existing_version" ]; then - add_php "upgrade" "$existing_version" >/dev/null 2>&1 + add_php "upgrade" "$existing_version" status="Upgraded" fi fi diff --git a/src/scripts/extensions/add_extensions.sh b/src/scripts/extensions/add_extensions.sh index b4e27b78..3e3113cd 100644 --- a/src/scripts/extensions/add_extensions.sh +++ b/src/scripts/extensions/add_extensions.sh @@ -50,7 +50,7 @@ enable_extension() { [ -d "$modules_dir" ] && sudo find "$modules_dir" -path "*disabled*$1" -delete enable_extension_dependencies "$1" "$2" enable_cache_extension_dependencies "$1" "$2" - if ! [[ "${version:?}" =~ ${old_versions:?} ]] && command -v phpenmod >/dev/null 2>&1; then + if ! [[ "${version:?}" =~ ${old_versions:?} ]] && command -v phpenmod ; then sudo sed -Ei "/=(.*\/)?\"?$extension(.so)?\"?$/d" "$pecl_file" mod="${ini_dir:?}"/../mods-available/"$1".ini if ! [ -e "$mod" ]; then @@ -59,7 +59,7 @@ enable_extension() { [ -n "$mod_priority_line" ] && priority=$(echo "$mod_priority_line" | cut -d'=' -f 2) (echo "; priority=$priority"; echo "$2=${ext_dir:?}/$1.so") | sudo tee "$mod" >/dev/null fi - sudo phpenmod -v "$version" "$1" >/dev/null 2>&1 + sudo phpenmod -v "$version" "$1" else echo "$2=${ext_dir:?}/$1.so" | sudo tee -a "${pecl_file:-${ini_file[@]}}" >/dev/null fi @@ -71,7 +71,7 @@ enable_extensions() { local extensions=("$@") to_wait=() for ext in "${extensions[@]}"; do - enable_extension "$ext" extension >/dev/null 2>&1 & + enable_extension "$ext" extension & to_wait+=($!) done wait "${to_wait[@]}" @@ -79,7 +79,7 @@ enable_extensions() { # Function to get a map of extensions and their dependent shared extensions. get_extension_map() { - php -d'error_reporting=0' "${src:?}"/scripts/extensions/extension_map.php /tmp/map"$version".orig >/dev/null 2>&1 + php -d'error_reporting=0' "${src:?}"/scripts/extensions/extension_map.php /tmp/map"$version".orig } # Function to enable extension dependencies which are also extensions. @@ -125,7 +125,7 @@ disable_extension() { disable_all_shared() { get_extension_map sudo sed -i.orig -E -e "/^(zend_)?extension\s*=/d" "${ini_file[@]}" "$pecl_file" 2>/dev/null || true - sudo find "${ini_dir:-$scan_dir}"/.. -name "*.ini" -not -path "*php.ini" -not -path "*phar.ini" -not -path "*pecl.ini" -not -path "*mods-available*" -delete >/dev/null 2>&1 || true + sudo find "${ini_dir:-$scan_dir}"/.. -name "*.ini" -not -path "*php.ini" -not -path "*phar.ini" -not -path "*pecl.ini" -not -path "*mods-available*" -delete || true mkdir -p /tmp/extdisabled/"$version" sudo rm -f /tmp/php"$version"_extensions sudo find "$ext_dir" -name '*.so' -print0 | xargs -0 -n 1 basename -s .so | xargs -I{} touch /tmp/extdisabled/"$version"/{} @@ -139,7 +139,7 @@ configure_pecl() { for script in pear pecl; do sudo "$script" channel-update "$script".php.net done - echo '' | sudo tee /tmp/pecl_config >/dev/null 2>&1 + echo '' | sudo tee /tmp/pecl_config fi } @@ -177,8 +177,8 @@ get_pecl_version() { pecl_install() { local extension=$1 local prefix=${2:-extension} - add_pecl >/dev/null 2>&1 - disable_extension_helper "${extension%-*}" >/dev/null 2>&1 + add_pecl + disable_extension_helper "${extension%-*}" # Compare version with 8.3 so it runs only on 8.4 and above # Install using the source interface as it allows for patching. if [[ $(printf "%s\n%s" "${version:?}" "8.3" | sort -V | head -n1) != "$version" ]]; then @@ -191,11 +191,11 @@ pecl_install() { prefix_opts="$(parse_args "$extension" CONFIGURE_PREFIX_OPTS) MAKEFLAGS='-j $cpu_count'" suffix_opts="$(parse_args "$extension" CONFIGURE_OPTS) $(parse_args "$extension" CONFIGURE_SUFFIX_OPTS)" IFS=' ' read -r -a libraries <<<"$(parse_args "$extension" LIBS) $(parse_args "$extension" "$(uname -s)"_LIBS)" - (( ${#libraries[@]} )) && add_libs "${libraries[@]}" >/dev/null 2>&1 + (( ${#libraries[@]} )) && add_libs "${libraries[@]}" if [ "$version" = "5.3" ]; then - yes '' 2>/dev/null | sudo "$prefix_opts" pecl install -f "$extension" >/dev/null 2>&1 + yes '' 2>/dev/null | sudo "$prefix_opts" pecl install -f "$extension" else - yes '' 2>/dev/null | sudo "$prefix_opts" pecl install -f -D "$(parse_pecl_configure_options "$suffix_opts")" "$extension" >/dev/null 2>&1 + yes '' 2>/dev/null | sudo "$prefix_opts" pecl install -f -D "$(parse_pecl_configure_options "$suffix_opts")" "$extension" fi local exit_code=$? sudo pecl info "$extension" | grep -iq 'zend extension' && prefix=zend_extension @@ -218,7 +218,7 @@ add_pecl_extension() { add_log "${tick:?}" "$extension" "Enabled" else [ -n "$pecl_version" ] && pecl_version="-$pecl_version" - pecl_install "$extension$pecl_version" || ( [ "${fail_fast:?}" = "false" ] && add_extension "$extension" "$(get_extension_prefix "$extension")" >/dev/null 2>&1) + pecl_install "$extension$pecl_version" || ( [ "${fail_fast:?}" = "false" ] && add_extension "$extension" "$(get_extension_prefix "$extension")" ) extension_version="$(php -r "echo phpversion('$extension');")" [ -n "$extension_version" ] && extension_version="-$extension_version" add_extension_log "$extension$extension_version" "Installed and enabled" diff --git a/src/scripts/extensions/blackfire.sh b/src/scripts/extensions/blackfire.sh index e06fa3a1..79b5ae75 100644 --- a/src/scripts/extensions/blackfire.sh +++ b/src/scripts/extensions/blackfire.sh @@ -19,11 +19,11 @@ add_blackfire() { extension_version=$(get -s -n "" https://blackfire.io/api/v1/releases | grep -Eo 'php":"([0-9]+.[0-9]+.[0-9]+)' | cut -d '"' -f 3) fi fi - get -q -n "${ext_dir:?}/blackfire.so" https://packages.blackfire.io/binaries/blackfire-php/"$extension_version"/blackfire-php-"$platform"_"$arch_name"-php-"$no_dot_version".so >/dev/null 2>&1 + get -q -n "${ext_dir:?}/blackfire.so" https://packages.blackfire.io/binaries/blackfire-php/"$extension_version"/blackfire-php-"$platform"_"$arch_name"-php-"$no_dot_version".so fi if [ -e "${ext_dir:?}/blackfire.so" ]; then - disable_extension xdebug >/dev/null 2>&1 - disable_extension pcov >/dev/null 2>&1 + disable_extension xdebug + disable_extension pcov enable_extension blackfire extension add_extension_log blackfire "$status" else diff --git a/src/scripts/extensions/couchbase.sh b/src/scripts/extensions/couchbase.sh index 39bf3293..a591a930 100644 --- a/src/scripts/extensions/couchbase.sh +++ b/src/scripts/extensions/couchbase.sh @@ -59,9 +59,9 @@ add_couchbase() { ext=$(get_couchbase_version) fi if [[ "$ext" =~ couchbase-[2-3].+ ]]; then - add_couchbase_clibs "$ext" >/dev/null 2>&1 + add_couchbase_clibs "$ext" else - add_couchbase_cxxlibs >/dev/null 2>&1 + add_couchbase_cxxlibs fi enable_extension "couchbase" "extension" if check_extension "couchbase"; then @@ -72,9 +72,9 @@ add_couchbase() { n_proc="$(nproc)" export COUCHBASE_SUFFIX_OPTS="CMAKE_BUILD_TYPE=Release" export CMAKE_BUILD_PARALLEL_LEVEL="$n_proc" - add_extension_from_source couchbase https://pecl.php.net couchbase couchbase "${ext##*-}" extension pecl >/dev/null 2>&1 + add_extension_from_source couchbase https://pecl.php.net couchbase couchbase "${ext##*-}" extension pecl else - pecl_install "${ext}" >/dev/null 2>&1 + pecl_install "${ext}" fi add_extension_log "couchbase" "Installed and enabled" fi diff --git a/src/scripts/extensions/cubrid.sh b/src/scripts/extensions/cubrid.sh index 46e6030d..c6c8badc 100644 --- a/src/scripts/extensions/cubrid.sh +++ b/src/scripts/extensions/cubrid.sh @@ -42,7 +42,7 @@ add_cubrid_helper() { add_cubrid() { ext=$1 status='Enabled' - add_cubrid_helper "$ext" >/dev/null 2>&1 + add_cubrid_helper "$ext" add_extension_log "$ext" "$status" check_extension "$ext" && add_license_log } diff --git a/src/scripts/extensions/event.sh b/src/scripts/extensions/event.sh index 71820b2f..c2eeaf8e 100644 --- a/src/scripts/extensions/event.sh +++ b/src/scripts/extensions/event.sh @@ -39,9 +39,9 @@ add_event() { add_log "${tick:?}" "event" "Enabled" else if ! [[ "${version:?}" =~ ${old_versions:?} ]] && [ "$os" = "Darwin" ]; then - add_brew_extension event extension >/dev/null 2>&1 + add_brew_extension event extension else - add_event_helper "$ext" >/dev/null 2>&1 + add_event_helper "$ext" fi add_extension_log "event" "Installed and enabled" fi diff --git a/src/scripts/extensions/firebird.sh b/src/scripts/extensions/firebird.sh index d7acb93f..37347ffa 100644 --- a/src/scripts/extensions/firebird.sh +++ b/src/scripts/extensions/firebird.sh @@ -15,12 +15,12 @@ add_firebird() { else if [ "$(uname -s)" = "Linux" ]; then if [[ "${version:?}" =~ 5.3|${php_builder_versions:?} ]]; then - add_firebird_helper /usr >/dev/null 2>&1 + add_firebird_helper /usr else - add_pdo_extension firebird >/dev/null 2>&1 + add_pdo_extension firebird fi else - add_brew_extension pdo_firebird extension >/dev/null 2>&1 + add_brew_extension pdo_firebird extension fi add_extension_log pdo_firebird "Installed and enabled" fi diff --git a/src/scripts/extensions/gearman.sh b/src/scripts/extensions/gearman.sh index bcef0bb7..3f71e70f 100644 --- a/src/scripts/extensions/gearman.sh +++ b/src/scripts/extensions/gearman.sh @@ -19,7 +19,7 @@ add_gearman_helper() { add_gearman() { status="Enabled" if [ "$(uname -s)" = 'Linux' ]; then - add_gearman_helper >/dev/null 2>&1 + add_gearman_helper add_extension_log "gearman" "$status" else add_brew_extension gearman extension diff --git a/src/scripts/extensions/geos.sh b/src/scripts/extensions/geos.sh index c685f866..5825556a 100644 --- a/src/scripts/extensions/geos.sh +++ b/src/scripts/extensions/geos.sh @@ -11,7 +11,7 @@ add_geos() { if check_extension "geos"; then add_log "${tick:?}" "geos" "Enabled" else - add_geos_helper >/dev/null 2>&1 + add_geos_helper add_extension_log "geos" "Installed and enabled" fi } diff --git a/src/scripts/extensions/http.ps1 b/src/scripts/extensions/http.ps1 index 16d9da3a..9709c558 100644 --- a/src/scripts/extensions/http.ps1 +++ b/src/scripts/extensions/http.ps1 @@ -40,12 +40,12 @@ Function Repair-ICU() { } Function Add-Http() { - Add-Extension iconv >$null 2>&1 - Add-Extension raphf >$null 2>&1 + Add-Extension iconv + Add-Extension raphf if($version -lt '8.0') { - Add-Extension propro >$null 2>&1 + Add-Extension propro } - Add-Extension pecl_http >$null 2>&1 + Add-Extension pecl_http Repair-ICU Add-ExtensionLog http "Installed and enabled" } \ No newline at end of file diff --git a/src/scripts/extensions/http.sh b/src/scripts/extensions/http.sh index 34e1aa3f..c4bcb334 100644 --- a/src/scripts/extensions/http.sh +++ b/src/scripts/extensions/http.sh @@ -75,7 +75,7 @@ add_http_latest() { if [ "$os" = "Linux" ]; then add_http_dependencies package="php$version-http" - add_ppa ondrej/php >/dev/null 2>&1 || update_ppa ondrej/php + add_ppa ondrej/php || update_ppa ondrej/php (check_package "$package" && install_packages "$package") || add_http_helper "$(get_http_version)" "$os" else if ! [[ "${version:?}" =~ ${old_versions:?} ]]; then @@ -103,9 +103,9 @@ add_http() { ext=$1 status="Enabled" if [[ "$ext" =~ ^(pecl_http|http)$ ]]; then - add_http_latest >/dev/null 2>&1 + add_http_latest else - add_http_version "$ext" >/dev/null 2>&1 + add_http_version "$ext" fi add_extension_log "http" "$status" } diff --git a/src/scripts/extensions/ibm.sh b/src/scripts/extensions/ibm.sh index cd2c6257..244dc09e 100644 --- a/src/scripts/extensions/ibm.sh +++ b/src/scripts/extensions/ibm.sh @@ -61,7 +61,7 @@ add_cli_driver() { else libs='/usr/local/lib' sudo mkdir -p "$libs" - sudo ln -sf "$ibm_cli"/lib/*.dylib "$libs" >/dev/null 2>&1 || true + sudo ln -sf "$ibm_cli"/lib/*.dylib "$libs" || true fi } @@ -93,11 +93,11 @@ add_ibm() { status='Enabled' ibm_home='/opt/ibm' ibm_cli=$ibm_home/clidriver - if ! add_cli_driver >/dev/null 2>&1; then + if ! add_cli_driver ; then add_log "${cross:?}" "$ext" "IBM Db2 CLI driver is not available on $(uname -s)/$(uname -m)" return 1 fi - add_ibm_helper >/dev/null 2>&1 + add_ibm_helper add_extension_log "$ext" "$status" check_extension "$ext" && add_license_log } diff --git a/src/scripts/extensions/intl.sh b/src/scripts/extensions/intl.sh index d8faf1c0..91424edf 100644 --- a/src/scripts/extensions/intl.sh +++ b/src/scripts/extensions/intl.sh @@ -17,7 +17,7 @@ add_intl() { add_log "${cross:?}" "intl" "ICU $icu is not supported for PHP $version" else [ "${ts:?}" = 'zts' ] && suffix='-zts' - install_icu "$icu" >/dev/null 2>&1 + install_icu "$icu" get -q -n "${ext_dir:?}/intl.so" "https://github.com/shivammathur/icu-intl/releases/download/intl-$icu/php${version:?}-intl-$icu$suffix$arch_suffix.so" enable_extension intl extension add_extension_log intl "Installed and enabled with ICU $icu" diff --git a/src/scripts/extensions/ioncube.sh b/src/scripts/extensions/ioncube.sh index eca3af75..2ec61dcf 100644 --- a/src/scripts/extensions/ioncube.sh +++ b/src/scripts/extensions/ioncube.sh @@ -24,10 +24,10 @@ add_ioncube() { if [ -e "$loader_file" ]; then sudo mv /tmp/ioncube/ioncube_loader_"${os_suffix%%_*}_${version:?}$ts_part".so "${ext_dir:?}/ioncube.so" sudo cp /tmp/ioncube/LICENSE.txt "$ext_dir"/IONCUBE_LICENSE.txt - echo "zend_extension=$ext_dir/ioncube.so" | sudo tee "${scan_dir:?}/00-ioncube.ini" >/dev/null 2>&1 + echo "zend_extension=$ext_dir/ioncube.so" | sudo tee "${scan_dir:?}/00-ioncube.ini" fi else - echo "zend_extension=$ext_dir/ioncube.so" | sudo tee "${scan_dir:?}/00-ioncube.ini" >/dev/null 2>&1 + echo "zend_extension=$ext_dir/ioncube.so" | sudo tee "${scan_dir:?}/00-ioncube.ini" fi add_extension_log "ioncube" "$status" check_extension "ioncube" && add_license_log diff --git a/src/scripts/extensions/oci.ps1 b/src/scripts/extensions/oci.ps1 index 033006d6..55f6e8a2 100644 --- a/src/scripts/extensions/oci.ps1 +++ b/src/scripts/extensions/oci.ps1 @@ -71,7 +71,7 @@ Function Add-Oci() { } } else { $status = 'Installed and enabled' - Add-Extension $extension >$null 2>&1 + Add-Extension $extension } Add-ExtensionLog $extension $status Add-LicenseLog diff --git a/src/scripts/extensions/oci.sh b/src/scripts/extensions/oci.sh index 929ffc2c..8095614a 100644 --- a/src/scripts/extensions/oci.sh +++ b/src/scripts/extensions/oci.sh @@ -72,8 +72,8 @@ add_oci() { oracle_home='/opt/oracle' oracle_client=$oracle_home/instantclient os=$(uname -s) - add_client >/dev/null 2>&1 - add_oci_helper >/dev/null 2>&1 + add_client + add_oci_helper add_extension_log "$ext" "$status" check_extension "$ext" && add_license_log } diff --git a/src/scripts/extensions/phalcon.sh b/src/scripts/extensions/phalcon.sh index 9f678fbf..a01b0f51 100644 --- a/src/scripts/extensions/phalcon.sh +++ b/src/scripts/extensions/phalcon.sh @@ -34,7 +34,7 @@ add_phalcon_helper() { add_brew_extension "$extension" extension else package="php${version:?}-$extension" - add_ppa ondrej/php >/dev/null 2>&1 || update_ppa ondrej/php + add_ppa ondrej/php || update_ppa ondrej/php [[ "$extension" =~ phalcon[4|5] ]] && (install_packages "php${version:?}-psr" || pecl_install psr || pecl_install psr-1.1.0) (check_package "$package" && install_packages "$package") || pecl_install phalcon-"$(get_phalcon_version)" || add_phalcon_from_repo fi @@ -94,7 +94,7 @@ add_phalcon() { [ "$extension" = "phalcon" ] && extension=phalcon5 extension_major_version=${extension: -1} if [[ "$extension_major_version" =~ [3-5] ]]; then - add_phalcon"$extension_major_version" >/dev/null 2>&1 + add_phalcon"$extension_major_version" fi add_extension_log "phalcon" "$status" } diff --git a/src/scripts/extensions/relay.sh b/src/scripts/extensions/relay.sh index ec29e176..8c5fb2d7 100644 --- a/src/scripts/extensions/relay.sh +++ b/src/scripts/extensions/relay.sh @@ -142,14 +142,14 @@ add_relay() { error="Relay extension is not available for macOS x86_64 architecture" else relay_version=$(get_relay_version "$ext") - add_relay_dependencies >/dev/null 2>&1 + add_relay_dependencies if shared_extension relay; then message="Enabled" else - add_relay_helper "$arch" >/dev/null 2>&1 + add_relay_helper "$arch" message="Installed and enabled ${relay_version}" fi - configure_relay >/dev/null 2>&1 + configure_relay fi add_extension_log relay "$message" "$error" } diff --git a/src/scripts/extensions/source.sh b/src/scripts/extensions/source.sh index 7d187e1b..9f83ec87 100644 --- a/src/scripts/extensions/source.sh +++ b/src/scripts/extensions/source.sh @@ -51,7 +51,7 @@ check_lib() { add_linux_libs() { local lib=$1 if ! check_lib "$lib"; then - install_packages "$lib" >/dev/null 2>&1 || true + install_packages "$lib" || true fi add_lib_log "$lib" } @@ -60,9 +60,9 @@ add_linux_libs() { add_darwin_libs() { local lib=$1 if ! check_lib "$lib"; then - safe_brew install "$lib" >/dev/null 2>&1 || true + safe_brew install "$lib" || true if [[ "$lib" = *@* ]]; then - brew link --overwrite --force "$lib" >/dev/null 2>&1 || true + brew link --overwrite --force "$lib" || true fi fi add_lib_log "$lib" @@ -97,7 +97,7 @@ get_libraries() { run_group() { local command=$1 local log=$2 - echo "$command" | sudo tee ./run_group.sh >/dev/null 2>&1 + echo "$command" | sudo tee ./run_group.sh echo "$GROUP$log" . ./run_group.sh local status=$? @@ -161,7 +161,7 @@ add_extension_from_source() { sub_dir="$(parse_args "$extension" PATH)" step_log "Setup $slug" ( - add_devtools phpize >/dev/null 2>&1 + add_devtools phpize disable_extension_helper "$extension" fetch_extension "$extension" "$fetch" if ! [ "$(find . -maxdepth 1 -name '*.m4' -exec grep -H 'PHP_NEW_EXTENSION' {} \; | wc -l)" != "0" ]; then @@ -169,7 +169,7 @@ add_extension_from_source() { else [[ -n "${libraries// }" ]] && run_group "add_libs $libraries" "add libraries" [ "${debug:?}" = "debug" ] && suffix_opts="$suffix_opts --enable-debug" - patch_extension "$extension" >/dev/null 2>&1 + patch_extension "$extension" run_group "phpize" "phpize" && \ run_group "sudo $prefix_opts ./configure $suffix_opts $opts" "configure" && \ run_group "sudo $prefix_opts make -j$(nproc 2>/dev/null || sysctl -n hw.ncpu)" "make" && \ diff --git a/src/scripts/extensions/sqlsrv.ps1 b/src/scripts/extensions/sqlsrv.ps1 index 28f8f2aa..d6d1117c 100644 --- a/src/scripts/extensions/sqlsrv.ps1 +++ b/src/scripts/extensions/sqlsrv.ps1 @@ -67,10 +67,10 @@ Function Add-Sqlsrv() { Add-ExtensionFromGithub $extension > $null 2>&1 } catch {} if (-not(Test-Extension $extension)) { - Add-SqlsrvFromMSGithub $extension >$null 2>&1 + Add-SqlsrvFromMSGithub $extension } if (-not(Test-Extension $extension)) { - Add-Extension $extension >$null 2>&1 + Add-Extension $extension } $status = 'Installed and enabled' } diff --git a/src/scripts/extensions/zephir_parser.ps1 b/src/scripts/extensions/zephir_parser.ps1 index 75b6a1e9..8db8d0da 100644 --- a/src/scripts/extensions/zephir_parser.ps1 +++ b/src/scripts/extensions/zephir_parser.ps1 @@ -77,7 +77,7 @@ Function Add-ZephirParser() { try { Add-ZephirParserFromGitHub $extension } catch { - Add-Extension $extension >$null 2>&1 + Add-Extension $extension } } Add-ExtensionLog zephir_parser $status diff --git a/src/scripts/extensions/zephir_parser.sh b/src/scripts/extensions/zephir_parser.sh index af8887d1..b385845e 100644 --- a/src/scripts/extensions/zephir_parser.sh +++ b/src/scripts/extensions/zephir_parser.sh @@ -33,7 +33,7 @@ add_zephir_parser() { zp_releases=https://github.com/"$repo"/releases if ! shared_extension zephir_parser; then message='Installed and enabled' - add_zephir_parser_helper "$ext" >/dev/null 2>&1 + add_zephir_parser_helper "$ext" else message='Enabled' enable_extension zephir_parser extension diff --git a/src/scripts/linux.sh b/src/scripts/linux.sh index 93948634..54ba4147 100644 --- a/src/scripts/linux.sh +++ b/src/scripts/linux.sh @@ -20,23 +20,23 @@ self_hosted_helper() { sudo ln -sf /usr/bin/apt-get /usr/bin/apt-fast trap "sudo rm -f /usr/bin/apt-fast 2>/dev/null" exit fi - sudo mkdir -p /opt/hostedtoolcache >/dev/null 2>&1 || true + sudo mkdir -p /opt/hostedtoolcache || true install_packages apt-transport-https ca-certificates curl file make jq unzip autoconf automake gcc g++ gnupg } # Function to fix broken packages. fix_broken_packages() { - sudo apt --fix-broken install >/dev/null 2>&1 + sudo apt --fix-broken install } # Function to install a package install_packages() { packages=("$@") if ! [ -e /etc/dpkg/dpkg.cfg.d/force-confnew ]; then - echo "force-confnew" | sudo tee /etc/dpkg/dpkg.cfg.d/force-confnew >/dev/null 2>&1 + echo "force-confnew" | sudo tee /etc/dpkg/dpkg.cfg.d/force-confnew trap "sudo rm -f /etc/dpkg/dpkg.cfg.d/force-confnew 2>/dev/null" exit fi - $apt_install "${packages[@]}" >/dev/null 2>&1 || (update_lists && fix_broken_packages && $apt_install "${packages[@]}" >/dev/null 2>&1) + $apt_install "${packages[@]}" || (update_lists && fix_broken_packages && $apt_install "${packages[@]}" ) } # Function to disable an extension. @@ -48,10 +48,10 @@ disable_extension_helper() { disable_extension_dependents "$extension" fi sudo sed -Ei "/=(.*\/)?\"?$extension(.so)?\"?$/d" "${ini_file[@]}" "$pecl_file" - sudo find "$ini_dir"/.. -name "*-$extension.ini" -not -path "*phar.ini" -not -path "*pecl.ini" -not -path "*mods-available*" -delete >/dev/null 2>&1 || true + sudo find "$ini_dir"/.. -name "*-$extension.ini" -not -path "*phar.ini" -not -path "*pecl.ini" -not -path "*mods-available*" -delete || true sudo rm -f /tmp/php"$version"_extensions mkdir -p /tmp/extdisabled/"$version" - echo '' | sudo tee /tmp/extdisabled/"$version"/"$extension" >/dev/null 2>&1 + echo '' | sudo tee /tmp/extdisabled/"$version"/"$extension" } # Function to add PDO extension. @@ -64,7 +64,7 @@ add_pdo_extension() { ext_name=$1 if shared_extension pdo; then disable_extension_helper pdo - echo "extension=pdo.so" | sudo tee "${ini_file[@]/php.ini/conf.d/10-pdo.ini}" >/dev/null 2>&1 + echo "extension=pdo.so" | sudo tee "${ini_file[@]/php.ini/conf.d/10-pdo.ini}" fi if [ "$ext" = "mysql" ]; then enable_extension "mysqlnd" "extension" @@ -72,15 +72,15 @@ add_pdo_extension() { elif [ "$ext" = "dblib" ]; then ext_name="sybase" elif [ "$ext" = "firebird" ]; then - install_packages libfbclient2 >/dev/null 2>&1 + install_packages libfbclient2 enable_extension "pdo_firebird" "extension" ext_name="interbase" elif [ "$ext" = "sqlite" ]; then ext="sqlite3" ext_name="sqlite3" fi - add_extension "$ext_name" "extension" >/dev/null 2>&1 - add_extension "$pdo_ext" "extension" >/dev/null 2>&1 + add_extension "$ext_name" "extension" + add_extension "$pdo_ext" "extension" add_extension_log "$pdo_ext" "Enabled" fi } @@ -94,7 +94,7 @@ check_package() { add_extension_helper() { local extension=$1 packages=(php"$version"-"$extension") - add_ppa ondrej/php >/dev/null 2>&1 || update_ppa ondrej/php + add_ppa ondrej/php || update_ppa ondrej/php [ "${debug:?}" = "debug" ] && check_package php"$version"-"$extension"-dbgsym && packages+=(php"$version"-"$extension"-dbgsym) (check_package "${packages[0]}" && install_packages "${packages[@]}") || pecl_install "$extension" add_extension_log "$extension" "Installed and enabled" @@ -108,7 +108,7 @@ add_devtools() { install_packages "php$version-dev" fi switch_version "phpize" "php-config" - add_extension xml extension >/dev/null 2>&1 + add_extension xml extension add_log "${tick:?}" "$tool" "Added $tool $semver" } @@ -129,11 +129,11 @@ setup_cached_versions() { # Function to add PECL. add_pecl() { - add_devtools phpize >/dev/null 2>&1 + add_devtools phpize if ! command -v pecl >/dev/null; then install_packages php-pear fi - configure_pecl >/dev/null 2>&1 + configure_pecl pear_version=$(get_tool_version "pecl" "version") add_log "${tick:?}" "PECL" "Added PECL $pear_version" } @@ -167,7 +167,7 @@ get_php_packages() { # Function to install packaged PHP add_packaged_php() { - add_ppa ondrej/php >/dev/null 2>&1 || update_ppa ondrej/php + add_ppa ondrej/php || update_ppa ondrej/php IFS=' ' read -r -a packages <<<"$(get_php_packages)" install_packages "${packages[@]}" } @@ -191,7 +191,7 @@ add_php() { setup_php_builder else add_packaged_php - switch_version >/dev/null 2>&1 + switch_version add_pecl fi elif [[ "$version" =~ ${old_versions:?} ]]; then @@ -204,7 +204,7 @@ add_php() { # Function to ini file for pear and link it to each SAPI. link_pecl_file() { - echo '' | sudo tee "$pecl_file" >/dev/null 2>&1 + echo '' | sudo tee "$pecl_file" for file in "${ini_file[@]}"; do sapi_scan_dir="$(realpath -m "$(dirname "$file")")/conf.d" if [ "$sapi_scan_dir" != "$scan_dir" ] && ! [ -h "$sapi_scan_dir" ]; then @@ -237,9 +237,9 @@ add_php_config() { elif [ "$ini" = "development" ]; then echo "${ini_file[@]}" | xargs -n 1 -P 6 sudo cp "$php_lib_dir"/php.ini-development elif [ "$ini" = "none" ]; then - echo '' | sudo tee "${ini_file[@]}" >/dev/null 2>&1 + echo '' | sudo tee "${ini_file[@]}" fi - echo "$ini" | sudo tee "$current_ini" >/dev/null 2>&1 + echo "$ini" | sudo tee "$current_ini" } # Function to Setup PHP @@ -250,13 +250,13 @@ setup_php() { check_pre_installed if [[ -z "$php_config" ]] || [ "$(php_semver | cut -c 1-3)" != "$version" ]; then if [ ! -e "/usr/bin/php$version" ] || [ ! -e "/usr/bin/php-config$version" ]; then - add_php >/dev/null 2>&1 + add_php else if ! [[ "$version" =~ ${old_versions:?} ]]; then - switch_version >/dev/null 2>&1 + switch_version fi if [ "${update:?}" = "true" ]; then - update_php >/dev/null 2>&1 + update_php else status="Switched to" fi @@ -264,7 +264,7 @@ setup_php() { php_config="$(command -v php-config)" else if [ "$update" = "true" ]; then - update_php >/dev/null 2>&1 + update_php else status="Found" fi @@ -284,7 +284,7 @@ setup_php() { link_pecl_file configure_php set_output "php-version" "$semver" - sudo rm -rf /usr/local/bin/phpunit >/dev/null 2>&1 + sudo rm -rf /usr/local/bin/phpunit sudo chmod 777 "${ini_file[@]}" "$pecl_file" "${tool_path_dir:?}" sudo cp "$src"/configs/pm/*.json "$RUNNER_TOOL_CACHE/" add_log "${tick:?}" "PHP" "$status PHP $semver$extra_version" @@ -298,8 +298,8 @@ debconf_fix="DEBIAN_FRONTEND=noninteractive" apt_install="sudo $debconf_fix apt-fast install -y --no-install-recommends" scripts="$src"/scripts -add_sudo >/dev/null 2>&1 -link_apt_fast >/dev/null 2>&1 +add_sudo +link_apt_fast . /etc/os-release # shellcheck source=. diff --git a/src/scripts/tools/add_tools.ps1 b/src/scripts/tools/add_tools.ps1 index bcf3cb9e..b02d771e 100644 --- a/src/scripts/tools/add_tools.ps1 +++ b/src/scripts/tools/add_tools.ps1 @@ -171,7 +171,7 @@ Function Add-ToolsHelper() { $extensions += @('json', 'tokenizer') } elseif($tool -eq "phpDocumentor") { $extensions+=('ctype', 'hash', 'json', 'fileinfo', 'iconv', 'mbstring', 'simplexml', 'xml') - Add-Extension fileinfo >$null 2>&1 + Add-Extension fileinfo Copy-Item $bin_dir\phpDocumentor.bat -Destination $bin_dir\phpdoc.bat } elseif($tool -eq "phpunit") { $extensions += @('dom', 'json', 'libxml', 'mbstring', 'xml', 'xmlwriter') @@ -184,7 +184,7 @@ Function Add-ToolsHelper() { Copy-Item $bin_dir\wp-cli.bat -Destination $bin_dir\wp.bat } foreach($extension in $extensions) { - Add-Extension $extension >$null 2>&1 + Add-Extension $extension } } @@ -249,7 +249,7 @@ Function Add-Tool() { $bat_content += "php %BIN_TARGET% %*" Set-Content -Path $bin_dir\$tool.bat -Value $bat_content Add-ToolsHelper $tool - Add-ToProfile $current_profile $tool "New-Alias $tool $bin_dir\$tool.bat" >$null 2>&1 + Add-ToProfile $current_profile $tool "New-Alias $tool $bin_dir\$tool.bat" $tool_version = Get-ToolVersion $tool $ver_param Add-Log $tick $tool "Added $tool $tool_version" } else { @@ -287,9 +287,9 @@ Function Add-ComposerToolHelper() { Remove-Item -Path $composer_lock -Force } if((composer global show $prefix$tool $tool_version -a 2>&1 | findstr '^type *: *composer-plugin') -and ($composer_args -ne '')) { - composer global config --no-plugins allow-plugins."$prefix$tool" true >$null 2>&1 + composer global config --no-plugins allow-plugins."$prefix$tool" true } - composer global require $prefix$release $composer_args >$null 2>&1 + composer global require $prefix$release $composer_args return composer global show $prefix$tool 2>&1 | findstr '^versions' } else { $release_stream = [System.IO.MemoryStream]::New([System.Text.Encoding]::ASCII.GetBytes($release)) @@ -300,9 +300,9 @@ Function Add-ComposerToolHelper() { New-Item -ItemType Directory -Force -Path $scoped_dir > $null 2>&1 Set-Content -Path $scoped_dir\composer.json -Value "{}" if((composer show $prefix$tool $tool_version -d $unix_scoped_dir -a 2>&1 | findstr '^type *: *composer-plugin') -and ($composer_args -ne '')) { - composer config -d $unix_scoped_dir --no-plugins allow-plugins."$prefix$tool" true >$null 2>&1 + composer config -d $unix_scoped_dir --no-plugins allow-plugins."$prefix$tool" true } - composer require $prefix$release -d $unix_scoped_dir $composer_args >$null 2>&1 + composer require $prefix$release -d $unix_scoped_dir $composer_args } [System.Environment]::SetEnvironmentVariable(($tool.replace('-', '_') + '_bin'), "$scoped_dir\vendor\bin") Add-Path $scoped_dir\vendor\bin diff --git a/src/scripts/tools/add_tools.sh b/src/scripts/tools/add_tools.sh index d577894b..ab336713 100644 --- a/src/scripts/tools/add_tools.sh +++ b/src/scripts/tools/add_tools.sh @@ -67,7 +67,7 @@ update_auth_json() { # Function to check if public GitHub token authentication is possible. can_access_public_github() { - curl --fail -s -H "Authorization: token $1" 'https://api.github.com/' >/dev/null 2>&1 + curl --fail -s -H "Authorization: token $1" 'https://api.github.com/' } # Function to setup authentication in composer. @@ -108,7 +108,7 @@ set_composer_env() { add_env_path "$composer_env" if [ -n "$COMPOSER_ALLOW_PLUGINS" ]; then echo "$COMPOSER_ALLOW_PLUGINS" | tr ',' '\n' | sed 's/^[[:space:]]*//;s/[[:space:]]*$//' | grep -v '^$' | while IFS= read -r plugin; do - composer global config --no-plugins "allow-plugins.$plugin" true >/dev/null 2>&1 + composer global config --no-plugins "allow-plugins.$plugin" true done fi } @@ -163,7 +163,7 @@ add_tools_helper() { sudo ln -s "$tool_path" "$tool_path_dir"/"${tool%-*}" 2>/dev/null || true fi for extension in "${extensions[@]}"; do - add_extension "$extension" extension >/dev/null 2>&1 + add_extension "$extension" extension done } @@ -228,22 +228,22 @@ add_composer_tool_helper() { enable_extensions curl mbstring openssl tool_version=${release##*:}; [ "$tool_version" = "$tool" ] && tool_version="*" if [ "$scope" = "global" ]; then - sudo rm -f "$composer_lock" >/dev/null 2>&1 || true + sudo rm -f "$composer_lock" || true if composer global show "$prefix$tool" "$tool_version" -a 2>&1 | grep -qE '^type *: *composer-plugin' && [ -n "$composer_args" ]; then - composer global config --no-plugins allow-plugins."$prefix$tool" true >/dev/null 2>&1 + composer global config --no-plugins allow-plugins."$prefix$tool" true fi - composer global require "$prefix$release" "$composer_args" >/dev/null 2>&1 - composer global show "$prefix$tool" 2>&1 | grep -E ^versions | sudo tee /tmp/composer.log >/dev/null 2>&1 + composer global require "$prefix$release" "$composer_args" + composer global show "$prefix$tool" 2>&1 | grep -E ^versions | sudo tee /tmp/composer.log else scoped_dir="$composer_bin/_tools/$tool-$(echo -n "$release" | shasum -a 256 | cut -d ' ' -f 1)" if ! [ -d "$scoped_dir" ]; then mkdir -p "$scoped_dir" echo '{}' | tee "$scoped_dir/composer.json" >/dev/null if composer show "$prefix$tool" "$tool_version" -d "$scoped_dir" -a 2>&1 | grep -qE '^type *: *composer-plugin' && [ -n "$composer_args" ]; then - composer config -d "$scoped_dir" --no-plugins allow-plugins."$prefix$tool" true >/dev/null 2>&1 + composer config -d "$scoped_dir" --no-plugins allow-plugins."$prefix$tool" true fi - composer require "$prefix$release" -d "$scoped_dir" "$composer_args" >/dev/null 2>&1 - composer show "$prefix$tool" -d "$scoped_dir" 2>&1 | grep -E ^versions | sudo tee /tmp/composer.log >/dev/null 2>&1 + composer require "$prefix$release" -d "$scoped_dir" "$composer_args" + composer show "$prefix$tool" -d "$scoped_dir" 2>&1 | grep -E ^versions | sudo tee /tmp/composer.log fi add_path "$scoped_dir"/vendor/bin fi diff --git a/src/scripts/tools/blackfire.ps1 b/src/scripts/tools/blackfire.ps1 index 4427ef7d..94e6b084 100644 --- a/src/scripts/tools/blackfire.ps1 +++ b/src/scripts/tools/blackfire.ps1 @@ -6,14 +6,14 @@ Function Add-Blackfire() { } $cli_version = (Invoke-RestMethod https://blackfire.io/api/v1/releases).cli $url = "https://packages.blackfire.io/binaries/blackfire/${cli_version}/blackfire-windows_${arch_name}.zip" - Get-File -Url $url -OutFile $bin_dir\blackfire.zip >$null 2>&1 - Expand-Archive -Path $bin_dir\blackfire.zip -DestinationPath $bin_dir -Force >$null 2>&1 + Get-File -Url $url -OutFile $bin_dir\blackfire.zip + Expand-Archive -Path $bin_dir\blackfire.zip -DestinationPath $bin_dir -Force Add-ToProfile $current_profile 'blackfire' "New-Alias blackfire $bin_dir\blackfire.exe" if ((Test-Path env:BLACKFIRE_SERVER_ID) -and (Test-Path env:BLACKFIRE_SERVER_TOKEN)) { - blackfire agent:config --server-id=$env:BLACKFIRE_SERVER_ID --server-token=$env:BLACKFIRE_SERVER_TOKEN >$null 2>&1 + blackfire agent:config --server-id=$env:BLACKFIRE_SERVER_ID --server-token=$env:BLACKFIRE_SERVER_TOKEN } if ((Test-Path env:BLACKFIRE_CLIENT_ID) -and (Test-Path env:BLACKFIRE_CLIENT_TOKEN)) { - blackfire client:config --client-id=$env:BLACKFIRE_CLIENT_ID --client-token=$env:BLACKFIRE_CLIENT_TOKEN --ca-cert=$php_dir\ssl\cacert.pem >$null 2>&1 + blackfire client:config --client-id=$env:BLACKFIRE_CLIENT_ID --client-token=$env:BLACKFIRE_CLIENT_TOKEN --ca-cert=$php_dir\ssl\cacert.pem } Add-Log $tick "blackfire" "Added blackfire $cli_version" } diff --git a/src/scripts/tools/blackfire.sh b/src/scripts/tools/blackfire.sh index b13c831d..536c0a2a 100644 --- a/src/scripts/tools/blackfire.sh +++ b/src/scripts/tools/blackfire.sh @@ -32,9 +32,9 @@ blackfire_config() { # Function to add blackfire cli. add_blackfire() { os="$(uname -s)" - [ "$os" = "Linux" ] && add_blackfire_linux >/dev/null 2>&1 - [ "$os" = "Darwin" ] && add_blackfire_darwin >/dev/null 2>&1 - blackfire_config >/dev/null 2>&1 + [ "$os" = "Linux" ] && add_blackfire_linux + [ "$os" = "Darwin" ] && add_blackfire_darwin + blackfire_config tool_version=$(get_tool_version "blackfire" "version") add_log "${tick:?}" "blackfire" "Added blackfire $tool_version" } diff --git a/src/scripts/tools/brew.sh b/src/scripts/tools/brew.sh index 650afcfa..2e76ab6a 100644 --- a/src/scripts/tools/brew.sh +++ b/src/scripts/tools/brew.sh @@ -14,11 +14,11 @@ add_brew_tap() { tap=$1 if ! [ -d "$tap_dir/$tap" ]; then if [ "${runner:?}" = "self-hosted" ]; then - brew tap "$tap" >/dev/null 2>&1 + brew tap "$tap" else - fetch_brew_tap "$tap" >/dev/null 2>&1 + fetch_brew_tap "$tap" if ! [ -d "$tap_dir/$tap" ]; then - brew tap "$tap" >/dev/null 2>&1 + brew tap "$tap" fi fi fi @@ -59,12 +59,12 @@ terminate_process_tree() { local pid=$1 local children child children=$(pgrep -P "$pid" 2>/dev/null || true) - kill -TERM "$pid" >/dev/null 2>&1 || true + kill -TERM "$pid" || true for child in $children; do terminate_process_tree "$child" done sleep 2 - kill -KILL "$pid" >/dev/null 2>&1 || true + kill -KILL "$pid" || true for child in $children; do terminate_process_tree "$child" done @@ -99,7 +99,7 @@ run_with_inactivity_watchdog() { ( local last_activity current_activity now last_activity=$(get_file_mtime "$log_file") - while kill -0 "$command_pid" >/dev/null 2>&1; do + while kill -0 "$command_pid" ; do sleep "$poll_secs" current_activity=$(get_file_mtime "$log_file") [ "$current_activity" -gt "$last_activity" ] && last_activity="$current_activity" @@ -117,7 +117,7 @@ run_with_inactivity_watchdog() { wait "$command_pid" exit_code=$? wait "$reader_pid" 2>/dev/null || true - kill "$monitor_pid" >/dev/null 2>&1 || true + kill "$monitor_pid" || true wait "$monitor_pid" 2>/dev/null || true if [ -e "$timeout_file" ]; then @@ -161,7 +161,7 @@ add_brew() { brew_prefix="$(get_brew_prefix)" if ! [ -d "$brew_prefix"/bin ]; then step_log "Setup Brew" - get -s "" "/tmp/install.sh" "https://raw.githubusercontent.com/Homebrew/install/main/install.sh" | bash -s >/dev/null 2>&1 + get -s "" "/tmp/install.sh" "https://raw.githubusercontent.com/Homebrew/install/main/install.sh" | bash -s add_log "${tick:?}" "Brew" "Installed Homebrew" fi add_brew_bins_to_path "$brew_prefix" diff --git a/src/scripts/tools/grpc_php_plugin.ps1 b/src/scripts/tools/grpc_php_plugin.ps1 index 2bdaa237..ee5331a7 100644 --- a/src/scripts/tools/grpc_php_plugin.ps1 +++ b/src/scripts/tools/grpc_php_plugin.ps1 @@ -1,7 +1,7 @@ Function Add-Msys2() { $msys_location = 'C:\msys64' if (-not(Test-Path $msys_location)) { - choco install msys2 -y >$null 2>&1 + choco install msys2 -y $msys_location = 'C:\tools\msys64' } return $msys_location @@ -15,7 +15,7 @@ Function Add-GrpcPhpPlugin() { } else { $grpc_package = 'mingw-w64-x86_64-grpc' } - $logs = . $msys_location\usr\bin\bash -l -c "pacman -S --noconfirm $grpc_package" >$null 2>&1 + $logs = . $msys_location\usr\bin\bash -l -c "pacman -S --noconfirm $grpc_package" $grpc_version = Get-ToolVersion 'Write-Output' "$logs" Add-Path $msys_location\mingw64\bin Set-Output grpc_php_plugin_path "$msys_location\mingw64\bin\grpc_php_plugin.exe" diff --git a/src/scripts/tools/grpc_php_plugin.sh b/src/scripts/tools/grpc_php_plugin.sh index 9d8bd24c..f2e09643 100644 --- a/src/scripts/tools/grpc_php_plugin.sh +++ b/src/scripts/tools/grpc_php_plugin.sh @@ -26,7 +26,7 @@ add_grpc_php_plugin_brew() { configure_brew [ -e /usr/local/bin/protoc ] && sudo mv /usr/local/bin/protoc /tmp/protoc && sudo mv /usr/local/include/google /tmp safe_brew install grpc - brew link --force --overwrite grpc >/dev/null 2>&1 + brew link --force --overwrite grpc [ -e /tmp/protoc ] && sudo mv /tmp/protoc /usr/local/bin/protoc && sudo mv /tmp/google /usr/local/include/ grpc_tag="v$(brew info grpc | grep "grpc:" | grep -Eo "[0-9]+\.[0-9]+\.[0-9]+")" license_path="$(brew --prefix grpc)/LICENSE" @@ -50,9 +50,9 @@ add_grpc_php_plugin() { grpc_tag=$1 license_path="" if [ "$grpc_tag" = "latest" ]; then - add_grpc_php_plugin_brew >/dev/null 2>&1 + add_grpc_php_plugin_brew else - add_grpc_php_plugin_compile >/dev/null 2>&1 + add_grpc_php_plugin_compile fi set_output grpc_php_plugin_path "$(command -v grpc_php_plugin)" add_log "${tick:?}" "grpc_php_plugin" "Added grpc_php_plugin ${grpc_tag:1}" diff --git a/src/scripts/tools/mago.ps1 b/src/scripts/tools/mago.ps1 index 5eeb392a..de8df0e9 100644 --- a/src/scripts/tools/mago.ps1 +++ b/src/scripts/tools/mago.ps1 @@ -28,8 +28,8 @@ Function Add-Mago() { $arch_name = 'i686' } $url = "https://github.com/carthage-software/mago/releases/download/$mago_tag/mago-$mago_tag-$arch_name-pc-windows-msvc.zip" - Get-File -Url $url -OutFile $bin_dir\mago.zip >$null 2>&1 - Expand-Archive -Path $bin_dir\mago.zip -DestinationPath $bin_dir\mago -Force >$null 2>&1 + Get-File -Url $url -OutFile $bin_dir\mago.zip + Expand-Archive -Path $bin_dir\mago.zip -DestinationPath $bin_dir\mago -Force Move-Item -Path $bin_dir\mago\mago-$mago_tag-$arch_name-pc-windows-msvc\mago.exe -Destination $bin_dir\mago.exe -Force Add-ToProfile $current_profile 'mago' "New-Alias mago $bin_dir\mago.exe" Add-Log $tick "mago" "Added mago $mago_tag" diff --git a/src/scripts/tools/mago.sh b/src/scripts/tools/mago.sh index 6be2428f..dc75fe43 100644 --- a/src/scripts/tools/mago.sh +++ b/src/scripts/tools/mago.sh @@ -24,6 +24,6 @@ add_mago() { sudo tar -xzf /tmp/mago.tar.gz -C /tmp/ sudo mv /tmp/mago-$mago_tag-$arch-$platform/mago /usr/local/bin/mago sudo chmod +x /usr/local/bin/mago - ) >/dev/null 2>&1 + ) add_log "${tick:?}" "mago" "Added mago $mago_tag" } \ No newline at end of file diff --git a/src/scripts/tools/ppa.sh b/src/scripts/tools/ppa.sh index 2fab7888..3707c522 100644 --- a/src/scripts/tools/ppa.sh +++ b/src/scripts/tools/ppa.sh @@ -31,7 +31,7 @@ set_base_version() { else set_base_version_codename set_base_version_id - printf "ID=%s\nVERSION_ID=%s\nVERSION_CODENAME=%s\n" "$ID" "$VERSION_ID" "$VERSION_CODENAME" | tee /tmp/os-release >/dev/null 2>&1 + printf "ID=%s\nVERSION_ID=%s\nVERSION_CODENAME=%s\n" "$ID" "$VERSION_ID" "$VERSION_CODENAME" | tee /tmp/os-release fi } @@ -70,8 +70,8 @@ update_lists() { list="$list_file" fi if [ ! -e "$status_file" ]; then - update_lists_helper "$list" >/dev/null 2>&1 - echo '' | tee "$status_file" >/dev/null 2>&1 + update_lists_helper "$list" + echo '' | tee "$status_file" fi } @@ -186,7 +186,7 @@ add_key() { key_urls+=("$ppa_sp/keys/$ppa.gpg") [ ! -e "$key_source" ] && get -q -n "$key_file" "${key_urls[@]}" if [[ "$(file "$key_file")" =~ .*('Public-Key (old)'|'Secret-Key') ]]; then - sudo gpg --batch --yes --dearmor "$key_file" >/dev/null 2>&1 && sudo mv "$key_file".gpg "$key_file" + sudo gpg --batch --yes --dearmor "$key_file" && sudo mv "$key_file".gpg "$key_file" fi } @@ -230,7 +230,7 @@ Architectures: $arch Signed-By: $key_file EOF else - echo "deb [arch=$arch signed-by=$key_file] $url $suite $components" | sudo tee "$list_dir"/"$list_basename".list >/dev/null 2>&1 + echo "deb [arch=$arch signed-by=$key_file] $url $suite $components" | sudo tee "$list_dir"/"$list_basename".list fi } diff --git a/src/scripts/tools/protoc.ps1 b/src/scripts/tools/protoc.ps1 index a2166954..e3192989 100644 --- a/src/scripts/tools/protoc.ps1 +++ b/src/scripts/tools/protoc.ps1 @@ -29,8 +29,8 @@ Function Add-Protoc() { $arch_num = '32' } $url = "https://github.com/protocolbuffers/protobuf/releases/download/$protobuf_tag/protoc-$($protobuf_tag -replace 'v', '')-win$arch_num.zip" - Get-File -Url $url -OutFile $bin_dir\protoc.zip >$null 2>&1 - Expand-Archive -Path $bin_dir\protoc.zip -DestinationPath $bin_dir\protoc -Force >$null 2>&1 + Get-File -Url $url -OutFile $bin_dir\protoc.zip + Expand-Archive -Path $bin_dir\protoc.zip -DestinationPath $bin_dir\protoc -Force Move-Item -Path $bin_dir\protoc\bin\protoc.exe -Destination $bin_dir\protoc.exe Add-ToProfile $current_profile 'protoc' "New-Alias protoc $bin_dir\protoc.exe" Add-Log $tick "protoc" "Added protoc $($protobuf_tag -replace 'v', '')" diff --git a/src/scripts/tools/protoc.sh b/src/scripts/tools/protoc.sh index 92d7ca54..ddc7d8c5 100644 --- a/src/scripts/tools/protoc.sh +++ b/src/scripts/tools/protoc.sh @@ -22,7 +22,7 @@ add_protoc() { get -q -n /tmp/protobuf.zip "https://github.com/protocolbuffers/protobuf/releases/download/$protobuf_tag/protoc-${protobuf_tag:1}-$platform-$arch.zip" sudo unzip /tmp/protobuf.zip -d /usr/local/ sudo chmod -R 777 /usr/local/bin/protoc /usr/local/include/google - ) >/dev/null 2>&1 + ) add_log "${tick:?}" "protoc" "Added protoc ${protobuf_tag:1}" printf "$GROUP\033[34;1m%s \033[0m\033[90;1m%s \033[0m\n" "protoc" "Click to read the protoc related license information" curl "${curl_opts[@]:?}" https://raw.githubusercontent.com/protocolbuffers/protobuf/main/LICENSE diff --git a/src/scripts/tools/symfony.sh b/src/scripts/tools/symfony.sh index f0f7888d..c508e7be 100644 --- a/src/scripts/tools/symfony.sh +++ b/src/scripts/tools/symfony.sh @@ -31,7 +31,7 @@ add_symfony() { if ! [[ "$symfony_tag" =~ ^[0-9]+(\.[0-9]+)*$ || "$symfony_tag" == 'latest' ]]; then add_log "${cross:?}" "symfony-cli" "Version '$symfony_tag' is not valid for symfony-cli" else - add_symfony_helper "$symfony_tag" >/dev/null 2>&1 + add_symfony_helper "$symfony_tag" symfony_path="$(command -v symfony)" if [[ -n "$symfony_path" ]]; then sudo ln -s "$symfony_path" "${tool_path_dir:?}"/symfony-cli diff --git a/src/scripts/unix.sh b/src/scripts/unix.sh index 487f032e..a72b49a5 100644 --- a/src/scripts/unix.sh +++ b/src/scripts/unix.sh @@ -43,7 +43,7 @@ set_output() { name=$1 value=$2 if [ "${GITHUB_ACTIONS}" = "true" ]; then - echo "${name}=${value}" | tee -a "$GITHUB_OUTPUT" >/dev/null 2>&1 + echo "${name}=${value}" | tee -a "$GITHUB_OUTPUT" fi } @@ -69,7 +69,7 @@ read_env() { if [[ "$runner" = "github" && "${ImageOS}" =~ ubuntu.* ]]; then if ! check_ppa ondrej/php; then update=true - echo '' | sudo tee /tmp/sp_update >/dev/null 2>&1 + echo '' | sudo tee /tmp/sp_update elif [ -e /tmp/sp_update ]; then update=true fi @@ -93,7 +93,7 @@ acquire_lock() { else if sudo test -f "$lock_path/pid"; then lock_pid=$(sudo cat "$lock_path/pid") - if ! ps -p "$lock_pid" >/dev/null 2>&1; then + if ! ps -p "$lock_pid" ; then sudo rm -rf "$lock_path" continue fi @@ -177,7 +177,7 @@ add_path() { printf '%s\n%s' "$path_to_add" "$(grep -v "^${path_to_add}$" "$GITHUB_PATH" 2>/dev/null)" > "$GITHUB_PATH" else profile=$(get_shell_profile) - ([ -e "$profile" ] && grep -q ":$path_to_add\"" "$profile" 2>/dev/null) || echo "export PATH=\"\${PATH:+\${PATH}:}\"$path_to_add" | sudo tee -a "$profile" >/dev/null 2>&1 + ([ -e "$profile" ] && grep -q ":$path_to_add\"" "$profile" 2>/dev/null) || echo "export PATH=\"\${PATH:+\${PATH}:}\"$path_to_add" | sudo tee -a "$profile" fi [[ ":$PATH:" == *":$path_to_add:"* ]] || export PATH="${PATH:+${PATH}:}$path_to_add" } @@ -199,10 +199,10 @@ add_env() { env_name=$1 env_value=$2 if [[ -n "$GITHUB_ENV" ]]; then - echo "$env_name=$env_value" | tee -a "$GITHUB_ENV" >/dev/null 2>&1 + echo "$env_name=$env_value" | tee -a "$GITHUB_ENV" else profile=$(get_shell_profile) - echo "export $env_name=\"$env_value\"" | sudo tee -a "$profile" >/dev/null 2>&1 + echo "export $env_name=\"$env_value\"" | sudo tee -a "$profile" fi export "$env_name"="$env_value" } @@ -223,7 +223,7 @@ self_hosted_setup() { add_log "$cross" "PHP" "PHP $version is not supported on self-hosted runner" exit 1 else - self_hosted_helper >/dev/null 2>&1 + self_hosted_helper add_env RUNNER_TOOL_CACHE /opt/hostedtoolcache fi fi @@ -251,8 +251,8 @@ configure_php() { [[ "$arch" = "arm64" || "$arch" = "aarch64" ]] && jit_ini="$ini_config_dir"/jit_aarch64.ini || jit_ini="$ini_config_dir"/jit.ini jit_config_files=("$jit_ini") [[ "$version" =~ $xdebug3_versions ]] && ini_config_files+=("$ini_config_dir"/xdebug.ini) - cat "${ini_config_files[@]}" | sudo tee -a "${ini_file[@]:?}" >/dev/null 2>&1 - [[ "$version" =~ $jit_versions ]] && cat "${jit_config_files[@]}" | sudo tee -a "${pecl_file:-${ini_file[@]}}" >/dev/null 2>&1 + cat "${ini_config_files[@]}" | sudo tee -a "${ini_file[@]:?}" + [[ "$version" =~ $jit_versions ]] && cat "${jit_config_files[@]}" | sudo tee -a "${pecl_file:-${ini_file[@]}}" } # Function to get PHP version in semver format. diff --git a/src/scripts/win32.ps1 b/src/scripts/win32.ps1 index 1fb43b2b..b1256a3e 100644 --- a/src/scripts/win32.ps1 +++ b/src/scripts/win32.ps1 @@ -356,7 +356,7 @@ if(-not($env:ImageOS) -and -not($env:ImageVersion)) { $bin_dir = 'C:\tools\bin' $php_dir = "$php_dir$version" $ext_dir = "$php_dir\ext" - Get-CleanPSProfile >$null 2>&1 + Get-CleanPSProfile New-Item $bin_dir -Type Directory -Force > $null 2>&1 Add-Path -PathItem $bin_dir if($version -lt 5.6) { @@ -369,12 +369,12 @@ if(-not($env:ImageOS) -and -not($env:ImageVersion)) { } New-Item $php_dir -Type Directory -Force > $null 2>&1 Add-Path -PathItem $php_dir - setx PHPROOT $php_dir >$null 2>&1 + setx PHPROOT $php_dir Add-Env -EnvName RUNNER_TOOL_CACHE -EnvValue $env:TEMP } else { $current_profile = "$PSHOME\Profile.ps1" if(-not(Test-Path -LiteralPath $current_profile)) { - New-Item -Path $current_profile -ItemType "file" -Force >$null 2>&1 + New-Item -Path $current_profile -ItemType "file" -Force } Add-Path -PathItem $bin_dir -Force } @@ -383,9 +383,9 @@ $src = Join-Path -Path $PSScriptRoot -ChildPath \.. . $src\scripts\tools\add_tools.ps1 . $src\scripts\extensions\add_extensions.ps1 -Add-Printf >$null 2>&1 +Add-Printf Step-Log "Setup PhpManager" -Install-PSPackage PhpManager PhpManager\PhpManager "$github/mlocati/powershell-phpmanager/releases/latest/download/PhpManager.zip" Get-Php >$null 2>&1 +Install-PSPackage PhpManager PhpManager\PhpManager "$github/mlocati/powershell-phpmanager/releases/latest/download/PhpManager.zip" Get-Php Add-Log $tick "PhpManager" "Installed" Step-Log "Setup PHP" @@ -414,7 +414,7 @@ if($version -eq 'pre') { } if ($null -eq $installed -or -not("$($installed.Version).".StartsWith(($version -replace '^(\d+(\.\d+)*).*', '$1.'))) -or $ts -ne $installed.ThreadSafe) { if ($version -lt '7.0' -and ($null -eq (Get-Module -ListAvailable -Name VcRedist))) { - Install-PSPackage VcRedist VcRedist-main\VcRedist\VcRedist "$github/aaronparker/VcRedist/archive/main.zip" Get-VcList >$null 2>&1 + Install-PSPackage VcRedist VcRedist-main\VcRedist\VcRedist "$github/aaronparker/VcRedist/archive/main.zip" Get-VcList } try { if ($version -match $nightly_versions) { @@ -427,7 +427,7 @@ if ($null -eq $installed -or -not("$($installed.Version).".StartsWith(($version } catch { } } else { if($env:update -eq 'true') { - Update-Php $php_dir >$null 2>&1 + Update-Php $php_dir $status = "Updated to" } else { $status = "Found" @@ -445,7 +445,7 @@ if($installed.MajorMinorVersion -ne $version) { Write-Error "Could not setup PHP $version" -ErrorAction Stop } if($version -lt "5.5") { - ('libeay32.dll', 'ssleay32.dll') | ForEach-Object -Parallel { Invoke-WebRequest -Uri "$using:php_builder/releases/download/openssl-1.0.2u/$_" -OutFile $using:php_dir\$_ >$null 2>&1 } + ('libeay32.dll', 'ssleay32.dll') | ForEach-Object -Parallel { Invoke-WebRequest -Uri "$using:php_builder/releases/download/openssl-1.0.2u/$_" -OutFile $using:php_dir\$_ } } elseif($version -lt "8.5") { $enable_extensions += ('opcache') } diff --git a/src/utils.ts b/src/utils.ts index 2deff6d2..191ffabe 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -284,10 +284,10 @@ export async function getExtensionPrefix(extension: string): Promise { export async function suppressOutput(os: string): Promise { switch (os) { case 'win32': - return ' >$null 2>&1'; + return ' '; case 'linux': case 'darwin': - return ' >/dev/null 2>&1'; + return ' '; default: return await log('Platform ' + os + ' is not supported', os, 'error'); }