Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-docs.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorEvan Read <eread@gitlab.com>2022-06-23 03:28:35 +0300
committerClayton Cornell <ccornell@gitlab.com>2022-06-23 03:28:35 +0300
commitf7e3c0c1e4e096b14658e21d31eef4aa0c2f3c4a (patch)
treeff66d6ec0696c6bf778a7b12011ed655ea8f8cd8 /lib
parent5d5fe32fd1c68f182acfe889038af859d381c911 (diff)
Revert "Merge branch 'bwill/refactor-edit-on-gitlab' into 'main'"
Diffstat (limited to 'lib')
-rw-r--r--lib/helpers/edit_on_gitlab.rb93
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