extension_manifest.rs

 1use collections::BTreeMap;
 2use language::LanguageServerName;
 3use serde::{Deserialize, Serialize};
 4use std::{path::PathBuf, sync::Arc};
 5
 6/// This is the old version of the extension manifest, from when it was `extension.json`.
 7#[derive(Clone, PartialEq, Eq, Debug, Deserialize, Serialize)]
 8pub struct OldExtensionManifest {
 9    pub name: String,
10    pub version: Arc<str>,
11
12    #[serde(default)]
13    pub description: Option<String>,
14    #[serde(default)]
15    pub repository: Option<String>,
16    #[serde(default)]
17    pub authors: Vec<String>,
18
19    #[serde(default)]
20    pub themes: BTreeMap<Arc<str>, PathBuf>,
21    #[serde(default)]
22    pub languages: BTreeMap<Arc<str>, PathBuf>,
23    #[serde(default)]
24    pub grammars: BTreeMap<Arc<str>, PathBuf>,
25}
26
27#[derive(Clone, PartialEq, Eq, Debug, Deserialize, Serialize)]
28pub struct ExtensionManifest {
29    pub id: Arc<str>,
30    pub name: String,
31    pub version: Arc<str>,
32
33    #[serde(default)]
34    pub description: Option<String>,
35    #[serde(default)]
36    pub repository: Option<String>,
37    #[serde(default)]
38    pub authors: Vec<String>,
39    #[serde(default)]
40    pub lib: LibManifestEntry,
41
42    #[serde(default)]
43    pub themes: Vec<PathBuf>,
44    #[serde(default)]
45    pub languages: Vec<PathBuf>,
46    #[serde(default)]
47    pub grammars: BTreeMap<Arc<str>, GrammarManifestEntry>,
48    #[serde(default)]
49    pub language_servers: BTreeMap<LanguageServerName, LanguageServerManifestEntry>,
50}
51
52#[derive(Clone, Default, PartialEq, Eq, Debug, Deserialize, Serialize)]
53pub struct LibManifestEntry {
54    pub kind: Option<ExtensionLibraryKind>,
55}
56
57#[derive(Clone, PartialEq, Eq, Debug, Deserialize, Serialize)]
58pub enum ExtensionLibraryKind {
59    Rust,
60}
61
62#[derive(Clone, Default, PartialEq, Eq, Debug, Deserialize, Serialize)]
63pub struct GrammarManifestEntry {
64    pub repository: String,
65    #[serde(alias = "commit")]
66    pub rev: String,
67}
68
69#[derive(Clone, PartialEq, Eq, Debug, Deserialize, Serialize)]
70pub struct LanguageServerManifestEntry {
71    pub language: Arc<str>,
72}