1
0
Fork 0

[bin] Rework get-gitlab-shortcode to handle group/subgroup/project URLS

main
Sebastian Schulze 2022-07-06 20:18:57 +02:00
parent d7122a4a5c
commit 6158cfc632
No known key found for this signature in database
GPG Key ID: F6BA63C6A7D3044E
1 changed files with 15 additions and 13 deletions

View File

@ -4,24 +4,26 @@ require "uri"
begin
abort "Please supply a valid URL to this script." if ARGV.empty?
uri = URI.parse(ARGV.first.strip)
uri = URI.parse(ARGV.last.strip)
abort "Not a valid forge URI" unless uri.host.start_with? "git."
uri_match = uri.path.match(%r{/(?<group>[a-z/]+?)/-/(?<type>[\w]+)/(?<issue>[\d]+)})
abort "Could not find anything to match in #{uri}" if uri_match.nil?
short_code = case uri_match[:type]
when "merge_requests"
"!"
when "issues"
"#"
if uri_match = uri.path.match(%r{/(?<group>[a-z/]+?)(/-/)(?<type>[\w]+)/(?<issue>[\w]+)})
short_code = case uri_match[:type]
when "merge_requests"
"!"
when "issues"
"#"
when "commit"
"@"
end
out = [uri_match[:group], uri_match[:issue]].join(short_code)
elsif uri_match = uri.path.match(%r{/(?<group>([a-z/]+)?)/(?<project>([a-z]+))(/)?})
out = [uri_match[:group], uri_match[:project]].join("/") + ">"
else
abort "Could not find anything to match in #{uri}" if uri_match.nil?
end
out = [uri_match[:group], uri_match[:issue]].join(short_code)
binding.pry
`notify-send #{ARGV.inspect}`
$stdout.puts out
rescue URI::InvalidURIError => e