mirror of
https://github.com/crazywhalecc/static-php-cli.git
synced 2026-07-10 18:35:35 +08:00
use github tokens for package downloads
This commit is contained in:
@@ -7,6 +7,7 @@ namespace Package\Artifact;
|
|||||||
use StaticPHP\Artifact\ArtifactDownloader;
|
use StaticPHP\Artifact\ArtifactDownloader;
|
||||||
use StaticPHP\Artifact\Downloader\DownloadResult;
|
use StaticPHP\Artifact\Downloader\DownloadResult;
|
||||||
use StaticPHP\Artifact\Downloader\Type\CheckUpdateResult;
|
use StaticPHP\Artifact\Downloader\Type\CheckUpdateResult;
|
||||||
|
use StaticPHP\Artifact\Downloader\Type\GitHubTokenSetupTrait;
|
||||||
use StaticPHP\Attribute\Artifact\AfterBinaryExtract;
|
use StaticPHP\Attribute\Artifact\AfterBinaryExtract;
|
||||||
use StaticPHP\Attribute\Artifact\CustomBinary;
|
use StaticPHP\Attribute\Artifact\CustomBinary;
|
||||||
use StaticPHP\Attribute\Artifact\CustomBinaryCheckUpdate;
|
use StaticPHP\Attribute\Artifact\CustomBinaryCheckUpdate;
|
||||||
@@ -21,6 +22,8 @@ use StaticPHP\Runtime\SystemTarget;
|
|||||||
*/
|
*/
|
||||||
class llvm_compiler_rt
|
class llvm_compiler_rt
|
||||||
{
|
{
|
||||||
|
use GitHubTokenSetupTrait;
|
||||||
|
|
||||||
#[CustomBinary('llvm-compiler-rt', [
|
#[CustomBinary('llvm-compiler-rt', [
|
||||||
'linux-x86_64',
|
'linux-x86_64',
|
||||||
'linux-aarch64',
|
'linux-aarch64',
|
||||||
@@ -34,7 +37,7 @@ class llvm_compiler_rt
|
|||||||
$tarball = "compiler-rt-{$llvmVersion}.src.tar.xz";
|
$tarball = "compiler-rt-{$llvmVersion}.src.tar.xz";
|
||||||
$url = "https://github.com/llvm/llvm-project/releases/download/llvmorg-{$llvmVersion}/{$tarball}";
|
$url = "https://github.com/llvm/llvm-project/releases/download/llvmorg-{$llvmVersion}/{$tarball}";
|
||||||
$tarballPath = DOWNLOAD_PATH . '/' . $tarball;
|
$tarballPath = DOWNLOAD_PATH . '/' . $tarball;
|
||||||
default_shell()->executeCurlDownload($url, $tarballPath, retries: $downloader->getRetry());
|
default_shell()->executeCurlDownload($url, $tarballPath, headers: $this->getGitHubTokenHeaders(), retries: $downloader->getRetry());
|
||||||
return DownloadResult::archive($tarball, ['url' => $url, 'version' => $llvmVersion], extract: '{source_path}/llvm-compiler-rt', verified: false, version: $llvmVersion);
|
return DownloadResult::archive($tarball, ['url' => $url, 'version' => $llvmVersion], extract: '{source_path}/llvm-compiler-rt', verified: false, version: $llvmVersion);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ namespace Package\Artifact;
|
|||||||
use StaticPHP\Artifact\ArtifactDownloader;
|
use StaticPHP\Artifact\ArtifactDownloader;
|
||||||
use StaticPHP\Artifact\Downloader\DownloadResult;
|
use StaticPHP\Artifact\Downloader\DownloadResult;
|
||||||
use StaticPHP\Artifact\Downloader\Type\CheckUpdateResult;
|
use StaticPHP\Artifact\Downloader\Type\CheckUpdateResult;
|
||||||
|
use StaticPHP\Artifact\Downloader\Type\GitHubTokenSetupTrait;
|
||||||
use StaticPHP\Attribute\Artifact\AfterBinaryExtract;
|
use StaticPHP\Attribute\Artifact\AfterBinaryExtract;
|
||||||
use StaticPHP\Attribute\Artifact\CustomBinary;
|
use StaticPHP\Attribute\Artifact\CustomBinary;
|
||||||
use StaticPHP\Attribute\Artifact\CustomBinaryCheckUpdate;
|
use StaticPHP\Attribute\Artifact\CustomBinaryCheckUpdate;
|
||||||
@@ -17,6 +18,8 @@ use StaticPHP\Package\PackageBuilder;
|
|||||||
|
|
||||||
class llvm_tools
|
class llvm_tools
|
||||||
{
|
{
|
||||||
|
use GitHubTokenSetupTrait;
|
||||||
|
|
||||||
public const array TOOLS = ['llvm-objcopy', 'llvm-strip', 'llvm-profdata'];
|
public const array TOOLS = ['llvm-objcopy', 'llvm-strip', 'llvm-profdata'];
|
||||||
|
|
||||||
#[CustomBinary('llvm-tools', [
|
#[CustomBinary('llvm-tools', [
|
||||||
@@ -32,7 +35,7 @@ class llvm_tools
|
|||||||
$tarball = "llvm-project-{$llvmVersion}.src.tar.xz";
|
$tarball = "llvm-project-{$llvmVersion}.src.tar.xz";
|
||||||
$url = "https://github.com/llvm/llvm-project/releases/download/llvmorg-{$llvmVersion}/{$tarball}";
|
$url = "https://github.com/llvm/llvm-project/releases/download/llvmorg-{$llvmVersion}/{$tarball}";
|
||||||
$tarballPath = DOWNLOAD_PATH . '/' . $tarball;
|
$tarballPath = DOWNLOAD_PATH . '/' . $tarball;
|
||||||
default_shell()->executeCurlDownload($url, $tarballPath, retries: $downloader->getRetry());
|
default_shell()->executeCurlDownload($url, $tarballPath, headers: $this->getGitHubTokenHeaders(), retries: $downloader->getRetry());
|
||||||
return DownloadResult::archive($tarball, ['url' => $url, 'version' => $llvmVersion], extract: '{source_path}/llvm-tools', verified: false, version: $llvmVersion);
|
return DownloadResult::archive($tarball, ['url' => $url, 'version' => $llvmVersion], extract: '{source_path}/llvm-tools', verified: false, version: $llvmVersion);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -27,12 +27,18 @@ class Artifact
|
|||||||
/** @var null|callable Bind custom source fetcher callback */
|
/** @var null|callable Bind custom source fetcher callback */
|
||||||
protected mixed $custom_source_callback = null;
|
protected mixed $custom_source_callback = null;
|
||||||
|
|
||||||
|
/** @var null|string Display label describing where the custom source callback came from */
|
||||||
|
protected ?string $custom_source_callback_origin = null;
|
||||||
|
|
||||||
/** @var null|callable Bind custom source check-update callback */
|
/** @var null|callable Bind custom source check-update callback */
|
||||||
protected mixed $custom_source_check_update_callback = null;
|
protected mixed $custom_source_check_update_callback = null;
|
||||||
|
|
||||||
/** @var array<string, callable> Bind custom binary fetcher callbacks */
|
/** @var array<string, callable> Bind custom binary fetcher callbacks */
|
||||||
protected mixed $custom_binary_callbacks = [];
|
protected mixed $custom_binary_callbacks = [];
|
||||||
|
|
||||||
|
/** @var array<string, string> Display label per platform describing where the custom binary callback came from */
|
||||||
|
protected array $custom_binary_callback_origins = [];
|
||||||
|
|
||||||
/** @var array<string, callable> Bind custom binary check-update callbacks */
|
/** @var array<string, callable> Bind custom binary check-update callbacks */
|
||||||
protected array $custom_binary_check_update_callbacks = [];
|
protected array $custom_binary_check_update_callbacks = [];
|
||||||
|
|
||||||
@@ -411,10 +417,13 @@ class Artifact
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Set custom source fetcher callback.
|
* Set custom source fetcher callback.
|
||||||
|
*
|
||||||
|
* @param string $origin Short label shown in progress output (e.g. 'package downloader', 'custom url')
|
||||||
*/
|
*/
|
||||||
public function setCustomSourceCallback(callable $callback): void
|
public function setCustomSourceCallback(callable $callback, string $origin = 'package downloader'): void
|
||||||
{
|
{
|
||||||
$this->custom_source_callback = $callback;
|
$this->custom_source_callback = $callback;
|
||||||
|
$this->custom_source_callback_origin = $origin;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getCustomSourceCallback(): ?callable
|
public function getCustomSourceCallback(): ?callable
|
||||||
@@ -422,6 +431,11 @@ class Artifact
|
|||||||
return $this->custom_source_callback ?? null;
|
return $this->custom_source_callback ?? null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function getCustomSourceCallbackOrigin(): ?string
|
||||||
|
{
|
||||||
|
return $this->custom_source_callback_origin;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set custom source check-update callback.
|
* Set custom source check-update callback.
|
||||||
*/
|
*/
|
||||||
@@ -456,11 +470,19 @@ class Artifact
|
|||||||
*
|
*
|
||||||
* @param string $target_os Target OS platform string (e.g. linux-x86_64)
|
* @param string $target_os Target OS platform string (e.g. linux-x86_64)
|
||||||
* @param callable $callback Custom binary fetcher callback
|
* @param callable $callback Custom binary fetcher callback
|
||||||
|
* @param string $origin Short label shown in progress output (e.g. 'package downloader')
|
||||||
*/
|
*/
|
||||||
public function setCustomBinaryCallback(string $target_os, callable $callback): void
|
public function setCustomBinaryCallback(string $target_os, callable $callback, string $origin = 'package downloader'): void
|
||||||
{
|
{
|
||||||
ConfigValidator::validatePlatformString($target_os);
|
ConfigValidator::validatePlatformString($target_os);
|
||||||
$this->custom_binary_callbacks[$target_os] = $callback;
|
$this->custom_binary_callbacks[$target_os] = $callback;
|
||||||
|
$this->custom_binary_callback_origins[$target_os] = $origin;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getCustomBinaryCallbackOrigin(): ?string
|
||||||
|
{
|
||||||
|
$current_platform = SystemTarget::getCurrentPlatformString();
|
||||||
|
return $this->custom_binary_callback_origins[$current_platform] ?? null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -554,8 +554,8 @@ class ArtifactDownloader
|
|||||||
$instance = null;
|
$instance = null;
|
||||||
$call = $this->downloaders[$item['config']['type']] ?? null;
|
$call = $this->downloaders[$item['config']['type']] ?? null;
|
||||||
$type_display_name = match (true) {
|
$type_display_name = match (true) {
|
||||||
$item['lock'] === 'source' && ($callback = $artifact->getCustomSourceCallback()) !== null => 'user defined source downloader',
|
$item['lock'] === 'source' && $artifact->getCustomSourceCallback() !== null => $artifact->getCustomSourceCallbackOrigin() ?? 'source package downloader',
|
||||||
$item['lock'] === 'binary' && ($callback = $artifact->getCustomBinaryCallback()) !== null => 'user defined binary downloader',
|
$item['lock'] === 'binary' && $artifact->getCustomBinaryCallback() !== null => $artifact->getCustomBinaryCallbackOrigin() ?? 'binary package downloader',
|
||||||
default => SPC_DOWNLOAD_TYPE_DISPLAY_NAME[$item['config']['type']] ?? $item['config']['type'],
|
default => SPC_DOWNLOAD_TYPE_DISPLAY_NAME[$item['config']['type']] ?? $item['config']['type'],
|
||||||
};
|
};
|
||||||
$try_h = $try ? 'Try downloading' : 'Downloading';
|
$try_h = $try ? 'Try downloading' : 'Downloading';
|
||||||
@@ -838,21 +838,21 @@ class ArtifactDownloader
|
|||||||
if (isset($this->artifacts[$artifact_name])) {
|
if (isset($this->artifacts[$artifact_name])) {
|
||||||
$this->artifacts[$artifact_name]->setCustomSourceCallback(function (ArtifactDownloader $downloader) use ($artifact_name, $custom_url) {
|
$this->artifacts[$artifact_name]->setCustomSourceCallback(function (ArtifactDownloader $downloader) use ($artifact_name, $custom_url) {
|
||||||
return (new Url())->download($artifact_name, ['url' => $custom_url], $downloader);
|
return (new Url())->download($artifact_name, ['url' => $custom_url], $downloader);
|
||||||
});
|
}, 'custom url');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
foreach ($this->custom_gits as $artifact_name => [$branch, $git_url]) {
|
foreach ($this->custom_gits as $artifact_name => [$branch, $git_url]) {
|
||||||
if (isset($this->artifacts[$artifact_name])) {
|
if (isset($this->artifacts[$artifact_name])) {
|
||||||
$this->artifacts[$artifact_name]->setCustomSourceCallback(function (ArtifactDownloader $downloader) use ($artifact_name, $branch, $git_url) {
|
$this->artifacts[$artifact_name]->setCustomSourceCallback(function (ArtifactDownloader $downloader) use ($artifact_name, $branch, $git_url) {
|
||||||
return (new Git())->download($artifact_name, ['rev' => $branch, 'url' => $git_url], $downloader);
|
return (new Git())->download($artifact_name, ['rev' => $branch, 'url' => $git_url], $downloader);
|
||||||
});
|
}, 'custom git');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
foreach ($this->custom_locals as $artifact_name => $local_path) {
|
foreach ($this->custom_locals as $artifact_name => $local_path) {
|
||||||
if (isset($this->artifacts[$artifact_name])) {
|
if (isset($this->artifacts[$artifact_name])) {
|
||||||
$this->artifacts[$artifact_name]->setCustomSourceCallback(function (ArtifactDownloader $downloader) use ($artifact_name, $local_path) {
|
$this->artifacts[$artifact_name]->setCustomSourceCallback(function (ArtifactDownloader $downloader) use ($artifact_name, $local_path) {
|
||||||
return (new LocalDir())->download($artifact_name, ['dirname' => $local_path], $downloader);
|
return (new LocalDir())->download($artifact_name, ['dirname' => $local_path], $downloader);
|
||||||
});
|
}, 'custom local dir');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user