on master help sign in
Use xml lib to produce <dependencies/>.
6221726Leif Warner
idris.cabal+1
@@ -401,6 +401,7 @@ Executable idris
401 , vector
401 , vector
402 , vector-binary-instances
402 , vector-binary-instances
403 , network
403 , network
404+ , xml
404
405
405 Extensions: MultiParamTypeClasses
406 Extensions: MultiParamTypeClasses
406 , FunctionalDependencies
407 , FunctionalDependencies
src/IRTS/CodegenJava.hs+22−24
@@ -2,14 +2,12 @@
2module IRTS.CodegenJava (codegenJava) where
2module IRTS.CodegenJava (codegenJava) where
3
3
4import Core.TT hiding (mkApp)
4import Core.TT hiding (mkApp)
5−import IRTS.BCImp
6import IRTS.CodegenCommon
5import IRTS.CodegenCommon
7import IRTS.Java.ASTBuilding
6import IRTS.Java.ASTBuilding
8import IRTS.Java.JTypes
7import IRTS.Java.JTypes
9import IRTS.Java.Mangling
8import IRTS.Java.Mangling
10import IRTS.Lang
9import IRTS.Lang
11import IRTS.Simplified
10import IRTS.Simplified
12−import Paths_idris
13import Util.System
11import Util.System
14
12
15import Control.Applicative hiding (Const)
13import Control.Applicative hiding (Const)
@@ -18,12 +16,10 @@ import Control.Monad
18import Control.Monad.Error
16import Control.Monad.Error
19import qualified Control.Monad.Trans as T
17import qualified Control.Monad.Trans as T
20import Control.Monad.Trans.State
18import Control.Monad.Trans.State
21−import Data.Int
22−import Data.List (foldl', intercalate, isPrefixOf,
23− isSuffixOf)
19+import Data.List (foldl', isSuffixOf, unfoldr)
24−import Data.Maybe (fromJust)
25import qualified Data.Text as T
20import qualified Data.Text as T
26import qualified Data.Text.IO as TIO
21import qualified Data.Text.IO as TIO
22+import Text.XML.Light
27import qualified Data.Vector.Unboxed as V
23import qualified Data.Vector.Unboxed as V
28import Language.Java.Parser
24import Language.Java.Parser
29import Language.Java.Pretty
25import Language.Java.Pretty
@@ -113,7 +109,7 @@ generatePom tgtDir out libs = do
113 (T.replace (T.pack "$ARTIFACT-NAME$")
109 (T.replace (T.pack "$ARTIFACT-NAME$")
114 (T.pack $ takeBaseName out)
110 (T.pack $ takeBaseName out)
115 (T.replace (T.pack "$DEPENDENCIES$")
111 (T.replace (T.pack "$DEPENDENCIES$")
116− (mkPomDependencies libs)
112+ (T.pack $ concatMap (ppElement . mkDependency) libs)
117 execPomTemplate
113 execPomTemplate
118 )
114 )
119 )
115 )
@@ -179,23 +175,25 @@ jarHeader =
179 ++ "exec \"$java\" $java_args -jar $MYSELF \"$@\""
175 ++ "exec \"$java\" $java_args -jar $MYSELF \"$@\""
180 ++ "exit 1\n"
176 ++ "exit 1\n"
181
177
182−mkPomDependencies :: [String] -> T.Text
178+-- from http://stackoverflow.com/a/4978733/283260
183−mkPomDependencies deps =
179+splitOn :: Eq a => a -> [a] -> [[a]]
184− T.concat $ map (T.concat . map (T.append (T.pack " ")) . mkDependency . T.pack) deps
180+splitOn chr = unfoldr sep where
185− where
181+ sep [] = Nothing
182+ sep l = Just . fmap (drop 1) . break (==chr) $ l
183+
186− mkDependency s =
184+mkDependency :: String -> Element
185+mkDependency d =
187− case T.splitOn (T.pack ":") s of
186+ case splitOn ':' d of
188− [g, a, v] ->
187+ [g, a, v] ->
189− [ T.pack $ "<dependency>\n"
188+ unode "dependency" [
190− , T.append (T.pack " ") $ mkGroupId g
189+ mkGroupId g,
191− , T.append (T.pack " ") $ mkArtifactId a
190+ mkArtifactId a,
192− , T.append (T.pack " ") $ mkVersion v
191+ mkVersion v
193− , T.pack $ "</dependency>\n"
194− ]
192+ ]
195− _ -> []
193+ _ -> blank_element
196− mkGroupId g = T.append (T.pack $ "<groupId>") (T.append g $ T.pack "</groupId>\n")
194+mkGroupId g = unode "groupId" g
197− mkArtifactId a = T.append (T.pack $ "<artifactId>") (T.append a $ T.pack "</artifactId>\n")
195+mkArtifactId a = unode "artifactId" a
198− mkVersion v = T.append (T.pack $ "<version>") (T.append v $ T.pack "</version>\n")
196+mkVersion v = unode "version" v
199
197
200-----------------------------------------------------------------------
198-----------------------------------------------------------------------
201-- Code generation environment
199-- Code generation environment