diff mbox series

[bug#66694] gnu: Add ani-cli

Message ID 878r7me3xe.fsf@nckx
State New
Headers show
Series [bug#66694] gnu: Add ani-cli | expand

Commit Message

Tobias Geerinckx-Rice Oct. 28, 2023, 10:46 p.m. UTC
Hi Jaeme,

Thanks for submitting this package!  I've attached my revision 
below.

We don't sign off on our own patches in Guix.  Our Signed-off-by 
does not have the same DCO meaning as it does for, e.g., Linux. 
Ours is merely a stamp of approval by a committer.

+(define-public ani-cli
+  (package
+    (name "ani-cli")
+    (version "4.6")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/pystardust/ani-cli")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 
"1ni9pzjb5qh87iz7c8252bx79qadr1qx6jnkqvvjcqrchh7q473a"))))
+    (build-system copy-build-system)

So…  uhm.

Apparently the copy-build-system doesn't acknowledge the existence 
of cross compilation, like, at all?

This is a bug in Guix, not you, but here I switched to the 
gnu-build-system to avoid it.

+                       (wrap-program (string-append #$output 
"/bin/ani-cli")
+                         `("PATH" ":" prefix
+                           ,(map bin
+                                 (list "aria2c"
+                                       "curl"
+                                       "ffmpeg"
+                                       "fzf"
+                                       "grep"
+                                       "mpv"
+                                       "sed"
+                                       "uname"
+                                       "yt-dlp")))))))))

I added "tput" to this list.  While the script appears to be 
usable without it, it spits out ugly errors and might misbehave.

+    (home-page "https://github.com/pystardust/ani-cli")
+    (synopsis "CLI to browse and watch anime")
+    (description
+     "ani-cli is a command-line interface (CLI) to browse and 
watch anime.  It
+provides an easy way to stream shows using allanime as a source. 
There are
+different features such as episode browsing, history tracking, 
streaming at
+multiple resolutions and much more depending on what programs the 
user has
+installed.")

I took the liberty of rewriting this a bit, including my previous 
@uref suggestion.

+    (inputs (list aria2
+                  coreutils
+                  curl
+                  ffmpeg
+                  fzf
+                  mpv
+                  yt-dlp))

Besides ncurses for tput, I added grep and sed for the wrapper. 
This will matter when the package cross-builds: you don't want the 
script calling the build-time ‘native’ grep at run time.

I also added bash-minimal at ‘guix lint’'s suggestion.

We conventionally put fields in this order:

  source
  build-system
  arguments
  native-inputs
  inputs
  propagated-inputs
  home-page
  synopsis
  description
  license

This is not a hard rule and you'll find variants, but I moved the 
inputs to their conventional location above the Metadata Zone.

+    (license license:gpl3)))

As noted in #guix, I changed this to GPL3+ due to the ‘or (at your 
option) any later version’ wording.

Here's a random Deep Guix Thing that I'm too tired to explain 
further: because this script invokes curl, and to avoid 
propagating curl, I added a copy of one of our curl package's 
native-search-paths.  This makes the script work inside a --pure 
guix shell, as long as you include nss-certs.

I do wonder: just how legal is this script, and the one Web site 
to which it's tightly bound?

Kind regards,

T G-R
diff mbox series

Patch

From e35b26790407b8019bee2f824f03f31c173e3507 Mon Sep 17 00:00:00 2001
Message-ID: <e35b26790407b8019bee2f824f03f31c173e3507.1697932801.git.me@tobias.gr>
From: jaeme <jaeme@runbox.com>
Date: Thu, 26 Oct 2023 19:48:51 -0400
Subject: [PATCH] gnu: Add ani-cli.

* gnu/packages/video.scm (ani-cli): New variable.

Signed-off-by: Tobias Geerinckx-Rice <me@tobias.gr>
Change-Id: I21ea258f164285dea0d46379dff120b105803dd0
---
 gnu/packages/video.scm | 75 ++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 75 insertions(+)

diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm
index b4dd7c27ae..cdce376d3e 100644
--- a/gnu/packages/video.scm
+++ b/gnu/packages/video.scm
@@ -66,6 +66,7 @@ 
 ;;; Copyright © 2023 Ott Joon <oj@vern.cc>
 ;;; Copyright © 2023 Dominik Delgado Steuter <dds@disroot.org>
 ;;; Copyright © 2023 Saku Laesvuori <saku@laesvuori.fi>
+;;; Copyright © 2023 Jaeme Sifat <jaeme@runbox.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -116,6 +117,7 @@  (define-module (gnu packages video)
   #:use-module (gnu packages base)
   #:use-module (gnu packages bash)
   #:use-module (gnu packages bison)
+  #:use-module (gnu packages bittorrent)
   #:use-module (gnu packages boost)
   #:use-module (gnu packages cdrom)
   #:use-module (gnu packages check)
@@ -194,6 +196,7 @@  (define-module (gnu packages video)
   #:use-module (gnu packages sqlite)
   #:use-module (gnu packages ssh)
   #:use-module (gnu packages swig)
+  #:use-module (gnu packages terminals)
   #:use-module (gnu packages texinfo)
   #:use-module (gnu packages textutils)
   #:use-module (gnu packages tls)
@@ -209,6 +212,78 @@  (define-module (gnu packages video)
   #:use-module (gnu packages xml)
   #:use-module (gnu packages xorg))
 
+(define-public ani-cli
+  (package
+    (name "ani-cli")
+    (version "4.6")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/pystardust/ani-cli")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1ni9pzjb5qh87iz7c8252bx79qadr1qx6jnkqvvjcqrchh7q473a"))))
+    (build-system gnu-build-system)
+    (arguments
+     (list
+      #:tests? #f                       ;no test suite
+      #:phases
+      #~(modify-phases %standard-phases
+          (delete 'configure)           ;nothing to configure
+          (delete 'build)               ;nothing to build
+          (replace 'install
+            (lambda _
+              (install-file "ani-cli" (string-append #$output "/bin"))
+              (install-file "ani-cli.1"
+                            (string-append #$output "/share/man/man1"))))
+          (add-after 'install 'wrap
+            (lambda* (#:key inputs #:allow-other-keys)
+              (define (bin command)
+                (dirname (search-input-file
+                          inputs (string-append "bin/" command))))
+              (wrap-program (string-append #$output "/bin/ani-cli")
+                `("PATH" ":" prefix
+                  ,(map bin (list "aria2c"
+                                  "curl"
+                                  "ffmpeg"
+                                  "fzf"
+                                  "grep"
+                                  "mpv"
+                                  "sed"
+                                  "tput"
+                                  "uname"
+                                  "yt-dlp")))))))))
+    (inputs (list aria2
+                  bash-minimal
+                  coreutils
+                  curl
+                  ffmpeg
+                  fzf
+                  grep
+                  mpv
+                  ncurses
+                  sed
+                  yt-dlp))
+    (native-search-paths
+     ;; This was copied from the curl package.
+     (list (search-path-specification
+            (variable "CURL_CA_BUNDLE")
+            (file-type 'regular)
+            (separator #f)              ;single entry
+            (files '("etc/ssl/certs/ca-certificates.crt")))))
+    (home-page "https://github.com/pystardust/ani-cli")
+    (synopsis "Browse and watch anime from the command line")
+    (description
+     "ani-cli is a @acronym{CLI, command-line interface} to browse and watch
+anime by streaming videos from @uref{https://allanime.to,All Anime}.
+
+There are different features such as episode browsing, history tracking,
+streaming at multiple resolutions, and much more, depending on what programs the
+user has installed.")
+    (license license:gpl3+)))
+
 (define-public transcode
   (package
     (name "transcode")

base-commit: 4dfbc536689b07e56aead3dd864b8af54613d091
prerequisite-patch-id: 0f2ea4144d953a8626c7a6aaede0a6797ec9c5f9
prerequisite-patch-id: 658b58a6e368317e83f8b511bebd9b3ae0b7b6f8
prerequisite-patch-id: 95d6d324d080671cb1ac94ff17e73109f54b7977
prerequisite-patch-id: 7e6e4ab87b52996e9bb6cd8595889f21ba87e9fe
prerequisite-patch-id: 6f86f2a54f77c0e8841b6f22953c2f748e358107
prerequisite-patch-id: 7c88071ffd6af8c9de9a44ef2e745e3b111d28e7
prerequisite-patch-id: dacf336396c4f629906e4689dc2868d437179a37
prerequisite-patch-id: 35641348fcba881313d08cb85da3722ba0891264
prerequisite-patch-id: ea98f949fde81f63a309e36405b87463dc07ac50
prerequisite-patch-id: a299994eb9a52db942a5cc3a038b8bc34529c799
prerequisite-patch-id: 9ffc6d3a9be37af59ec29bfce0543cf8371edacb
prerequisite-patch-id: c489fbc8af7d431f9372d0b8bc9e4c609703680e
prerequisite-patch-id: 471c932817cc1044fd03f56e1a1f84e4ce4029a9
prerequisite-patch-id: 88f3a5981ea62ce654a48c258df09315f24ba73e
prerequisite-patch-id: 62b7b8d8b26d642f524d45e910f7685a57345d76
prerequisite-patch-id: 6ad7cb518d3f48614c97e7ef851289a8f4375306
prerequisite-patch-id: 3fec7d86bd725207d19e77b38cba7f989af68ea3
prerequisite-patch-id: 3bd20d51aa3a07f86722c5894b85f58b96e1e798
prerequisite-patch-id: 1011132081c09cd02295c999c9af44d1191bc4b2
prerequisite-patch-id: 83ffbbea6cae29ccd11395332446c2a8eb88fd6c
prerequisite-patch-id: 760df26aee26e14249c412f32630ae6e71a3fa3e
prerequisite-patch-id: b89039b55bef0639c3679b1a5ba13b7a5593af5b
prerequisite-patch-id: 24fc8fdb82bb9287ed944673e2f922587bc49503
prerequisite-patch-id: 077e45c8081930192499bfa5c7391d882b1ad401
prerequisite-patch-id: f31368d6b77f811e4b1fba489492ac4d6cde0948
prerequisite-patch-id: fc4e5787813af14bc812bc61a18acd684bd319af
prerequisite-patch-id: 08f122a2c9dec498a089d665280f37191f96a1ba
prerequisite-patch-id: 6da0dcc6295b755538d7cb2ae4d7f290c3d14e98
prerequisite-patch-id: 7220d8204293754caa4db9ebe3c788ee336d8889
prerequisite-patch-id: 6462f9da097dee40814cf546412b47552f3911a7
prerequisite-patch-id: 9ba212fb95cb7eb4badf51ca677cf5109c2ed881
prerequisite-patch-id: 5ac9fa96627b4d3593429f55b391e66ccf8f14e2
prerequisite-patch-id: a43431df227168b9d0dbb627277ff668fc04c759
prerequisite-patch-id: d72ec36511b6a610072e24e051bbe859af3490fe
-- 
2.41.0