private Result tryExecChmod()

in runAs-agent/src/main/java/jetbrains/buildServer/runAs/agent/LinuxFileAccessService.java [120:146]


  private Result<AccessControlEntry, Boolean> tryExecChmod(@NotNull final AccessControlEntry entry, @NotNull final Iterable<String> chmodPermissions)
  {
    final String chmodPermissionsStr = StringUtil.join("", chmodPermissions);
    if(StringUtil.isEmptyOrSpaces(chmodPermissionsStr)) {
      return null;
    }

    final ArrayList<CommandLineArgument> args = new ArrayList<CommandLineArgument>();
    if (entry.getPermissions().contains(AccessPermissions.Recursive)) {
      args.add(new CommandLineArgument("-R", CommandLineArgument.Type.PARAMETER));
    }
    args.add(new CommandLineArgument(chmodPermissionsStr, CommandLineArgument.Type.PARAMETER));
    args.add(new CommandLineArgument(entry.getFile().getAbsolutePath(), CommandLineArgument.Type.PARAMETER));
    final CommandLineSetup chmodCommandLineSetup = new CommandLineSetup(CHMOD_TOOL_NAME, args, Collections.<CommandLineResource>emptyList());
    try {
      final ExecResult result = myCommandLineExecutor.runProcess(chmodCommandLineSetup, EXECUTION_TIMEOUT_SECONDS);
      if(result == null) {
        return null;
      }

      return processResult(entry, result);
    }
    catch (ExecutionException e) {
      LOG.error(e);
      return new Result<AccessControlEntry, Boolean>(entry, e);
    }
  }