packages feed

nixfromnpm-0.1.0.5: src/Main.hs

{-# LANGUAGE QuasiQuotes #-}
{-# LANGUAGE NoImplicitPrelude #-}
module Main where

import System.Environment (getArgs)
import System.Console.Docopt.NoTH

import NixFromNpm hiding (getArgs)

usageString :: String
usageString = "\
  \Usage:\n\
  \  nixfromnpm <packagename> [-o PATH] [options]\n\
  \Options:\n\
  \  -o, --output PATH                 Output files to this path\n\
  \  --extend PATHS...                 Use nix expressions existing at these\n\
  \                                    paths\n\                 
  \  --registries REGISTRIES...        Use only these registries\n\
  \  --extra-registries REGISTRIES..   Use these in addition to default registry\n\
  \  --no-cache                        Don't use existing cache\n\
  \  --test                            Don't write expressions, just fetch\n\
  \  --timeout SECONDS                 Seconds after which to fail fetching a\n\
  \                                    package\n\
  \  --node-version VERSION            Use this version of node\n"

getFlag args f = isPresent args (longOption f)

main :: IO ()
main = do
  patterns <- parseUsageOrExit usageString
  args <- parseArgsOrExit patterns =<< getArgs
  let args ?? arg = getArgOrExitWith patterns args (argument arg)
  pkgName <- map pack $ args ?? "packagename"
  path <- map pack $ args ?? "outputpath"
  dumpPkgFromOptions $ (defaultOptions pkgName path) {
        nfnoNoCache = args `getFlag` "no-cache"
      }