moon_config/workspace/
plugins_config.rs

1use moon_common::Id;
2use rustc_hash::FxHashMap;
3use schematic::Config;
4use warpgate_api::{PluginLocator, UrlLocator};
5
6/// Configures an individual extension.
7#[derive(Clone, Config, Debug, PartialEq)]
8#[config(allow_unknown_fields)]
9pub struct ExtensionConfig {
10    /// Location of the WASM plugin to use.
11    #[setting(required)]
12    pub plugin: Option<PluginLocator>,
13
14    /// Arbitrary configuration that'll be passed to the WASM plugin.
15    #[setting(flatten)]
16    pub config: FxHashMap<String, serde_json::Value>,
17}
18
19impl ExtensionConfig {
20    pub fn get_plugin_locator(&self) -> &PluginLocator {
21        self.plugin.as_ref().unwrap()
22    }
23}
24
25pub(crate) fn default_extensions() -> FxHashMap<Id, ExtensionConfig> {
26    FxHashMap::from_iter([
27        (
28            Id::raw("download"),
29            ExtensionConfig {
30                plugin: Some(PluginLocator::Url(Box::new(UrlLocator {
31                    url: "https://github.com/moonrepo/plugins/releases/download/download_extension-v0.0.9/download_extension.wasm".into()
32                }))),
33                config: FxHashMap::default(),
34            },
35        ),
36         (
37            Id::raw("migrate-nx"),
38            ExtensionConfig {
39                plugin: Some(PluginLocator::Url(Box::new(UrlLocator {
40                    url: "https://github.com/moonrepo/plugins/releases/download/migrate_nx_extension-v0.0.9/migrate_nx_extension.wasm".into()
41                }))),
42                config: FxHashMap::default(),
43            },
44        ),
45        (
46            Id::raw("migrate-turborepo"),
47            ExtensionConfig {
48                plugin: Some(PluginLocator::Url(Box::new(UrlLocator {
49                    url: "https://github.com/moonrepo/plugins/releases/download/migrate_turborepo_extension-v0.1.6/migrate_turborepo_extension.wasm".into()
50                }))),
51                config: FxHashMap::default(),
52            },
53        ),
54    ])
55}