#!/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] : "{}"; string jsonInput = Environment.GetEnvironmentVariable("INPUTS") ?? "{}"; 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); Console.WriteLine($"Owner: {owner}"); Console.WriteLine($"Repository: {repoName}"); Console.WriteLine($"Host: {giteaConfig.BasePath}"); 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; }