kit 0.7.3 → 0.7.4
raw patch · 7 files changed
+35/−30 lines, 7 files
Files
- Kit/CmdArgs.hs +2/−2
- Kit/Contents.hs +3/−4
- Kit/Dependency.hs +12/−9
- Kit/Main.hs +8/−7
- Kit/Repository.hs +3/−3
- Kit/WorkingCopy.hs +6/−4
- kit.cabal +1/−1
Kit/CmdArgs.hs view
@@ -4,7 +4,7 @@ import System.Console.CmdArgs as CA appVersion :: String- appVersion = "0.7.0" -- TODO how to keep this up to date with kit.cabal?+ appVersion = "0.7.4" -- TODO how to keep this up to date with kit.cabal? data KitCmdArgs = Update | Package@@ -32,5 +32,5 @@ ] parseArgs :: IO KitCmdArgs- parseArgs = cmdArgs $ parseMode &= program "kit" &= summary ("Kit " ++ appVersion)+ parseArgs = cmdArgs $ parseMode &= program "kit" &= summary ("Kit " ++ appVersion) &= versionArg [CA.name "v"] &= helpArg [CA.name "h"]
Kit/Contents.hs view
@@ -41,10 +41,9 @@ resourceDir = liftIO $ do let r = base </> kitDir </> specResourcesDirectory spec b <- doesDirectoryExist r- if b then- Just <$> canonicalizePath r- else- return Nothing+ if b + then Just <$> canonicalizePath r+ else return Nothing in KitContents spec <$> headers <*> sources <*> libs <*> config <*> prefix <*> resourceDir -- TODO report missing file
Kit/Dependency.hs view
@@ -1,7 +1,7 @@ {-# LANGUAGE TupleSections #-} module Kit.Dependency ( totalSpecDependencies,- Dependency(..),+ Dependency, depSpec, isDevDep, dependencyTree,@@ -15,15 +15,15 @@ import Data.Tree import Data.List -data Dependency = Dep KitSpec | Dev KitSpec FilePath deriving (Eq, Show)+data Location = Repo | Dev FilePath deriving (Eq, Show)+data Dependency = Dependency KitSpec Location deriving (Eq, Show) depSpec :: Dependency -> KitSpec-depSpec (Dep k) = k-depSpec (Dev k _) = k+depSpec (Dependency k _) = k isDevDep :: Dependency -> Bool-isDevDep (Dep _) = False-isDevDep (Dev _ _) = True+isDevDep (Dependency _ Repo) = False+isDevDep (Dependency _ (Dev _)) = True -- | Return all the (unique) children of this tree (except the top node), in reverse depth order. refineDeps :: Eq a => Tree a -> [a]@@ -35,8 +35,11 @@ totalSpecDependencies repo workingCopy = refineDeps <$> dependencyTree repo workingCopy dependencyTree :: KitRepository -> WorkingCopy -> KitIO (Tree Dependency)-dependencyTree repo workingCopy = unfoldTreeM (unfoldDeps repo) (workingKitSpec workingCopy)+dependencyTree repo workingCopy = unfoldTreeM (unfoldDeps repo workingCopy) (workingKitSpec workingCopy) -unfoldDeps :: KitRepository -> KitSpec -> KitIO (Dependency, [KitSpec])-unfoldDeps kr ks = (Dep ks,) <$> mapM (readKitSpec kr) (specDependencies ks) +unfoldDeps :: KitRepository -> WorkingCopy -> KitSpec -> KitIO (Dependency, [KitSpec])+unfoldDeps kr wc ks = let devPackages = workingDevPackages wc + thisDev = find ((packageName ks ==) . packageName . fst) devPackages+ theDep = maybe (Dependency ks Repo) (\(ks',fp) -> Dependency ks' (Dev fp)) thisDev+ in (theDep,) <$> mapM (readKitSpec kr) (specDependencies $ depSpec theDep)
Kit/Main.hs view
@@ -96,13 +96,7 @@ handleArgs (KA.CreateSpec name version) = doCreateSpec name version handleArgs KA.ShowTree = doShowTree - kitMain :: IO ()- kitMain = do- let f = runCommand . handleArgs =<< KA.parseArgs- h <- getHomeDirectory- fs <- inDirectory h $ glob ".kit/repository/kits/*/*/*.tar.gz"- let c = length fs- when (c > 0) $ do+ warnOldRepo c = do say Red $ "Warning: Kit now expects packages in '.kit/cache/local' instead of '.kit/repository/kits'. (Found " ++ show c ++ " packages in the old location.)" puts "" say Red "To fix it, move the old directory into the new path:"@@ -110,6 +104,13 @@ say Red "\t$ mv ~/.kit/repository/kits/* ~/.kit/cache/local" say Red "\t$ rmdir ~/.kit/repository/kits && rmdir ~/.kit/repository" puts ""++ kitMain :: IO ()+ kitMain = do+ let f = runCommand . handleArgs =<< KA.parseArgs+ h <- getHomeDirectory+ fs <- inDirectory h $ glob ".kit/repository/kits/*/*/*.tar.gz"+ when (not $ null fs) $ warnOldRepo (length fs) catch f $ \e -> do alert $ show e exitWith $ ExitFailure 1
Kit/Repository.hs view
@@ -71,13 +71,13 @@ let source = (localCacheDir kr </> kitPackagePath kit) let dest = packagesDirectory kr d <- doesDirectoryExist $ dest </> packageFileName kit- if not d then do+ if not d + then do putStrLn $ " -> Unpacking from cache: " ++ packageFileName kit mkdirP dest inDirectory dest $ system ("tar zxf " ++ source) return ()- else - putStrLn $ " -> Using local package: " ++ packageFileName kit+ else putStrLn $ " -> Using local package: " ++ packageFileName kit return () -- TODO: on publish local, need to flush this particular name/version out
Kit/WorkingCopy.hs view
@@ -19,7 +19,7 @@ data WorkingCopy = WorkingCopy { workingKitSpec :: KitSpec, workingSpecFile :: FilePath,- workingDevPackages :: [(FilePath, KitSpec)]+ workingDevPackages :: [(KitSpec, FilePath)] } deriving (Eq, Show) currentWorkingCopy :: KitIO WorkingCopy@@ -27,17 +27,19 @@ let specFile = "KitSpec" spec <- readSpec specFile devKitSpecFiles <- liftIO $ glob "dev-packages/*/KitSpec"- let f path = (takeFileName . takeDirectory $ path,) <$> readSpec path+ let f path = (,takeFileName . takeDirectory $ path) <$> readSpec path devKitSpecs <- mapM f devKitSpecFiles return $ WorkingCopy spec specFile devKitSpecs isDevPackage :: WorkingCopy -> KitSpec -> Bool-isDevPackage wc spec = any (\s -> packageName spec == packageName s) $ map snd (workingDevPackages wc)+isDevPackage wc spec = any (\s -> packageName spec == packageName s) $ map fst (workingDevPackages wc) readSpec :: FilePath -> KitIO KitSpec readSpec path = checkExists path >>= liftIO . BS.readFile >>= ErrorT . return . parses where checkExists pathToSpec = do doesExist <- liftIO $ doesFileExist pathToSpec - if doesExist then return pathToSpec else throwError $ "Couldn't find the spec at " ++ pathToSpec + if doesExist + then return pathToSpec + else throwError ("Couldn't find the spec at " ++ pathToSpec) parses = maybeToRight "Parse error in KitSpec file" . decodeSpec
kit.cabal view
@@ -1,5 +1,5 @@ name: kit-version: 0.7.3+version: 0.7.4 cabal-version: >=1.2 build-type: Simple license: BSD3