Commit Graph

28 Commits

Author SHA1 Message Date
84eaaa1dbd Autoformat 2025-07-03 18:03:33 -05:00
c9dda5760c Prefix unused variables to quiet the linter 2025-07-03 17:56:07 -05:00
336f1453b9 Address most of the cargo-clippy lints 2025-07-03 17:56:07 -05:00
a0ba8e7ea8 Use pre Rust 1.81 compatible file-exists test
The function `std::fs::exists(...)` was stabilized in Rust 1.81, which
means it can't be used in the Debian Bookworm build. This patch swaps to
a compatible implementation leaning on the std::path::Path struct.

I'm both "upstreaming" a Debian-specific patch I had to make for the
package, and fixing the additional usage now in `main.rs`. There doesn't
seem to be any compelling reason to avoid using this function, so I
figure I should merge it into the base release.
2025-06-12 16:05:51 -05:00
88cafc096f Drop unused import in api/release.rs 2025-06-08 10:43:32 -05:00
8246337ae4 Delete the unit tests
They aren't useful anyway.
2025-06-08 00:06:59 -05:00
a5f6335b5f Add Attachment struct, new iface for create-rel
The Attachment struct exists, but this makes it glaringly obvious that
I've made a bad interface. The create_release_attachment should only
accept one file at a time and the loop over all files should happen in
main.rs

I've changed the signature, removed the loops, and wired in the newer
error handling routines. Needs fixing at call sites.
2025-06-07 23:50:16 -05:00
4a0addda67 Fold client-error-decode into a util function 2025-06-07 23:40:58 -05:00
0c70b584ba Interrogate create_release_attachment result 2025-06-07 23:30:56 -05:00
8a11c21b73 "Fix" the test case
I can't meaningfully unit test these things like this. I'll explore creating a tarball of a known Gitea configuration and using Docker to test against that. For now, just... kinda keep the test building.
2025-06-07 23:24:16 -05:00
d42cbbc1ec Drop unused imports 2025-06-07 23:22:48 -05:00
96e9ff4ce6 Interrogate create_release result more closely 2025-06-07 23:22:20 -05:00
6bdad44cc6 Interrogate list_releases result more closely 2025-06-07 23:15:39 -05:00
33f7fc6515 Fix the release_attachment file-existence loop
I only dealt with the scenario where I get back an Err(_) value. This is
not what happens when the file is missing, it's what happens when there
was some other problem interacting with the file. Instead, an Ok(bool)
is returned to indicate positive identification of the presence or
absence of the file.

Something should be done about the std::io::error::Error that gets
handed back. Since I'm not expecting to see it very often, nor to really
do anything about it, I'm just emitting an error message and panicking.
2025-06-04 18:20:23 -05:00
a08466c834 Test fix: uploading missing file shouldn't panic
There's a check in the create_release_attachment() function to ensure
the files exist before attempting to read them. Clearly, it isn't
working correctly.

I've dropped the `#[should_panic]` annotation and added a better Result
unpacking routine. It will report specific messages based on the result.
2025-06-04 14:03:17 -05:00
b8225cbc04 Test should-panic when uploading missing file
I'm not sure I want this code path to panic, actually... It should
probably return some error result so the app can print an error
diagonstic.

Oh well. That's a future problem. The end result is functionally
identical.
2025-06-04 11:41:24 -05:00
098f967174 Create a TestConfig struct to separate setup
I was about to copy-paste the entire body of the attach_file_exists test
function into the attach_file_missing function. The only difference is
the file that they upload -- or don't, in the second case. I could make
a try-file-upload function and pass it many different files, but I don't
think I need that. Instead, I'll separate the test setup from the test
sequence itself.
2025-06-04 11:34:46 -05:00
e7e8a2871b Add unit test for release_attachment function
I need some kind of automated testing, and Cargo has a test framework
built-in. This isn't the smartest test and depends upon another
test-less function.

Building a mocking environment is possible but means I'm trying to
emulate some behavior I don't fully understand -- that's why I need
tests in the first place. That path leads to tests for my tests and
that's stupid.

Instead, I'm having the test read config from the environment and hit a
real Gitea server. It's up to the user to ensure they have one.
2025-06-04 11:14:12 -05:00
e0c21fceaf Autoformat the whole thing
I've been putting this off because I don't want to have many small
formatting commits, and I don't have any kind of pre-commit hook to do
it for me. So here it is :v
2025-06-01 13:28:06 -05:00
fac607719d Move the CreateResult enum into the releases mod
This thing only needs to exist so Serde can decode the response JSON
properly. I'll either get a success, a missing token, *no body at all
which doesnt' make sense*, or some other ApiError text. In all cases,
the crate::Result is returned. This thing doesn't need to be public.
2025-06-01 11:07:11 -05:00
ee42e09620 Fix API response decoding -- sometimes it's an err
The reqwest might work, but the API still returns an error message.
I forgot about this old hack I had left around because I'm a big dummy.
2025-05-31 22:46:54 -05:00
6d95e54bc7 Transfer impl of release_attach to new home
A bunch of code has been dropped because it's no longer necessary -- yay for better data builder usage and real error handling!
2025-05-29 17:42:26 -05:00
4250deb419 Implement new fn create_release() 2025-05-28 20:27:52 -05:00
d3a0d3f67e Fix the URL path to actually go to the API 2025-05-28 19:27:32 -05:00
472e592400 Implement the new ::api::list_releases function 2025-05-27 23:03:09 -05:00
e19602925e Add release_attachment module
For whatever reason, releases and release attachments are separate modules in the Gitea codebase. I'm going to continue mirroring that structure for now.
2025-05-27 23:02:27 -05:00
84bd7fe990 Fix release API module's name 2025-05-27 20:52:23 -05:00
351c4902ae Create new module layout based on Gitea's own 2025-05-27 20:40:13 -05:00