Skip to content

Commit 5fe6331

Browse files
non7topprotoroto
andauthored
allow rewriting repo and owner (#110)
Co-authored-by: Leonardo Cavallucci <[email protected]>
1 parent 503f633 commit 5fe6331

File tree

3 files changed

+46
-0
lines changed

3 files changed

+46
-0
lines changed

changes/00.feature

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Allow rewriting repo and owner

giturlparse/result.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,12 @@ def valid(self):
3838
##
3939
# Alias properties
4040
##
41+
def _update_url(self):
42+
protocol = getattr(self, "protocol", None)
43+
if protocol:
44+
self.url = self.format(protocol)
45+
self._parsed["url"] = self.format(protocol)
46+
4147
@property
4248
def host(self):
4349
return self.domain
@@ -50,6 +56,21 @@ def resource(self):
5056
def name(self):
5157
return self.repo
5258

59+
@name.setter
60+
def name(self, new_name):
61+
self.repo = new_name
62+
self._parsed["repo"] = new_name
63+
self._update_url()
64+
65+
@property
66+
def owner(self):
67+
return self._parsed["owner"]
68+
69+
@owner.setter
70+
def owner(self, new_owner):
71+
self._parsed["owner"] = new_owner
72+
self._update_url()
73+
5374
@property
5475
def user(self):
5576
if hasattr(self, "_user"):

giturlparse/tests/test_rewrite.py

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,20 @@
7171
)
7272

7373

74+
REWRITE_COMPONENTS = {
75+
"name": {
76+
"source": "[email protected]:Org/Repo.git",
77+
"value": "New-repo",
78+
"expected": "[email protected]:Org/New-repo.git",
79+
},
80+
"owner": {
81+
"source": "[email protected]:Org/Repo.git",
82+
"value": "New-Org",
83+
"expected": "[email protected]:New-Org/Repo.git",
84+
},
85+
}
86+
87+
7488
class UrlRewriteTestCase(unittest.TestCase):
7589
def _test_rewrite(self, source, protocol, expected):
7690
parsed = parse(source)
@@ -81,6 +95,16 @@ def test_rewrites(self):
8195
for data in REWRITE_URLS:
8296
self._test_rewrite(*data)
8397

98+
def _test_rewrite_components(self, field, data):
99+
parsed = parse(data["source"])
100+
setattr(parsed, field, data["value"])
101+
self.assertTrue(parsed.valid, "Invalid Url: %s" % data["source"])
102+
return self.assertEqual(parsed.url, data["expected"])
103+
104+
def test_rewrite_components(self):
105+
for field, data in REWRITE_COMPONENTS.items():
106+
self._test_rewrite_components(field, data)
107+
84108

85109
# Test Suite
86110
suite = unittest.TestLoader().loadTestsFromTestCase(UrlRewriteTestCase)

0 commit comments

Comments
 (0)