1 /* Distributed under the OSI-approved BSD 3-Clause License. See accompanying
2 file Copyright.txt or https://cmake.org/licensing for details. */
3 #include "cmPlistParser.h"
5 #include <cm3p/json/reader.h>
6 #include <cm3p/json/value.h>
8 #include "cmUVProcessChain.h"
9 #include "cmUVStream.h"
11 cm::optional
<Json::Value
> cmParsePlist(const std::string
& filename
)
13 cmUVProcessChainBuilder builder
;
15 { "/usr/bin/plutil", "-convert", "json", "-o", "-", filename
});
16 builder
.SetBuiltinStream(cmUVProcessChainBuilder::Stream_OUTPUT
);
18 auto chain
= builder
.Start();
21 auto const& status
= chain
.GetStatus(0);
22 if (status
.ExitStatus
!= 0) {
28 cmUVPipeIStream
outputStream(chain
.GetLoop(), chain
.OutputStream());
29 if (!reader
.parse(outputStream
, value
)) {
32 return cm::optional
<Json::Value
>(value
);