lib/danger/ci_source/appcircle.rb in danger-9.1.0 vs lib/danger/ci_source/appcircle.rb in danger-9.2.0

- old
+ new

@@ -1,83 +1,83 @@ # https://docs.appcircle.io/environment-variables/managing-variables # https://docs.appcircle.io/build/build-profile-configuration#environment-variables-configuration require "danger/request_sources/github/github" require "danger/request_sources/gitlab" module Danger - # ### CI Setup - # - # Add a Custom Script step to your workflow and set it as a bash: - # - # ```shell - # cd $AC_REPOSITORY_DIR - # bundle install - # bundle exec danger - # ``` - # ### Token Setup - # - # Login to Appcircle and select your build profile. Go to your *Config* and - # choose *Environment Variables*. - # https://docs.appcircle.io/environment-variables/managing-variables - # - # #### GitHub - # Add the `DANGER_GITHUB_API_TOKEN` to your profile's ENV. - # - # #### GitLab - # Add the `DANGER_GITLAB_API_TOKEN` to your profile's ENV. - # - # #### Bitbucket Cloud - # Add the `DANGER_BITBUCKETSERVER_USERNAME`, `DANGER_BITBUCKETSERVER_PASSWORD` - # to your profile's ENV. - # - # #### Bitbucket server - # Add the `DANGER_BITBUCKETSERVER_USERNAME`, `DANGER_BITBUCKETSERVER_PASSWORD` - # and `DANGER_BITBUCKETSERVER_HOST` to your profile's ENV. - # - class Appcircle < CI - def self.validates_as_ci?(env) - env.key? "AC_APPCIRCLE" - end - - def self.validates_as_pr?(env) - return false unless env.key? "AC_PULL_NUMBER" - env["AC_PULL_NUMBER"].to_i > 0 - end + # ### CI Setup + # + # Add a Custom Script step to your workflow and set it as a bash: + # + # ```shell + # cd $AC_REPOSITORY_DIR + # bundle install + # bundle exec danger + # ``` + # ### Token Setup + # + # Login to Appcircle and select your build profile. Go to your *Config* and + # choose *Environment Variables*. + # https://docs.appcircle.io/environment-variables/managing-variables + # + # #### GitHub + # Add the `DANGER_GITHUB_API_TOKEN` to your profile's ENV. + # + # #### GitLab + # Add the `DANGER_GITLAB_API_TOKEN` to your profile's ENV. + # + # #### Bitbucket Cloud + # Add the `DANGER_BITBUCKETSERVER_USERNAME`, `DANGER_BITBUCKETSERVER_PASSWORD` + # to your profile's ENV. + # + # #### Bitbucket server + # Add the `DANGER_BITBUCKETSERVER_USERNAME`, `DANGER_BITBUCKETSERVER_PASSWORD` + # and `DANGER_BITBUCKETSERVER_HOST` to your profile's ENV. + # + class Appcircle < CI + def self.validates_as_ci?(env) + env.key? "AC_APPCIRCLE" + end - def supported_request_sources - @supported_request_sources ||= [ - Danger::RequestSources::GitHub, - Danger::RequestSources::BitbucketCloud, - Danger::RequestSources::BitbucketServer, - Danger::RequestSources::GitLab - ] - end + def self.validates_as_pr?(env) + return false unless env.key? "AC_PULL_NUMBER" - def initialize(env) - self.pull_request_id = env["AC_PULL_NUMBER"] - self.repo_url = env["AC_GIT_URL"] - self.repo_slug = repo_slug_from(self.repo_url) - end - - def repo_slug_from(url) - if url =~ URI::regexp - # Try to parse the URL as a valid URI. This should cover the cases of http/https/ssh URLs. - begin - uri = URI.parse(url) - return uri.path.sub(/^(\/)/,'').sub(/(.git)$/,'') - rescue URI::InvalidURIError - # In case URL could not be parsed fallback to git URL parsing. - repo_slug_asgiturl(url) - end - else - # In case URL could not be parsed fallback to git URL parsing. git@github.com:organization/repo.git + env["AC_PULL_NUMBER"].to_i > 0 + end + + def supported_request_sources + @supported_request_sources ||= [ + Danger::RequestSources::GitHub, + Danger::RequestSources::BitbucketCloud, + Danger::RequestSources::BitbucketServer, + Danger::RequestSources::GitLab + ] + end + + def initialize(env) + self.pull_request_id = env["AC_PULL_NUMBER"] + self.repo_url = env["AC_GIT_URL"] + self.repo_slug = repo_slug_from(self.repo_url) + end + + def repo_slug_from(url) + if url =~ URI::DEFAULT_PARSER.make_regexp + # Try to parse the URL as a valid URI. This should cover the cases of http/https/ssh URLs. + begin + uri = URI.parse(url) + return uri.path.sub(%r{^(/)}, "").sub(/(.git)$/, "") + rescue URI::InvalidURIError + # In case URL could not be parsed fallback to git URL parsing. repo_slug_asgiturl(url) end + else + # In case URL could not be parsed fallback to git URL parsing. git@github.com:organization/repo.git + repo_slug_asgiturl(url) end - - def repo_slug_asgiturl(url) - matcher_url = url - repo_matches = matcher_url.match(%r{([\/:])(([^\/]+\/)+[^\/]+?)(\.git$|$)})[2] - return repo_matches unless repo_matches.nil? - end end + + def repo_slug_asgiturl(url) + matcher_url = url + repo_matches = matcher_url.match(%r{([/:])(([^/]+/)+[^/]+?)(\.git$|$)})[2] + return repo_matches unless repo_matches.nil? + end end - \ No newline at end of file +end