From 92832c258c7a578e80781d5b200de146d5af931d Mon Sep 17 00:00:00 2001 From: botantony Date: Wed, 14 May 2025 11:12:25 +0200 Subject: [PATCH] dev-cmd/create: add `--cabal` switch Signed-off-by: botantony --- Library/Homebrew/dev-cmd/create.rb | 6 +++++- Library/Homebrew/formula_creator.rb | 10 ++++++++-- .../sorbet/rbi/dsl/homebrew/dev_cmd/create.rbi | 3 +++ 3 files changed, 16 insertions(+), 3 deletions(-) diff --git a/Library/Homebrew/dev-cmd/create.rb b/Library/Homebrew/dev-cmd/create.rb index f89b3287a1..e3c4f660f8 100644 --- a/Library/Homebrew/dev-cmd/create.rb +++ b/Library/Homebrew/dev-cmd/create.rb @@ -20,6 +20,8 @@ module Homebrew EOS switch "--autotools", description: "Create a basic template for an Autotools-style build." + switch "--cabal", + description: "Create a basic template for a Cabal build." switch "--cask", description: "Create a basic template for a cask." switch "--cmake", @@ -59,7 +61,7 @@ module Homebrew switch "-f", "--force", description: "Ignore errors for disallowed formula names and names that shadow aliases." - conflicts "--autotools", "--cmake", "--crystal", "--go", "--meson", "--node", + conflicts "--autotools", "--cabal", "--cmake", "--crystal", "--go", "--meson", "--node", "--perl", "--python", "--ruby", "--rust", "--zig", "--cask" conflicts "--cask", "--HEAD" conflicts "--cask", "--set-license" @@ -163,6 +165,8 @@ module Homebrew :crystal elsif args.go? :go + elsif args.cabal? + :cabal elsif args.meson? :meson elsif args.node? diff --git a/Library/Homebrew/formula_creator.rb b/Library/Homebrew/formula_creator.rb index 6bd6b0fdde..14096158ff 100644 --- a/Library/Homebrew/formula_creator.rb +++ b/Library/Homebrew/formula_creator.rb @@ -138,7 +138,10 @@ module Homebrew head "#{@url}" <% end %> - <% if @mode == :cmake %> + <% if @mode == :cabal %> + depends_on "cabal-install" => :build + depends_on "ghc" => :build + <% elsif @mode == :cmake %> depends_on "cmake" => :build <% elsif @mode == :crystal %> depends_on "crystal" => :build @@ -172,7 +175,10 @@ module Homebrew <% end %> def install - <% if @mode == :cmake %> + <% if @mode == :cabal %> + system "cabal", "v2-update" + system "cabal", "v2-install", *std_cabal_v2_args + <% elsif @mode == :cmake %> system "cmake", "-S", ".", "-B", "build", *std_cmake_args system "cmake", "--build", "build" system "cmake", "--install", "build" diff --git a/Library/Homebrew/sorbet/rbi/dsl/homebrew/dev_cmd/create.rbi b/Library/Homebrew/sorbet/rbi/dsl/homebrew/dev_cmd/create.rbi index 150ac9e871..2912c9a025 100644 --- a/Library/Homebrew/sorbet/rbi/dsl/homebrew/dev_cmd/create.rbi +++ b/Library/Homebrew/sorbet/rbi/dsl/homebrew/dev_cmd/create.rbi @@ -17,6 +17,9 @@ class Homebrew::DevCmd::Create::Args < Homebrew::CLI::Args sig { returns(T::Boolean) } def autotools?; end + sig { returns(T::Boolean) } + def cabal?; end + sig { returns(T::Boolean) } def cask?; end