~ruther/guix-exprs

35c11909fec0f1e91c0e60cadaa49a906b379682 — Rutherther 8 months ago
feat: add ripgrep-all
1 files changed, 338 insertions(+), 0 deletions(-)

A pkgs/ripgrep-all.scm
A  => pkgs/ripgrep-all.scm +338 -0
@@ 1,338 @@
(use-modules
 ((guix licenses) #:prefix license:)
 (guix utils)
 (guix packages)
 (guix download)
 (guix git-download)
 (guix gexp)
 (gnu packages crates-io)
 (guix build-system cargo)
 (gnu packages pkg-config)
 (gnu packages compression)
 (gnu packages video)
 (gnu packages haskell-xyz)
 (gnu packages pdf)
 (gnu packages rust-apps)
 (gnu packages terminals))

(define-public rust-tokio-tar-0.3
  (package
    (name "rust-tokio-tar")
    (version "0.3.1")
    (source
     (origin
       (method url-fetch)
       (uri (crate-uri "tokio-tar" version))
       (file-name (string-append name "-" version ".tar.gz"))
       (sha256
        (base32 "0xffvap4g7hlswk5daklk3jaqha6s6wxw72c24kmqgna23018mwx"))))
    (build-system cargo-build-system)
    (arguments
     `(#:skip-build? #t
                     #:cargo-inputs (("rust-filetime" ,rust-filetime-0.2)
                                     ("rust-futures-core" ,rust-futures-core-0.3)
                                     ("rust-libc" ,rust-libc-0.2)
                                     ("rust-redox-syscall" ,rust-redox-syscall-0.3)
                                     ("rust-tokio" ,rust-tokio-1)
                                     ("rust-tokio-stream" ,rust-tokio-stream-0.1)
                                     ("rust-xattr" ,rust-xattr-1))))
    (home-page "https://github.com/vorot93/tokio-tar")
    (synopsis
     "Rust implementation of an async TAR file reader and writer. This library does not
currently handle compression, but it is abstract over all I/O readers and
writers. Additionally, great lengths are taken to ensure that the entire
contents are never required to be entirely resident in memory all at once.")
    (description
     "This package provides a Rust implementation of an async TAR file reader and
writer.  This library does not currently handle compression, but it is abstract
over all I/O readers and writers.  Additionally, great lengths are taken to
ensure that the entire contents are never required to be entirely resident in
memory all at once.")
    (license (list license:expat license:asl2.0))))

(define-public rust-tokio-rusqlite-0.5
  (package
    (name "rust-tokio-rusqlite")
    (version "0.5.1")
    (source
     (origin
       (method url-fetch)
       (uri (crate-uri "tokio-rusqlite" version))
       (file-name (string-append name "-" version ".tar.gz"))
       (sha256
        (base32 "09xihas30j72dda5pi3hw5693y79ffby7bs9cpy8kw144iqmzk62"))))
    (build-system cargo-build-system)
    (arguments
     `(#:skip-build? #t
                     #:cargo-inputs (("rust-crossbeam-channel" ,rust-crossbeam-channel-0.5)
                                     ("rust-rusqlite" ,rust-rusqlite-0.31)
                                     ("rust-tokio" ,rust-tokio-1))))
    (home-page "https://github.com/programatik29/tokio-rusqlite")
    (synopsis "Asynchronous handle for rusqlite library")
    (description
     "This package provides Asynchronous handle for rusqlite library.")
    (license license:expat)))

(define-public rust-size-format-1
  (package
    (name "rust-size-format")
    (version "1.0.2")
    (source
     (origin
       (method url-fetch)
       (uri (crate-uri "size_format" version))
       (file-name (string-append name "-" version ".tar.gz"))
       (sha256
        (base32 "0fxjl0rc0x7yc14x885dh7jjf2jrlhpwf66akp3dxii246mzdmbf"))))
    (build-system cargo-build-system)
    (arguments
     `(#:skip-build? #t
                     #:cargo-inputs (("rust-generic-array" ,rust-generic-array-0.12)
                                     ("rust-num" ,rust-num-0.2))))
    (home-page "https://github.com/aticu/size_format")
    (synopsis "Allows for easier formatting of sizes")
    (description
     "This package provides Allows for easier formatting of sizes.")
    (license (list license:expat license:asl2.0))))

(define-public rust-pretty-bytes-0.2
  (package
    (name "rust-pretty-bytes")
    (version "0.2.2")
    (source
     (origin
       (method url-fetch)
       (uri (crate-uri "pretty-bytes" version))
       (file-name (string-append name "-" version ".tar.gz"))
       (sha256
        (base32 "05jkd1f824b93jh0jwfskba9hd70crvjz2nl1hf2xgqx5kfnx780"))))
    (build-system cargo-build-system)
    (arguments
     `(#:skip-build? #t
                     #:cargo-inputs (("rust-atty" ,rust-atty-0.2)
                                     ("rust-getopts" ,rust-getopts-0.2))))
    (home-page "https://github.com/banyan/rust-pretty-bytes")
    (synopsis "Convert bytes to a human readable string")
    (description
     "This package provides Convert bytes to a human readable string.")
    (license license:expat)))

(define-public rust-mime2ext-0.1
  (package
    (name "rust-mime2ext")
    (version "0.1.52")
    (source
     (origin
       (method url-fetch)
       (uri (crate-uri "mime2ext" version))
       (file-name (string-append name "-" version ".tar.gz"))
       (sha256
        (base32 "0w2cb2nmfnj7npkn1kvy1pcyknxdh7676mwqn5j0xm7bd585ma51"))))
    (build-system cargo-build-system)
    (arguments
     `(#:skip-build? #t))
    (home-page "https://github.com/blyxxyz/mime2ext")
    (synopsis "Given a mimetype, suggest a file extension")
    (description
     "This package provides Given a mimetype, suggest a file extension.")
    (license license:expat)))

(define-public rust-json-comments-0.2
  (package
    (name "rust-json-comments")
    (version "0.2.2")
    (source
     (origin
       (method url-fetch)
       (uri (crate-uri "json_comments" version))
       (file-name (string-append name "-" version ".tar.gz"))
       (sha256
        (base32 "0191qf6gaw3bcv13kx9xzwbfx71jv7gly5ds2l77bacvwpagxfwx"))))
    (build-system cargo-build-system)
    (arguments
     `(#:skip-build? #t))
    (home-page "https://github.com/tmccombs/json-comments-rs")
    (synopsis "Library to strip comments from JSON before parsing")
    (description
     "This package provides Library to strip comments from JSON before parsing.")
    (license license:asl2.0)))

(define-public rust-dyn-clonable-impl-0.9
  (package
    (name "rust-dyn-clonable-impl")
    (version "0.9.0")
    (source
     (origin
       (method url-fetch)
       (uri (crate-uri "dyn-clonable-impl" version))
       (file-name (string-append name "-" version ".tar.gz"))
       (sha256
        (base32 "1icrjdqiriiy6abxpsygyxylgxg2gq5j9z876pslqdrwazm413jm"))))
    (build-system cargo-build-system)
    (arguments
     `(#:skip-build? #t
                     #:cargo-inputs (("rust-proc-macro2" ,rust-proc-macro2-1)
                                     ("rust-quote" ,rust-quote-1)
                                     ("rust-syn" ,rust-syn-1))))
    (home-page "https://github.com/kardeiz/objekt-clonable")
    (synopsis "Attribute wrapper for dyn-clone")
    (description "This package provides Attribute wrapper for dyn-clone.")
    (license license:expat)))

(define-public rust-dyn-clonable-0.9
  (package
    (name "rust-dyn-clonable")
    (version "0.9.0")
    (source
     (origin
       (method url-fetch)
       (uri (crate-uri "dyn-clonable" version))
       (file-name (string-append name "-" version ".tar.gz"))
       (sha256
        (base32 "1m4zlp5phn44znxqj6dkjilxpr5kvyil2ldxp77658h7wvq354jf"))))
    (build-system cargo-build-system)
    (arguments
     `(#:skip-build? #t
                     #:cargo-inputs (("rust-dyn-clonable-impl" ,rust-dyn-clonable-impl-0.9)
                                     ("rust-dyn-clone" ,rust-dyn-clone-1))))
    (home-page "https://github.com/kardeiz/objekt-clonable")
    (synopsis "Attribute wrapper for dyn-clone")
    (description "This package provides Attribute wrapper for dyn-clone.")
    (license license:expat)))

(define-public rust-async-zip-0.0.12
  (package
    (name "rust-async-zip")
    (version "0.0.12")
    (source
     (origin
       (method url-fetch)
       (uri (crate-uri "async_zip" version))
       (file-name (string-append name "-" version ".tar.gz"))
       (sha256
        (base32 "1l1l6iyg8hkbnjilj50vndn9ln4l6dav10ywvawh6qlwvd15245j"))))
    (build-system cargo-build-system)
    (arguments
     `(#:skip-build? #t
                     #:cargo-inputs (("rust-async-compression" ,rust-async-compression-0.3)
                                     ("rust-chrono" ,rust-chrono-0.4)
                                     ("rust-crc32fast" ,rust-crc32fast-1)
                                     ("rust-log" ,rust-log-0.4)
                                     ("rust-pin-project" ,rust-pin-project-1)
                                     ("rust-thiserror" ,rust-thiserror-1)
                                     ("rust-tokio" ,rust-tokio-1))))
    (home-page "https://github.com/Majored/rs-async-zip")
    (synopsis "An asynchronous ZIP archive reading/writing crate")
    (description
     "This package provides An asynchronous ZIP archive reading/writing crate.")
    (license license:expat)))

(define-public ripgrep-all
  (let ((wrap-paths
         (list ffmpeg
               pandoc
               poppler
               ripgrep
               zip
               fzf)))
    (package
      (name "ripgrep-all")
      (version "0.10.6")
      (source
       (origin
         (method git-fetch)
         (uri (git-reference
               (url "https://github.com/phiresky/ripgrep-all")
               (commit (string-append "v" version))))
         (file-name (string-append name "-" version ".tar.gz"))
         (sha256
          (base32 "0ws0shf0y5z8wxaanlwjrpq604saffj1gr5jsfmvs6r2p4px3kly"))
         (snippet
          #~(begin (use-modules (guix build utils))
                   (substitute* "Cargo.toml"
                     (("0\\.30\\.0") "0.31.0")
                     (("git = .*,") ""))))))
      (build-system cargo-build-system)
      (native-inputs
       `(,pkg-config ,xz ,@wrap-paths))
      (inputs
       (list
        `(,zstd "lib")))
      (arguments
       (list
        #:phases
        #~(modify-phases %standard-phases
            (add-after 'install 'wrap-with-paths
              (lambda* (#:key native-inputs inputs outputs #:allow-other-keys)
                (let* ((out (assoc-ref outputs "out"))
                       (bin-dir (string-append out "/bin/"))
                       (wrap-bin-folders (map (lambda (pkg)
                                                (string-append pkg "/bin")) '#$wrap-paths))
                       (wrap-bin-path (string-join wrap-bin-folders ":")))
                  (for-each (lambda (bin)
                              (wrap-program bin
                                `("PATH" ":" prefix
                                  (,wrap-bin-path)))) (find-files bin-dir))))))
        #:cargo-test-flags
        `(list
          "--release" "--"
          "--skip=adapters::mbox::tests::mail_simple"
          "--skip=adapters::mbox::tests::mbox_simple"
          "--skip=adapters::mbox::tests::mbox_attachment")
        #:cargo-inputs
        `(("rust-anyhow" ,rust-anyhow-1)
          ("rust-async-compression" ,rust-async-compression-0.4)
          ("rust-async-stream" ,rust-async-stream-0.3)
          ("rust-async-trait" ,rust-async-trait-0.1)
          ("rust-async-zip" ,rust-async-zip-0.0.12)
          ("rust-bincode" ,rust-bincode-1)
          ("rust-bytes" ,rust-bytes-1)
          ("rust-clap" ,rust-clap-4)
          ("rust-crossbeam" ,rust-crossbeam-0.8)
          ("rust-crossbeam-channel" ,rust-crossbeam-channel-0.5)
          ("rust-derive-more" ,rust-derive-more-0.99)
          ("rust-directories-next" ,rust-directories-next-2)
          ("rust-dyn-clonable" ,rust-dyn-clonable-0.9)
          ("rust-dyn-clone" ,rust-dyn-clone-1)
          ("rust-encoding-rs" ,rust-encoding-rs-0.8)
          ("rust-encoding-rs-io" ,rust-encoding-rs-io-0.1)
          ("rust-env-logger" ,rust-env-logger-0.10)
          ("rust-glob" ,rust-glob-0.3)
          ("rust-json-comments" ,rust-json-comments-0.2)
          ("rust-lazy-static" ,rust-lazy-static-1)
          ("rust-log" ,rust-log-0.4)
          ("rust-mailparse" ,rust-mailparse-0.14)
          ("rust-memchr" ,rust-memchr-2)
          ("rust-mime2ext" ,rust-mime2ext-0.1)
          ("rust-paste" ,rust-paste-1)
          ("rust-path-clean" ,rust-path-clean-1)
          ("rust-pretty-bytes" ,rust-pretty-bytes-0.2)
          ("rust-regex" ,rust-regex-1)
          ("rust-rusqlite" ,rust-rusqlite-0.31)
          ("rust-schemars" ,rust-schemars-0.8)
          ("rust-serde" ,rust-serde-1)
          ("rust-serde-json" ,rust-serde-json-1)
          ("rust-size-format" ,rust-size-format-1)
          ("rust-structopt" ,rust-structopt-0.3)
          ("rust-tempfile" ,rust-tempfile-3)
          ("rust-tokio" ,rust-tokio-1)
          ("rust-tokio-rusqlite" ,rust-tokio-rusqlite-0.5)
          ("rust-tokio-stream" ,rust-tokio-stream-0.1)
          ("rust-tokio-tar" ,rust-tokio-tar-0.3)
          ("rust-tokio-util" ,rust-tokio-util-0.7)
          ("rust-tree-magic-mini" ,rust-tree-magic-mini-3))
        #:cargo-development-inputs
        `(("rust-async-recursion" ,rust-async-recursion-1)
          ("rust-ctor" ,rust-ctor-0.2)
          ("rust-pretty-assertions" ,rust-pretty-assertions-1)
          ("rust-tempfile" ,rust-tempfile-3)
          ("rust-tokio-test" ,rust-tokio-test-0.4))))
      (home-page "https://github.com/phiresky/ripgrep-all")
      (synopsis
       "rga: ripgrep, but also search in PDFs, E-Books, Office documents, zip, tar.gz, etc")
      (description
       "This package provides rga: ripgrep, but also search in PDFs, E-Books, Office documents, zip, tar.gz,
etc.")
      (license license:agpl3+))))

ripgrep-all

Do not follow this link