Move tagging of directives with source to framework runner

korrat
Jun 21, 2023, 8:13 PM
R5K55SCBMHEGYZTMITKMNV7JFM3246SSKVB75HNJEKMLLIMJRGNQC

Dependencies

  • [2] GVEI7KND Add a importer component for CSV files
  • [3] QNGOXZL4 Add a basic framework
  • [4] KB7Y4PJI Implement importers for Amazon accounts
  • [*] I2P2FTLE add basic parser for german decimals
  • [*] TB2QGHXN Upgrade dependencies
  • [*] 6MR76MLL Replace build script with cargo-px
  • [*] 5S4MZHL5 pretty print decimals using icu

Change contents

  • replacement in importers/csv/src/lib.rs at line 97
    [2.2396][2.2396:2588]()
    directive
    .add_meta(common_keys::FILENAME, file.as_str())
    .add_meta(common_keys::LINE_NUMBER, position.line());
    [2.2396]
    [2.2588]
    directive.add_meta(common_keys::LINE_NUMBER, position.line());
  • edit in framework/src/runner.rs at line 3
    [3.58][3.58:82]()
    use alloc::borrow::Cow;
  • edit in framework/src/runner.rs at line 6
    [3.221]
    [3.221]
    use beancount_types::common_keys;
  • replacement in framework/src/runner.rs at line 13
    [3.394][3.394:422]()
    use miette::Result; // TODO
    [3.394]
    [3.422]
    use miette::Result;
    use relative_path::RelativePathBuf; // TODO
  • replacement in framework/src/runner.rs at line 147
    [3.3497][3.3497:3716]()
    ) -> Result<Cow<'a, Utf8Path>> {
    let destination = archive::file_name(importer, &self.archive_directory, file)?;
    if self.dry_run || file == destination {
    return Ok(Cow::Borrowed(file));
    [3.3497]
    [3.3716]
    ) -> Result<Option<RelativePathBuf>> {
    if self.dry_run {
    return Ok(None);
  • replacement in framework/src/runner.rs at line 152
    [3.3727][3.3727:3790]()
    tracing::info!(?file, ?destination, "archiving file");
    [3.3727]
    [3.3790]
    let relative_destination = archive::file_name(importer, file)?;
    let destination = relative_destination.to_logical_path(&self.archive_directory);
    let destination = Utf8Path::from_path(&destination).expect("should be UTF-8");
    if file != destination {
    tracing::info!(?file, ?destination, "archiving file");
  • replacement in framework/src/runner.rs at line 160
    [3.3791][3.3791:4006]()
    if destination.exists() {
    miette::ensure!(
    self.overwrite,
    "destination {destination:?} already exists",
    destination = destination,
    );
    [3.3791]
    [3.4006]
    if destination.exists() {
    miette::ensure!(
    self.overwrite,
    "destination {destination:?} already exists",
    destination = destination,
    );
    }
    archive::move_file(file, destination).wrap_err("while moving file into archive")?;
  • replacement in framework/src/runner.rs at line 171
    [3.4017][3.4017:4146]()
    archive::move_file(file, &destination).wrap_err("while moving file into archive")?;
    Ok(Cow::Owned(destination))
    [3.4017]
    [3.4146]
    Ok(Some(relative_destination))
  • replacement in framework/src/runner.rs at line 205
    [3.5240][3.5240:5264]()
    let file = self
    [3.5240]
    [3.5264]
    let relative_destination = self
  • replacement in framework/src/runner.rs at line 208
    [3.5354][3.5354:5437]()
    // let file = file.strip_prefix(&self.archive_directory).unwrap_or(&file);
    [3.5354]
    [3.5437]
    let destination = relative_destination.as_ref().map_or_else(
    || file.to_path_buf(),
    |relative_destination| {
    let destination = relative_destination.to_path(&self.archive_directory);
    Utf8PathBuf::from_path_buf(destination).expect("path to be UTF-8")
    },
    );
  • replacement in framework/src/runner.rs at line 218
    [3.5486][3.5486:5554]()
    .extract(&file, &[]) // TODO load existing transactions
    [3.5486]
    [3.5554]
    .extract(&destination, &[]) // TODO load existing transactions
  • edit in framework/src/runner.rs at line 221
    [3.5639]
    [3.5639]
    if let Some(path) = relative_destination {
    for directive in &mut extracted_directives {
    directive.add_meta(common_keys::FILENAME, path.as_str());
    }
    }
  • edit in framework/src/runner/archive.rs at line 4
    [3.6621][3.6621:6646]()
    use camino::Utf8PathBuf;
  • edit in framework/src/runner/archive.rs at line 6
    [3.6694]
    [3.6694]
    use relative_path::RelativePathBuf;
  • edit in framework/src/runner/archive.rs at line 15
    [3.6933][3.6933:6954]()
    base: &Utf8Path,
  • replacement in framework/src/runner/archive.rs at line 16
    [3.6975][3.6975:7028]()
    ) -> Result<Utf8PathBuf> {
    use std::fmt::Write;
    [3.6975]
    [3.7028]
    ) -> Result<RelativePathBuf> {
  • edit in framework/src/runner/archive.rs at line 35
    [3.7598][3.7598:7640]()
    let sep = std::path::MAIN_SEPARATOR;
  • replacement in framework/src/runner/archive.rs at line 37
    [3.7740][3.7740:7769]()
    !name.contains(sep),
    [3.7740]
    [3.7769]
    !name.contains(std::path::MAIN_SEPARATOR),
  • replacement in framework/src/runner/archive.rs at line 47
    [3.8026][3.8026:8317]()
    let mut path = base.to_string();
    let additional = account.len() + 10 + 1 + name.len() + 5 + 2; // account name + date + dot + name + extra separators
    path.reserve(additional);
    account
    .segments()
    .for_each(|segment| write!(path, "{sep}{segment}").unwrap());
    [3.8026]
    [3.8317]
    let mut path = RelativePathBuf::new();
    path.extend(account.segments().map(|seg| &**seg));
  • replacement in framework/src/runner/archive.rs at line 50
    [3.8318][3.8318:8367]()
    write!(path, "{sep}{date}.{name}").unwrap();
    [3.8318]
    [3.8367]
    let file_name = format!("{date}.{name}");
    path.set_file_name(file_name);
  • replacement in framework/src/runner/archive.rs at line 53
    [3.8368][3.8368:8400]()
    Ok(Utf8PathBuf::from(path))
    [3.8368]
    [3.8400]
    Ok(path)
  • replacement in framework/Cargo.toml at line 16
    [3.14853][3.14853:14988](),[3.14988][3.28388:28415](),[3.28415][3.14988:15069](),[3.14988][3.14988:15069]()
    camino.workspace = true
    clap.workspace = true
    delegate.workspace = true
    inventory.workspace = true
    miette.workspace = true
    snafu.workspace = true
    time-tz.workspace = true
    time.workspace = true
    tracing.workspace = true
    [3.14853]
    camino.workspace = true
    clap.workspace = true
    delegate.workspace = true
    inventory.workspace = true
    miette.workspace = true
    relative-path.workspace = true
    snafu.workspace = true
    time-tz.workspace = true
    time.workspace = true
    tracing.workspace = true
  • edit in Cargo.toml at line 60
    [7.519]
    [8.3511]
    relative-path = "1.8.0"
  • edit in Cargo.lock at line 229
    [3.15431]
    [3.28481]
    "relative-path",
  • edit in Cargo.lock at line 3212
    [6.11221]
    [9.38997]
    name = "relative-path"
    version = "1.8.0"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "4bf2521270932c3c7bed1a59151222bd7643c79310f2916f01925e1e16255698"
    [[package]]