feat(server): added routes for removing arch-repo & repo
ci/woodpecker/pr/docs Pipeline was successful
Details
ci/woodpecker/pr/lint Pipeline was successful
Details
ci/woodpecker/pr/build Pipeline was successful
Details
ci/woodpecker/pr/docker Pipeline was successful
Details
ci/woodpecker/pr/man Pipeline was successful
Details
ci/woodpecker/pr/test Pipeline was successful
Details
ci/woodpecker/pr/docs Pipeline was successful
Details
ci/woodpecker/pr/lint Pipeline was successful
Details
ci/woodpecker/pr/build Pipeline was successful
Details
ci/woodpecker/pr/docker Pipeline was successful
Details
ci/woodpecker/pr/man Pipeline was successful
Details
ci/woodpecker/pr/test Pipeline was successful
Details
parent
6283cbea9c
commit
68b7e5e71e
|
@ -122,3 +122,58 @@ Parameter | Description
|
||||||
repo | Repository to delete package from
|
repo | Repository to delete package from
|
||||||
arch | Specific arch-repo to remove package from
|
arch | Specific arch-repo to remove package from
|
||||||
pkg | Name of package to remove (without any version information)
|
pkg | Name of package to remove (without any version information)
|
||||||
|
|
||||||
|
## Remove arch-repo
|
||||||
|
|
||||||
|
<aside class="notice">
|
||||||
|
|
||||||
|
This endpoint requests authentication.
|
||||||
|
|
||||||
|
</aside>
|
||||||
|
|
||||||
|
```shell
|
||||||
|
curl \
|
||||||
|
-H 'X-Api-Key: secret' \
|
||||||
|
-XDELETE \
|
||||||
|
https://example.com/vieter/x86_64
|
||||||
|
```
|
||||||
|
|
||||||
|
This endpoint allows remove an entire arch-repo.
|
||||||
|
|
||||||
|
### HTTP Request
|
||||||
|
|
||||||
|
`DELETE /:repo/:arch`
|
||||||
|
|
||||||
|
### URL Parameters
|
||||||
|
|
||||||
|
Parameter | Description
|
||||||
|
--------- | -----------
|
||||||
|
repo | Repository to delete arch-repo from
|
||||||
|
arch | Specific architecture to remove package
|
||||||
|
|
||||||
|
## Remove repo
|
||||||
|
|
||||||
|
<aside class="notice">
|
||||||
|
|
||||||
|
This endpoint requests authentication.
|
||||||
|
|
||||||
|
</aside>
|
||||||
|
|
||||||
|
```shell
|
||||||
|
curl \
|
||||||
|
-H 'X-Api-Key: secret' \
|
||||||
|
-XDELETE \
|
||||||
|
https://example.com/vieter
|
||||||
|
```
|
||||||
|
|
||||||
|
This endpoint allows remove an entire repo.
|
||||||
|
|
||||||
|
### HTTP Request
|
||||||
|
|
||||||
|
`DELETE /:repo`
|
||||||
|
|
||||||
|
### URL Parameters
|
||||||
|
|
||||||
|
Parameter | Description
|
||||||
|
--------- | -----------
|
||||||
|
repo | Repository to delete
|
||||||
|
|
|
@ -66,3 +66,20 @@ pub fn (r &RepoGroupManager) remove_arch_repo(repo string, arch string) ?bool {
|
||||||
|
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// remove_repo removes a repo & its packages.
|
||||||
|
pub fn (r &RepoGroupManager) remove_repo(repo string) ?bool {
|
||||||
|
repo_dir := os.join_path_single(r.repos_dir, repo)
|
||||||
|
|
||||||
|
// If the repository doesn't exist yet, the result is automatically false
|
||||||
|
if !os.exists(repo_dir) {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
os.rmdir_all(repo_dir)?
|
||||||
|
|
||||||
|
pkg_dir := os.join_path_single(r.pkg_dir, repo)
|
||||||
|
os.rmdir_all(pkg_dir)?
|
||||||
|
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
|
@ -57,29 +57,6 @@ fn (mut app App) get_repo_file(repo string, arch string, filename string) web.Re
|
||||||
return app.file(full_path)
|
return app.file(full_path)
|
||||||
}
|
}
|
||||||
|
|
||||||
['/:repo/:arch/:pkg'; delete]
|
|
||||||
fn (mut app App) delete_package(repo string, arch string, pkg string) web.Result {
|
|
||||||
if !app.is_authorized() {
|
|
||||||
return app.json(http.Status.unauthorized, new_response('Unauthorized.'))
|
|
||||||
}
|
|
||||||
|
|
||||||
res := app.repo.remove_pkg_from_arch_repo(repo, arch, pkg, true) or {
|
|
||||||
app.lerror('Error while deleting package: $err.msg()')
|
|
||||||
|
|
||||||
return app.json(http.Status.internal_server_error, new_response('Failed to delete package.'))
|
|
||||||
}
|
|
||||||
|
|
||||||
if res {
|
|
||||||
app.linfo("Removed package '$pkg' from '$repo/$arch'")
|
|
||||||
|
|
||||||
return app.json(http.Status.ok, new_response('Package removed.'))
|
|
||||||
} else {
|
|
||||||
app.linfo("Tried removing package '$pkg' from '$repo/$arch', but it doesn't exist.")
|
|
||||||
|
|
||||||
return app.json(http.Status.not_found, new_response('Package not found.'))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// put_package handles publishing a package to a repository.
|
// put_package handles publishing a package to a repository.
|
||||||
['/:repo/publish'; post]
|
['/:repo/publish'; post]
|
||||||
fn (mut app App) put_package(repo string) web.Result {
|
fn (mut app App) put_package(repo string) web.Result {
|
|
@ -0,0 +1,77 @@
|
||||||
|
module server
|
||||||
|
|
||||||
|
import web
|
||||||
|
import net.http
|
||||||
|
import response { new_response }
|
||||||
|
|
||||||
|
// delete_package tries to remove the given package.
|
||||||
|
['/:repo/:arch/:pkg'; delete]
|
||||||
|
fn (mut app App) delete_package(repo string, arch string, pkg string) web.Result {
|
||||||
|
if !app.is_authorized() {
|
||||||
|
return app.json(http.Status.unauthorized, new_response('Unauthorized.'))
|
||||||
|
}
|
||||||
|
|
||||||
|
res := app.repo.remove_pkg_from_arch_repo(repo, arch, pkg, true) or {
|
||||||
|
app.lerror('Error while deleting package: $err.msg()')
|
||||||
|
|
||||||
|
return app.json(http.Status.internal_server_error, new_response('Failed to delete package.'))
|
||||||
|
}
|
||||||
|
|
||||||
|
if res {
|
||||||
|
app.linfo("Removed package '$pkg' from '$repo/$arch'")
|
||||||
|
|
||||||
|
return app.json(http.Status.ok, new_response('Package removed.'))
|
||||||
|
} else {
|
||||||
|
app.linfo("Tried removing package '$pkg' from '$repo/$arch', but it doesn't exist.")
|
||||||
|
|
||||||
|
return app.json(http.Status.not_found, new_response('Package not found.'))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// delete_arch_repo tries to remove the given arch-repo.
|
||||||
|
['/:repo/:arch'; delete]
|
||||||
|
fn (mut app App) delete_arch_repo(repo string, arch string) web.Result {
|
||||||
|
if !app.is_authorized() {
|
||||||
|
return app.json(http.Status.unauthorized, new_response('Unauthorized.'))
|
||||||
|
}
|
||||||
|
|
||||||
|
res := app.repo.remove_arch_repo(repo, arch) or {
|
||||||
|
app.lerror('Error while deleting arch-repo: $err.msg()')
|
||||||
|
|
||||||
|
return app.json(http.Status.internal_server_error, new_response('Failed to delete arch-repo.'))
|
||||||
|
}
|
||||||
|
|
||||||
|
if res {
|
||||||
|
app.linfo("Removed '$repo/$arch'")
|
||||||
|
|
||||||
|
return app.json(http.Status.ok, new_response('Arch-repo removed.'))
|
||||||
|
} else {
|
||||||
|
app.linfo("Tried removing '$repo/$arch', but it doesn't exist.")
|
||||||
|
|
||||||
|
return app.json(http.Status.not_found, new_response('Arch-repo not found.'))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// delete_repo tries to remove the given repo.
|
||||||
|
['/:repo'; delete]
|
||||||
|
fn (mut app App) delete_repo(repo string) web.Result {
|
||||||
|
if !app.is_authorized() {
|
||||||
|
return app.json(http.Status.unauthorized, new_response('Unauthorized.'))
|
||||||
|
}
|
||||||
|
|
||||||
|
res := app.repo.remove_repo(repo) or {
|
||||||
|
app.lerror('Error while deleting repo: $err.msg()')
|
||||||
|
|
||||||
|
return app.json(http.Status.internal_server_error, new_response('Failed to delete repo.'))
|
||||||
|
}
|
||||||
|
|
||||||
|
if res {
|
||||||
|
app.linfo("Removed '$repo'")
|
||||||
|
|
||||||
|
return app.json(http.Status.ok, new_response('Repo removed.'))
|
||||||
|
} else {
|
||||||
|
app.linfo("Tried removing '$repo', but it doesn't exist.")
|
||||||
|
|
||||||
|
return app.json(http.Status.not_found, new_response('Repo not found.'))
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue