Commit8845b33aRecorded21 Mar 2026Repositoryfjo

Add repos rename command and fix sigil-log dependency

Message

New CLI command: fjo repos rename <owner> <repo> <new-name> New MCP tool: fjo/repos-rename

Also adds sigil-log as explicit dependency to fix bundle loading (transitive dep from sigil-mcp was not being included).

Changed
 package.sgl       |  1 +
 src/fjo/main.sgl  |  9 +++++++++
 src/fjo/repos.sgl | 29 +++++++++++++++++++++++++++++
 3 files changed, 39 insertions(+)
Diff
package.sglmodified
@@ -45,6 +45,7 @@
45
(from-git url: sigil-repo package: "sigil-tls")
46
(from-git url: sigil-repo package: "sigil-http")
47
(from-git url: sigil-repo package: "sigil-mcp")
+48
(from-git url: sigil-repo package: "sigil-log")
49
(from-git url: forgejo-repo package: "sigil-forgejo"))
50
51
tasks: (list
src/fjo/main.sglmodified
@@ -40,6 +40,7 @@
40
(display " fjo repos list <org> List repos in org\n")
41
(display " fjo repos info <owner> <repo> Repo details\n")
42
(display " fjo repos create <org> <name> [desc] Create repo\n")
+43
(display " fjo repos rename <owner> <repo> <new> Rename repo\n")
44
(display " fjo topics list <owner> <repo> List topics\n")
45
(display " fjo topics set <owner> <repo> <t>... Set topics\n")
46
(display " fjo topics add <owner> <repo> <topic> Add topic\n")
@@ -81,6 +82,14 @@
82
(caddr rest) "") }))
83
(newline))
84
+85
((and (string=? group "repos") (string=? cmd "rename")
+86
(>= (length rest) 3))
+87
(display (tool-repos-rename
+88
#{ owner: (car rest)
+89
repo: (cadr rest)
+90
new_name: (caddr rest) }))
+91
(newline))
+92
93
;; topics
94
((and (string=? group "topics") (string=? cmd "list")
95
(>= (length rest) 2))
src/fjo/repos.sglmodified
@@ -18,6 +18,7 @@
18
tool-repos-list
19
tool-repos-info
20
tool-repos-create
+21
tool-repos-rename
22
tool-topics-list
23
tool-topics-set
24
tool-topics-add)
@@ -51,6 +52,16 @@
52
(description . "Repository description")))))
53
(required . ("org" "name"))))
54
+55
(define repos-rename-schema
+56
'((type . "object")
+57
(properties . ((owner . ((type . "string")
+58
(description . "Repository owner (user or org)")))
+59
(repo . ((type . "string")
+60
(description . "Current repository name")))
+61
(new_name . ((type . "string")
+62
(description . "New repository name")))))
+63
(required . ("owner" "repo" "new_name"))))
+64
65
(define topics-list-schema
66
'((type . "object")
67
(properties . ((owner . ((type . "string")
@@ -145,6 +156,18 @@
156
(string-append "Created repository " org "/" name ".\n"
157
"URL: " (dict-ref result html_url: ""))))))
158
+159
(define (tool-repos-rename args)
+160
(let* ((owner (dict-ref args owner:))
+161
(repo (dict-ref args repo:))
+162
(new-name (dict-ref args new_name:)))
+163
(guard (e (else
+164
(string-append "Failed to rename repository: "
+165
(exception-message e))))
+166
(let ((result (forgejo-rename-repo (fjo-base-url) (fjo-token)
+167
owner repo new-name)))
+168
(string-append "Renamed " owner "/" repo " to " owner "/" new-name ".\n"
+169
"URL: " (dict-ref result html_url: ""))))))
+170
171
(define (tool-topics-list args)
172
(let* ((owner (dict-ref args owner:))
173
(repo (dict-ref args repo:))
@@ -194,6 +217,12 @@
217
repos-create-schema
218
tool-repos-create)
219
+220
(register server
+221
"fjo/repos-rename"
+222
"Rename a repository."
+223
repos-rename-schema
+224
tool-repos-rename)
+225
226
(register server
227
"fjo/topics-list"
228
"List topics on a repository."