vimgolf 0.3.0 → 0.4.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/.gitignore +1 -0
- data/Gemfile.lock +13 -16
- data/Rakefile +8 -0
- data/emacs/README.md +69 -0
- data/emacs/ROADMAP.md +69 -0
- data/emacs/vimgolf.el +343 -0
- data/lib/vimgolf.rb +2 -1
- data/lib/vimgolf/challenge.rb +108 -0
- data/lib/vimgolf/cli.rb +43 -104
- data/lib/vimgolf/keylog.rb +144 -24
- data/lib/vimgolf/ui.rb +26 -10
- data/lib/vimgolf/version.rb +1 -1
- data/spec/challenge_spec.rb +31 -0
- data/spec/cli_spec.rb +1 -17
- data/spec/helper.rb +1 -1
- data/spec/keylog_spec.rb +4 -3
- data/vimgolf.gemspec +3 -2
- metadata +85 -89
data/lib/vimgolf/ui.rb
CHANGED
@@ -1,7 +1,14 @@
|
|
1
|
+
require 'highline'
|
2
|
+
|
1
3
|
module VimGolf
|
2
4
|
class CLI
|
3
5
|
class UI < Thor::Base.shell
|
4
6
|
|
7
|
+
def initialize
|
8
|
+
super
|
9
|
+
@hl = HighLine.new($stdin)
|
10
|
+
end
|
11
|
+
|
5
12
|
def error(name, message = nil)
|
6
13
|
begin
|
7
14
|
orig_out, $stdout = $stdout, $stderr
|
@@ -43,22 +50,31 @@ module VimGolf
|
|
43
50
|
end
|
44
51
|
end
|
45
52
|
|
46
|
-
def
|
53
|
+
def ask_question(message, options = {})
|
47
54
|
begin
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
@hl.ask(message)
|
52
|
-
elsif password
|
53
|
-
@hl.ask(message) {|q| q.echo = "*" }
|
54
|
-
else
|
55
|
-
@hl.ask(message) {|q| q.readline = true }
|
55
|
+
message = color_string(message, options[:type])
|
56
|
+
details = Proc.new do |q|
|
57
|
+
q.readline = !$stdin.tty?
|
56
58
|
end
|
59
|
+
@hl.ask(message, options[:choices] || [], &details)
|
57
60
|
rescue EOFError
|
58
61
|
return ''
|
59
62
|
end
|
60
63
|
end
|
61
64
|
|
65
|
+
def color_string(str, type)
|
66
|
+
@hl.color(
|
67
|
+
str,
|
68
|
+
case type
|
69
|
+
when :info then :green
|
70
|
+
when :warn then :yellow
|
71
|
+
when :error then :red
|
72
|
+
when :debug then :cyan
|
73
|
+
else nil
|
74
|
+
end
|
75
|
+
)
|
76
|
+
end
|
77
|
+
|
62
78
|
def print_envs(apps, default_env_name = nil, simple = false)
|
63
79
|
if simple
|
64
80
|
envs = apps.map{ |a| a.environments }
|
@@ -113,4 +129,4 @@ module VimGolf
|
|
113
129
|
|
114
130
|
end
|
115
131
|
end
|
116
|
-
end
|
132
|
+
end
|
data/lib/vimgolf/version.rb
CHANGED
@@ -0,0 +1,31 @@
|
|
1
|
+
require "helper"
|
2
|
+
require "tmpdir"
|
3
|
+
require "fileutils"
|
4
|
+
|
5
|
+
describe VimGolf::Challenge do
|
6
|
+
|
7
|
+
before :each do
|
8
|
+
@dir = Dir.mktmpdir("vimgolf_test_")
|
9
|
+
VimGolf::Challenge.path(@dir)
|
10
|
+
end
|
11
|
+
|
12
|
+
after :each do
|
13
|
+
FileUtils.remove_entry_secure(@dir)
|
14
|
+
end
|
15
|
+
|
16
|
+
it "should raise error on invalid challenge" do
|
17
|
+
lambda { VimGolf::Challenge.new('invalidID').download }.should raise_error
|
18
|
+
end
|
19
|
+
|
20
|
+
it "should return type of challenge on success" do
|
21
|
+
challenge = VimGolf::Challenge.new('4d1a1c36567bac34a9000002')
|
22
|
+
challenge.download
|
23
|
+
challenge.type.should == "rb"
|
24
|
+
end
|
25
|
+
|
26
|
+
it "should raise error on invalid upload id" do
|
27
|
+
lambda { VimGolf::Challenge.new('invalidID').upload }.should raise_error
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
|
data/spec/cli_spec.rb
CHANGED
@@ -22,20 +22,4 @@ describe VimGolf do
|
|
22
22
|
out.should include("launch")
|
23
23
|
end
|
24
24
|
|
25
|
-
|
26
|
-
let(:c) { VimGolf::CLI.new }
|
27
|
-
|
28
|
-
it "should raise error on invalid challenge" do
|
29
|
-
lambda { c.download('invalidID') }.should raise_error
|
30
|
-
end
|
31
|
-
|
32
|
-
it "should return type of challenge on success" do
|
33
|
-
c.download('4d1a1c36567bac34a9000002').should == "rb"
|
34
|
-
end
|
35
|
-
|
36
|
-
it "should raise error on invalid upload id" do
|
37
|
-
lambda { c.upload('invalidID') }.should raise_error
|
38
|
-
end
|
39
|
-
end
|
40
|
-
|
41
|
-
end
|
25
|
+
end
|
data/spec/helper.rb
CHANGED
data/spec/keylog_spec.rb
CHANGED
@@ -1,15 +1,16 @@
|
|
1
1
|
require "helper"
|
2
2
|
|
3
|
+
include VimGolf
|
4
|
+
|
3
5
|
describe VimGolf::Keylog do
|
4
|
-
include VimGolf
|
5
6
|
|
6
7
|
Dir['spec/fixtures/*'].each do |f|
|
7
8
|
it "should parse #{f} logfile" do
|
8
|
-
lambda { Keylog.
|
9
|
+
lambda { Keylog.new(IO.read(f)).convert }.should_not raise_error
|
9
10
|
end
|
10
11
|
|
11
12
|
it "should score #{f} logfile" do
|
12
|
-
lambda { Keylog.
|
13
|
+
lambda { Keylog.new(IO.read(f)).convert }.should_not raise_error
|
13
14
|
end
|
14
15
|
end
|
15
16
|
end
|
data/vimgolf.gemspec
CHANGED
@@ -14,10 +14,10 @@ Gem::Specification.new do |s|
|
|
14
14
|
|
15
15
|
s.rubyforge_project = "vimgolf"
|
16
16
|
s.add_dependency "thor", ">= 0.14.6"
|
17
|
-
s.add_dependency "json"
|
18
17
|
s.add_dependency "highline"
|
19
18
|
|
20
19
|
s.add_development_dependency "rspec"
|
20
|
+
s.add_development_dependency "rake"
|
21
21
|
|
22
22
|
s.files = `git ls-files`.split("\n")
|
23
23
|
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
@@ -26,11 +26,12 @@ Gem::Specification.new do |s|
|
|
26
26
|
|
27
27
|
s.post_install_message = %{
|
28
28
|
------------------------------------------------------------------------------
|
29
|
-
Thank you for installing vimgolf-#{Vimgolf::VERSION}.
|
29
|
+
Thank you for installing vimgolf-#{Vimgolf::VERSION}.
|
30
30
|
|
31
31
|
0.1.3: custom vimgolf .vimrc file to help level the playing field
|
32
32
|
0.2.0: proxy support, custom diffs + proper vimscript parser/scoring
|
33
33
|
0.3.0: improve windows support, switch to YAML to remove c-ext dependency
|
34
|
+
0.4.0: improved diff/retry CLI, emacs support: http://bit.ly/yHgOPF
|
34
35
|
|
35
36
|
*NOTE*: please re-run "vimgolf setup" prior to playing!
|
36
37
|
|
metadata
CHANGED
@@ -1,86 +1,68 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: vimgolf
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
|
6
|
-
- 0
|
7
|
-
- 3
|
8
|
-
- 0
|
9
|
-
version: 0.3.0
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.4.0
|
5
|
+
prerelease:
|
10
6
|
platform: ruby
|
11
|
-
authors:
|
7
|
+
authors:
|
12
8
|
- Ilya Grigorik
|
13
9
|
autorequire:
|
14
10
|
bindir: bin
|
15
11
|
cert_chain: []
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
dependencies:
|
20
|
-
- !ruby/object:Gem::Dependency
|
12
|
+
date: 2012-03-17 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
21
15
|
name: thor
|
22
|
-
|
23
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
16
|
+
requirement: &2153464140 !ruby/object:Gem::Requirement
|
24
17
|
none: false
|
25
|
-
requirements:
|
26
|
-
- -
|
27
|
-
- !ruby/object:Gem::Version
|
28
|
-
segments:
|
29
|
-
- 0
|
30
|
-
- 14
|
31
|
-
- 6
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
32
21
|
version: 0.14.6
|
33
22
|
type: :runtime
|
34
|
-
version_requirements: *id001
|
35
|
-
- !ruby/object:Gem::Dependency
|
36
|
-
name: json
|
37
23
|
prerelease: false
|
38
|
-
|
39
|
-
|
40
|
-
requirements:
|
41
|
-
- - ">="
|
42
|
-
- !ruby/object:Gem::Version
|
43
|
-
segments:
|
44
|
-
- 0
|
45
|
-
version: "0"
|
46
|
-
type: :runtime
|
47
|
-
version_requirements: *id002
|
48
|
-
- !ruby/object:Gem::Dependency
|
24
|
+
version_requirements: *2153464140
|
25
|
+
- !ruby/object:Gem::Dependency
|
49
26
|
name: highline
|
50
|
-
|
51
|
-
requirement: &id003 !ruby/object:Gem::Requirement
|
27
|
+
requirement: &2153463680 !ruby/object:Gem::Requirement
|
52
28
|
none: false
|
53
|
-
requirements:
|
54
|
-
- -
|
55
|
-
- !ruby/object:Gem::Version
|
56
|
-
|
57
|
-
- 0
|
58
|
-
version: "0"
|
29
|
+
requirements:
|
30
|
+
- - ! '>='
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '0'
|
59
33
|
type: :runtime
|
60
|
-
|
61
|
-
|
34
|
+
prerelease: false
|
35
|
+
version_requirements: *2153463680
|
36
|
+
- !ruby/object:Gem::Dependency
|
62
37
|
name: rspec
|
38
|
+
requirement: &2153463180 !ruby/object:Gem::Requirement
|
39
|
+
none: false
|
40
|
+
requirements:
|
41
|
+
- - ! '>='
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: '0'
|
44
|
+
type: :development
|
63
45
|
prerelease: false
|
64
|
-
|
46
|
+
version_requirements: *2153463180
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: rake
|
49
|
+
requirement: &2153462600 !ruby/object:Gem::Requirement
|
65
50
|
none: false
|
66
|
-
requirements:
|
67
|
-
- -
|
68
|
-
- !ruby/object:Gem::Version
|
69
|
-
|
70
|
-
- 0
|
71
|
-
version: "0"
|
51
|
+
requirements:
|
52
|
+
- - ! '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
72
55
|
type: :development
|
73
|
-
|
56
|
+
prerelease: false
|
57
|
+
version_requirements: *2153462600
|
74
58
|
description: CLI client for vimgolf.com
|
75
|
-
email:
|
59
|
+
email:
|
76
60
|
- ilya@igvita.com
|
77
|
-
executables:
|
61
|
+
executables:
|
78
62
|
- vimgolf
|
79
63
|
extensions: []
|
80
|
-
|
81
64
|
extra_rdoc_files: []
|
82
|
-
|
83
|
-
files:
|
65
|
+
files:
|
84
66
|
- .gitignore
|
85
67
|
- .rspec
|
86
68
|
- Gemfile
|
@@ -88,12 +70,17 @@ files:
|
|
88
70
|
- README.md
|
89
71
|
- Rakefile
|
90
72
|
- bin/vimgolf
|
73
|
+
- emacs/README.md
|
74
|
+
- emacs/ROADMAP.md
|
75
|
+
- emacs/vimgolf.el
|
91
76
|
- lib/vimgolf.rb
|
77
|
+
- lib/vimgolf/challenge.rb
|
92
78
|
- lib/vimgolf/cli.rb
|
93
79
|
- lib/vimgolf/config.rb
|
94
80
|
- lib/vimgolf/keylog.rb
|
95
81
|
- lib/vimgolf/ui.rb
|
96
82
|
- lib/vimgolf/version.rb
|
83
|
+
- spec/challenge_spec.rb
|
97
84
|
- spec/cli_spec.rb
|
98
85
|
- spec/fixtures/4d19832d8ae121365c00000b.log
|
99
86
|
- spec/fixtures/4d1a1c36567bac34a9000002.log
|
@@ -103,47 +90,55 @@ files:
|
|
103
90
|
- spec/helper.rb
|
104
91
|
- spec/keylog_spec.rb
|
105
92
|
- vimgolf.gemspec
|
106
|
-
has_rdoc: true
|
107
93
|
homepage: http://github.com/igrigorik/vimgolf
|
108
94
|
licenses: []
|
95
|
+
post_install_message: ! '
|
109
96
|
|
110
|
-
|
111
|
-
------------------------------------------------------------------------------\n\
|
112
|
-
Thank you for installing vimgolf-0.3.0. \n\n\
|
113
|
-
0.1.3: custom vimgolf .vimrc file to help level the playing field\n\
|
114
|
-
0.2.0: proxy support, custom diffs + proper vimscript parser/scoring\n\
|
115
|
-
0.3.0: improve windows support, switch to YAML to remove c-ext dependency\n\n\
|
116
|
-
*NOTE*: please re-run \"vimgolf setup\" prior to playing!\n\n\
|
117
|
-
For more information, rules & updates: http://vimgolf.com/about\n\
|
118
|
-
------------------------------------------------------------------------------\n"
|
119
|
-
rdoc_options: []
|
97
|
+
------------------------------------------------------------------------------
|
120
98
|
|
121
|
-
|
99
|
+
Thank you for installing vimgolf-0.4.0.
|
100
|
+
|
101
|
+
|
102
|
+
0.1.3: custom vimgolf .vimrc file to help level the playing field
|
103
|
+
|
104
|
+
0.2.0: proxy support, custom diffs + proper vimscript parser/scoring
|
105
|
+
|
106
|
+
0.3.0: improve windows support, switch to YAML to remove c-ext dependency
|
107
|
+
|
108
|
+
0.4.0: improved diff/retry CLI, emacs support: http://bit.ly/yHgOPF
|
109
|
+
|
110
|
+
|
111
|
+
*NOTE*: please re-run "vimgolf setup" prior to playing!
|
112
|
+
|
113
|
+
|
114
|
+
For more information, rules & updates: http://vimgolf.com/about
|
115
|
+
|
116
|
+
------------------------------------------------------------------------------
|
117
|
+
|
118
|
+
'
|
119
|
+
rdoc_options: []
|
120
|
+
require_paths:
|
122
121
|
- lib
|
123
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
122
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
124
123
|
none: false
|
125
|
-
requirements:
|
126
|
-
- -
|
127
|
-
- !ruby/object:Gem::Version
|
128
|
-
|
129
|
-
|
130
|
-
version: "0"
|
131
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
124
|
+
requirements:
|
125
|
+
- - ! '>='
|
126
|
+
- !ruby/object:Gem::Version
|
127
|
+
version: '0'
|
128
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
132
129
|
none: false
|
133
|
-
requirements:
|
134
|
-
- -
|
135
|
-
- !ruby/object:Gem::Version
|
136
|
-
|
137
|
-
- 0
|
138
|
-
version: "0"
|
130
|
+
requirements:
|
131
|
+
- - ! '>='
|
132
|
+
- !ruby/object:Gem::Version
|
133
|
+
version: '0'
|
139
134
|
requirements: []
|
140
|
-
|
141
135
|
rubyforge_project: vimgolf
|
142
|
-
rubygems_version: 1.
|
136
|
+
rubygems_version: 1.8.10
|
143
137
|
signing_key:
|
144
138
|
specification_version: 3
|
145
139
|
summary: CLI client for vimgolf.com
|
146
|
-
test_files:
|
140
|
+
test_files:
|
141
|
+
- spec/challenge_spec.rb
|
147
142
|
- spec/cli_spec.rb
|
148
143
|
- spec/fixtures/4d19832d8ae121365c00000b.log
|
149
144
|
- spec/fixtures/4d1a1c36567bac34a9000002.log
|
@@ -152,3 +147,4 @@ test_files:
|
|
152
147
|
- spec/fixtures/4d1a34ccfa85f32065000004.log
|
153
148
|
- spec/helper.rb
|
154
149
|
- spec/keylog_spec.rb
|
150
|
+
has_rdoc:
|