boojs 0.0.2 → 0.0.3
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/bin/boojs +18 -23
- data/bin/sout +13 -0
- data/boojs.gemspec +4 -0
- data/lib/boojs/version.rb +1 -1
- data/lib/boojs.rb +61 -0
- data/spec/cli_spec.rb +78 -0
- metadata +63 -4
- data/boojs +0 -25
- data/lib/boo.js +0 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a6cb950e7f9f81fd41ee4b01e6981dc2e6fa53ed
|
4
|
+
data.tar.gz: 881efaad8e410d830fe1bf8680cf6235c16c2ae7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b1c524416db962a4b4952f64279d0a5a306efa3206fd2b6806941491ab460e07f3be341715987b21a533ef972328095718c6ab75dc2298dbd0e360651ce03d6e
|
7
|
+
data.tar.gz: bf4942997999f1501bd6774b113979f9f359608473c2813cf631bb910280809fe6a1bf1573501c44d44a7a9030de35ef8a83793523df9d0f6096ff7eaa970856
|
data/bin/boojs
CHANGED
@@ -1,28 +1,23 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
|
-
require '
|
2
|
+
require 'boojs'
|
3
|
+
require 'optparse'
|
4
|
+
require 'phantomjs'
|
3
5
|
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
6
|
+
#Parse
|
7
|
+
##########################################
|
8
|
+
parser = OptionParser.new do |opts|
|
9
|
+
opts.banner = "Usage: boojs [-v file]"
|
8
10
|
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
puts "\t(sh)>gocdss 'http://localhost:5832' 'https://hooks.slack.com/services/abo3ot' my_bot_name"
|
13
|
-
puts "\t(sh)>gocdss 'http://localhost:5832' 'https://hooks.slack.com/services/abo3ot' my_bot_name user:pass"
|
14
|
-
puts "-------------------------------------------------------------------------------------------"
|
15
|
-
exit 1
|
11
|
+
opts.on "-v FILE" do |f|
|
12
|
+
@file = f
|
13
|
+
end
|
16
14
|
end
|
17
|
-
|
15
|
+
parser.parse!
|
16
|
+
##########################################
|
18
17
|
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
#loop do
|
26
|
-
#server.process_event events.shift
|
27
|
-
#break if events.empty?
|
28
|
-
#end
|
18
|
+
#Run verify or run stdin/stdout mode?
|
19
|
+
if @file
|
20
|
+
BooJS.verify File.read(@file)
|
21
|
+
else
|
22
|
+
BooJS.pipe
|
23
|
+
end
|
data/bin/sout
ADDED
data/boojs.gemspec
CHANGED
@@ -18,7 +18,11 @@ Gem::Specification.new do |spec|
|
|
18
18
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
19
|
spec.require_paths = ["lib"]
|
20
20
|
|
21
|
+
spec.add_development_dependency "bundler", "~> 1.6"
|
22
|
+
spec.add_development_dependency "rake", "~> 10.3"
|
23
|
+
spec.add_development_dependency "rspec", "~> 3.2"
|
21
24
|
spec.add_runtime_dependency "phantomjs", "~> 1.9"
|
25
|
+
spec.add_runtime_dependency "greenletters", "~> 0.3"
|
22
26
|
spec.executables << 'boojs'
|
23
27
|
end
|
24
28
|
|
data/lib/boojs/version.rb
CHANGED
data/lib/boojs.rb
ADDED
@@ -0,0 +1,61 @@
|
|
1
|
+
require 'tempfile'
|
2
|
+
require 'securerandom'
|
3
|
+
require 'greenletters'
|
4
|
+
|
5
|
+
module BooJS
|
6
|
+
def self.verify str
|
7
|
+
phantom = Phantomjs.path
|
8
|
+
|
9
|
+
#Create tmp file
|
10
|
+
tmp = Tempfile.new(SecureRandom.hex)
|
11
|
+
tmp.puts %{
|
12
|
+
phantom.onError = function(msg, trace) {
|
13
|
+
console.log("%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%");
|
14
|
+
console.log("PhantomJS Error");
|
15
|
+
console.log("%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%");
|
16
|
+
console.log(msg);
|
17
|
+
trace.forEach(function(t) {
|
18
|
+
console.log(t.file + ': line ' + t.line );
|
19
|
+
})
|
20
|
+
console.log("%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%");
|
21
|
+
phantom.exit(1);
|
22
|
+
}
|
23
|
+
}
|
24
|
+
tmp.puts str
|
25
|
+
tmp.puts "phantom.exit(0)"
|
26
|
+
tmp.close
|
27
|
+
|
28
|
+
system("phantomjs #{tmp.path} 2>&1") or raise "Verifying failed"
|
29
|
+
end
|
30
|
+
|
31
|
+
def self.pipe
|
32
|
+
js = %{
|
33
|
+
var system = require('system');
|
34
|
+
function __spec_ping(str) {
|
35
|
+
system.stdout.writeLine("pong"+str)
|
36
|
+
}
|
37
|
+
|
38
|
+
phantom.onError = function(msg, trace) {
|
39
|
+
system.stderr.writeLine("%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%");
|
40
|
+
system.stderr.writeLine("PhantomJS Error");
|
41
|
+
system.stderr.writeLine("%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%");
|
42
|
+
system.stderr.writeLine(msg);
|
43
|
+
trace.forEach(function(t) {
|
44
|
+
system.stderr.writeLine(t.file + ': line ' + t.line );
|
45
|
+
})
|
46
|
+
system.stderr.writeLine("%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%");
|
47
|
+
phantom.exit(1);
|
48
|
+
}
|
49
|
+
|
50
|
+
while (true) {
|
51
|
+
var line = system.stdin.readLine();
|
52
|
+
eval(line);
|
53
|
+
}
|
54
|
+
}
|
55
|
+
phantom = Phantomjs.path
|
56
|
+
tmp = Tempfile.new(SecureRandom.hex)
|
57
|
+
tmp.puts js
|
58
|
+
tmp.close
|
59
|
+
exit system("#{phantom} #{tmp.path}")
|
60
|
+
end
|
61
|
+
end
|
data/spec/cli_spec.rb
ADDED
@@ -0,0 +1,78 @@
|
|
1
|
+
require 'open3'
|
2
|
+
require 'securerandom'
|
3
|
+
|
4
|
+
describe "CLI" do
|
5
|
+
before(:all) do
|
6
|
+
#Laziness
|
7
|
+
`ps -ax | grep phantomjs | grep -v phantomjs | awk '{print $1}' | xargs kill -9`
|
8
|
+
end
|
9
|
+
|
10
|
+
it "Will not exit in pipe mode" do
|
11
|
+
@finished = false
|
12
|
+
Thread.new do
|
13
|
+
`ruby -I./lib ./bin/boojs`
|
14
|
+
@finished = true
|
15
|
+
end
|
16
|
+
|
17
|
+
sleep 5
|
18
|
+
expect(@finished).to eq(false)
|
19
|
+
end
|
20
|
+
|
21
|
+
it "Replies with pong$KEY when given ping('$key')" do
|
22
|
+
key = SecureRandom.hex
|
23
|
+
Thread.new do
|
24
|
+
Open3.popen3("ruby -I./lib ./bin/boojs") do |i, o, e, t|
|
25
|
+
i.puts "__spec_ping('#{key}')"
|
26
|
+
@back = o.gets.chomp
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
sleep 5
|
31
|
+
expect(@back).to eq("pong"+key)
|
32
|
+
end
|
33
|
+
|
34
|
+
it "Replies with pong$KEY when given ping('$key') twice" do
|
35
|
+
keyA = SecureRandom.hex
|
36
|
+
keyB = SecureRandom.hex
|
37
|
+
|
38
|
+
Thread.new do
|
39
|
+
Open3.popen3("ruby -I./lib ./bin/boojs") do |i, o, e, t|
|
40
|
+
i.puts "__spec_ping('#{keyA}')"
|
41
|
+
@backA = o.gets.chomp
|
42
|
+
i.puts "__spec_ping('#{keyB}')"
|
43
|
+
@backB = o.gets.chomp
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
sleep 5
|
48
|
+
expect(@backA).to eq("pong"+keyA)
|
49
|
+
expect(@backB).to eq("pong"+keyB)
|
50
|
+
end
|
51
|
+
|
52
|
+
it "Emits stderr and not stdout when an error has occurred" do
|
53
|
+
Thread.new do
|
54
|
+
Open3.popen3("ruby -I./lib ./bin/boojs") do |i, o, e, t|
|
55
|
+
i.puts "no_such_variable"
|
56
|
+
@error = e.gets.chomp
|
57
|
+
@out = o.gets.chomp
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
sleep 5
|
62
|
+
expect(@error.length).not_to eq(0)
|
63
|
+
expect(@out).to eq(nil)
|
64
|
+
end
|
65
|
+
|
66
|
+
it "Exits with a return code of 1 with error" do
|
67
|
+
Thread.new do
|
68
|
+
Open3.popen3("ruby -I./lib ./bin/boojs") do |i, o, e, t|
|
69
|
+
i.puts "no_such_variable"
|
70
|
+
@error = e.gets.chomp
|
71
|
+
@exit = t.value
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
sleep 5
|
76
|
+
expect(@exit.exitstatus).to eq(1)
|
77
|
+
end
|
78
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: boojs
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- seo
|
@@ -10,6 +10,48 @@ bindir: bin
|
|
10
10
|
cert_chain: []
|
11
11
|
date: 2015-04-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: bundler
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.6'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.6'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rake
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '10.3'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '10.3'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rspec
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '3.2'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '3.2'
|
13
55
|
- !ruby/object:Gem::Dependency
|
14
56
|
name: phantomjs
|
15
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -24,11 +66,26 @@ dependencies:
|
|
24
66
|
- - "~>"
|
25
67
|
- !ruby/object:Gem::Version
|
26
68
|
version: '1.9'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: greenletters
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0.3'
|
76
|
+
type: :runtime
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0.3'
|
27
83
|
description: A unix tool to execute javascript on a headless browser
|
28
84
|
email:
|
29
85
|
- seotownsend@icloud.com
|
30
86
|
executables:
|
31
87
|
- boojs
|
88
|
+
- sout
|
32
89
|
extensions: []
|
33
90
|
extra_rdoc_files: []
|
34
91
|
files:
|
@@ -39,11 +96,12 @@ files:
|
|
39
96
|
- README.md
|
40
97
|
- Rakefile
|
41
98
|
- bin/boojs
|
42
|
-
-
|
99
|
+
- bin/sout
|
43
100
|
- boojs.gemspec
|
44
|
-
- lib/
|
101
|
+
- lib/boojs.rb
|
45
102
|
- lib/boojs/version.rb
|
46
103
|
- logo.png
|
104
|
+
- spec/cli_spec.rb
|
47
105
|
homepage: https://github.com/sotownsend/BooJS
|
48
106
|
licenses:
|
49
107
|
- MIT
|
@@ -68,4 +126,5 @@ rubygems_version: 2.4.6
|
|
68
126
|
signing_key:
|
69
127
|
specification_version: 4
|
70
128
|
summary: A boring javascript application framework
|
71
|
-
test_files:
|
129
|
+
test_files:
|
130
|
+
- spec/cli_spec.rb
|
data/boojs
DELETED
@@ -1,25 +0,0 @@
|
|
1
|
-
# coding: utf-8
|
2
|
-
lib = File.expand_path('../lib', __FILE__)
|
3
|
-
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
-
require 'boojs/version'
|
5
|
-
|
6
|
-
Gem::Specification.new do |spec|
|
7
|
-
spec.name = "boojs"
|
8
|
-
spec.version = BooJS::VERSION
|
9
|
-
spec.authors = ["Seo Townsend"]
|
10
|
-
spec.email = ["seotownsend@icloud.com"]
|
11
|
-
spec.summary = %q{Execute browser compatible javascript in a unix friendly tool}
|
12
|
-
spec.description = %q{PhantomJS is not a friendly unix tool, this tool respects stdout, stdin, and stderr}
|
13
|
-
spec.homepage = "https://github.com/sotownsend/boojs"
|
14
|
-
spec.license = "MIT"
|
15
|
-
|
16
|
-
spec.files = `git ls-files -z`.split("\x0")
|
17
|
-
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
18
|
-
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
|
-
spec.require_paths = ["lib"]
|
20
|
-
|
21
|
-
spec.add_development_dependency "bundler", "~> 1.6"
|
22
|
-
spec.add_development_dependency "rake", "~> 10.3"
|
23
|
-
spec.add_development_dependency "rspec", "~> 3.2"
|
24
|
-
spec.add_runtime_dependency "activesupport", "~> 4.2"
|
25
|
-
end
|
data/lib/boo.js
DELETED