file(ARCHIVE_CREATE): add WORKING_DIRECTORY option

Fixes: #25260
Issue: #21653
This commit is contained in:
Yuri Witte
2024-09-05 05:06:04 -03:00
committed by Brad King
parent d65b5a8e03
commit d8a9aabd24
10 changed files with 49 additions and 9 deletions

View File

@@ -3607,6 +3607,7 @@ bool HandleArchiveCreateCommand(std::vector<std::string> const& args,
// accepted without one and treated as if an empty value were given.
// Fixing this would require a policy.
ArgumentParser::Maybe<std::string> MTime;
std::string WorkingDirectory;
bool Verbose = false;
// "PATHS" requires at least one value, but use a custom check below.
ArgumentParser::MaybeEmpty<std::vector<std::string>> Paths;
@@ -3619,6 +3620,7 @@ bool HandleArchiveCreateCommand(std::vector<std::string> const& args,
.Bind("COMPRESSION"_s, &Arguments::Compression)
.Bind("COMPRESSION_LEVEL"_s, &Arguments::CompressionLevel)
.Bind("MTIME"_s, &Arguments::MTime)
.Bind("WORKING_DIRECTORY"_s, &Arguments::WorkingDirectory)
.Bind("VERBOSE"_s, &Arguments::Verbose)
.Bind("PATHS"_s, &Arguments::Paths);
@@ -3718,7 +3720,8 @@ bool HandleArchiveCreateCommand(std::vector<std::string> const& args,
return false;
}
if (!cmSystemTools::CreateTar(parsedArgs.Output, parsedArgs.Paths, compress,
if (!cmSystemTools::CreateTar(parsedArgs.Output, parsedArgs.Paths,
parsedArgs.WorkingDirectory, compress,
parsedArgs.Verbose, parsedArgs.MTime,
parsedArgs.Format, compressionLevel)) {
status.SetError(cmStrCat("failed to compress: ", parsedArgs.Output));