Commit Graph

29 Commits

Author SHA1 Message Date
Colin Walters 6940896c4e Add a `cap-std-apis` feature with open/create
I'm trying to make more use of `cap-std` in our stack, and
this will be a key enabling API.

Actually a notable side benefit of this is that we don't need
to teach the ostree C code itself to use `openat2`, we inherit
cap-std's setup.

All of the internal ostree code using the prior `openat()` should
continue to work.

I only did basic sanity checking of this; there may be bugs
in other APIs.
2022-05-06 12:53:57 -04:00
Colin Walters d1731d0ea8 repo: Add an API to read and parse directory metadata
The fact that the uid/gid/mode are big endian bit me when I was
trying to parse this "by hand" in ostree-rs-ext.

Let's add a footgun-free API for this.

(And yeah, we should probably do the same for the other variant types)
2022-05-06 12:53:57 -04:00
Luca BRUNO 83b03d2996 lib: run rustfmt 2022-05-06 12:53:57 -04:00
Luca BRUNO 810e86d4fb lib: fix new clippy warnings
This fixes the following warnings highlighted by clippy:
 * https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark
 * https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure
 * https://rust-lang.github.io/rust-clippy/master/index.html#single_component_path_imports
2022-05-06 12:53:57 -04:00
Manuel Stühn 2ab55beb98 add ObjectDetails-struct and use it in list_objects-function 2022-05-06 12:53:57 -04:00
Manuel Stühn 81ea92566f update result type 2022-05-06 12:53:57 -04:00
Manuel Stühn 16a4dddd90 implement list_objects-function an test 2022-05-06 12:53:57 -04:00
Colin Walters 440d872f68 repo: Add `require_rev` method
The `resolve_rev` C method should really have been
`resolve_rev_optional` from the start - it is more obviously wrong
in Rust because the input parameter `allows_noent` controls
whether the returned `Option` can ever be `None`.

I debated adding this to the C bindings, and may still do so,
but eh it's faster to write + ship in Rust, and the future of ostree is
Rust anyways.
2022-05-06 12:53:57 -04:00
Colin Walters f8852ca945 repo: Add `auto_transaction` and `TransactionGuard`
This gives auto-cancelling semantics on `Drop`, plus a nicer
`.commit()` method on the transaction.

Matches the currently private `_OstreeRepoAutoTransaction` in the C
library.
2022-05-06 12:53:57 -04:00
Colin Walters 955f0ddb9d repo: Expose dfd_as_file()
The `dfd()` API returns just an integer.  Add a safe API that
makes a copy of the fd.  What we really want here is `BorrowedFd` from
https://github.com/rust-lang/rfcs/blob/master/text/3128-io-safety.md
but that isn't here yet.
2022-05-06 12:53:57 -04:00
Colin Walters 9b57bda607 Use glib-sys via re-exported `glib::ffi` (and similar for gio)
In general only `-sys` crates should depend on other `-sys`
crates.  IOW for us, `ostree-sys` depends on `glib-sys`.

By using the re-export, we avoid needing to keep a version lock
between `glib` and `glib-sys` in our main crate.  And similar
is true of our higher level reverse dependencies (e.g. `ostree-rs-ext`).

Also weaken our dependency to `0.14` as that's clearer.
2022-05-06 12:53:57 -04:00
Colin Walters abec2a9e34 Add more documentation for --features=v2021_3
My previous pass was at the default feature level.
2022-05-06 12:53:57 -04:00
Colin Walters 48e0d334b8 Deny unused results, warn on missing docs (except auto/)
And add basic docs for our manually implemented functions.
2022-05-06 12:53:57 -04:00
Colin Walters 8a5ac02822 Update to glib 0.14
An intimidating spam of compiler errors at the start, but the
biggest was handling the new convention of `ostree_sys::` => `ffi::`.

This will require a semver bump of course.
2022-05-06 12:53:56 -04:00
Felix Krull 3290d5c2d1 Rewrite handwritten futures functions 2022-05-06 12:53:55 -04:00
Felix Krull 3e70feb75f Start taking out futures feature 2022-05-06 12:53:55 -04:00
Felix Krull 7f3bd56d0d Implement ostree::checksum_file 2022-05-06 12:53:54 -04:00
Felix Krull 4cd981d01b Use pointer coercion instead of messing with -sys 2022-05-06 12:53:54 -04:00
Felix Krull e424800f05 Implement Repo::write_metadata_async 2022-05-06 12:53:54 -04:00
Felix Krull 8002e06e25 Implement Repo::write_content_async 2022-05-06 12:53:54 -04:00
Felix Krull bb4e0c5978 Implement Repo::write_metadata 2022-05-06 12:53:54 -04:00
Felix Krull 78a14d15a3 Implement Repo::write_content 2022-05-06 12:53:54 -04:00
Felix Krull b5fba187ff Fix clippy issues 2022-05-06 12:53:54 -04:00
Felix Krull 1e744239cb Document Repo::new_for_path 2022-05-06 12:53:54 -04:00
Felix Krull 66cf9b288f Move extra Repo methods to plain impl as well 2022-05-06 12:53:54 -04:00
Felix Krull 60960612a3 Reorganise test code
This way I don't need to differentiate between tests for generated code
and tests for hand-written code.
2022-05-06 12:53:53 -04:00
Felix Krull 26b5729c53 Add some tests for Repo 2022-05-06 12:53:53 -04:00
Felix Krull 13c61a9329 Fix features in Repo 2022-05-06 12:53:53 -04:00
Felix Krull ced47cbb26 Move main crate into repo root 2022-05-06 12:53:53 -04:00