Disable more usage of PosixPermission on Windows in InstallPluginCommand

Releates to #17201
This commit is contained in:
Boaz Leskes 2016-03-19 12:02:42 +01:00
parent ee95c0a384
commit ef4293a993

View File

@ -403,15 +403,17 @@ class InstallPluginCommand extends Command {
} }
Files.createDirectory(destBinDir); Files.createDirectory(destBinDir);
// setup file attributes for the installed files to those of the parent dir
Set<PosixFilePermission> perms = new HashSet<>(); Set<PosixFilePermission> perms = new HashSet<>();
PosixFileAttributeView binAttrs = Files.getFileAttributeView(destBinDir.getParent(), PosixFileAttributeView.class); if (Constants.WINDOWS == false) {
if (binAttrs != null) { // setup file attributes for the installed files to those of the parent dir
perms = new HashSet<>(binAttrs.readAttributes().permissions()); PosixFileAttributeView binAttrs = Files.getFileAttributeView(destBinDir.getParent(), PosixFileAttributeView.class);
// setting execute bits, since this just means "the file is executable", and actual execution requires read if (binAttrs != null) {
perms.add(PosixFilePermission.OWNER_EXECUTE); perms = new HashSet<>(binAttrs.readAttributes().permissions());
perms.add(PosixFilePermission.GROUP_EXECUTE); // setting execute bits, since this just means "the file is executable", and actual execution requires read
perms.add(PosixFilePermission.OTHERS_EXECUTE); perms.add(PosixFilePermission.OWNER_EXECUTE);
perms.add(PosixFilePermission.GROUP_EXECUTE);
perms.add(PosixFilePermission.OTHERS_EXECUTE);
}
} }
try (DirectoryStream<Path> stream = Files.newDirectoryStream(tmpBinDir)) { try (DirectoryStream<Path> stream = Files.newDirectoryStream(tmpBinDir)) {
@ -444,9 +446,15 @@ class InstallPluginCommand extends Command {
// create the plugin's config dir "if necessary" // create the plugin's config dir "if necessary"
Files.createDirectories(destConfigDir); Files.createDirectories(destConfigDir);
final PosixFileAttributes destConfigDirAttributes = final PosixFileAttributes destConfigDirAttributes;
Files.getFileAttributeView(destConfigDir.getParent(), PosixFileAttributeView.class).readAttributes(); if (Constants.WINDOWS) {
setOwnerGroup(destConfigDir, destConfigDirAttributes); destConfigDirAttributes = null;
} else {
destConfigDirAttributes =
Files.getFileAttributeView(destConfigDir.getParent(), PosixFileAttributeView.class).readAttributes();
setOwnerGroup(destConfigDir, destConfigDirAttributes);
}
try (DirectoryStream<Path> stream = Files.newDirectoryStream(tmpConfigDir)) { try (DirectoryStream<Path> stream = Files.newDirectoryStream(tmpConfigDir)) {
for (Path srcFile : stream) { for (Path srcFile : stream) {
@ -457,7 +465,9 @@ class InstallPluginCommand extends Command {
Path destFile = destConfigDir.resolve(tmpConfigDir.relativize(srcFile)); Path destFile = destConfigDir.resolve(tmpConfigDir.relativize(srcFile));
if (Files.exists(destFile) == false) { if (Files.exists(destFile) == false) {
Files.copy(srcFile, destFile); Files.copy(srcFile, destFile);
setOwnerGroup(destFile, destConfigDirAttributes); if (Constants.WINDOWS == false) {
setOwnerGroup(destFile, destConfigDirAttributes);
}
} }
} }
} }