1311532Sdim//===-- llvm/Support/TarWriter.h - Tar archive file creator -----*- C++ -*-===//
2311532Sdim//
3353358Sdim// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4353358Sdim// See https://llvm.org/LICENSE.txt for license information.
5353358Sdim// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6311532Sdim//
7311532Sdim//===----------------------------------------------------------------------===//
8311532Sdim
9311532Sdim#ifndef LLVM_SUPPORT_TAR_WRITER_H
10311532Sdim#define LLVM_SUPPORT_TAR_WRITER_H
11311532Sdim
12311532Sdim#include "llvm/ADT/StringRef.h"
13327952Sdim#include "llvm/ADT/StringSet.h"
14311532Sdim#include "llvm/Support/Error.h"
15311532Sdim#include "llvm/Support/raw_ostream.h"
16311532Sdim
17311532Sdimnamespace llvm {
18311532Sdimclass TarWriter {
19311532Sdimpublic:
20311532Sdim  static Expected<std::unique_ptr<TarWriter>> create(StringRef OutputPath,
21311532Sdim                                                     StringRef BaseDir);
22311532Sdim
23311532Sdim  void append(StringRef Path, StringRef Data);
24311532Sdim
25311532Sdimprivate:
26311532Sdim  TarWriter(int FD, StringRef BaseDir);
27311532Sdim  raw_fd_ostream OS;
28311532Sdim  std::string BaseDir;
29327952Sdim  StringSet<> Files;
30311532Sdim};
31311532Sdim}
32311532Sdim
33311532Sdim#endif
34