cargo-flutter 0.1.7

Tool for building flutter-rs projects.
Documentation
use std::path::{Path, PathBuf};

pub mod apk;
pub mod appimage;

pub struct Package {
    name: String,
    bin: Vec<Item>,
    lib: Vec<Item>,
    asset: Vec<Item>,
}

pub struct Item {
    path: PathBuf,
    name: String,
}

impl Item {
    pub fn new(path: PathBuf, name: String) -> Self {
        Self { path, name }
    }

    pub fn path(&self) -> &Path {
        &self.path
    }

    pub fn name(&self) -> &str {
        &self.name
    }
}

impl From<PathBuf> for Item {
    fn from(path: PathBuf) -> Self {
        let name = path.file_name().unwrap().to_str().unwrap().to_string();
        Self { path, name }
    }
}

impl Package {
    pub fn new(name: &str) -> Self {
        Self {
            name: name.to_string(),
            bin: Default::default(),
            lib: Default::default(),
            asset: Default::default(),
        }
    }

    pub fn name(&self) -> &str {
        &self.name
    }

    pub fn bins(&self) -> &[Item] {
        &self.bin
    }

    pub fn libs(&self) -> &[Item] {
        &self.lib
    }

    pub fn assets(&self) -> &[Item] {
        &self.asset
    }

    pub fn add_bin<T: Into<Item>>(&mut self, item: T) {
        self.bin.push(item.into());
    }

    pub fn add_lib<T: Into<Item>>(&mut self, item: T) {
        self.lib.push(item.into());
    }

    pub fn add_asset<T: Into<Item>>(&mut self, item: T) {
        self.asset.push(item.into());
    }
}