vimeta-0.3.0.0: src/Vimeta/UI/CommandLine/Movie.hs
-- |
--
-- Copyright:
-- This file is part of the package vimeta. It is subject to the
-- license terms in the LICENSE file found in the top-level
-- directory of this distribution and at:
--
-- https://github.com/pjones/vimeta
--
-- No part of this package, including this file, may be copied,
-- modified, propagated, or distributed except according to the terms
-- contained in the LICENSE file.
--
-- License: BSD-2-Clause
module Vimeta.UI.CommandLine.Movie
( Options,
optionsParser,
run,
)
where
import Network.API.TheMovieDB
import Options.Applicative
import System.FilePath
import Vimeta.Core
import Vimeta.UI.CommandLine.Common
import Vimeta.UI.Common.Movie
import Vimeta.UI.Term.Movie
data Options = Options
{ optsMovieID :: Maybe ItemID,
optsFile :: FilePath,
optsCommon :: CommonOptions
}
optionsParser :: Parser Options
optionsParser =
Options <$> optional (option auto getMovieID)
<*> argument str (metavar "FILE")
<*> commonOptions
where
-- Parser options for @optsMovieID@.
getMovieID =
mconcat
[ short 'i',
long "id",
metavar "ID",
help "Movie ID assigned by TheMovieDB.org"
]
run :: Options -> IO (Either String ())
run opts = execVimeta (updateConfig $ optsCommon opts) $
case optsMovieID opts of
Just mid -> do
movie <- tmdb (fetchMovie mid)
tagMovie (optsFile opts) movie
Nothing -> do
movie <- movieSearch initialTitle
tagMovie (optsFile opts) movie
where
-- Calculate an initial search title from the file name.
initialTitle :: Text
initialTitle = toText $ dropExtension (takeFileName $ optsFile opts)