bun 1.0.2 → 1.1.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 +4 -4
- data/.travis.yml +13 -0
- data/bun.gemspec +2 -0
- data/{Gemfile → gemfile} +0 -0
- data/{Gemfile.lock → gemfile.lock} +1 -1
- data/lib/bun.rb +15 -0
- data/lib/bun/runner.rb +45 -31
- data/lib/bun/version.rb +1 -1
- data/rakefile +6 -0
- data/readme.md +17 -0
- metadata +7 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2768a6afdab33b24df8ec9dcb95bb8764bf3c0098dc7008769d3f61b187fba91
|
4
|
+
data.tar.gz: b2f875654ae2db8746064d8f5aebbc2618d7cfedef486f0120600cd0fec422c6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f2f4c416129ba3d8bd4e4c7166c5d8171fda830eeb5cfa6bcad55b0928eb1c177ea9d05bca8d89dfc854f9ca22b42d365b32221638969f0fc14559937004b71d
|
7
|
+
data.tar.gz: e0c913a084c34304c7ed4f1d89413dd8c25e0059bc6b2429328fecc5c97ba0c34927bfb7cf1368dc09bbb58ff6c0cbf0403ac29c1504bf972102fb5a2d791f4e
|
data/.travis.yml
ADDED
data/bun.gemspec
CHANGED
@@ -12,6 +12,8 @@ Gem::Specification.new do |spec|
|
|
12
12
|
spec.homepage = "https://github.com/shime/bun"
|
13
13
|
spec.license = "MIT"
|
14
14
|
|
15
|
+
spec.required_ruby_version = '>= 2.0'
|
16
|
+
|
15
17
|
spec.files = `git ls-files -z`.split("\x0").reject do |f|
|
16
18
|
f.match(%r{^(test|spec|features)/})
|
17
19
|
end
|
data/{Gemfile → gemfile}
RENAMED
File without changes
|
data/lib/bun.rb
CHANGED
@@ -7,4 +7,19 @@ require_relative "bun/gemfile"
|
|
7
7
|
require_relative "bun/version_fetcher"
|
8
8
|
|
9
9
|
module Bun
|
10
|
+
extend self
|
11
|
+
|
12
|
+
def add(gems, opts = {})
|
13
|
+
runner.add(Array(gems), opts)
|
14
|
+
end
|
15
|
+
|
16
|
+
def remove(gems, opts = {})
|
17
|
+
runner.remove(Array(gems), opts)
|
18
|
+
end
|
19
|
+
|
20
|
+
private
|
21
|
+
|
22
|
+
def runner
|
23
|
+
@runner ||= Runner.new
|
24
|
+
end
|
10
25
|
end
|
data/lib/bun/runner.rb
CHANGED
@@ -9,19 +9,49 @@ module Bun
|
|
9
9
|
|
10
10
|
def initialize(*arguments)
|
11
11
|
@arguments = arguments
|
12
|
+
@gemfile = Gemfile.new
|
13
|
+
|
14
|
+
parse_arguments
|
12
15
|
end
|
13
16
|
|
14
17
|
def call
|
15
|
-
parse_arguments
|
16
|
-
|
17
18
|
command = parsed_arguments.shift
|
18
19
|
gems = parsed_arguments.take_while { |argument| argument !~ /^-|^--/}
|
19
20
|
|
20
|
-
self.gemfile = Gemfile.new
|
21
|
-
|
22
21
|
run_command(command, gems)
|
23
22
|
end
|
24
23
|
|
24
|
+
def uninstall(gems, opts: {})
|
25
|
+
gems.each do |gem|
|
26
|
+
gemfile.remove(gem)
|
27
|
+
end
|
28
|
+
|
29
|
+
bundle_install
|
30
|
+
end
|
31
|
+
alias :remove :uninstall
|
32
|
+
|
33
|
+
def install(gems = [], opts: {})
|
34
|
+
gemfile.init
|
35
|
+
|
36
|
+
gems.each do |gem|
|
37
|
+
name, version = extract_name_and_version_from_gem(gem)
|
38
|
+
|
39
|
+
if print?
|
40
|
+
version ||= VersionFetcher.new(name, arguments).fetch_latest_version
|
41
|
+
puts "gem \"#{name}\", \"#{version_string(version)}\""
|
42
|
+
else
|
43
|
+
gemfile.verify_unique!(name)
|
44
|
+
version ||= VersionFetcher.new(name, arguments).fetch_latest_version
|
45
|
+
gemfile.add(name,
|
46
|
+
version_string(version),
|
47
|
+
arguments.group)
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
bundle_install
|
52
|
+
end
|
53
|
+
alias :add :install
|
54
|
+
|
25
55
|
private
|
26
56
|
|
27
57
|
attr_accessor :arguments
|
@@ -48,32 +78,6 @@ module Bun
|
|
48
78
|
exit(1)
|
49
79
|
end
|
50
80
|
|
51
|
-
def uninstall(gems)
|
52
|
-
gems.each do |gem|
|
53
|
-
gemfile.remove(gem)
|
54
|
-
end
|
55
|
-
|
56
|
-
bundle_install
|
57
|
-
end
|
58
|
-
|
59
|
-
def install(gems = [])
|
60
|
-
gemfile.init
|
61
|
-
|
62
|
-
gems.each do |gem|
|
63
|
-
if arguments.print?
|
64
|
-
version = version_string(VersionFetcher.new(gem, arguments).fetch_latest_version)
|
65
|
-
puts "gem \"#{gem}\", \"#{version}\""
|
66
|
-
else
|
67
|
-
gemfile.verify_unique!(gem)
|
68
|
-
gemfile.add(gem,
|
69
|
-
version_string(VersionFetcher.new(gem, arguments).fetch_latest_version),
|
70
|
-
arguments.group)
|
71
|
-
end
|
72
|
-
end
|
73
|
-
|
74
|
-
bundle_install
|
75
|
-
end
|
76
|
-
|
77
81
|
def version_string(version)
|
78
82
|
if arguments.optimistic?
|
79
83
|
">= #{version}"
|
@@ -85,16 +89,26 @@ module Bun
|
|
85
89
|
end
|
86
90
|
|
87
91
|
def bundle_install
|
88
|
-
return if arguments.skip_install? ||
|
92
|
+
return if arguments.skip_install? || print?
|
89
93
|
|
90
94
|
Bundler.with_clean_env do
|
91
95
|
system("bundle install")
|
92
96
|
end
|
93
97
|
end
|
94
98
|
|
99
|
+
def print?
|
100
|
+
arguments.print?
|
101
|
+
end
|
102
|
+
|
95
103
|
def parse_arguments
|
96
104
|
self.arguments = Arguments.new(arguments)
|
97
105
|
self.parsed_arguments = arguments.parse
|
98
106
|
end
|
107
|
+
|
108
|
+
def extract_name_and_version_from_gem(gem)
|
109
|
+
return gem unless gem =~ /:/
|
110
|
+
|
111
|
+
gem.split(":")
|
112
|
+
end
|
99
113
|
end
|
100
114
|
end
|
data/lib/bun/version.rb
CHANGED
data/rakefile
ADDED
data/readme.md
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
# Bun
|
2
2
|
|
3
|
+
[](https://travis-ci.org/shime/bun)
|
4
|
+
|
3
5
|
Bundler's little helper. A missing CLI tool to install and remove gems from Gemfile with ease.
|
4
6
|
|
5
7
|
|
@@ -19,6 +21,12 @@ Install RSpec:
|
|
19
21
|
$ bun add rspec
|
20
22
|
```
|
21
23
|
|
24
|
+
Install specific version of RSpec
|
25
|
+
|
26
|
+
```
|
27
|
+
$ bun add rspec:3.7.0
|
28
|
+
```
|
29
|
+
|
22
30
|
Install Pry in development group:
|
23
31
|
|
24
32
|
```
|
@@ -67,6 +75,15 @@ More info:
|
|
67
75
|
$ bun --help
|
68
76
|
```
|
69
77
|
|
78
|
+
# API
|
79
|
+
|
80
|
+
```ruby
|
81
|
+
require "bun"
|
82
|
+
|
83
|
+
Bun.add("rspec:3.7.0") # adds RSpec to Gemfile and runs bundle install
|
84
|
+
Bun.remove("rspec") # removes RSpec from Gemfile
|
85
|
+
```
|
86
|
+
|
70
87
|
## Prior art
|
71
88
|
|
72
89
|
* [Gemrat](https://github.com/drurly/gemrat)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bun
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Hrvoje Šimić
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-03-
|
11
|
+
date: 2018-03-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: tty-spinner
|
@@ -103,10 +103,11 @@ extensions: []
|
|
103
103
|
extra_rdoc_files: []
|
104
104
|
files:
|
105
105
|
- ".gitignore"
|
106
|
-
-
|
107
|
-
- Gemfile.lock
|
106
|
+
- ".travis.yml"
|
108
107
|
- bin/bun
|
109
108
|
- bun.gemspec
|
109
|
+
- gemfile
|
110
|
+
- gemfile.lock
|
110
111
|
- lib/bun.rb
|
111
112
|
- lib/bun/arguments.rb
|
112
113
|
- lib/bun/errors.rb
|
@@ -116,6 +117,7 @@ files:
|
|
116
117
|
- lib/bun/version.rb
|
117
118
|
- lib/bun/version_fetcher.rb
|
118
119
|
- license
|
120
|
+
- rakefile
|
119
121
|
- readme.md
|
120
122
|
homepage: https://github.com/shime/bun
|
121
123
|
licenses:
|
@@ -129,7 +131,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
129
131
|
requirements:
|
130
132
|
- - ">="
|
131
133
|
- !ruby/object:Gem::Version
|
132
|
-
version: '0'
|
134
|
+
version: '2.0'
|
133
135
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
134
136
|
requirements:
|
135
137
|
- - ">="
|