brew-go 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.gitignore +9 -0
- data/Gemfile +2 -0
- data/Rakefile +1 -0
- data/bin/brew-go +150 -0
- data/brew-go.gemspec +25 -0
- metadata +78 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 7b726295d7a16eb32a802a75e1b9971b60c97f83
|
4
|
+
data.tar.gz: 450165449aac8fa92ccf14f18b7490d3a3b6de7b
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 2f0df540f28b49fbb1300f4bf1ca2a284f77873a113b2047c1eb64121fb6cbaa0fdd2aaa343640f19c0f7a5421ee91feb7778691ff7f0a9dcbdfd10926e58749
|
7
|
+
data.tar.gz: ee6a32738f440e14b0e461d6b4bb8fd03a7e132744021eabd5b7503ad16a0bdb26bc34ab8d3990fe1bce803647965763647db7fe7e0f018aedc58275bb26ec10
|
data/.gitignore
ADDED
data/Gemfile
ADDED
data/Rakefile
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require "bundler/gem_tasks"
|
data/bin/brew-go
ADDED
@@ -0,0 +1,150 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'pathname'
|
4
|
+
require 'fileutils'
|
5
|
+
|
6
|
+
unless defined? HOMEBREW_CELLAR
|
7
|
+
HOMEBREW_CELLAR = `brew --cellar`.chomp
|
8
|
+
end
|
9
|
+
|
10
|
+
@commons = {
|
11
|
+
"benchstat" => "golang.org/x/perf/cmd/benchstat",
|
12
|
+
"dlv" => "github.com/derekparker/delve/cmd/dlv",
|
13
|
+
"guru" => "golang.org/x/tools/cmd/guru",
|
14
|
+
}
|
15
|
+
|
16
|
+
def helpme
|
17
|
+
puts <<~HEREDOC
|
18
|
+
Manage Go packages via Homebrew.
|
19
|
+
|
20
|
+
Usage:
|
21
|
+
$ brew go get <url to package> ...
|
22
|
+
$ brew go rm <name> ...
|
23
|
+
$ brew go list [name]
|
24
|
+
$ brew go update [name] ...
|
25
|
+
$ brew go common
|
26
|
+
|
27
|
+
Examples:
|
28
|
+
$ brew go get golang.org/x/tools/cmd/guru
|
29
|
+
$ brew go get guru
|
30
|
+
$ brew go list
|
31
|
+
$ brew go list brew-go-guru
|
32
|
+
$ brew go list guru
|
33
|
+
$ brew go update
|
34
|
+
$ brew go update guru
|
35
|
+
HEREDOC
|
36
|
+
exit 1
|
37
|
+
end
|
38
|
+
|
39
|
+
def cmd_common
|
40
|
+
puts <<~HEREDOC
|
41
|
+
Here are a few commonly used tools. The names can be used as shortcuts:
|
42
|
+
$ brew go get guru
|
43
|
+
|
44
|
+
HEREDOC
|
45
|
+
print_formatted_list(@commons)
|
46
|
+
end
|
47
|
+
|
48
|
+
def cmd_get(packages)
|
49
|
+
threads = []
|
50
|
+
packages = resolve_common_packages packages
|
51
|
+
|
52
|
+
packages.each do |url|
|
53
|
+
threads << Thread.new do
|
54
|
+
name = File.basename url
|
55
|
+
cellarpath = "#{HOMEBREW_CELLAR}/brew-go-#{name}"
|
56
|
+
gopath = "#{cellarpath}/#{url.gsub('/', '#')}"
|
57
|
+
|
58
|
+
ENV["GOPATH"] = gopath
|
59
|
+
ENV.delete "GOBIN"
|
60
|
+
|
61
|
+
system "go get #{url}"
|
62
|
+
unless $?.success?
|
63
|
+
puts "[\x1b[31;1m✗\x1b[0m] #{url}"
|
64
|
+
FileUtils.remove_dir "#{cellarpath}", true
|
65
|
+
Thread.exit
|
66
|
+
end
|
67
|
+
|
68
|
+
puts "[\x1b[32;1m✓\x1b[0m] \x1b[1mbrew-go-#{name}\x1b[0m (#{url})"
|
69
|
+
|
70
|
+
FileUtils.remove_dir "#{gopath}/pkg", true
|
71
|
+
FileUtils.remove_dir "#{gopath}/src", true
|
72
|
+
|
73
|
+
system "brew unlink brew-go-#{name}", out: File::NULL
|
74
|
+
system "brew link brew-go-#{name}", out: File::NULL
|
75
|
+
end
|
76
|
+
end
|
77
|
+
threads.each { |thr| thr.join }
|
78
|
+
end
|
79
|
+
|
80
|
+
def cmd_list(name)
|
81
|
+
if name.nil?
|
82
|
+
installed = {}
|
83
|
+
Dir["#{HOMEBREW_CELLAR}/brew-go-*/*"].each do |path|
|
84
|
+
name = File.basename(Pathname(path).parent.to_s).sub("brew-go-", "")
|
85
|
+
url = get_url_from_cellar_path(path)
|
86
|
+
installed[name] = url
|
87
|
+
end
|
88
|
+
print_formatted_list(installed)
|
89
|
+
return
|
90
|
+
end
|
91
|
+
|
92
|
+
path = "#{HOMEBREW_CELLAR}/#{name}"
|
93
|
+
if Dir.exist? path
|
94
|
+
puts Dir["#{path}/**/*"].select { |f| File.file? f }
|
95
|
+
else
|
96
|
+
puts "No such keg: #{path}"
|
97
|
+
exit 1
|
98
|
+
end
|
99
|
+
end
|
100
|
+
|
101
|
+
def cmd_rm(names)
|
102
|
+
names.each do |name|
|
103
|
+
name = "brew-go-#{name}" unless name.start_with?("brew-go-")
|
104
|
+
system "brew uninstall #{name}"
|
105
|
+
end
|
106
|
+
end
|
107
|
+
|
108
|
+
def cmd_update(names)
|
109
|
+
names = names.map { |name| name.start_with?("brew-go-") ? name : "brew-go-#{name}" }
|
110
|
+
urls = if names.empty?
|
111
|
+
Dir["#{HOMEBREW_CELLAR}/brew-go-*/*"].map do |path|
|
112
|
+
get_url_from_cellar_path path
|
113
|
+
end
|
114
|
+
else
|
115
|
+
names.map do |name|
|
116
|
+
get_url_from_cellar_path Dir["#{HOMEBREW_CELLAR}/#{name}/*"].first
|
117
|
+
end
|
118
|
+
end
|
119
|
+
cmd_get urls
|
120
|
+
end
|
121
|
+
|
122
|
+
def get_url_from_cellar_path(path)
|
123
|
+
File.basename(path).gsub '#', '/'
|
124
|
+
end
|
125
|
+
|
126
|
+
def resolve_common_packages(packages)
|
127
|
+
packages.map { |p| @commons[p] || p }
|
128
|
+
end
|
129
|
+
|
130
|
+
def print_formatted_list(packages)
|
131
|
+
maxlen = packages.keys.map(&:length).max
|
132
|
+
packages.each do |name, url|
|
133
|
+
puts "\x1b[1m#{name.ljust(maxlen)}\x1b[0m (#{url})"
|
134
|
+
end
|
135
|
+
end
|
136
|
+
|
137
|
+
case ARGV.shift
|
138
|
+
when 'common', 'commo', 'comm', 'com', 'co', 'c'
|
139
|
+
cmd_common
|
140
|
+
when 'get', 'ge', 'g'
|
141
|
+
ARGV.empty? ? cmd_common : cmd_get(ARGV)
|
142
|
+
when 'list', 'lis', 'li', 'l'
|
143
|
+
cmd_list ARGV.first
|
144
|
+
when 'rm', 'r'
|
145
|
+
cmd_rm ARGV
|
146
|
+
when 'update', 'updat', 'upda', 'upd', 'up', 'u'
|
147
|
+
cmd_update ARGV
|
148
|
+
else
|
149
|
+
helpme
|
150
|
+
end
|
data/brew-go.gemspec
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path("../lib", __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
|
5
|
+
Gem::Specification.new do |spec|
|
6
|
+
spec.name = "brew-go"
|
7
|
+
spec.version = "1.0.0"
|
8
|
+
spec.authors = ["Marco Hinz"]
|
9
|
+
spec.email = ["mh.codebro@gmail.com"]
|
10
|
+
|
11
|
+
spec.summary = "Manage Go tools via Homebrew."
|
12
|
+
spec.description = spec.summary
|
13
|
+
spec.homepage = "https://github.com/mhinz/brew-go"
|
14
|
+
spec.license = "MIT"
|
15
|
+
|
16
|
+
spec.files = `git ls-files -z`.split("\x0").reject do |f|
|
17
|
+
f.match(%r{^(test|spec|features)/})
|
18
|
+
end
|
19
|
+
|
20
|
+
spec.bindir = "bin"
|
21
|
+
spec.executables = ["brew-go"]
|
22
|
+
|
23
|
+
spec.add_development_dependency "bundler", "~> 1.15"
|
24
|
+
spec.add_development_dependency "rake", "~> 10.0"
|
25
|
+
end
|
metadata
ADDED
@@ -0,0 +1,78 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: brew-go
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Marco Hinz
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2017-10-09 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: bundler
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.15'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.15'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rake
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '10.0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '10.0'
|
41
|
+
description: Manage Go tools via Homebrew.
|
42
|
+
email:
|
43
|
+
- mh.codebro@gmail.com
|
44
|
+
executables:
|
45
|
+
- brew-go
|
46
|
+
extensions: []
|
47
|
+
extra_rdoc_files: []
|
48
|
+
files:
|
49
|
+
- ".gitignore"
|
50
|
+
- Gemfile
|
51
|
+
- Rakefile
|
52
|
+
- bin/brew-go
|
53
|
+
- brew-go.gemspec
|
54
|
+
homepage: https://github.com/mhinz/brew-go
|
55
|
+
licenses:
|
56
|
+
- MIT
|
57
|
+
metadata: {}
|
58
|
+
post_install_message:
|
59
|
+
rdoc_options: []
|
60
|
+
require_paths:
|
61
|
+
- lib
|
62
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
63
|
+
requirements:
|
64
|
+
- - ">="
|
65
|
+
- !ruby/object:Gem::Version
|
66
|
+
version: '0'
|
67
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
68
|
+
requirements:
|
69
|
+
- - ">="
|
70
|
+
- !ruby/object:Gem::Version
|
71
|
+
version: '0'
|
72
|
+
requirements: []
|
73
|
+
rubyforge_project:
|
74
|
+
rubygems_version: 2.6.13
|
75
|
+
signing_key:
|
76
|
+
specification_version: 4
|
77
|
+
summary: Manage Go tools via Homebrew.
|
78
|
+
test_files: []
|