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