dpu 0.3.1 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/dpu/version.rb +1 -1
- data/lib/dpu.rb +48 -11
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7e767334841a8cf8e60953a8edde125a40e62a488bd6837ae8f798ff0f9c468a
|
4
|
+
data.tar.gz: 79c11100a4390dbb54bb6186facd6226b3c981fbb14d98512a5bc772c654fe45
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3cd1dd74f4222f3962abee264da6d4ac90ef9f5bfb674ccfeb78c03de5c8b575b52897c47a44a3f3ec93ff5abb38b97cfca251069d06ebd2c4adb5be0eebc6da
|
7
|
+
data.tar.gz: d19919ff4b281af1b7604cdd586bece18e9f1a94fc519d947647c3196743c464d9c7b3a03edb92f0749f81857aa97a2dbbdbda8eacb1c39a1c45bfca9a79b1fa
|
data/lib/dpu/version.rb
CHANGED
data/lib/dpu.rb
CHANGED
@@ -8,7 +8,13 @@ module Dpu
|
|
8
8
|
|
9
9
|
class << self
|
10
10
|
GITHUB_REPOSITORY_URI_TEMPLATE = "https://github.com/%{account_name}/%{repository_name}"
|
11
|
-
|
11
|
+
SOURCEHUT_REPOSITORY_URI_TEMPLATE = "https://git.sr.ht/~%{account_name}/%{repository_name}"
|
12
|
+
REPOSITORY_URI_TEMPLATES = {
|
13
|
+
github: GITHUB_REPOSITORY_URI_TEMPLATE,
|
14
|
+
sourcehut: SOURCEHUT_REPOSITORY_URI_TEMPLATE,
|
15
|
+
}
|
16
|
+
|
17
|
+
GITHUB_REMOTE_URL_PATTERN = [
|
12
18
|
%r{\Agit://github\.com/(?<account_name>[^/]+)/(?<repository_name>.+)(?=\.git)},
|
13
19
|
%r{\Ahttps?://github\.com/(?<account_name>[^/]+)/(?<repository_name>.+)(?=\.git)},
|
14
20
|
%r{\Agit@github\.com:(?<account_name>[^/]+)/(?<repository_name>.+)(?=\.git)},
|
@@ -16,19 +22,37 @@ module Dpu
|
|
16
22
|
].then { |patterns|
|
17
23
|
Regexp.union(*patterns)
|
18
24
|
}
|
25
|
+
SOURCEHUT_REMOTE_URL_PATTERN = [
|
26
|
+
%r{\Ahttps://git\.sr\.ht/\~(?<account_name>[^/]+)/(?<repository_name>.+)},
|
27
|
+
%r{\Agit@git\.sr\.ht:\~(?<account_name>[^/]+)/(?<repository_name>.+)},
|
28
|
+
].then { |patterns|
|
29
|
+
Regexp.union(*patterns)
|
30
|
+
}
|
31
|
+
REMOTE_URL_PATTERNS = {
|
32
|
+
github: GITHUB_REMOTE_URL_PATTERN,
|
33
|
+
sourcehut: SOURCEHUT_REMOTE_URL_PATTERN,
|
34
|
+
}
|
35
|
+
|
36
|
+
REF_PREFIX = {
|
37
|
+
github: 'blob',
|
38
|
+
sourcehut: 'tree',
|
39
|
+
}
|
19
40
|
|
20
41
|
def determine_permanent_uri(path_or_link, start_line_number = nil, end_line_number = nil)
|
21
42
|
path = path_or_link.realpath
|
22
43
|
relative_path = determine_relative_path(path)
|
23
44
|
|
45
|
+
remote_url = get_remote_url(path)
|
46
|
+
vcs_service = determine_vcs_service(remote_url)
|
47
|
+
|
24
48
|
permanent_uri_parts = [
|
25
|
-
determine_repository_uri(
|
26
|
-
|
49
|
+
determine_repository_uri(vcs_service, remote_url),
|
50
|
+
REF_PREFIX[vcs_service],
|
27
51
|
find_same_content_version(path, relative_path) || determine_commit_id(path),
|
28
52
|
relative_path,
|
29
53
|
]
|
30
54
|
permanent_uri = URI(permanent_uri_parts.join("/"))
|
31
|
-
permanent_uri.fragment = determine_fragment(start_line_number, end_line_number)
|
55
|
+
permanent_uri.fragment = determine_fragment(vcs_service, start_line_number, end_line_number)
|
32
56
|
return permanent_uri
|
33
57
|
end
|
34
58
|
|
@@ -49,16 +73,28 @@ module Dpu
|
|
49
73
|
return relative_path
|
50
74
|
end
|
51
75
|
|
52
|
-
def
|
53
|
-
|
54
|
-
|
76
|
+
def get_remote_url(path)
|
77
|
+
return run_command("git remote get-url origin", chdir: path.dirname).chomp
|
78
|
+
end
|
79
|
+
|
80
|
+
def determine_vcs_service(repository_http_or_ssh_url)
|
81
|
+
if GITHUB_REMOTE_URL_PATTERN.match?(repository_http_or_ssh_url)
|
82
|
+
return :github
|
83
|
+
end
|
84
|
+
if SOURCEHUT_REMOTE_URL_PATTERN.match?(repository_http_or_ssh_url)
|
85
|
+
return :sourcehut
|
86
|
+
end
|
87
|
+
|
88
|
+
raise "unknown VCS service: #{repository_http_or_ssh_url}"
|
89
|
+
end
|
55
90
|
|
56
|
-
|
91
|
+
def determine_repository_uri(vcs_service, repository_http_or_ssh_url)
|
92
|
+
md = REMOTE_URL_PATTERNS[vcs_service].match(repository_http_or_ssh_url)
|
57
93
|
if !md
|
58
94
|
return URI(repository_http_or_ssh_url)
|
59
95
|
end
|
60
96
|
|
61
|
-
url =
|
97
|
+
url = REPOSITORY_URI_TEMPLATES[vcs_service] % {
|
62
98
|
account_name: md[:account_name],
|
63
99
|
repository_name: md[:repository_name],
|
64
100
|
}
|
@@ -88,10 +124,11 @@ module Dpu
|
|
88
124
|
return same_content_version
|
89
125
|
end
|
90
126
|
|
91
|
-
def determine_fragment(start_line_number, end_line_number)
|
127
|
+
def determine_fragment(vcs_service, start_line_number, end_line_number)
|
92
128
|
return nil if !start_line_number
|
93
129
|
return "L#{start_line_number}" if !end_line_number || start_line_number == end_line_number
|
94
|
-
return "L#{start_line_number}-L#{end_line_number}"
|
130
|
+
return "L#{start_line_number}-L#{end_line_number}" if vcs_service == :github
|
131
|
+
return "L#{start_line_number}-#{end_line_number}" if vcs_service == :sourcehut
|
95
132
|
end
|
96
133
|
end
|
97
134
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dpu
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Yuya.Nishida.
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-07-
|
11
|
+
date: 2023-07-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: debug
|