diff options
author | Evan Read <eread@gitlab.com> | 2022-06-23 03:28:35 +0300 |
---|---|---|
committer | Clayton Cornell <ccornell@gitlab.com> | 2022-06-23 03:28:35 +0300 |
commit | f7e3c0c1e4e096b14658e21d31eef4aa0c2f3c4a (patch) | |
tree | ff66d6ec0696c6bf778a7b12011ed655ea8f8cd8 /lib | |
parent | 5d5fe32fd1c68f182acfe889038af859d381c911 (diff) |
Revert "Merge branch 'bwill/refactor-edit-on-gitlab' into 'main'"
Diffstat (limited to 'lib')
-rw-r--r-- | lib/helpers/edit_on_gitlab.rb | 93 |
1 files changed, 37 insertions, 56 deletions
diff --git a/lib/helpers/edit_on_gitlab.rb b/lib/helpers/edit_on_gitlab.rb index 7f2c36bd..7188cd1e 100644 --- a/lib/helpers/edit_on_gitlab.rb +++ b/lib/helpers/edit_on_gitlab.rb @@ -2,70 +2,51 @@ module Nanoc::Helpers module EditOnGitLab - PRODUCT_REPOS = { - "omnibus" => { - project: "gitlab-org/omnibus-gitlab", - default_branch_name: "master" - }, - "runner" => { - project: "gitlab-org/gitlab-runner", - default_branch_name: "main" - }, - "charts" => { - project: "gitlab-org/charts/gitlab", - default_branch_name: "master" - }, - "operator" => { - project: "gitlab-org/cloud-native/gitlab-operator", - default_branch_name: "master" - }, - "ee" => { - project: "gitlab-org/gitlab", - default_branch_name: "master" - } - }.freeze - def edit_on_gitlab(item, editor: :simple) - resource = resource_from_item(item) + # Make an array out of the content's source path. + content_filename_array = @item.identifier.to_s.split('/') + # remove first empty item + content_filename_array.shift + # Get the product name. + product = content_filename_array.shift + # This should be the path from the doc/ directory for a given file. + docs_content_filename = content_filename_array.join("/") + + case product + when "omnibus" + # omnibus-gitlab repo + gitlab_url = "https://gitlab.com/gitlab-org/#{product}-gitlab/blob/master/doc/#{docs_content_filename}" + gitlab_ide_url = "https://gitlab.com/-/ide/project/gitlab-org/#{product}-gitlab/edit/master/-/doc/#{docs_content_filename}" + when "runner" + # gitlab-runner repo + gitlab_url = "https://gitlab.com/gitlab-org/gitlab-#{product}/blob/main/docs/#{docs_content_filename}" + gitlab_ide_url = "https://gitlab.com/-/ide/project/gitlab-org/gitlab-#{product}/edit/main/-/docs/#{docs_content_filename}" + when "charts" + # GitLab Helm chart repo + gitlab_url = "https://gitlab.com/gitlab-org/#{product}/gitlab/blob/master/doc/#{docs_content_filename}" + gitlab_ide_url = "https://gitlab.com/-/ide/project/gitlab-org/#{product}/gitlab/edit/master/-/doc/#{docs_content_filename}" + when "operator" + # GitLab Operator repo + gitlab_url = "https://gitlab.com/gitlab-org/cloud-native/gitlab-#{product}/blob/master/doc/#{docs_content_filename}" + gitlab_ide_url = "https://gitlab.com/-/ide/project/gitlab-org/cloud-native/gitlab-#{product}/edit/master/-/doc/#{docs_content_filename}" + when "ee" + # gitlab-foss and gitlab repos + gitlab_url = "https://gitlab.com/gitlab-org/gitlab/blob/master/doc/#{docs_content_filename}" + gitlab_ide_url = "https://gitlab.com/-/ide/project/gitlab-org/gitlab/edit/master/-/doc/#{docs_content_filename}" + else + # gitlab-docs pages + gitlab_url = "https://gitlab.com/gitlab-org/gitlab-docs/blob/main/#{@item[:content_filename]}" + gitlab_ide_url = "https://gitlab.com/-/ide/project/gitlab-org/gitlab-docs/edit/main/-/#{@item[:content_filename]}" + end case editor when :simple - blob_url(resource) + gitlab_url when :webide - ide_url(resource) + gitlab_ide_url else raise "Unknown editor: #{editor}" end end - - private - - def resource_from_item(item) - # The item identifier is the file path of the current docs page. - # Ex: "/ee/user/ssh.md" - # - # We can use the first path segement to determine which project the docs - # reside in. If it's not a known project, then we'll assume that it's a - # content file inside gitlab-docs. - identifier_path = item.identifier.to_s.delete_prefix("/") - product, _, repo_doc_path = identifier_path.partition("/") - if repo = PRODUCT_REPOS[product] - return repo.merge({ file_path: "doc/#{repo_doc_path}" }) - end - - { - project: "gitlab-org/gitlab-docs", - default_branch_name: "main", - file_path: item[:content_filename] - } - end - - def blob_url(resource) - "https://gitlab.com/#{resource[:project]}/-/blob/#{resource[:default_branch_name]}/#{resource[:file_path]}" - end - - def ide_url(resource) - "https://gitlab.com/-/ide/project/#{resource[:project]}/edit/#{resource[:default_branch_name]}/-/#{resource[:file_path]}" - end end end |