9 Commits

Author SHA1 Message Date
a7cc2bc771 Version bump to v0.2.5
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/tag/woodpecker Pipeline was successful
2023-03-29 00:42:38 -04:00
ed4173f3dc Added file permissions preservation when archiving video file
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
2023-03-29 00:40:33 -04:00
f3552f3af1 Added filetime crate to handle file handle times
Some checks failed
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/tag/woodpecker Pipeline failed
2023-01-25 10:06:05 -05:00
6da120f632 Version bump to v0.2.3
All checks were successful
ci/woodpecker/tag/woodpecker Pipeline was successful
ci/woodpecker/push/woodpecker Pipeline was successful
2022-10-26 20:13:29 -04:00
a22b59d87c Updated woodpecker config to put compiled packages into proper directories for organization
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
2022-10-26 20:13:04 -04:00
dfca3b1fd6 Updated woodpecker config for pushing to Linux package repos
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/tag/woodpecker Pipeline was successful
2022-10-26 16:59:42 -04:00
530d83f57d Updated woodpecker config for pushing to Linux package repos
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/tag/woodpecker Pipeline was successful
2022-10-26 16:35:49 -04:00
d836e27305 Updated woodpecker config for pushing to Linux package repos
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed
ci/woodpecker/tag/woodpecker Pipeline failed
2022-10-26 16:25:35 -04:00
8bca6b3b0b Updated woodpecker config for pushing to Linux package repos
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/tag/woodpecker Pipeline was successful
2022-10-26 15:42:19 -04:00
3 changed files with 64 additions and 1 deletions

View File

@ -30,3 +30,49 @@ pipeline:
title: "${CI_COMMIT_TAG}"
when:
event: tag
copy_deb_package:
image: appleboy/drone-scp
settings:
host: "repo.int.metaunix.net"
username:
from_secret: repo_admin
password:
from_secret: repo_password
port: 22
target: /srv/repo/apt/zealot/
source: target/debian/zealot*.deb
strip_components: 2
when:
event: tag
copy_rpm_package:
image: appleboy/drone-scp
settings:
host: "repo.int.metaunix.net"
username:
from_secret: repo_admin
password:
from_secret: repo_password
port: 22
target: /srv/repo/dnf/zealot/
source: target/generate-rpm/zealot*.rpm
strip_components: 2
when:
event: tag
update_repos:
image: appleboy/drone-ssh
settings:
host:
- repo.int.metaunix.net
username:
from_secret: repo_admin
password:
from_secret: repo_password
port: 22
command_timeout: 2m
script:
- "sudo /home/xadmin/scripts/update_repo.sh"
when:
event: tag

View File

@ -1,7 +1,7 @@
[package]
name = "zealot"
description = "Bit Goblin automated video transcoding service."
version = "0.2.2"
version = "0.2.5"
edition = "2021"
readme = "README.md"
license = "BSD 2-Clause"
@ -10,6 +10,7 @@ authors = ["Gregory Ballantine <gballantine@bitgoblin.tech>"]
[dependencies]
clap = { version = "3.2", features = ['derive'] }
config = { version = "0.13", features = ['toml'] }
filetime = "0.2"
log = "0.4"
log4rs = "1.1"
toml = "0.5"

View File

@ -1,6 +1,8 @@
use std::fs;
use std::path::Path;
use log::{error, info};
use filetime;
use filetime::FileTime;
pub struct Repository {
pub base_dir: String,
@ -58,6 +60,7 @@ impl Repository {
match fs::copy(&ingest_file, &archive_file) {
Ok(_) => {
info!("Archiving video file {}.", ingest_file.to_str().unwrap());
copy_file_metadata(ingest_file.to_str().unwrap(), archive_file.to_str().unwrap());
},
Err(e) => {
error!("Error archiving file {}: {}", ingest_file.to_str().unwrap(), e);
@ -89,3 +92,16 @@ fn create_directory(path: &str) {
}
}
}
fn copy_file_metadata(old_file: &str, new_file: &str) {
// grab old file metadata
let old_metadata = fs::metadata(old_file).unwrap();
let old_permissions = old_metadata.permissions();
let mtime = FileTime::from_last_modification_time(&old_metadata);
let atime = FileTime::from_last_access_time(&old_metadata);
// set metadata on the new file
let new_path = Path::new(new_file);
fs::set_permissions(new_file, old_permissions).expect("Failed to set new file permissions.");
filetime::set_file_times(new_path, atime, mtime).expect("Failed to set atime and mtime.");
}