cargo-up 0.0.6

Upgrade your dependencies by automatically fixing your code
Documentation
use crate::{
    preloader::Preloader, semver::Version as SemverVersion, utils::INTERNAL_ERR, Runner, Semantics,
    Upgrader,
};

use anyhow::Result as AnyResult;

pub(crate) struct Context<'a> {
    pub(crate) runner: Runner,
    pub(crate) preloader: Preloader,
    pub(crate) upgrader: Upgrader,
    pub(crate) semantics: Semantics<'a>,
}

impl<'a> Context<'a> {
    pub(crate) fn new(runner: Runner, semantics: Semantics<'a>) -> Self {
        Self {
            runner,
            preloader: Preloader::default(),
            upgrader: Upgrader::default(),
            semantics,
        }
    }

    pub(crate) fn init(&mut self, from: &SemverVersion) -> AnyResult<()> {
        let version = self.runner.get_version().expect(INTERNAL_ERR);

        if let Some(f) = &version.init {
            f(&mut self.upgrader, from)
        } else {
            Ok(())
        }
    }
}