2016-01-17 15 views
9

最近まで、私はスタックしてプロジェクトを実行+構築するために、この美しを実行していた。`cabal run`と同様の` stack run`がありますか?

stack build && .stack-work/install/x86_64-linux/lts-4.1/7.10.3/bin/<project-name> 

私はこれが指定でき、これは

stack build && stack exec <project-name> 

に簡素化することができるIRCに言われました

stack run 

または少なくとも

012に、より一層簡略
stack run <project-name> 

私が正しく思い出した場合、これはcabal runで可能でした。

編集:haoformayorさんのコメント@

が近づいている:

alias b='stack build --fast --ghc-options="-Wall" && stack exec' 

これはまだ右、プロジェクト名を必要としますが?

私はまた、プロジェクト名はフォルダ名と一致する場合にのみ動作しますが

function stack-run() { stack build && stack exec `basename "$PWD"` } 

に近づくために始めました。たぶん、.cabalファイルの最初のexecutableエントリに対してcabal/stackをクエリできますか?それはhttp://docs.haskellstack.org/en/stable/README.html#quick-start-guideここで言及したようだそれとも我々はsed ...

+0

を私は同等のコマンドがあると信じていません。シェルのエイリアスを使って同様のことをします。 'alias b = 'stack build --fast --ghc-options =" - Wall "&& stack exec"のようなもの – hao

+0

@haoformayorこれは私が探しているものに近づいています。 1秒、私は少し質問を延長します。 – Wizek

+1

実行ファイル名が必要な場合は、かなり簡単に取得できます: 'grep '^ executable' * .cabal |カット-d '' -f 2 | head -n 1' – hao

答えて

4

https://hackage.haskell.org/package/stack-run


古い答えは:

これは、私は今のところやってしまったものです。

#/usr/bin/env sh 

stack build && stack exec `basename "$PWD"` "[email protected]" 

私は私の$PATHstack-runという名前のファイルに次のように置かれています。私の場合は~/.local/bin/stack-runです。任意のディレクトリに

$ stack-run 

に私を可能にし、さらに

$ stack run 

のほぼすべての私のプロジェクトのプロジェクトの実行ファイルがフォルダと同じ名を冠するので、この作品

。しかし、名前の違いをサポートすることでそれを拡張したいと考えています。


編集2016年9月26日:また、私はこれを見つけたが、まだそれを試して与えていない: https://hackage.haskell.org/package/stack-run

11

でそれを行うことができmy-project-exeがあなたの.cabalファイルに実行可能ファイルの名前です、あなたはstack exec my-project-exeを使用することができます。

+0

また、いくつかのコマンドライン引数を渡すこともできます:' stack exec - ' –

+7

この答えによって混乱したビット。 @Govindあなたの答えは私の質問で 'stack exec'について述べたものとどう違うのですか?私はそれをやって 'キャバルラン'をどのように覚えているかと同じように、 'stack build' +' stack exec'コマンドを探しています。 – Wizek

6

あなたは成功したが、内蔵された後に実行すべきかをプログラムスタック伝えるために--execを使用することができます。

stack build --exec <executable-name> 

また、例えば、実行ファイルの引数を指定することができます

おそらく stack exec--execフラグの両方が実行可能ファイル名を必要とするので、あなたは、 cabal runに比べて取得します最も近いです
stack unpack pandoc && cd pandoc* 
stack build --exec "pandoc --version" 

。しかし最もきれいな変種はstack-runコマンドであり、それはstack build --exec <first-executable in .cabal>です。プロジェクトのGitHub号トラッカーではa feature requestの価値があります。私が使用して非常に良い経験をしました

+1

ちなみに、cabal _and_ stackがインストールされている場合は、 'stack build --exec" cabal run "'を実行することもできます。しかし、それはやや工夫されています。 – Zeta

関連する問題