2015-05-14 17 views
19

Yapılandırmaya bağlı alanını .cabal dosyasına otomatik olarak güncelleştirmenin bir yolu var mı? aşağıdaki .cabal dosyası ile başlar Örneğin,: Sonracabal: Yapıya bağlı alanı .cabal dosyasında otomatik olarak nasıl güncellerim?

name:   HUnit 
version:  1.1.1 
synopsis:  A unit testing framework for Haskell 
homepage:  http://hunit.sourceforge.net/ 
category:  Testing 
author:   Dean Herington 
license:  BSD3 
license-file: LICENSE 
cabal-version: >= 1.10 
build-type:  Simple 

library 
    build-depends:  base >= 2 && < 4 
    exposed-modules: Test.HUnit.Base, Test.HUnit.Lang, 
         Test.HUnit.Terminal, Test.HUnit.Text, Test.HUnit 
    default-extensions: CPP 

, bir paket yüklemek: Artık

cabal install warp 

, ben gibi dosya görünmesi için, build-depends alana warp >=3.0 && <3.1 eklemek zorunda Bu:

name:   HUnit 
version:  1.1.1 
synopsis:  A unit testing framework for Haskell 
homepage:  http://hunit.sourceforge.net/ 
category:  Testing 
author:   Dean Herington 
license:  BSD3 
license-file: LICENSE 
cabal-version: >= 1.10 
build-type:  Simple 

library 
    build-depends:  base >= 2 && < 4, warp >=3.0 && <3.1 
    exposed-modules: Test.HUnit.Base, Test.HUnit.Lang, 
         Test.HUnit.Terminal, Test.HUnit.Text, Test.HUnit 
    default-extensions: CPP 

Sorum şu: Bu dosyayı otomatik olarak nasıl güncelleriz?

+2

emacs haskell mod benim için ama genel bir çözümün bilmiyorum gelmez. –

+0

@ReinHenrichs Ben bahsettiğiniz özellik için kodun bu [github'daki haskell-mode, defun'u haskell-cabal-section-add-build-dependency] araması olduğunu düşünüyorum (https://github.com/haskell/haskell- modu/leke/7100354a16a0502ed1730d1dfd1e3b9776969041/haskell-cabal.el). Kabaca katkıda bulunanların benzer bir şey yapıp yapmadığını merak ediyorum. –

+4

Otomatik olarak? Neye bağlı olarak? Şüphesiz, kurulu paketlerinizde TÜMÜNÜ kurmak istemiyor musunuz? – Cubic

cevap

2

Modern cabal-install numaralı belgede bağımlılık sınırlarını yönetmeye yardımcı olmak için iki araç vardır. Birincisi, şu an yüklü olan sürümlerin özelliklerine bağlı olarak paketler için uygun sürüm aralıklarını öneren gen-bounds. İkincisi, hackage'da daha yeni sürümlerin mevcut olduğu cabal dosyasındaki bağımlılıkları listeleyen outdated'dur. Hem Cabal kılavuzda belgelenmiştir:

Sen hpack package.yaml dosyasını gerekir: https://www.haskell.org/cabal/users-guide/developing-packages.html#generating-dependency-version-bounds

0

Olası bir alternatif hpack, YAML, sünger ve jQ kullanmaktır.

örnek bir bağımlılık olarak aeson eklemek için:

cp package.yaml package.yaml.backup && (yaml2json package.yaml | jq '.dependencies += ["aeson"]' | json2yaml | sponge package.yaml) && hpack 
İlgili konular