on 6fd4a4e help sign in
95 lines 3.1 kB history raw
1module IRTS.Java.Pom (pomString) where
3import Data.List (unfoldr)
4import Text.XML.Light
6-----------------------------------------------------------------------
7-- String <-> XML processing
9uattr :: String -> String -> Attr
10uattr k v = Attr (QName k Nothing Nothing) v
12-- from http://stackoverflow.com/a/4978733/283260
13splitOn :: Eq a => a -> [a] -> [[a]]
14splitOn chr = unfoldr sep where
15 sep [] = Nothing
16 sep l = Just . fmap (drop 1) . break (==chr) $ l
18parseToDep :: String -> Element
19parseToDep tuple =
20 case splitOn ':' tuple of
21 [g, a, v] -> dependency g a v
22 _ -> blank_element
24dependency :: String -> String -> String -> Element
25dependency g a v = unode "dependency" (groupArtifactVersion g a v)
27groupArtifactVersion :: String -> String -> String -> [Element]
28groupArtifactVersion g a v = [
29 unode "groupId" g,
30 unode "artifactId" a,
31 unode "version" v
32 ]
34pomString :: String -> String -> [String] -> String
35pomString c a d = ppElement $ pom c a d
37-----------------------------------------------------------------------
38-- The pom template for idris projects
40pom :: String -> String -> [String] -> Element
41pom clsName artifactName dependencies = unode "project" ([
42 uattr "xmlns" "http://maven.apache.org/POM/4.0.0",
43 uattr "xmlns:xsi" "http://www.w3.org/2001/XMLSchema-instance",
44 uattr "xsi:schemaLocation" "http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"
45 ],
46 [
47 unode "modelVersion" "4.0.0",
48 unode "groupId" "org.idris-lang",
49 unode "artifactId" artifactName,
50 unode "packaging" "jar",
51 unode "version" "1.0",
52 unode "name" artifactName,
53 unode "properties" [
54 unode "project.build.sourceEncoding" "UTF-8",
55 unode "skipTest" "true"
56 ],
57 unode "dependencies" (
58 dependency "org.idris-lang" "idris" "0.9.14" :
59 map parseToDep dependencies
60 ),
61 unode "build" [
62 unode "finalName" artifactName,
63 unode "plugins" [
64 unode "plugin" (
65 unode "configuration" [
66 unode "source" "1.7",
67 unode "target" "1.7"
68 ] : groupArtifactVersion "org.apache.maven.plugins" "maven-compiler-plugin" "3.0"
69 ),
70 unode "plugin" (
71 unode "configuration" (
72 unode "skipTests" "${skipTests}"
73 ) : groupArtifactVersion "org.apache.maven.plugins" "maven-surefile-plugin" "2.14"
74 ),
75 unode "plugin" (
76 unode "executions" [
77 unode "execution" [
78 unode "phase" "package",
79 unode "goals" (
80 unode "goal" "shade"
81 ),
82 unode "configuration" (
83 unode "transformers" (
84 unode "transformer" (
85 uattr "implementation" "org.apache.maven.plugins.shade.resource.ManifestResourceTransformer",
86 unode "mainClass" clsName
87 )
88 )
89 )
90 ]
91 ] : groupArtifactVersion "org.apache.maven.plugins" "maven-shade-plugin" "2.1"
92 )
93 ]
94 ]
95 ])