show cask info on browser
This commit is contained in:
		
							parent
							
								
									48c050371d
								
							
						
					
					
						commit
						137d33290f
					
				@ -18,14 +18,38 @@ module Cask
 | 
			
		||||
 | 
			
		||||
      def self.parser
 | 
			
		||||
        super do
 | 
			
		||||
          flag "--json=",
 | 
			
		||||
               description: "Output information in JSON format."
 | 
			
		||||
          flag   "--json=",
 | 
			
		||||
                 description: "Output information in JSON format."
 | 
			
		||||
          switch "--github",
 | 
			
		||||
                 description: "Open the GitHub source page for <Cask> in a browser. "
 | 
			
		||||
        end
 | 
			
		||||
      end
 | 
			
		||||
 | 
			
		||||
      def github_info(cask)
 | 
			
		||||
        sourcefile_path = cask.sourcefile_path
 | 
			
		||||
        dir = cask.tap.path
 | 
			
		||||
        path = sourcefile_path.relative_path_from(dir)
 | 
			
		||||
        remote = cask.tap.remote
 | 
			
		||||
        github_remote_path(remote, path)
 | 
			
		||||
      end
 | 
			
		||||
 | 
			
		||||
      def github_remote_path(remote, path)
 | 
			
		||||
        if remote =~ %r{^(?:https?://|git(?:@|://))github\.com[:/](.+)/(.+?)(?:\.git)?$}
 | 
			
		||||
          "https://github.com/#{Regexp.last_match(1)}/#{Regexp.last_match(2)}/blob/HEAD/#{path}"
 | 
			
		||||
        else
 | 
			
		||||
          "#{remote}/#{path}"
 | 
			
		||||
        end
 | 
			
		||||
      end
 | 
			
		||||
 | 
			
		||||
      def run
 | 
			
		||||
        if args.json == "v1"
 | 
			
		||||
          puts JSON.generate(casks.map(&:to_h))
 | 
			
		||||
        elsif args.github?
 | 
			
		||||
          raise CaskUnspecifiedError if args.no_named?
 | 
			
		||||
 | 
			
		||||
          args.named.to_formulae_and_casks.map do |cask|
 | 
			
		||||
            exec_browser(github_info(cask))
 | 
			
		||||
          end
 | 
			
		||||
        else
 | 
			
		||||
          casks.each_with_index do |cask, i|
 | 
			
		||||
            puts unless i.zero?
 | 
			
		||||
 | 
			
		||||
@ -86,7 +86,7 @@ module Homebrew
 | 
			
		||||
    elsif args.github?
 | 
			
		||||
      raise FormulaUnspecifiedError if args.no_named?
 | 
			
		||||
 | 
			
		||||
      exec_browser(*args.named.to_formulae.map { |f| github_info(f) })
 | 
			
		||||
      exec_browser(*args.named.to_formulae_and_casks.map { |f| github_info(f) })
 | 
			
		||||
    else
 | 
			
		||||
      print_info(args: args)
 | 
			
		||||
    end
 | 
			
		||||
@ -148,7 +148,11 @@ module Homebrew
 | 
			
		||||
  def github_info(f)
 | 
			
		||||
    if f.tap
 | 
			
		||||
      if remote = f.tap.remote
 | 
			
		||||
        path = f.path.relative_path_from(f.tap.path)
 | 
			
		||||
        path = if f.class.superclass == Formula
 | 
			
		||||
          f.path.relative_path_from(f.tap.path)
 | 
			
		||||
        elsif f.is_a?(Cask::Cask)
 | 
			
		||||
          f.sourcefile_path.relative_path_from(f.tap.path)
 | 
			
		||||
        end
 | 
			
		||||
        github_remote_path(remote, path)
 | 
			
		||||
      else
 | 
			
		||||
        f.path
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user