class Abt::Providers::Devops::Services::ProjectPicker
Constants
- AZURE_DEV_URL_REGEX
- VS_URL_REGEX
Attributes
cli[R]
Public Class Methods
call(**args)
click to toggle source
# File lib/abt/providers/devops/services/project_picker.rb, line 21 def self.call(**args) new(**args).call end
new(cli:)
click to toggle source
# File lib/abt/providers/devops/services/project_picker.rb, line 27 def initialize(cli:) @cli = cli end
Public Instance Methods
call()
click to toggle source
# File lib/abt/providers/devops/services/project_picker.rb, line 31 def call Result.new( path: Path.from_ids(organization_name: organization_name, project_name: project_name) ) end
Private Instance Methods
organization_name()
click to toggle source
# File lib/abt/providers/devops/services/project_picker.rb, line 43 def organization_name @organization_name ||= project_url_match && project_url_match[:organization] end
project_name()
click to toggle source
# File lib/abt/providers/devops/services/project_picker.rb, line 39 def project_name @project_name ||= project_url_match && project_url_match[:project] end
project_url()
click to toggle source
# File lib/abt/providers/devops/services/project_picker.rb, line 51 def project_url @project_url ||= loop do url = prompt_url break url if AZURE_DEV_URL_REGEX =~ url || VS_URL_REGEX =~ url cli.warn("Invalid URL") end end
project_url_match()
click to toggle source
# File lib/abt/providers/devops/services/project_picker.rb, line 47 def project_url_match AZURE_DEV_URL_REGEX.match(project_url) || VS_URL_REGEX.match(project_url) end
prompt_url()
click to toggle source
# File lib/abt/providers/devops/services/project_picker.rb, line 61 def prompt_url cli.prompt.text(<<~TXT) Please provide the URL for the devops project For instance https://{organization}.visualstudio.com/{project} or https://dev.azure.com/{organization}/{project} Enter URL TXT end