Try it #1

Merged
phoenix merged 9 commits from try_it into main 2026-08-08 13:27:10 -04:00
5 changed files with 93 additions and 6 deletions
+58
View File
@@ -0,0 +1,58 @@
name: labyrinth release Tagging
on:
push:
branches:
- main
pull_request:
branches:
- main
jobs:
release:
runs-on: ubuntu-24.04
steps:
- name: Checkout code
uses: actions/checkout@v6
with:
fetch-depth: 0 # Important for git describe --tags
- name: Install Rust
uses: actions-rs/toolchain@v1
with:
toolchain: 1.97
components: cargo
- uses: Swatinem/rust-cache@v2
- name: Extract Version from Cargo.toml
id: version
run: |
VERSION=$(grep '^version = "' Cargo.toml | sed -E 's/version = "([^"]+)"/\1/')
PROJECT_COMMIT_HASH=$(git rev-parse HEAD | cut -c 1-10)
BRANCH_REF="${{ gitea.ref }}"
BRANCH_NAME=$(echo "$BRANCH_REF" | cut -d '/' -f 3)
PROJECT_TAG_RELEASE="v$VERSION-$BRANCH_NAME-$PROJECT_COMMIT_HASH-928"
echo "::set-output name=project_tag_release::$PROJECT_TAG_RELEASE"
echo "Version: $VERSION"
echo "Hash: $PROJECT_COMMIT_HASH"
echo "Branh ref: $BRANCH_REF"
echo "Branch: $BRANCH_NAME"
echo "Tag Release: $PROJECT_TAG_RELEASE"
- name: Print version
id: Version
run: |
echo "Printing version"
echo "Version: ${{ steps.version.outputs.project_tag_release }}"
- name: Create GitHub Release
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ steps.version.outputs.project_tag_release }}
release_name: Release ${{ steps.version.outputs.project_tag_release }}
body: |
Release of version ${{ steps.version.outputs.project_tag_release }}
Generated
+1 -1
View File
@@ -1370,7 +1370,7 @@ dependencies = [
[[package]] [[package]]
name = "labyrinth" name = "labyrinth"
version = "0.0.1" version = "0.0.2"
dependencies = [ dependencies = [
"aws-config", "aws-config",
"aws-sdk-s3", "aws-sdk-s3",
+1 -1
View File
@@ -1,6 +1,6 @@
[package] [package]
name = "labyrinth" name = "labyrinth"
version = "0.0.1" version = "0.0.2"
edition = "2024" edition = "2024"
license = "MIT" license = "MIT"
description = "Library for managing soaricarus storage" description = "Library for managing soaricarus storage"
+3
View File
@@ -1,5 +1,8 @@
#[derive(Debug, Default)]
pub struct Config { pub struct Config {
pub url: String, pub url: String,
pub bucket: String, pub bucket: String,
pub region: String, pub region: String,
pub access_key_id: String,
pub secret_key: String,
} }
+30 -4
View File
@@ -1,6 +1,8 @@
pub mod config; pub mod config;
#[derive(Default)] use aws_sdk_s3::config::{Credentials, Region};
#[derive(Debug, Default)]
pub struct Data { pub struct Data {
pub filepath: String, pub filepath: String,
pub raw_data: Vec<u8>, pub raw_data: Vec<u8>,
@@ -14,6 +16,32 @@ pub async fn load_data(filepath: &str) -> Result<Vec<u8>, std::io::Error> {
tokio::fs::read(filepath).await tokio::fs::read(filepath).await
} }
pub async fn init_client(config: &config::Config) -> aws_sdk_s3::Client {
let credentials = Credentials::new(
config.access_key_id.clone(),
config.secret_key.clone(),
None,
None,
"maze",
);
let region = Region::new(config.region.to_string());
let config = aws_config::from_env()
.region(region)
.credentials_provider(credentials)
.endpoint_url(config.url.clone())
.load()
.await;
let s3_config = aws_sdk_s3::config::Builder::from(&config)
.force_path_style(true)
.build();
let client = aws_sdk_s3::Client::from_conf(s3_config);
client
}
#[derive(Debug)]
pub enum Error { pub enum Error {
Info(String), Info(String),
SError(aws_sdk_s3::operation::put_object::PutObjectError), SError(aws_sdk_s3::operation::put_object::PutObjectError),
@@ -25,9 +53,7 @@ impl Labyrinth {
file_key: &str, file_key: &str,
data: &Data, data: &Data,
) -> Result<aws_sdk_s3::operation::put_object::PutObjectOutput, Error> { ) -> Result<aws_sdk_s3::operation::put_object::PutObjectOutput, Error> {
let config = aws_config::load_from_env().await; let client = init_client(&self.config).await;
let client = aws_sdk_s3::Client::new(&config);
let data_content = if data.raw_data.is_empty() { let data_content = if data.raw_data.is_empty() {
match load_data(&data.filepath).await { match load_data(&data.filepath).await {
Ok(content) => content, Ok(content) => content,