tryrb 1.1.0 → 1.1.1
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/Rakefile +5 -8
- data/lib/tryrb/cli.rb +33 -10
- data/lib/tryrb/config.rb +10 -20
- data/lib/tryrb/version.rb +1 -1
- data/spec/cli_spec.rb +51 -15
- data/spec/config_spec.rb +7 -18
- data/spec/helper.rb +14 -0
- data/tryrb.gemspec +3 -1
- metadata +21 -7
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 7433c7c65a665d4cd86719f2867b18ff718a7679
|
|
4
|
+
data.tar.gz: 1e173c59ac6d9b45697d81da0899fc8a38200144
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: f91459a4b90f0dbb5564531ac0aa99363c685798ea49dbadeddbd1149cec9757f56d6e2dd42e9646542b92275769194c983c2dac38bd98ba9c1a048f1c13d688
|
|
7
|
+
data.tar.gz: 8873c2cedaf63641f6cc5f45b6df2d026891777e49f66d6664ce8248116dc5b48b2112456faa2ee475e5aab6a0ed270c97511745f1487450b703c8307fedcdc4
|
data/Rakefile
CHANGED
|
@@ -1,11 +1,8 @@
|
|
|
1
1
|
require "bundler/gem_tasks"
|
|
2
|
-
require 'rake/testtask'
|
|
3
2
|
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
3
|
+
task :console do
|
|
4
|
+
require 'pry'
|
|
5
|
+
require 'tryrb'
|
|
6
|
+
ARGV.clear
|
|
7
|
+
Pry.start
|
|
8
8
|
end
|
|
9
|
-
|
|
10
|
-
desc "Run tests"
|
|
11
|
-
task :default => :test
|
data/lib/tryrb/cli.rb
CHANGED
|
@@ -5,43 +5,66 @@ require 'tryrb/config'
|
|
|
5
5
|
module TryRb
|
|
6
6
|
class CLI < Thor
|
|
7
7
|
def initialize(*)
|
|
8
|
-
@config = TryRb::Config.instance
|
|
9
8
|
super
|
|
10
9
|
end
|
|
11
10
|
|
|
11
|
+
no_commands do
|
|
12
|
+
def conf
|
|
13
|
+
TryRb::Config.instance
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
|
|
12
17
|
desc "create [FILENAME]", 'create a file to edit (short-cut alias: "c")'
|
|
13
18
|
def create(key_name="")
|
|
14
19
|
@key_name = key_name
|
|
15
|
-
system([
|
|
20
|
+
system([conf.editor, fullpath] * ' ')
|
|
16
21
|
end
|
|
17
|
-
|
|
18
22
|
map 'c' => :create
|
|
19
23
|
|
|
20
|
-
option :last, aliases
|
|
21
|
-
desc "exec [FILENAME]", '
|
|
24
|
+
option :last, :aliases => "-l", :banner => 'N', :desc => 'execute the last N file in the files you specify via filename, default is the 1', :type => :numeric, :lazy_default => 1
|
|
25
|
+
desc "exec [FILENAME]", 'execute a ruby script, default is last one of all files (short-cut alias: "e")'
|
|
22
26
|
def exec(filename=nil)
|
|
23
|
-
file_path = find_file(filename
|
|
27
|
+
file_path = find_file(:filename => filename, :last_n => options[:last])
|
|
24
28
|
abort "Can't find the file you want" unless file_path
|
|
25
29
|
system(['ruby', file_path] * ' ')
|
|
26
30
|
end
|
|
27
|
-
|
|
28
31
|
map 'e' => :exec
|
|
29
32
|
|
|
33
|
+
desc 'config', "Config your editor and tmp_dir via command"
|
|
34
|
+
def config
|
|
35
|
+
default_tmp_path = "~/tmp/tryrb"
|
|
36
|
+
tmp_dir = ask("Please specify your dir of the tmp files(default: #{default_tmp_path}):")
|
|
37
|
+
tmp_dir = default_tmp_path if tmp_dir.empty?
|
|
38
|
+
|
|
39
|
+
default_editor = "vim"
|
|
40
|
+
editor = ask("Please specify your favorite editor(default: #{default_editor}):")
|
|
41
|
+
editor = default_editor if editor.empty?
|
|
42
|
+
|
|
43
|
+
config = {'tmp_dir' => tmp_dir, 'editor' => editor}
|
|
44
|
+
|
|
45
|
+
rc_path = conf.expanded_rc_path
|
|
46
|
+
File.open(rc_path, 'w') do |f|
|
|
47
|
+
f.write(config.to_yaml)
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
say("The config have been writen to ~/.tryrbrc", :green)
|
|
51
|
+
end
|
|
52
|
+
|
|
30
53
|
private
|
|
31
54
|
|
|
32
55
|
def find_file(options={})
|
|
33
56
|
filename = options[:filename]
|
|
34
57
|
last_n = options[:last_n] || 1
|
|
35
|
-
names = Dir[File.join(
|
|
58
|
+
names = Dir[File.join(conf.expanded_tmp_dir, '*.rb')]
|
|
36
59
|
names = names.select { |n| n =~ /#{filename}\.rb$/ } if filename
|
|
37
60
|
names[-last_n]
|
|
38
61
|
end
|
|
39
62
|
|
|
40
63
|
def fullpath
|
|
41
64
|
filename = get_filename
|
|
42
|
-
expanded_path =
|
|
65
|
+
expanded_path = conf.expanded_tmp_dir
|
|
43
66
|
FileUtils.mkdir_p expanded_path unless Dir.exists?(expanded_path)
|
|
44
|
-
File.join
|
|
67
|
+
File.join conf.tmp_dir, filename
|
|
45
68
|
rescue Errno::EEXIST => e
|
|
46
69
|
abort "File #{e.message.split[-1]} exists. The tmp directory can't be created! Please delete the file first."
|
|
47
70
|
end
|
data/lib/tryrb/config.rb
CHANGED
|
@@ -3,42 +3,32 @@ require 'singleton'
|
|
|
3
3
|
module TryRb
|
|
4
4
|
class Config
|
|
5
5
|
include Singleton
|
|
6
|
-
attr_reader :path
|
|
7
|
-
FILE_NAME = '.tryrbrc'
|
|
8
6
|
|
|
9
7
|
%w[tmp_dir editor].each do |key|
|
|
10
8
|
define_method key.to_sym do
|
|
11
|
-
|
|
9
|
+
data[key]
|
|
12
10
|
end
|
|
13
11
|
end
|
|
14
12
|
|
|
15
|
-
def
|
|
16
|
-
@
|
|
17
|
-
@data = load_file
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
def path=(path)
|
|
21
|
-
@path = path
|
|
22
|
-
@data = load_file
|
|
23
|
-
@path
|
|
13
|
+
def data
|
|
14
|
+
@data ||= load_file
|
|
24
15
|
end
|
|
25
16
|
|
|
26
17
|
def load_file
|
|
27
18
|
require 'yaml'
|
|
28
|
-
YAML.load_file(
|
|
19
|
+
YAML.load_file(expanded_rc_path)
|
|
29
20
|
rescue Errno::ENOENT
|
|
30
|
-
|
|
21
|
+
TryRb::CLI::Shell::Color.new.say("Please run `tryrb config` to configure.", :red)
|
|
22
|
+
abort
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def expanded_rc_path
|
|
26
|
+
File.expand_path('~/.tryrbrc')
|
|
31
27
|
end
|
|
32
28
|
|
|
33
29
|
def expanded_tmp_dir
|
|
34
30
|
File.expand_path(tmp_dir)
|
|
35
31
|
end
|
|
36
32
|
|
|
37
|
-
private
|
|
38
|
-
|
|
39
|
-
def default_config
|
|
40
|
-
{'tmp_dir' => "~/tmp/tryrb",
|
|
41
|
-
'editor' => 'mvim'}
|
|
42
|
-
end
|
|
43
33
|
end
|
|
44
34
|
end
|
data/lib/tryrb/version.rb
CHANGED
data/spec/cli_spec.rb
CHANGED
|
@@ -3,12 +3,12 @@ require 'helper'
|
|
|
3
3
|
describe TryRb::CLI do
|
|
4
4
|
before :each do
|
|
5
5
|
Time.stub(:now) { Date.parse('2014-1-1').to_time }
|
|
6
|
-
TryRb::Config.instance.
|
|
6
|
+
TryRb::Config.instance.stub(:expanded_rc_path) { fixture_file_path('tryrbrc') }
|
|
7
7
|
@cli = TryRb::CLI.new
|
|
8
8
|
end
|
|
9
9
|
|
|
10
10
|
describe '#create' do
|
|
11
|
-
it 'create a file
|
|
11
|
+
it 'create a file 20140101000000.rb' do
|
|
12
12
|
expect(@cli).to receive(:system).with('emacs ~/tmp/foo/tryrb/20140101000000.rb')
|
|
13
13
|
@cli.create
|
|
14
14
|
end
|
|
@@ -16,42 +16,78 @@ describe TryRb::CLI do
|
|
|
16
16
|
expect(@cli).to receive(:system).with('emacs ~/tmp/foo/tryrb/20140101000000_foo.rb')
|
|
17
17
|
@cli.create 'foo'
|
|
18
18
|
end
|
|
19
|
+
it 'abort caused by existing file' do
|
|
20
|
+
FakeFS.activate!
|
|
21
|
+
FileUtils.mkdir_p '/tmp'
|
|
22
|
+
FileUtils.touch '/tmp/foo'
|
|
23
|
+
@cli.stub(:system)
|
|
24
|
+
expect(TryRb::Config.instance).to receive(:expanded_tmp_dir).and_return('/tmp/foo/tryrb')
|
|
25
|
+
expect(@cli).to receive(:abort).with("File foo exists. The tmp directory can't be created! Please delete the file first.")
|
|
26
|
+
@cli.create
|
|
27
|
+
FileUtils.rm_rf '/tmp/foo'
|
|
28
|
+
FakeFS.deactivate!
|
|
29
|
+
end
|
|
19
30
|
end
|
|
20
31
|
|
|
21
32
|
describe '#exec' do
|
|
22
33
|
before :each do
|
|
23
|
-
|
|
24
|
-
FileUtils.
|
|
25
|
-
FileUtils.touch 'tmp/foo/tryrb/
|
|
26
|
-
FileUtils.touch 'tmp/foo/tryrb/
|
|
27
|
-
|
|
34
|
+
FakeFS.activate!
|
|
35
|
+
FileUtils.mkdir_p '/tmp/foo/tryrb'
|
|
36
|
+
FileUtils.touch '/tmp/foo/tryrb/20140101000000_foo.rb'
|
|
37
|
+
FileUtils.touch '/tmp/foo/tryrb/20140102000000_foo.rb'
|
|
38
|
+
FileUtils.touch '/tmp/foo/tryrb/20140103000000_bar.rb'
|
|
39
|
+
expect(TryRb::Config.instance).to receive(:expanded_tmp_dir).and_return('/tmp/foo/tryrb')
|
|
28
40
|
end
|
|
29
41
|
after :each do
|
|
30
|
-
FileUtils.rm_rf 'tmp/foo'
|
|
42
|
+
FileUtils.rm_rf '/tmp/foo'
|
|
43
|
+
FakeFS.deactivate!
|
|
31
44
|
end
|
|
32
45
|
it 'exec last file' do
|
|
33
|
-
expect(@cli).to receive(:system).with('ruby tmp/foo/tryrb/20140103000000_bar.rb')
|
|
46
|
+
expect(@cli).to receive(:system).with('ruby /tmp/foo/tryrb/20140103000000_bar.rb')
|
|
34
47
|
@cli.exec
|
|
35
48
|
end
|
|
36
49
|
it 'exec last file with filename' do
|
|
37
|
-
expect(@cli).to receive(:system).with('ruby tmp/foo/tryrb/20140102000000_foo.rb')
|
|
50
|
+
expect(@cli).to receive(:system).with('ruby /tmp/foo/tryrb/20140102000000_foo.rb')
|
|
38
51
|
@cli.exec 'foo'
|
|
39
52
|
end
|
|
40
53
|
it 'exec last second file' do
|
|
41
|
-
expect(@cli).to receive(:options).and_return({last
|
|
42
|
-
expect(@cli).to receive(:system).with('ruby tmp/foo/tryrb/20140102000000_foo.rb')
|
|
54
|
+
expect(@cli).to receive(:options).and_return({:last => 2})
|
|
55
|
+
expect(@cli).to receive(:system).with('ruby /tmp/foo/tryrb/20140102000000_foo.rb')
|
|
43
56
|
@cli.exec
|
|
44
57
|
end
|
|
45
58
|
it 'exec last second file with filename' do
|
|
46
|
-
expect(@cli).to receive(:options).and_return({last
|
|
47
|
-
expect(@cli).to receive(:system).with('ruby tmp/foo/tryrb/20140101000000_foo.rb')
|
|
59
|
+
expect(@cli).to receive(:options).and_return({:last => 2})
|
|
60
|
+
expect(@cli).to receive(:system).with('ruby /tmp/foo/tryrb/20140101000000_foo.rb')
|
|
48
61
|
@cli.exec 'foo'
|
|
49
62
|
end
|
|
50
63
|
it 'abort because there is no file' do
|
|
51
64
|
@cli.stub(:system)
|
|
52
|
-
expect(@cli).to receive(:options).and_return({last
|
|
65
|
+
expect(@cli).to receive(:options).and_return({:last => 4})
|
|
53
66
|
expect(@cli).to receive(:abort).with("Can't find the file you want")
|
|
54
67
|
@cli.exec
|
|
55
68
|
end
|
|
56
69
|
end
|
|
70
|
+
|
|
71
|
+
describe '#config' do
|
|
72
|
+
before :each do
|
|
73
|
+
@shell = TryRb::CLI::Shell::Basic.new
|
|
74
|
+
FakeFS.activate!
|
|
75
|
+
end
|
|
76
|
+
after :each do
|
|
77
|
+
FileUtils.rm '/tmp/.tryrbrc'
|
|
78
|
+
FakeFS.deactivate!
|
|
79
|
+
end
|
|
80
|
+
it "save config data in tryrbrc" do
|
|
81
|
+
cli = TryRb::CLI.new
|
|
82
|
+
expect(TryRb::Config.instance).to receive(:expanded_rc_path).and_return('/tmp/.tryrbrc')
|
|
83
|
+
expect(cli).to receive(:ask).with("Please specify your dir of the tmp files(default: ~/tmp/tryrb):").and_return('~/foo/tryrb')
|
|
84
|
+
expect(cli).to receive(:ask).with("Please specify your favorite editor(default: vim):").and_return('emacs')
|
|
85
|
+
cli.config
|
|
86
|
+
if RUBY_VERSION < '2.1.0'
|
|
87
|
+
expect(File.open('/tmp/.tryrbrc').read).to eq("---\ntmp_dir: ~/foo/tryrb\neditor: emacs\n")
|
|
88
|
+
else
|
|
89
|
+
expect(File.open('/tmp/.tryrbrc').read).to eq("---\ntmp_dir: \"~/foo/tryrb\"\neditor: emacs\n")
|
|
90
|
+
end
|
|
91
|
+
end
|
|
92
|
+
end
|
|
57
93
|
end
|
data/spec/config_spec.rb
CHANGED
|
@@ -15,7 +15,7 @@ describe TryRb::Config do
|
|
|
15
15
|
describe '#tmp_dir' do
|
|
16
16
|
it "returns tmp dir" do
|
|
17
17
|
config = TryRb::Config.instance
|
|
18
|
-
config.
|
|
18
|
+
config.stub(:expanded_rc_path) { fixture_file_path('tryrbrc') }
|
|
19
19
|
expect(config.tmp_dir).to eq '~/tmp/foo/tryrb'
|
|
20
20
|
end
|
|
21
21
|
end
|
|
@@ -23,37 +23,26 @@ describe TryRb::Config do
|
|
|
23
23
|
describe '#editor' do
|
|
24
24
|
it "returns editor" do
|
|
25
25
|
config = TryRb::Config.instance
|
|
26
|
-
config.
|
|
26
|
+
config.stub(:expanded_rc_path) { fixture_file_path('tryrbrc') }
|
|
27
27
|
expect(config.editor).to eq 'emacs'
|
|
28
28
|
end
|
|
29
29
|
end
|
|
30
30
|
|
|
31
|
-
describe '#path=' do
|
|
32
|
-
it 'overrides path' do
|
|
33
|
-
config = TryRb::Config.instance
|
|
34
|
-
config.path = fixture_file_path('foorc')
|
|
35
|
-
expect(config.path).to eq fixture_file_path('foorc')
|
|
36
|
-
end
|
|
37
|
-
it 'reloads data' do
|
|
38
|
-
config = TryRb::Config.instance
|
|
39
|
-
config.path = fixture_file_path('tryrbrc')
|
|
40
|
-
expect(config.load_file.keys).to eq %w[tmp_dir editor]
|
|
41
|
-
end
|
|
42
|
-
end
|
|
43
|
-
|
|
44
31
|
describe 'load_file' do
|
|
45
32
|
context 'when file exists at path' do
|
|
46
33
|
it 'loads data from the file' do
|
|
47
34
|
config = TryRb::Config.instance
|
|
48
|
-
config.
|
|
35
|
+
config.stub(:expanded_rc_path) { fixture_file_path('tryrbrc') }
|
|
49
36
|
expect(config.tmp_dir).to eq '~/tmp/foo/tryrb'
|
|
50
37
|
end
|
|
51
38
|
end
|
|
52
39
|
context 'when file does not exist' do
|
|
53
40
|
it 'loads default data' do
|
|
54
41
|
config = TryRb::Config.instance
|
|
55
|
-
config.
|
|
56
|
-
expect(config
|
|
42
|
+
config.stub(:expanded_rc_path) { fixture_file_path('foorc') }
|
|
43
|
+
expect(config).to receive(:abort)
|
|
44
|
+
TryRb::CLI::Shell::Color.any_instance.stub(:say)
|
|
45
|
+
config.load_file
|
|
57
46
|
end
|
|
58
47
|
end
|
|
59
48
|
end
|
data/spec/helper.rb
CHANGED
|
@@ -1,5 +1,19 @@
|
|
|
1
|
+
require 'simplecov'
|
|
2
|
+
require 'coveralls'
|
|
3
|
+
|
|
4
|
+
SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter[
|
|
5
|
+
SimpleCov::Formatter::HTMLFormatter,
|
|
6
|
+
Coveralls::SimpleCov::Formatter
|
|
7
|
+
]
|
|
8
|
+
|
|
9
|
+
SimpleCov.start do
|
|
10
|
+
add_filter '/spec/'
|
|
11
|
+
minimum_coverage(99)
|
|
12
|
+
end
|
|
13
|
+
|
|
1
14
|
require 'tryrb'
|
|
2
15
|
require 'rspec'
|
|
16
|
+
require 'fakefs/spec_helpers'
|
|
3
17
|
|
|
4
18
|
RSpec.configure do |config|
|
|
5
19
|
config.expect_with :rspec do |c|
|
data/tryrb.gemspec
CHANGED
|
@@ -16,5 +16,7 @@ Gem::Specification.new do |s|
|
|
|
16
16
|
s.executables << 'tryrb'
|
|
17
17
|
s.require_paths = ["lib"]
|
|
18
18
|
s.homepage = 'https://github.com/tony612/tryrb'
|
|
19
|
-
s.add_dependency 'thor'
|
|
19
|
+
s.add_dependency 'thor', '~> 0.18.1'
|
|
20
|
+
s.add_development_dependency 'bundler', '~> 1.0'
|
|
21
|
+
s.post_install_message = "Please use `tryrb config` to configure."
|
|
20
22
|
end
|
metadata
CHANGED
|
@@ -1,29 +1,43 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: tryrb
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.1.
|
|
4
|
+
version: 1.1.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Tony Han
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2014-
|
|
11
|
+
date: 2014-02-17 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: thor
|
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
|
16
16
|
requirements:
|
|
17
|
-
- - "
|
|
17
|
+
- - "~>"
|
|
18
18
|
- !ruby/object:Gem::Version
|
|
19
|
-
version:
|
|
19
|
+
version: 0.18.1
|
|
20
20
|
type: :runtime
|
|
21
21
|
prerelease: false
|
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
|
23
23
|
requirements:
|
|
24
|
-
- - "
|
|
24
|
+
- - "~>"
|
|
25
25
|
- !ruby/object:Gem::Version
|
|
26
|
-
version:
|
|
26
|
+
version: 0.18.1
|
|
27
|
+
- !ruby/object:Gem::Dependency
|
|
28
|
+
name: bundler
|
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
|
30
|
+
requirements:
|
|
31
|
+
- - "~>"
|
|
32
|
+
- !ruby/object:Gem::Version
|
|
33
|
+
version: '1.0'
|
|
34
|
+
type: :development
|
|
35
|
+
prerelease: false
|
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
37
|
+
requirements:
|
|
38
|
+
- - "~>"
|
|
39
|
+
- !ruby/object:Gem::Version
|
|
40
|
+
version: '1.0'
|
|
27
41
|
description: Try ruby code in a temporary file created.
|
|
28
42
|
email: h.bing612@gmail.com
|
|
29
43
|
executables:
|
|
@@ -47,7 +61,7 @@ homepage: https://github.com/tony612/tryrb
|
|
|
47
61
|
licenses:
|
|
48
62
|
- MIT
|
|
49
63
|
metadata: {}
|
|
50
|
-
post_install_message:
|
|
64
|
+
post_install_message: Please use `tryrb config` to configure.
|
|
51
65
|
rdoc_options: []
|
|
52
66
|
require_paths:
|
|
53
67
|
- lib
|