pry-try 0.1.3 → 0.2.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a2f56fc3f70ef4426ab1dde7d8a0218a3146592a
4
- data.tar.gz: 2e716815a79cbd1c01d4fc7ddbac1eb2b3222a89
3
+ metadata.gz: 9be4107b9a3260e37eab98cd327a3ce9cd76133c
4
+ data.tar.gz: ecb09c7a053714d9ecdb747ea6d9de8b52c9fa65
5
5
  SHA512:
6
- metadata.gz: fda7f1c016866b6671af6b28edc2a8d9b858a7a540d52c2844eee99453d4177b22ccf4e0ae105b4784974cedc792cc1e31f5569108cb3ca5139d7defaeebd8d1
7
- data.tar.gz: 93bd48f95adb9f4f1daa104877688f0b62c19b7b2e1cd39884fdc8854740c0090c7c930e8177ef38623b160456bf19c7255209dfe27aec877b4bf71cbd21b6f5
6
+ metadata.gz: a493f0705ccdeadf414858b67727abcf293c5b627eb40d6f3edb29fd907c6bf5357b24f1ea0c85817aca04d1c22d551c3b3674cef504b0ae5c1a2e3750e5172a
7
+ data.tar.gz: b043e9a41d84205dca42dfe001946af3817fe591cfe07cc27a23cabb4f22abfe10ea9d00401bb5ff6cc67dba190904f06e34f1cc4bd4f3c8fa9f00fc47225f6c
data/README.md CHANGED
@@ -1,17 +1,18 @@
1
1
  # pry-try
2
2
 
3
- *Note* This gem is currently mostly README-ware.
3
+ Open a pry-session with the gems you want to try.
4
4
 
5
5
  ## Usage
6
6
 
7
- This gem should support the following usecases:
7
+ This gem should supports the following usecases:
8
8
 
9
9
  ### pipe-in a script
10
10
 
11
11
  ```bash
12
- # piped-in content is evaluated after which a repl opens:
12
+ # piped-in content is evaluated in a new pry-session:
13
13
  $ echo '@a = 1' | pry-try
14
14
  [1] pry(main)> @a =1
15
+ 1
15
16
  [2] pry(main)>
16
17
 
17
18
  # handy to share scripts with others:
@@ -20,32 +21,45 @@ $ curl <path-to-raw-gist> | pry-try
20
21
 
21
22
  ### try a gem
22
23
 
24
+ Start a new pry-session with the requested gems loaded:
25
+
23
26
  ```bash
24
27
  $ pry-try activesupport
25
- Fetching gem metadata from https://rubygems.org/..............
28
+ Fetching gem metadata from https://rubygems.org/.........
26
29
  Fetching version metadata from https://rubygems.org/.
27
30
  Resolving dependencies...
28
31
  Using concurrent-ruby 1.0.5
29
32
  Using i18n 0.8.1
30
33
  Using minitest 5.10.1
31
34
  Using thread_safe 0.3.6
35
+ Using coderay 1.1.1
36
+ Using method_source 0.8.2
37
+ Using slop 3.6.0
32
38
  Using bundler 1.14.5
33
39
  Using tzinfo 1.2.2
40
+ Using pry 0.10.4
34
41
  Using activesupport 5.0.2
35
- => [Gem::Dependency.new("activesupport", Gem::Requirement.new([">= 0"]), :runtime)]
36
42
  [2] pry(main)> 1.second
37
43
  => 1 second
38
44
  ```
39
45
 
46
+ Request a specific version, like you would do in a Gemfile:
47
+ ```bash
48
+ $ pry-try activesupport '~>4.2'
49
+ # or multiple gems:
50
+ $ pry-try activesupport '~>4.2' redis
51
+ ```
52
+
40
53
  ### try a gem within a pry-session
41
54
 
42
55
  ```bash
43
56
  # given
44
57
  $ pry
45
- [1] pry(main)> try 'activesupport'
58
+ [1] pry(main)> .pry-try 'activesupport'
46
59
  ...
47
60
  [2] pry(main)> 1.second
48
61
  => 1 second
62
+ # ^D lets you return to the original pry-session
49
63
  ```
50
64
 
51
65
 
data/exe/pry-try CHANGED
@@ -1,7 +1,48 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
+ VERSION_LIKE_RE = [Gem::Requirement::PATTERN, /v?\d+\.\d+/, /^\h+$/].freeze
4
+
5
+ def parse_args(args)
6
+ args.each_with_object([]) do |arg, obj|
7
+ matches_arg = arg.method(:match).to_proc
8
+ if VERSION_LIKE_RE.detect(&matches_arg)
9
+ obj[-1] << arg
10
+ else
11
+ obj << [arg]
12
+ end
13
+ end
14
+ end
15
+
16
+ REQUIREMENTS = {
17
+ 'rails' => %w(rails/all active_support/all),
18
+ 'activerecord' => %w(active_record),
19
+ 'activesupport' => %w(active_support/all),
20
+ }.freeze
21
+
22
+ gems = parse_args(ARGV).map do |gem|
23
+ if r = REQUIREMENTS[gem.first]
24
+ gem << {:require => r}
25
+ else
26
+ gem
27
+ end
28
+ end
29
+
3
30
  if $stdin.tty?
4
- puts "Some argument crunching..."
31
+ require 'tempfile'
32
+ require 'yaml'
33
+ script = Tempfile.new.tap do |f|
34
+ File.write(f, <<CODEZ.gsub(/\n+ *(?=\S)/, ';'))
35
+ require 'bundler/inline'
36
+
37
+ gemfile(true) do
38
+ source 'https://rubygems.org'
39
+ gem 'pry'
40
+ YAML.load(#{YAML.dump(gems).inspect}).each {|gargs| gem(*gargs) }
41
+ end
42
+ $stdin = $stdin.reopen '/dev/tty';
43
+ CODEZ
44
+ end
45
+ exec %{cat #{script.path} | pry}
5
46
  else
6
- exec %{script=`cat;echo; echo '$stdin = $stdin.reopen "/dev/tty";'`; printf "${script}" | pry}
47
+ exec %{script=$(cat;echo; echo '$stdin = $stdin.reopen "/dev/tty";'); printf "${script}" | pry}
7
48
  end
@@ -1,3 +1,3 @@
1
1
  module PryTry
2
- VERSION = "0.1.3"
2
+ VERSION = "0.2.0"
3
3
  end
data/pry-try.gemspec CHANGED
@@ -21,6 +21,7 @@ Gem::Specification.new do |spec|
21
21
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
22
22
  spec.require_paths = ["lib"]
23
23
 
24
+ spec.add_dependency "pry", "~>0.10"
24
25
  spec.add_development_dependency "bundler", "~> 1.14"
25
26
  spec.add_development_dependency "rake", "~> 10.0"
26
27
  spec.add_development_dependency "rspec", "~> 3.0"
metadata CHANGED
@@ -1,15 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pry-try
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gert Goet
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-03-06 00:00:00.000000000 Z
11
+ date: 2017-03-20 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: pry
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '0.10'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '0.10'
13
27
  - !ruby/object:Gem::Dependency
14
28
  name: bundler
15
29
  requirement: !ruby/object:Gem::Requirement