diff --git a/Casks/emacs-app.rb b/Casks/emacs-app.rb new file mode 100644 index 00000000..6711024f --- /dev/null +++ b/Casks/emacs-app.rb @@ -0,0 +1,64 @@ +# frozen_string_literal: true + +cask 'emacs-app' do + version '27.1' + + sha256 'ad4a3d90f68c19f44f6e05a0da7b0bf72cd0205a81dcacbd78302a1a931c6c00' + url 'https://github.com/jimeh/emacs-builds/releases/download/Emacs-27.1/Emacs.2020-08-04.86d8d76.emacs-27-1.macOS-10-15.x86_64.dmg' + + name 'Emacs' + desc 'GNU Emacs text editor' + homepage 'https://github.com/jimeh/emacs-builds' + + livecheck do + url 'https://github.com/jimeh/emacs-builds.git' + strategy :git do |tags| + tags.map do |tag| + m = /^Emacs-(\d+\.\d+(?:[a-z]+)?)$/.match(tag) + next unless m + + m[1] + end.compact + end + end + + conflicts_with( + cask: %w[ + emacs-app-nightly + emacs-app-good + emacs + emacs-nightly + emacs-pretest + emacs-mac + emacs-mac-spacemacs-icon + ], + formula: %w[ + emacs + emacs-mac + ] + ) + + depends_on macos: '>= :catalina' + depends_on arch: :intel + + app 'Emacs.app' + binary "#{appdir}/Emacs.app/Contents/MacOS/bin/ebrowse" + binary "#{appdir}/Emacs.app/Contents/MacOS/bin/emacs" + binary "#{appdir}/Emacs.app/Contents/MacOS/bin/emacsclient" + binary "#{appdir}/Emacs.app/Contents/MacOS/bin/etags" + binary "#{appdir}/Emacs.app/Contents/Resources/include/emacs-module.h", + target: "#{HOMEBREW_PREFIX}/include/emacs-module.h" + binary "#{appdir}/Emacs.app/Contents/Resources/site-lisp/subdirs.el", + target: "#{HOMEBREW_PREFIX}/share/emacs/site-lisp/subdirs.el" + + manpage "#{appdir}/Emacs.app/Contents/Resources/man/man1/ebrowse.1.gz" + manpage "#{appdir}/Emacs.app/Contents/Resources/man/man1/emacs.1.gz" + manpage "#{appdir}/Emacs.app/Contents/Resources/man/man1/emacsclient.1.gz" + manpage "#{appdir}/Emacs.app/Contents/Resources/man/man1/etags.1.gz" + + zap trash: [ + '~/Library/Caches/org.gnu.Emacs', + '~/Library/Preferences/org.gnu.Emacs.plist', + '~/Library/Saved Application State/org.gnu.Emacs.savedState' + ] +end diff --git a/templates/emacs-app.rb.tpl b/templates/emacs-app.rb.tpl new file mode 100644 index 00000000..081a2631 --- /dev/null +++ b/templates/emacs-app.rb.tpl @@ -0,0 +1,64 @@ +# frozen_string_literal: true + +cask 'emacs-app' do + version '{{ .Version }}' + + sha256 '{{ .SHA256 "macOS-10-15.x86_64" }}' + url '{{ .DownloadURL "macOS-10-15.x86_64" }}' + + name 'Emacs' + desc 'GNU Emacs text editor' + homepage 'https://github.com/jimeh/emacs-builds' + + livecheck do + url 'https://github.com/jimeh/emacs-builds.git' + strategy :git do |tags| + tags.map do |tag| + m = /^Emacs-(\d+\.\d+(?:[a-z]+)?)$/.match(tag) + next unless m + + m[1] + end.compact + end + end + + conflicts_with( + cask: %w[ + emacs-app-nightly + emacs-app-good + emacs + emacs-nightly + emacs-pretest + emacs-mac + emacs-mac-spacemacs-icon + ], + formula: %w[ + emacs + emacs-mac + ] + ) + + depends_on macos: '>= :catalina' + depends_on arch: :intel + + app 'Emacs.app' + binary "#{appdir}/Emacs.app/Contents/MacOS/bin/ebrowse" + binary "#{appdir}/Emacs.app/Contents/MacOS/bin/emacs" + binary "#{appdir}/Emacs.app/Contents/MacOS/bin/emacsclient" + binary "#{appdir}/Emacs.app/Contents/MacOS/bin/etags" + binary "#{appdir}/Emacs.app/Contents/Resources/include/emacs-module.h", + target: "#{HOMEBREW_PREFIX}/include/emacs-module.h" + binary "#{appdir}/Emacs.app/Contents/Resources/site-lisp/subdirs.el", + target: "#{HOMEBREW_PREFIX}/share/emacs/site-lisp/subdirs.el" + + manpage "#{appdir}/Emacs.app/Contents/Resources/man/man1/ebrowse.1.gz" + manpage "#{appdir}/Emacs.app/Contents/Resources/man/man1/emacs.1.gz" + manpage "#{appdir}/Emacs.app/Contents/Resources/man/man1/emacsclient.1.gz" + manpage "#{appdir}/Emacs.app/Contents/Resources/man/man1/etags.1.gz" + + zap trash: [ + '~/Library/Caches/org.gnu.Emacs', + '~/Library/Preferences/org.gnu.Emacs.plist', + '~/Library/Saved Application State/org.gnu.Emacs.savedState' + ] +end