diff options
| author | Mike McQuaid | 2017-04-18 08:22:37 +0100 |
|---|---|---|
| committer | Mike McQuaid | 2017-04-18 08:22:41 +0100 |
| commit | 43253ede656a93562344c8a39b7e3145ad2358fc (patch) | |
| tree | 0d06301c9bf6c4176d337c69ec8c5e4a242e48fa /Library | |
| parent | 417f49dd32bfe555b20f3f7d88e2739f6623991b (diff) | |
| download | brew-43253ede656a93562344c8a39b7e3145ad2358fc.tar.bz2 | |
create: use GitHub metadata where available.
GitHub provides a description and homepage field so let `brew create`
use them where possible. Also, detect GitHub repositories based on
`releases` as well as `archive`s.
Diffstat (limited to 'Library')
| -rw-r--r-- | Library/Homebrew/dev-cmd/create.rb | 47 |
1 files changed, 33 insertions, 14 deletions
diff --git a/Library/Homebrew/dev-cmd/create.rb b/Library/Homebrew/dev-cmd/create.rb index 6855d6f37..58a155b13 100644 --- a/Library/Homebrew/dev-cmd/create.rb +++ b/Library/Homebrew/dev-cmd/create.rb @@ -10,7 +10,8 @@ #: If `--meson` is passed, create a basic template for a Meson-style build. #: #: If `--no-fetch` is passed, Homebrew will not download <URL> to the cache and -#: will thus not add the SHA256 to the formula for you. +#: will thus not add the SHA256 to the formula for you. It will also not check +#: the GitHub API for GitHub projects (to fill out the description and homepage). #: #: The options `--set-name` and `--set-version` each take an argument and allow #: you to explicitly set the name and version of the package you are creating. @@ -100,7 +101,7 @@ module Homebrew end class FormulaCreator - attr_reader :url, :sha256 + attr_reader :url, :sha256, :desc, :homepage attr_accessor :name, :version, :tap, :path, :mode def url=(url) @@ -108,11 +109,15 @@ class FormulaCreator path = Pathname.new(url) if @name.nil? case url - when %r{github\.com/\S+/(\S+)\.git} - @name = $1 + when %r{github\.com/(\S+)/(\S+)\.git} + @user = $1 + @name = $2 @head = true - when %r{github\.com/\S+/(\S+)/archive/} - @name = $1 + @github = true + when %r{github\.com/(\S+)/(\S+)/(archive|releases)/} + @user = $1 + @name = $2 + @github = true else @name = path.basename.to_s[/(.*?)[-_.]?#{Regexp.escape(path.version.to_s)}/, 1] end @@ -131,7 +136,7 @@ class FormulaCreator end def fetch? - !head? && !ARGV.include?("--no-fetch") + !ARGV.include?("--no-fetch") end def head? @@ -145,11 +150,25 @@ class FormulaCreator opoo "Version cannot be determined from URL." puts "You'll need to add an explicit 'version' to the formula." elsif fetch? - r = Resource.new - r.url(url) - r.version(version) - r.owner = self - @sha256 = r.fetch.sha256 if r.download_strategy == CurlDownloadStrategy + unless head? + r = Resource.new + r.url(url) + r.version(version) + r.owner = self + @sha256 = r.fetch.sha256 if r.download_strategy == CurlDownloadStrategy + end + + if @user && @name + begin + metadata = GitHub.repository(@user, @name) + @desc = metadata["description"] + @homepage = metadata["homepage"] + rescue GitHub::HTTPNotFoundError + # If there was no repository found assume the network connection is at + # fault rather than the input URL. + nil + end + end end path.write ERB.new(template, nil, ">").result(binding) @@ -161,8 +180,8 @@ class FormulaCreator # PLEASE REMOVE ALL GENERATED COMMENTS BEFORE SUBMITTING YOUR PULL REQUEST! class #{Formulary.class_s(name)} < Formula - desc "" - homepage "" + desc "#{desc}" + homepage "#{homepage}" <% if head? %> head "#{url}" <% else %> |
