report used packages agent-side
[teamcity/dotNetPackagesSupport.git] / nuget-agent / src / jetbrains / buildServer / nuget / agent / install / impl / PackagesInfoUploader.java
1 /*\r
2  * Copyright 2000-2011 JetBrains s.r.o.\r
3  *\r
4  * Licensed under the Apache License, Version 2.0 (the "License");\r
5  * you may not use this file except in compliance with the License.\r
6  * You may obtain a copy of the License at\r
7  *\r
8  * http://www.apache.org/licenses/LICENSE-2.0\r
9  *\r
10  * Unless required by applicable law or agreed to in writing, software\r
11  * distributed under the License is distributed on an "AS IS" BASIS,\r
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
13  * See the License for the specific language governing permissions and\r
14  * limitations under the License.\r
15  */\r
16 \r
17 package jetbrains.buildServer.nuget.agent.install.impl;\r
18 \r
19 import jetbrains.buildServer.agent.AgentRunningBuild;\r
20 import jetbrains.buildServer.agent.artifacts.ArtifactsWatcher;\r
21 import jetbrains.buildServer.nuget.agent.install.PackageInfo;\r
22 import jetbrains.buildServer.util.FileUtil;\r
23 import jetbrains.buildServer.util.XmlUtil;\r
24 import org.jdom.Content;\r
25 import org.jdom.Document;\r
26 import org.jdom.Element;\r
27 import org.jetbrains.annotations.NotNull;\r
28 \r
29 import java.io.*;\r
30 import java.util.Collection;\r
31 \r
32 /**\r
33  * Created by Eugene Petrenko (eugene.petrenko@gmail.com)\r
34  * Date: 18.07.11 23:02\r
35  */\r
36 public class PackagesInfoUploader {\r
37   private final ArtifactsWatcher myPublisher;\r
38 \r
39   public PackagesInfoUploader(@NotNull final ArtifactsWatcher publisher) {\r
40     myPublisher = publisher;\r
41   }\r
42 \r
43   public void uploadDepectedPackages(@NotNull final AgentRunningBuild build,\r
44                                      @NotNull final Collection<PackageInfo> infos) throws IOException {\r
45     File tmp = FileUtil.createTempDirectory("nuget", "packages", build.getBuildTempDirectory());\r
46 \r
47     Element root = new Element("packages");\r
48     for (PackageInfo info : infos) {\r
49       Element pkg = new Element("package");\r
50       pkg.setAttribute("id", info.getId());\r
51       pkg.setAttribute("version", info.getVersion());\r
52       root.addContent((Content)pkg);\r
53     }\r
54     Document doc = new Document(root);\r
55 \r
56     final File content = new File(tmp, "nuget-packages.xml");\r
57     OutputStream os = new BufferedOutputStream(new FileOutputStream(content));\r
58     try {\r
59       XmlUtil.saveDocument(doc, os);\r
60     } finally {\r
61       FileUtil.close(os);\r
62     }\r
63 \r
64     myPublisher.addNewArtifactsPath(content.getPath() + " => .teamcity/nuget");\r
65   }\r
66 }\r