public static String determineGemfilePath()

in rake-runner-agent/src/jetbrains/buildServer/agent/rakerunner/utils/BundlerUtil.java [212:255]


  public static String determineGemfilePath(@NotNull final ModifiableRunnerContext context) throws RakeTasksBuildService.MyBuildFailureException {
    final Map<String, String> runnerEnvParams = context.getEnvParameters();
    final Map<String, String> buildParams = context.getBuildParameters();
    final String userDefinedGemFilePath = runnerEnvParams.get(BUNDLE_GEMFILE_ENV_VAR);
    if (!StringUtil.isEmpty(userDefinedGemFilePath)) {
      return userDefinedGemFilePath;
    }

    final boolean oldResolve = ConfigurationParamsUtil.isParameterEnabled(buildParams, RakeRunnerConstants.GEMFILE_RESOLVE_IN_CHECKOUT_DIRECTORY);
    final String resolvingBaseDirectory = oldResolve ? context.getCheckoutDirectory() : context.getWorkingDirectory();

    final String customGemFilePath = buildParams.get(CUSTOM_GEMFILE_RELATIVE_PATH);
    String gemfilePath;
    if (!StringUtil.isEmpty(customGemFilePath)) {
      if (FileUtil.isAbsolute(customGemFilePath)) {
        return customGemFilePath;
      }
      // use custom
      gemfilePath = resolvingBaseDirectory + File.separator + customGemFilePath;
      if (checkIfExists(gemfilePath)) {
        return gemfilePath;
      }
      final String msg = "Gemfile wasn't found. You specified path to file '" + gemfilePath + "'.";
      throw new RakeTasksBuildService.MyBuildFailureException(msg);
    } else {
      // default one
      final String[] gemFileNames = new String[]{"Gemfile", "GemFile", "gemfile"};
      for (String name : gemFileNames) {
        gemfilePath = resolvingBaseDirectory + File.separator + name;
        if (checkIfExists(gemfilePath)) {
          return gemfilePath;
        }
      }
      final String pattern = "Cannot find Gemfile in %s directory : '%s'. \n" +
                             "If Gemfile is located in other directory please specify Gemfile relative path using system property: " + CUSTOM_GEMFILE_RELATIVE_PATH;
      String msg;
      if (oldResolve) {
        msg = String.format(pattern, "checkout", context.getCheckoutDirectory());
      } else {
        msg = String.format(pattern, "working", context.getWorkingDirectory());
      }
      throw new RakeTasksBuildService.MyBuildFailureException(msg);
    }
  }