kotoba_package_manager/
dependency.rs1use serde::{Deserialize, Serialize};
4use std::collections::HashMap;
5use url::Url;
6
7#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Hash)]
9#[serde(rename_all = "snake_case")]
10pub enum PackageSource {
11 Registry(String), Git(GitSource),
13 Url(Url),
14}
15
16#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Hash)]
17pub struct GitSource {
18 pub url: Url,
19 pub revision: String, }
21
22#[derive(Debug, Clone, Serialize, Deserialize)]
24pub struct Package {
25 pub name: String,
26 pub version: String,
27 pub source: PackageSource,
28 pub cid: Option<String>,
29 pub tarball_url: Option<String>,
30 pub description: Option<String>,
31 pub authors: Vec<String>,
32 pub dependencies: HashMap<String, DependencyInfo>,
33 pub dev_dependencies: HashMap<String, DependencyInfo>,
34 pub repository: Option<String>,
35 pub license: Option<String>,
36 pub keywords: Vec<String>,
37}
38
39#[derive(Debug, Clone, Serialize, Deserialize)]
41pub struct DependencyInfo {
42 pub version: String,
43 #[serde(flatten)]
44 pub source: Option<PackageSource>,
45}
46
47#[derive(Debug, Clone, Serialize, Deserialize)]
49pub struct ProjectConfig {
50 pub name: String,
51 pub version: String,
52 pub description: Option<String>,
53 pub dependencies: HashMap<String, DependencyInfo>,
54 pub dev_dependencies: HashMap<String, DependencyInfo>,
55 pub scripts: HashMap<String, String>,
56}