use package system
This commit is contained in:
parent
a1f953e989
commit
b22c348d8f
|
@ -26,7 +26,10 @@ struct Opt {
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
let opt = Opt::from_args();
|
let opt = Opt::from_args();
|
||||||
let mut infile = File::open(opt.input).expect("could not open file");
|
// let mut infile = File::open(opt.input).expect("could not open file");
|
||||||
|
let packages = package::PackageRegistry::new();
|
||||||
|
let mut infile = packages.get("builtins").expect("no package").open().expect("could not open file");
|
||||||
|
|
||||||
let mut input = String::new();
|
let mut input = String::new();
|
||||||
infile
|
infile
|
||||||
.read_to_string(&mut input)
|
.read_to_string(&mut input)
|
||||||
|
|
|
@ -1,17 +1,25 @@
|
||||||
use std::collections::BTreeMap;
|
use std::collections::BTreeMap;
|
||||||
use std::path::PathBuf;
|
use std::path::PathBuf;
|
||||||
|
use std::fs::File;
|
||||||
|
|
||||||
struct Package {
|
pub struct Package {
|
||||||
name: String,
|
name: String,
|
||||||
path: PathBuf,
|
path: PathBuf,
|
||||||
}
|
}
|
||||||
|
|
||||||
struct PackageRegistry {
|
impl Package {
|
||||||
|
pub fn open(&self) -> Result<File, std::io::Error> {
|
||||||
|
let filepath = self.path.with_file_name("main.hyd");
|
||||||
|
File::open(filepath)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub struct PackageRegistry {
|
||||||
packages: BTreeMap<String, Package>
|
packages: BTreeMap<String, Package>
|
||||||
}
|
}
|
||||||
|
|
||||||
impl PackageRegistry {
|
impl PackageRegistry {
|
||||||
fn new() -> Self {
|
pub fn new() -> Self {
|
||||||
let mut packages = BTreeMap::new();
|
let mut packages = BTreeMap::new();
|
||||||
packages.insert("builtins".to_string(), Package {
|
packages.insert("builtins".to_string(), Package {
|
||||||
name: "builtins".to_string(),
|
name: "builtins".to_string(),
|
||||||
|
@ -19,4 +27,8 @@ impl PackageRegistry {
|
||||||
});
|
});
|
||||||
Self { packages }
|
Self { packages }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn get(&self, name: &str) -> Option<&Package> {
|
||||||
|
self.packages.get(name)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue