sheet 0.1.5 → 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.
- data/README.md +7 -2
- data/VERSION +1 -1
- data/lib/sheet.rb +12 -3
- data/lib/sheet/list.rb +5 -1
- data/lib/sheet/open.rb +8 -12
- data/lib/sheet/write.rb +3 -2
- data/sheet.gemspec +2 -2
- data/spec/sheet/list_spec.rb +21 -4
- data/spec/sheet/open_spec.rb +7 -6
- data/spec/sheet/write_spec.rb +9 -0
- metadata +3 -3
data/README.md
CHANGED
@@ -36,8 +36,13 @@ automatically open a url when opening your sheet:
|
|
36
36
|
url: http://example/com
|
37
37
|
```
|
38
38
|
|
39
|
-
|
40
|
-
|
39
|
+
You can open mulitple urls at once by specifying each url in a new line.
|
40
|
+
|
41
|
+
```yaml
|
42
|
+
|
43
|
+
url: https://github.com/oscardelben
|
44
|
+
url: http://example.com
|
45
|
+
```
|
41
46
|
|
42
47
|
Please note that to open urls, sheet will use the `open` command on mac
|
43
48
|
os x and `xdg-open` in linux. Patches welcome for other systems.
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.2.0
|
data/lib/sheet.rb
CHANGED
@@ -9,7 +9,7 @@ require 'sheet/copy'
|
|
9
9
|
class Sheet
|
10
10
|
|
11
11
|
SHEETS_DIR = '~/.sheets/'.freeze
|
12
|
-
|
12
|
+
|
13
13
|
class << self
|
14
14
|
# Utility to write to standard output
|
15
15
|
def write(message)
|
@@ -50,7 +50,11 @@ class Sheet
|
|
50
50
|
# @return [String]
|
51
51
|
# Used to check the preferred editor for the user
|
52
52
|
def editor
|
53
|
-
exec("echo $EDITOR").chomp
|
53
|
+
e = exec("echo $EDITOR").chomp
|
54
|
+
if e == ""
|
55
|
+
e = exec("echo $VISUAL").chomp
|
56
|
+
end
|
57
|
+
e
|
54
58
|
end
|
55
59
|
|
56
60
|
# If we're using mac, we should use open to open urls.
|
@@ -75,7 +79,12 @@ class Sheet
|
|
75
79
|
# Utility to check wherever a command is available in the user
|
76
80
|
# system
|
77
81
|
def command_available?(cmd)
|
78
|
-
%x!type #{cmd}!.chomp.length > 0
|
82
|
+
%x!type #{cmd}!.chomp.length > 0 rescue false
|
83
|
+
end
|
84
|
+
|
85
|
+
# Returns true if ~/.sheets exists
|
86
|
+
def sheets_directory_exists?
|
87
|
+
File.directory?(Sheet.sheets_dir)
|
79
88
|
end
|
80
89
|
|
81
90
|
end
|
data/lib/sheet/list.rb
CHANGED
@@ -3,7 +3,11 @@ class Sheet
|
|
3
3
|
class List
|
4
4
|
|
5
5
|
def list
|
6
|
-
|
6
|
+
if Sheet.sheets_directory_exists?
|
7
|
+
Sheet.exec("ls -1 #{Sheet.sheets_dir}", true)
|
8
|
+
else
|
9
|
+
Sheet.write("No sheet found. Create a new sheet with `sheet new <name>`")
|
10
|
+
end
|
7
11
|
end
|
8
12
|
end
|
9
13
|
end
|
data/lib/sheet/open.rb
CHANGED
@@ -19,26 +19,22 @@ class Sheet
|
|
19
19
|
private
|
20
20
|
|
21
21
|
def process_sheet_content
|
22
|
-
if
|
23
|
-
|
24
|
-
|
22
|
+
if !sheet_urls.empty? && cmd = Sheet.open_command
|
23
|
+
sheet_urls.each do |url|
|
24
|
+
Sheet.exec "#{cmd} #{url.chomp.sub(/url: /,'')}"
|
25
|
+
end
|
25
26
|
else
|
26
27
|
Sheet.write sheet_content
|
27
28
|
end
|
28
29
|
end
|
29
30
|
|
30
|
-
def contains_url_format?
|
31
|
-
sheet_content.split("\n").size == 1 &&
|
32
|
-
sheet_content =~ /^url:\s*http.+$/
|
33
|
-
end
|
34
|
-
|
35
|
-
def extract_url
|
36
|
-
sheet_content.match(/(http.+)$/)[1]
|
37
|
-
end
|
38
|
-
|
39
31
|
def sheet_content
|
40
32
|
@sheet_content ||= File.read(Sheet.sheet_path(name))
|
41
33
|
end
|
42
34
|
|
35
|
+
def sheet_urls
|
36
|
+
@sheet_urls ||= sheet_content.split("\n").reject {|line| line !~ /^url:/ }
|
37
|
+
end
|
38
|
+
|
43
39
|
end
|
44
40
|
end
|
data/lib/sheet/write.rb
CHANGED
@@ -3,11 +3,12 @@ class Sheet::Write
|
|
3
3
|
|
4
4
|
attr_accessor :name
|
5
5
|
|
6
|
-
def initialize(name)
|
6
|
+
def initialize(name=nil)
|
7
7
|
@name = name
|
8
8
|
end
|
9
9
|
|
10
10
|
def write
|
11
|
+
return Sheet.write("Please specify a name") unless name
|
11
12
|
create_dir_if_doesnt_exist
|
12
13
|
if editor_is_set?
|
13
14
|
Sheet.exec("#{Sheet.editor} #{Sheet.sheet_path(name)}", true)
|
@@ -23,7 +24,7 @@ class Sheet::Write
|
|
23
24
|
end
|
24
25
|
|
25
26
|
def create_dir_if_doesnt_exist
|
26
|
-
if !
|
27
|
+
if ! Sheet.sheets_directory_exists?
|
27
28
|
Dir.mkdir(Sheet.sheets_dir)
|
28
29
|
end
|
29
30
|
end
|
data/sheet.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "sheet"
|
8
|
-
s.version = "0.
|
8
|
+
s.version = "0.2.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Oscar Del Ben"]
|
12
|
-
s.date = "2012-
|
12
|
+
s.date = "2012-05-01"
|
13
13
|
s.description = "sheets allows you to store and browse snippets of text from your command line."
|
14
14
|
s.email = "info@oscardelben.com"
|
15
15
|
s.executables = ["sheet"]
|
data/spec/sheet/list_spec.rb
CHANGED
@@ -3,11 +3,28 @@ require 'spec_helper'
|
|
3
3
|
|
4
4
|
describe Sheet::List do
|
5
5
|
|
6
|
-
|
7
|
-
|
8
|
-
|
6
|
+
context 'when sheets directory exists' do
|
7
|
+
before do
|
8
|
+
Sheet.stub(:sheets_directory_exists?) { true }
|
9
|
+
end
|
9
10
|
|
10
|
-
|
11
|
+
it 'calls system ls' do
|
12
|
+
cmd = "ls -1 #{Sheet.sheets_dir}"
|
13
|
+
Sheet.should_receive(:exec).with(cmd, true)
|
14
|
+
|
15
|
+
Sheet::List.new.list
|
16
|
+
end
|
11
17
|
end
|
12
18
|
|
19
|
+
context 'when sheets directory doesn\'t exist' do
|
20
|
+
before do
|
21
|
+
Sheet.stub(:sheets_directory_exists?) { false }
|
22
|
+
end
|
23
|
+
|
24
|
+
it 'shows a message' do
|
25
|
+
Sheet.should_receive(:write).with("No sheet found. Create a new sheet with `sheet new <name>`")
|
26
|
+
|
27
|
+
Sheet::List.new.list
|
28
|
+
end
|
29
|
+
end
|
13
30
|
end
|
data/spec/sheet/open_spec.rb
CHANGED
@@ -17,18 +17,19 @@ describe Sheet::Open do
|
|
17
17
|
Sheet.stub(:sheet_exists?).with('git') { true }
|
18
18
|
s.stub(:sheet_content) { message }
|
19
19
|
s.open
|
20
|
-
end
|
21
|
-
|
22
|
-
it "should open
|
20
|
+
end
|
21
|
+
|
22
|
+
it "should open all urls" do
|
23
23
|
Sheet.stub(:open_command) { 'open' }
|
24
|
-
message = "url: http://example.com"
|
24
|
+
message = "url: http://example.com\nurl: http://google.com"
|
25
25
|
Sheet.should_receive(:exec).with('open http://example.com')
|
26
|
-
|
26
|
+
Sheet.should_receive(:exec).with('open http://google.com')
|
27
|
+
|
27
28
|
s = Sheet::Open.new('git')
|
28
29
|
Sheet.stub(:sheet_exists?).with('git') { true }
|
29
30
|
s.stub(:sheet_content) { message }
|
30
31
|
s.open
|
31
|
-
end
|
32
|
+
end
|
32
33
|
|
33
34
|
it "should fallback to showing the content if an open command is not present" do
|
34
35
|
Sheet.stub(:open_command) { nil}
|
data/spec/sheet/write_spec.rb
CHANGED
@@ -4,6 +4,15 @@ describe Sheet::Write do
|
|
4
4
|
|
5
5
|
let (:editor) { 'vim' }
|
6
6
|
|
7
|
+
before do
|
8
|
+
Sheet.stub(:sheets_directory_exists?) { true }
|
9
|
+
end
|
10
|
+
|
11
|
+
it 'shows an error message if no argument is passed' do
|
12
|
+
Sheet.should_receive(:write).with('Please specify a name')
|
13
|
+
Sheet::Write.new.write
|
14
|
+
end
|
15
|
+
|
7
16
|
it 'opens a new file for writing' do
|
8
17
|
cmd = "#{editor} #{Sheet.sheet_path('tmux')}"
|
9
18
|
Sheet.should_receive(:exec).with(cmd, true)
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sheet
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-05-01 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rspec
|
@@ -121,7 +121,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
121
121
|
version: '0'
|
122
122
|
segments:
|
123
123
|
- 0
|
124
|
-
hash:
|
124
|
+
hash: 2528826102062921257
|
125
125
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
126
126
|
none: false
|
127
127
|
requirements:
|