Files
common/github/download-previous-artifacts/download-previous-artifacts.cs
2025-06-30 01:22:15 -07:00

83 lines
2.2 KiB
C#

#!/usr/bin/env -S dotnet run
#:package Gitea.Net.API@25.3.*
// static class Program
// {
// static void Main(string[] args)
// {
// Run();
// }
// static void Run()
// {
// // Your code here
// Console.WriteLine("Running the program...");
// }
// }
using System.Text.Json;
using System.Text;
using Gitea.Net.Api;
using Gitea.Net.Client;
using Gitea.Net.Model;
using Microsoft.Extensions.Configuration;
Console.WriteLine("Hello, World!");
// Console.WriteLine("Environment Variables:");
// Console.WriteLine(JsonSerializer.Serialize(Environment.GetEnvironmentVariables()));
// Console.WriteLine("Arguments:");
// Console.WriteLine(JsonSerializer.Serialize(args));
string jsonInput = args.Length > 0 ? args[0] : "{}";
Console.WriteLine($"JSON Input: {jsonInput}");
byte[] jsonBytes = Encoding.UTF8.GetBytes(jsonInput);
using MemoryStream memoryStream = new(jsonBytes);
IConfiguration configuration = new ConfigurationBuilder()
.AddJsonStream(memoryStream)
.AddEnvironmentVariables()
.Build();
PrintConfiguration(configuration);
Configuration giteaConfig = GetGiteaConfig(configuration);
RepositoryApi repoApi = new(giteaConfig);
string owner = configuration["GITHUB_REPOSITORY_OWNER"]!;
string repoName = configuration["GITHUB_REPOSITORY"]!;
repoName = Path.GetFileName(repoName);
Repository repo = await repoApi.RepoGetAsync(owner, repoName);
Console.WriteLine($"Repository:\n {JsonSerializer.Serialize(repo)}");
static void PrintConfiguration(IConfiguration configuration)
{
foreach (var kvp in configuration.AsEnumerable())
{
Console.WriteLine($"{kvp.Key}: {kvp.Value}");
}
}
static Configuration GetGiteaConfig(IConfiguration configuration)
{
string host = configuration["Host"]!;
string username = configuration["Username"]!;
string password = configuration["Password"]!;
string accessToken = configuration["Token"]!;
UriBuilder hostUriBuilder = new(host);
hostUriBuilder.Path = "/api/v1";
string hostUri = hostUriBuilder.ToString();
Configuration config = new()
{
BasePath = hostUri,
AccessToken = accessToken,
Username = username,
Password = password,
};
return config;
}