hkgr 0.4.5 → 0.4.6
raw patch · 5 files changed
+29/−17 lines, 5 files
Files
- CHANGELOG.md +6/−0
- README.md +1/−1
- data/template.cabal.tmpl +2/−2
- hkgr.cabal +1/−1
- src/Main.hs +19/−13
CHANGELOG.md view
@@ -1,4 +1,10 @@ # Changelog++## 0.4.6 (2024-06-20)+- 'new': add --license option+- 'new': bump stack.yaml resolver to lts-21+- add missing SUMMARY placeholder to template+ ## 0.4.5 (2024-05-23) - 'tagdist', 'upload': also do pristine cabal build unless --no-build
README.md view
@@ -72,7 +72,7 @@ `$ hkgr --version` ```-0.4.5+0.4.6 ``` `$ hkgr --help`
data/template.cabal.tmpl view
@@ -1,10 +1,10 @@ cabal-version: 2.2 name: @PROJECT@ version: 0.1.0-synopsis: One line summary+synopsis: @SUMMARY@ description: Short paragraph here-license: BSD-3-Clause+license: @LICENSE@ license-file: LICENSE author: @NAME@ <@EMAIL@> maintainer: @NAME@ <@EMAIL@>
hkgr.cabal view
@@ -1,6 +1,6 @@ cabal-version: 2.0 name: hkgr-version: 0.4.5+version: 0.4.6 synopsis: Simple Hackage release workflow for package maintainers description: Hkgr (Hackager) is a tool to help make new releases of
src/Main.hs view
@@ -33,7 +33,8 @@ subcommands [ Subcommand "new" "setup a new project" $ newCmd- <$> optional (strArg "PROJECT")+ <$> optional (strOptionWith 'l' "license" "LICENSE" "Specify license")+ <*> optional (strArg "PROJECT") , Subcommand "tagdist" "'git tag' version and 'cabal sdist' tarball" $ tagDistCmd <$> existingTag@@ -327,9 +328,8 @@ -- FIXME warning if upstream template changed (keep a versioned template copy) -- FIXME add default templates dir--- FIXME --license-newCmd :: Maybe String -> IO ()-newCmd mproject = do+newCmd :: Maybe String -> Maybe String -> IO ()+newCmd mlicense mproject = do needProgram "cabal" name <- case mproject of Just ns -> return ns@@ -352,12 +352,16 @@ let setupFile = "Setup.hs" origsetup <- doesFileExist setupFile cabalversion <- readVersion <$> cmd "cabal" ["--numeric-version"]- let license = if cabalversion > makeVersion [3,4]- then "BSD-3-Clause"- else "BSD3"- in cabal_ "init" ["--quiet", "--no-comments", "--non-interactive", "--is-libandexe", "--cabal-version=1.18", "--license=" ++ license, "--package-name=" ++ name, "--version=0.1.0", "--dependency=base<5", "--source-dir=src"]+ let license =+ case mlicense of+ Just l -> l+ Nothing ->+ if cabalversion > makeVersion [3,4]+ then "BSD-3-Clause"+ else "BSD3"+ cabal_ "init" ["--quiet", "--no-comments", "--non-interactive", "--is-libandexe", "--cabal-version=1.18", "--license=" ++ license, "--package-name=" ++ name, "--version=0.1.0", "--dependency=base<5", "--source-dir=src"] whenJustM (cmdMaybe $ P.proc "find" ["-name", "Main.hs"]) $ \ file -> do- sed ["1s/^module Main where/-- SPDX-License-Identifier: BSD-3-Clause\\n\\nmodule Main (main) where/"] file+ sed ["1s/^module Main where/-- SPDX-License-Identifier:" +-+ license ++ "\\n\\nmodule Main (main) where/"] file unless (file == "src/Main.hs") $ renameFile file "src/Main.hs" whenM (doesFileExist "CHANGELOG.md") $ renameFile "CHANGELOG.md" "ChangeLog.md"@@ -366,7 +370,7 @@ unless origsetup $ do setup <- doesFileExist setupFile when setup $ removeFile setupFile- setupCabalTemplate name+ setupCabalTemplate name license Just cblName -> when (cblName /= name) $ putStrLn $ "Warning:" +-+ cblName +-+ "different to" +-+ name@@ -374,7 +378,8 @@ mstack <- findExecutable "stack" -- FIXME add stack.yaml template too when (not haveStackCfg && isJust mstack) $ do- cmd_ "stack" ["init", "--verbosity", "warn", "--resolver", "lts-19"]+ -- FIXME determine last lts automatically+ cmd_ "stack" ["init", "--verbosity", "warn", "--resolver", "lts-21"] sed ["/^#/d", "/^$/d"] "stack.yaml" haveGit <- doesDirectoryExist ".git" unless haveGit $ do@@ -389,8 +394,8 @@ [cbl] -> return $ Just (takeBaseName cbl) _ -> error' "More than one .cabal file found!" - setupCabalTemplate :: String -> IO ()- setupCabalTemplate name = do+ setupCabalTemplate :: String -> String -> IO ()+ setupCabalTemplate name license = do userTemplate <- getUserConfigFile "hkgr" "template.cabal" unlessM (doesFileExist userTemplate) $ do origTemplate <- getDataFileName "template.cabal.tmpl"@@ -410,6 +415,7 @@ replaceHolder "PROJECT" name $ name <.> "cabal" replaceHolder "PROJECT_" (map underscore name) $ name <.> "cabal" replaceHolder "SUMMARY" (name +-+ "project") $ name <.> "cabal"+ replaceHolder "LICENSE" license $ name <.> "cabal" year <- cmdOut (P.proc "date" ["+%Y"]) replaceHolder "YEAR" year $ name <.> "cabal" let modulePath = "src/MyLib.hs"