| # Copyright 2023-2024 Gentoo Authors |
| # Distributed under the terms of the GNU General Public License v2 |
| |
| EAPI=8 |
| |
| CRATES=" |
| addr2line@0.21.0 |
| adler@1.0.2 |
| aead@0.5.2 |
| ahash@0.8.11 |
| aho-corasick@1.1.2 |
| allocator-api2@0.2.16 |
| android-tzdata@0.1.1 |
| android_system_properties@0.1.5 |
| anstream@0.6.13 |
| anstyle-parse@0.2.3 |
| anstyle-query@1.0.2 |
| anstyle-wincon@3.0.2 |
| anstyle@1.0.6 |
| anyhow@1.0.80 |
| arc-swap@1.7.0 |
| argon2@0.5.3 |
| async-trait@0.1.77 |
| atoi@2.0.0 |
| atomic-write-file@0.1.3 |
| atomic@0.5.3 |
| autocfg@1.1.0 |
| axum-core@0.4.3 |
| axum-server@0.6.0 |
| axum@0.7.4 |
| backtrace@0.3.69 |
| base64@0.13.1 |
| base64@0.21.7 |
| base64ct@1.6.0 |
| beef@0.5.2 |
| bitflags@1.3.2 |
| bitflags@2.4.2 |
| blake2@0.10.6 |
| blake2@0.9.2 |
| block-buffer@0.10.4 |
| block@0.1.6 |
| bumpalo@3.15.3 |
| bytecount@0.6.7 |
| byteorder@1.5.0 |
| bytes@1.5.0 |
| cassowary@0.3.0 |
| cc@1.0.89 |
| cfg-if@1.0.0 |
| cfg_aliases@0.1.1 |
| chacha20@0.8.2 |
| chacha20@0.9.1 |
| chrono@0.4.34 |
| cipher@0.3.0 |
| cipher@0.4.4 |
| clap@4.5.1 |
| clap_builder@4.5.1 |
| clap_complete@4.5.1 |
| clap_complete_nushell@4.5.1 |
| clap_derive@4.5.0 |
| clap_lex@0.7.0 |
| cli-clipboard@0.4.0 |
| clipboard-win@4.5.0 |
| colorchoice@1.0.0 |
| colored@2.1.0 |
| config@0.13.4 |
| console@0.15.8 |
| const-oid@0.9.6 |
| core-foundation-sys@0.8.6 |
| core-foundation@0.9.4 |
| cpufeatures@0.2.12 |
| crc-catalog@2.4.0 |
| crc@3.0.1 |
| crossbeam-deque@0.8.5 |
| crossbeam-epoch@0.9.18 |
| crossbeam-queue@0.3.11 |
| crossbeam-utils@0.8.19 |
| crossterm@0.27.0 |
| crossterm_winapi@0.9.1 |
| crypto-common@0.1.6 |
| crypto-mac@0.8.0 |
| crypto_secretbox@0.1.1 |
| curve25519-dalek-derive@0.1.1 |
| curve25519-dalek@4.1.2 |
| darling@0.20.8 |
| darling_core@0.20.8 |
| darling_macro@0.20.8 |
| der@0.7.8 |
| deranged@0.3.11 |
| derive-new@0.5.9 |
| diff@0.1.13 |
| digest@0.10.7 |
| digest@0.9.0 |
| directories@5.0.1 |
| dirs-sys@0.4.1 |
| dirs@5.0.1 |
| dotenvy@0.15.7 |
| downcast-rs@1.2.0 |
| ed25519-dalek@2.1.1 |
| ed25519@2.2.3 |
| either@1.10.0 |
| encode_unicode@0.3.6 |
| encoding_rs@0.8.33 |
| env_filter@0.1.0 |
| env_logger@0.11.3 |
| equivalent@1.0.1 |
| errno@0.3.8 |
| error-code@2.3.1 |
| etcetera@0.8.0 |
| event-listener@2.5.3 |
| eyre@0.6.12 |
| fastrand@2.0.1 |
| fiat-crypto@0.2.6 |
| filedescriptor@0.8.2 |
| finl_unicode@1.2.0 |
| fixedbitset@0.4.2 |
| flume@0.11.0 |
| fnv@1.0.7 |
| form_urlencoded@1.2.1 |
| fs-err@2.11.0 |
| futures-channel@0.3.30 |
| futures-core@0.3.30 |
| futures-executor@0.3.30 |
| futures-intrusive@0.5.0 |
| futures-io@0.3.30 |
| futures-macro@0.3.30 |
| futures-sink@0.3.30 |
| futures-task@0.3.30 |
| futures-util@0.3.30 |
| futures@0.3.30 |
| fuzzy-matcher@0.3.7 |
| generic-array@0.14.7 |
| gethostname@0.2.3 |
| getrandom@0.2.12 |
| gimli@0.28.1 |
| h2@0.3.24 |
| h2@0.4.2 |
| hashbrown@0.12.3 |
| hashbrown@0.13.1 |
| hashbrown@0.14.3 |
| hashlink@0.8.4 |
| heck@0.4.1 |
| hermit-abi@0.3.9 |
| hex@0.4.3 |
| hkdf@0.12.4 |
| hmac@0.12.1 |
| home@0.5.9 |
| http-body-util@0.1.0 |
| http-body@0.4.6 |
| http-body@1.0.0 |
| http@0.2.12 |
| http@1.1.0 |
| httparse@1.8.0 |
| httpdate@1.0.3 |
| humantime@2.1.0 |
| hyper-rustls@0.24.2 |
| hyper-util@0.1.3 |
| hyper@0.14.28 |
| hyper@1.2.0 |
| iana-time-zone-haiku@0.1.2 |
| iana-time-zone@0.1.60 |
| ident_case@1.0.1 |
| idna@0.5.0 |
| indenter@0.3.3 |
| indexmap@1.9.3 |
| indexmap@2.2.5 |
| indicatif@0.17.8 |
| indoc@2.0.4 |
| inout@0.1.3 |
| instant@0.1.12 |
| interim@0.1.1 |
| ipnet@2.9.0 |
| iso8601@0.4.2 |
| itertools@0.12.1 |
| itoa@1.0.10 |
| js-sys@0.3.69 |
| lazy_static@1.4.0 |
| libc@0.2.153 |
| libm@0.2.8 |
| libredox@0.0.1 |
| libsqlite3-sys@0.27.0 |
| linux-raw-sys@0.4.13 |
| lock_api@0.4.11 |
| log@0.4.21 |
| logos-codegen@0.13.0 |
| logos-derive@0.13.0 |
| logos@0.13.0 |
| lru@0.12.3 |
| mach2@0.4.2 |
| malloc_buf@0.0.6 |
| matchers@0.1.0 |
| matchit@0.7.3 |
| md-5@0.10.6 |
| memchr@2.7.1 |
| memoffset@0.6.5 |
| metrics-exporter-prometheus@0.12.2 |
| metrics-macros@0.7.1 |
| metrics-util@0.15.1 |
| metrics@0.21.1 |
| mime@0.3.17 |
| minimal-lexical@0.2.1 |
| miniz_oxide@0.7.2 |
| minspan@0.1.1 |
| mio@0.8.11 |
| nix@0.24.3 |
| nix@0.28.0 |
| nom@7.1.3 |
| ntapi@0.4.1 |
| nu-ansi-term@0.46.0 |
| nu-ansi-term@0.49.0 |
| num-bigint-dig@0.8.4 |
| num-bigint@0.2.6 |
| num-complex@0.2.4 |
| num-conv@0.1.0 |
| num-integer@0.1.46 |
| num-iter@0.1.44 |
| num-rational@0.2.4 |
| num-traits@0.2.18 |
| num@0.2.1 |
| num_cpus@1.16.0 |
| num_threads@0.1.7 |
| number_prefix@0.4.0 |
| objc-foundation@0.1.1 |
| objc@0.2.7 |
| objc_id@0.1.1 |
| object@0.32.2 |
| once_cell@1.19.0 |
| opaque-debug@0.3.1 |
| openssl-probe@0.1.5 |
| option-ext@0.2.0 |
| os_pipe@1.1.5 |
| overload@0.1.1 |
| parking_lot@0.12.1 |
| parking_lot_core@0.9.9 |
| parse_duration@2.1.1 |
| password-hash@0.5.0 |
| paste@1.0.14 |
| pathdiff@0.2.1 |
| pbkdf2@0.11.0 |
| pem-rfc7468@0.7.0 |
| percent-encoding@2.3.1 |
| petgraph@0.6.4 |
| pin-project-internal@1.1.5 |
| pin-project-lite@0.2.13 |
| pin-project@1.1.5 |
| pin-utils@0.1.0 |
| pkcs1@0.7.5 |
| pkcs8@0.10.2 |
| pkg-config@0.3.30 |
| platforms@3.3.0 |
| poly1305@0.8.0 |
| portable-atomic@1.6.0 |
| powerfmt@0.2.0 |
| ppv-lite86@0.2.17 |
| pretty_assertions@1.4.0 |
| proc-macro2@1.0.78 |
| quanta@0.11.1 |
| quote@1.0.35 |
| rand@0.8.5 |
| rand_chacha@0.3.1 |
| rand_core@0.6.4 |
| ratatui@0.25.0 |
| raw-cpuid@10.7.0 |
| rayon-core@1.12.1 |
| rayon@1.9.0 |
| redox_syscall@0.4.1 |
| redox_users@0.4.4 |
| regex-automata@0.1.10 |
| regex-automata@0.4.6 |
| regex-syntax@0.6.29 |
| regex-syntax@0.8.2 |
| regex@1.10.3 |
| reqwest@0.11.24 |
| ring@0.17.8 |
| rmp@0.8.12 |
| rpassword@7.3.1 |
| rsa@0.9.6 |
| rtoolbox@0.0.2 |
| runtime-format@0.1.3 |
| rustc-demangle@0.1.23 |
| rustc-hash@1.1.0 |
| rustc_version@0.4.0 |
| rustix@0.38.31 |
| rustls-native-certs@0.6.3 |
| rustls-pemfile@1.0.4 |
| rustls-pemfile@2.1.1 |
| rustls-pki-types@1.3.1 |
| rustls-webpki@0.101.7 |
| rustls@0.21.10 |
| rustversion@1.0.14 |
| rusty_paserk@0.3.0 |
| rusty_paseto@0.6.1 |
| ryu@1.0.17 |
| salsa20@0.10.2 |
| schannel@0.1.23 |
| scopeguard@1.2.0 |
| sct@0.7.1 |
| security-framework-sys@2.9.1 |
| security-framework@2.9.2 |
| semver@1.0.22 |
| serde@1.0.197 |
| serde_derive@1.0.197 |
| serde_json@1.0.114 |
| serde_path_to_error@0.1.15 |
| serde_regex@1.1.0 |
| serde_urlencoded@0.7.1 |
| serde_with@3.6.1 |
| serde_with_macros@3.6.1 |
| serde_yaml@0.9.32 |
| sha1@0.10.6 |
| sha2@0.10.8 |
| sharded-slab@0.1.7 |
| shellexpand@3.1.0 |
| signal-hook-mio@0.2.3 |
| signal-hook-registry@1.4.1 |
| signal-hook@0.3.17 |
| signature@2.2.0 |
| sketches-ddsketch@0.2.2 |
| slab@0.4.9 |
| smallvec@1.13.1 |
| socket2@0.5.6 |
| spin@0.5.2 |
| spin@0.9.8 |
| spki@0.7.3 |
| sql-builder@3.1.1 |
| sqlformat@0.2.3 |
| sqlx-core@0.7.3 |
| sqlx-macros-core@0.7.3 |
| sqlx-macros@0.7.3 |
| sqlx-mysql@0.7.3 |
| sqlx-postgres@0.7.3 |
| sqlx-sqlite@0.7.3 |
| sqlx@0.7.3 |
| stability@0.1.1 |
| str-buf@1.0.6 |
| stringprep@0.1.4 |
| strsim@0.10.0 |
| strsim@0.11.0 |
| strum@0.25.0 |
| strum_macros@0.25.3 |
| subtle@2.5.0 |
| syn@1.0.109 |
| syn@2.0.52 |
| sync_wrapper@0.1.2 |
| sysinfo@0.30.6 |
| system-configuration-sys@0.5.0 |
| system-configuration@0.5.1 |
| tempfile@3.10.1 |
| thiserror-impl@1.0.57 |
| thiserror@1.0.57 |
| thread_local@1.1.8 |
| time-core@0.1.2 |
| time-macros@0.2.17 |
| time@0.3.34 |
| tiny-bip39@1.0.0 |
| tinyvec@1.6.0 |
| tinyvec_macros@0.1.1 |
| tokio-macros@2.2.0 |
| tokio-rustls@0.24.1 |
| tokio-stream@0.1.14 |
| tokio-util@0.7.10 |
| tokio@1.36.0 |
| toml@0.5.11 |
| tower-http@0.5.2 |
| tower-layer@0.3.2 |
| tower-service@0.3.2 |
| tower@0.4.13 |
| tracing-attributes@0.1.27 |
| tracing-core@0.1.32 |
| tracing-log@0.2.0 |
| tracing-subscriber@0.3.18 |
| tracing-tree@0.3.0 |
| tracing@0.1.40 |
| tree_magic_mini@3.0.3 |
| try-lock@0.2.5 |
| typed-builder-macro@0.18.1 |
| typed-builder@0.18.1 |
| typenum@1.17.0 |
| unicode-bidi@0.3.15 |
| unicode-ident@1.0.12 |
| unicode-normalization@0.1.23 |
| unicode-segmentation@1.11.0 |
| unicode-width@0.1.11 |
| unicode_categories@0.1.1 |
| universal-hash@0.5.1 |
| unsafe-libyaml@0.2.10 |
| untrusted@0.9.0 |
| url@2.5.0 |
| urlencoding@2.1.3 |
| utf8parse@0.2.1 |
| uuid@1.7.0 |
| valuable@0.1.0 |
| vcpkg@0.2.15 |
| version_check@0.9.4 |
| want@0.3.1 |
| wasi@0.11.0+wasi-snapshot-preview1 |
| wasite@0.1.0 |
| wasm-bindgen-backend@0.2.92 |
| wasm-bindgen-futures@0.4.42 |
| wasm-bindgen-macro-support@0.2.92 |
| wasm-bindgen-macro@0.2.92 |
| wasm-bindgen-shared@0.2.92 |
| wasm-bindgen@0.2.92 |
| wayland-client@0.29.5 |
| wayland-commons@0.29.5 |
| wayland-protocols@0.29.5 |
| wayland-scanner@0.29.5 |
| wayland-sys@0.29.5 |
| web-sys@0.3.69 |
| webpki-roots@0.25.4 |
| whoami@1.5.0 |
| winapi-i686-pc-windows-gnu@0.4.0 |
| winapi-wsapoll@0.1.1 |
| winapi-x86_64-pc-windows-gnu@0.4.0 |
| winapi@0.3.9 |
| windows-core@0.52.0 |
| windows-sys@0.48.0 |
| windows-sys@0.52.0 |
| windows-targets@0.48.5 |
| windows-targets@0.52.4 |
| windows@0.52.0 |
| windows_aarch64_gnullvm@0.48.5 |
| windows_aarch64_gnullvm@0.52.4 |
| windows_aarch64_msvc@0.48.5 |
| windows_aarch64_msvc@0.52.4 |
| windows_i686_gnu@0.48.5 |
| windows_i686_gnu@0.52.4 |
| windows_i686_msvc@0.48.5 |
| windows_i686_msvc@0.52.4 |
| windows_x86_64_gnu@0.48.5 |
| windows_x86_64_gnu@0.52.4 |
| windows_x86_64_gnullvm@0.48.5 |
| windows_x86_64_gnullvm@0.52.4 |
| windows_x86_64_msvc@0.48.5 |
| windows_x86_64_msvc@0.52.4 |
| winreg@0.50.0 |
| wl-clipboard-rs@0.7.0 |
| x11-clipboard@0.7.1 |
| x11rb-protocol@0.10.0 |
| x11rb@0.10.1 |
| xml-rs@0.8.19 |
| yansi@0.5.1 |
| zerocopy-derive@0.7.32 |
| zerocopy@0.7.32 |
| zeroize@1.7.0 |
| zeroize_derive@1.4.2 |
| " |
| |
| inherit cargo shell-completion systemd readme.gentoo-r1 |
| |
| DESCRIPTION="Shell history manager supporting encrypted synchronisation" |
| HOMEPAGE="https://atuin.sh https://github.com/atuinsh/atuin" |
| SRC_URI=" |
| https://github.com/atuinsh/${PN}/archive/refs/tags/v${PV}.tar.gz -> ${P}.tar.gz |
| ${CARGO_CRATE_URIS} |
| " |
| |
| LICENSE="MIT" |
| # Dependent crate licenses |
| # - openssl for ring crate |
| LICENSE+=" Apache-2.0 BSD Boost-1.0 ISC MIT MPL-2.0 Unicode-DFS-2016 openssl" |
| SLOT="0" |
| KEYWORDS="amd64 ~arm64" |
| IUSE="+client server test +sync" |
| RESTRICT="!test? ( test )" |
| REQUIRED_USE=" |
| || ( client server ) |
| sync? ( client ) |
| test? ( client server sync ) |
| " |
| RDEPEND="server? ( acct-user/atuin )" |
| DEPEND="test? ( dev-db/postgresql )" |
| BDEPEND=">=virtual/rust-1.71.0" |
| |
| QA_FLAGS_IGNORED="usr/bin/${PN}" |
| |
| DOCS=( |
| CONTRIBUTING.md |
| CONTRIBUTORS |
| README.md |
| ) |
| |
| src_configure() { |
| local myfeatures=( |
| $(usev client) |
| $(usev server) |
| $(usev sync) |
| ) |
| cargo_src_configure --no-default-features |
| } |
| |
| src_compile() { |
| cargo_src_compile |
| |
| ATUIN_BIN="target/$(usex debug debug release)/${PN}" |
| |
| # Prepare shell completion generation |
| mkdir completions || die |
| local shell |
| for shell in bash fish zsh; do |
| "${ATUIN_BIN}" gen-completions \ |
| -s ${shell} \ |
| -o completions \ |
| || die |
| done |
| |
| mkdir shell-init || die |
| for shell in bash fish zsh; do |
| "${ATUIN_BIN}" init ${shell} > shell-init/${shell} || die |
| done |
| } |
| |
| src_test() { |
| local postgres_dir="${T}"/postgres |
| initdb "${postgres_dir}" || die |
| |
| local port=11123 |
| # -h '' → only socket connections allowed. |
| postgres -D "${postgres_dir}" \ |
| -k "${postgres_dir}" \ |
| -p "${port}" & |
| local postgres_pid=${!} |
| |
| local timeout_secs=30 |
| timeout "${timeout_secs}" bash -c \ |
| 'until printf "" >/dev/tcp/${0}/${1} 2>> "${T}/portlog"; do sleep 1; done' \ |
| localhost "${port}" || die "Timeout waiting for postgres port ${port} to become available" |
| |
| psql -h localhost -p "${port}" -d postgres <<-EOF || die "Failed to configure postgres" |
| create database atuin; |
| create user atuin with encrypted password 'pass'; |
| grant all privileges on database atuin to atuin; |
| \connect atuin |
| grant all on schema public to atuin; |
| EOF |
| |
| # Subshell so that postgres_pid is in scope when the trap is executed. |
| ( |
| cleanup() { |
| kill "${postgres_pid}" || die "failed to send SIGTERM to postgres" |
| } |
| trap cleanup EXIT |
| |
| ATUIN_DB_URI="postgres://atuin:pass@localhost:${port}/atuin" cargo_src_test |
| ) |
| } |
| |
| src_install() { |
| exeinto "/usr/bin" |
| doexe "${ATUIN_BIN}" |
| |
| if use server; then |
| systemd_dounit "${FILESDIR}/atuin.service" |
| fi |
| |
| dodoc -r "${DOCS[@]}" |
| |
| newbashcomp "completions/${PN}.bash" "${PN}" |
| dozshcomp "completions/_${PN}" |
| dofishcomp "completions/${PN}.fish" |
| |
| insinto "/usr/share/${PN}" |
| doins -r shell-init |
| |
| local DOC_CONTENTS="Gentoo installs atuin's shell-init code under |
| /usr/share/atuin/shell-init/. |
| Therefore, instead of using, e.g., 'eval \"\$(atuin init zsh)\"' in |
| your .zshrc you can simply put \"source /usr/share/atuin/shell-init/zsh\" |
| there, which avoids the cost of forking a process." |
| readme.gentoo_create_doc |
| } |
| |
| pkg_postinst() { |
| readme.gentoo_print_elog |
| } |