cargo_flutter/package/
mod.rs1use std::path::{Path, PathBuf};
2
3pub mod apk;
4pub mod appimage;
5
6pub struct Package {
7 name: String,
8 bin: Vec<Item>,
9 lib: Vec<Item>,
10 asset: Vec<Item>,
11}
12
13pub struct Item {
14 path: PathBuf,
15 name: String,
16}
17
18impl Item {
19 pub fn new(path: PathBuf, name: String) -> Self {
20 Self { path, name }
21 }
22
23 pub fn path(&self) -> &Path {
24 &self.path
25 }
26
27 pub fn name(&self) -> &str {
28 &self.name
29 }
30}
31
32impl From<PathBuf> for Item {
33 fn from(path: PathBuf) -> Self {
34 let name = path.file_name().unwrap().to_str().unwrap().to_string();
35 Self { path, name }
36 }
37}
38
39impl Package {
40 pub fn new(name: &str) -> Self {
41 Self {
42 name: name.to_string(),
43 bin: Default::default(),
44 lib: Default::default(),
45 asset: Default::default(),
46 }
47 }
48
49 pub fn name(&self) -> &str {
50 &self.name
51 }
52
53 pub fn bins(&self) -> &[Item] {
54 &self.bin
55 }
56
57 pub fn libs(&self) -> &[Item] {
58 &self.lib
59 }
60
61 pub fn assets(&self) -> &[Item] {
62 &self.asset
63 }
64
65 pub fn add_bin<T: Into<Item>>(&mut self, item: T) {
66 self.bin.push(item.into());
67 }
68
69 pub fn add_lib<T: Into<Item>>(&mut self, item: T) {
70 self.lib.push(item.into());
71 }
72
73 pub fn add_asset<T: Into<Item>>(&mut self, item: T) {
74 self.asset.push(item.into());
75 }
76}