mirror of
https://github.com/shivammathur/setup-php.git
synced 2025-08-02 03:37:16 +07:00
Improve support for composer authenticating private respositories
This commit is contained in:
@ -1,7 +1,8 @@
|
||||
# Variables
|
||||
$composer_bin = "$env:APPDATA\Composer\vendor\bin"
|
||||
$composer_json = "$env:APPDATA\Composer\composer.json"
|
||||
$composer_lock = "$env:APPDATA\Composer\composer.lock"
|
||||
$composer_home = "$env:APPDATA\Composer"
|
||||
$composer_bin = "$composer_home\vendor\bin"
|
||||
$composer_json = "$composer_home\composer.json"
|
||||
$composer_lock = "$composer_home\composer.lock"
|
||||
|
||||
# Function to configure composer.
|
||||
Function Edit-ComposerConfig() {
|
||||
@ -24,8 +25,30 @@ Function Edit-ComposerConfig() {
|
||||
}
|
||||
Add-EnvPATH $src\configs\composer.env
|
||||
Add-Path $composer_bin
|
||||
if (Test-Path env:COMPOSER_TOKEN) {
|
||||
Add-Env COMPOSER_AUTH ('{"github-oauth": {"github.com": "' + $env:COMPOSER_TOKEN + '"}}')
|
||||
Set-ComposerAuth
|
||||
}
|
||||
|
||||
# Function to setup authentication in composer.
|
||||
Function Set-ComposerAuth() {
|
||||
if(Test-Path env:COMPOSER_AUTH_JSON) {
|
||||
if(Test-Json -JSON $env:COMPOSER_AUTH_JSON) {
|
||||
Set-Content -Path $composer_home\auth.json -Value $env:COMPOSER_AUTH_JSON
|
||||
} else {
|
||||
Add-Log "$cross" "composer" "Could not parse COMPOSER_AUTH_JSON as valid JSON"
|
||||
}
|
||||
}
|
||||
$composer_auth = @()
|
||||
if(Test-Path env:PACKAGIST_TOKEN) {
|
||||
$composer_auth += '"http-basic": {"repo.packagist.com": { "username": "token", "password": "' + $env:PACKAGIST_TOKEN + '"}}'
|
||||
}
|
||||
if(-not(Test-Path env:GITHUB_TOKEN) -and (Test-Path env:COMPOSER_TOKEN)) {
|
||||
$env:GITHUB_TOKEN = $env:COMPOSER_TOKEN
|
||||
}
|
||||
if (Test-Path env:GITHUB_TOKEN) {
|
||||
$composer_auth += '"github-oauth": {"github.com": "' + $env:GITHUB_TOKEN + '"}'
|
||||
}
|
||||
if($composer_auth.length) {
|
||||
Add-Env COMPOSER_AUTH ('{' + ($composer_auth -join ',') + '}')
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -44,8 +44,27 @@ configure_composer() {
|
||||
fi
|
||||
add_env_path "${src:?}"/configs/composer.env
|
||||
add_path "$composer_bin"
|
||||
if [ -n "$COMPOSER_TOKEN" ]; then
|
||||
add_env COMPOSER_AUTH '{"github-oauth": {"github.com": "'"$COMPOSER_TOKEN"'"}}'
|
||||
set_composer_auth
|
||||
}
|
||||
|
||||
# Function to setup authentication in composer.
|
||||
set_composer_auth() {
|
||||
if [ -n "$COMPOSER_AUTH_JSON" ]; then
|
||||
if php -r "json_decode('$COMPOSER_AUTH_JSON'); if(json_last_error() !== JSON_ERROR_NONE) { throw new Exception('invalid json'); }"; then
|
||||
echo "$COMPOSER_AUTH_JSON" | tee "$composer_home/auth.json" >/dev/null
|
||||
else
|
||||
add_log "${cross:?}" "composer" "Could not parse COMPOSER_AUTH_JSON as valid JSON"
|
||||
fi
|
||||
fi
|
||||
composer_auth=()
|
||||
if [ -n "$PACKAGIST_TOKEN" ]; then
|
||||
composer_auth+=( '"http-basic": {"repo.packagist.com": { "username": "token", "password": "'"$PACKAGIST_TOKEN"'"}}' )
|
||||
fi
|
||||
if [ -n "${GITHUB_TOKEN:-$COMPOSER_TOKEN}" ]; then
|
||||
composer_auth+=( '"github-oauth": {"github.com": "'"${GITHUB_TOKEN:-$COMPOSER_TOKEN}"'"}' )
|
||||
fi
|
||||
if ((${#composer_auth[@]})); then
|
||||
add_env COMPOSER_AUTH "{$(IFS=$','; echo "${composer_auth[*]}")}"
|
||||
fi
|
||||
}
|
||||
|
||||
|
@ -21,8 +21,12 @@ interface IRef {
|
||||
export async function getSemverVersion(data: RS): Promise<string> {
|
||||
const search: string = data['version_prefix'] + data['version'];
|
||||
const url = `https://api.github.com/repos/${data['repository']}/git/matching-refs/tags%2F${search}.`;
|
||||
const token: string = await utils.readEnv('COMPOSER_TOKEN');
|
||||
const response: RS = await fetch.fetch(url, token);
|
||||
let github_token: string = await utils.readEnv('GITHUB_TOKEN');
|
||||
const composer_token: string = await utils.readEnv('COMPOSER_TOKEN');
|
||||
if (composer_token && !github_token) {
|
||||
github_token = composer_token;
|
||||
}
|
||||
const response: RS = await fetch.fetch(url, github_token);
|
||||
if (response.error || response.data === '[]') {
|
||||
data['error'] = response.error ?? `No version found with prefix ${search}.`;
|
||||
return data['version'];
|
||||
|
Reference in New Issue
Block a user