1- {-# LANGUAGE GeneralisedNewtypeDeriving #-}
2-
31-- |
42-- Description : Bootstraps .vscode/extensions.json
53-- Copyright : (c) Crown Copyright GCHQ
64module Bootstrap.Data.Bootstrappable.VSCodeExtensions
75 ( VSCodeExtensions ,
86 vsCodeExtensionsFileFor ,
9- VSCodeExtension (.. ),
10- extensionsFor ,
117 )
128where
139
1410import Bootstrap.Data.Bootstrappable
1511 ( Bootstrappable (bootstrapContent , bootstrapName , bootstrapReason ),
1612 bootstrapContentPrettyJson ,
1713 )
18- import Bootstrap.Data.ProjectType
19- ( HaskellOptions (HaskellOptions ),
20- InstallLombok (unInstallLombok ),
21- JavaOptions (JavaOptions ),
22- ProjectType (Elm , Go , Haskell , Java , Minimal , Node , Python , Rust ),
23- )
14+ import Bootstrap.Data.ProjectType (ProjectType )
15+ import Bootstrap.Data.VSCodeExtension (vsCodeExtensionsFor )
2416import Data.Aeson (KeyValue ((.=) ), ToJSON (toJSON ))
2517import qualified Data.Aeson as Aeson
2618
@@ -35,27 +27,8 @@ instance Bootstrappable VSCodeExtensions where
3527instance ToJSON VSCodeExtensions where
3628 toJSON (VSCodeExtensions projectType) =
3729 Aeson. object
38- [" recommendations" .= Aeson. Array (fromList . (toJSON <$> ) $ extensionsFor projectType)]
30+ [" recommendations" .= Aeson. Array (fromList . (toJSON <$> ) $ vsCodeExtensionsFor projectType)]
3931
4032-- | Constructs `VSCodeExtensions` for the given `ProjectType`
4133vsCodeExtensionsFileFor :: ProjectType -> Maybe VSCodeExtensions
4234vsCodeExtensionsFileFor = Just . VSCodeExtensions
43-
44- -- | Represents the ID of an individual extension
45- newtype VSCodeExtension = VSCodeExtension Text
46- deriving newtype (ToJSON )
47-
48- -- | The list of extensions we recommend for the given `ProjectType`
49- extensionsFor :: ProjectType -> [VSCodeExtension ]
50- extensionsFor =
51- (VSCodeExtension <$> ) . ([" arrterian.nix-env-selector" , " jnoortheen.nix-ide" ] <> ) . \ case
52- Minimal -> []
53- Elm _ -> [" Elmtooling.elm-ls-vscode" ]
54- (Haskell (HaskellOptions _ _)) -> [" haskell.haskell" ]
55- Node _ -> []
56- Go _ -> [" golang.Go" ]
57- Java (JavaOptions _ installLombok _) ->
58- [" vscjava.vscode-java-pack" ]
59- <> [" gabrielbb.vscode-lombok" | unInstallLombok installLombok]
60- Python _ -> [" ms-python.python" ]
61- Rust -> [" rust-lang.rust-analyzer" ]
0 commit comments