summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/lib.rs8
-rw-r--r--src/main.rs7
2 files changed, 15 insertions, 0 deletions
diff --git a/src/lib.rs b/src/lib.rs
index 98c2984..441a1c5 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -147,10 +147,18 @@ impl MP32RSS {
})
}
+ pub fn access(&self) -> &s3::Access {
+ &self.access
+ }
+
pub fn get_mut_entry(&mut self, filename: &str) -> Option<&mut Entry> {
self.index.entries.get_mut(filename)
}
+ pub fn insert_entry(&mut self, entry: Entry) {
+ self.index.entries.insert(entry.filename.clone(), entry);
+ }
+
pub async fn sync(&mut self) -> Result<(), Box<dyn Error>> {
info!("Saving index file");
let new_etag = self
diff --git a/src/main.rs b/src/main.rs
index 4a89183..5c56c93 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -68,6 +68,9 @@ struct EditArgs {
/// True if the entry should not be published.
#[arg(long)]
hidden: Option<bool>,
+ /// Reset the metadata to match the file.
+ #[arg(long)]
+ reset: bool,
}
#[derive(clap::Args, Debug)]
@@ -110,6 +113,10 @@ async fn main() -> Result<(), Box<dyn Error>> {
}
async fn update_entry(feed: &mut MP32RSS, args: EditArgs) -> Result<(), Box<dyn Error>> {
+ if args.reset {
+ let new_entry = feed.access().fetch_entry(args.filename.clone()).await?;
+ feed.insert_entry(new_entry);
+ }
if let Some(entry) = feed.get_mut_entry(&args.filename) {
if let Some(v) = args.title {
entry.title = Some(v);