moon_config/workspace/
plugins_config.rs1use moon_common::Id;
2use rustc_hash::FxHashMap;
3use schematic::Config;
4use warpgate_api::{PluginLocator, UrlLocator};
5
6#[derive(Clone, Config, Debug, PartialEq)]
8#[config(allow_unknown_fields)]
9pub struct ExtensionConfig {
10 #[setting(required)]
12 pub plugin: Option<PluginLocator>,
13
14 #[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}