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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 6478d4484f4644e3c29b463e762561a57dbbdfff
4
- data.tar.gz: 9daed02ed8455f0367173eb332b4cd75a8b8f9b6
3
+ metadata.gz: a6cb950e7f9f81fd41ee4b01e6981dc2e6fa53ed
4
+ data.tar.gz: 881efaad8e410d830fe1bf8680cf6235c16c2ae7
5
5
  SHA512:
6
- metadata.gz: 6571cc90e52813fa83ab385527db9c5130e23fcfe6ef7891b9ddfc58d8d2b996e64051e4e6144663bf15747855286b72b7c415d0239f0694213f7b1a1181e849
7
- data.tar.gz: 9213ee8e212da6fbb191c304a3a583caa479fcb887be1a3765b579cfebe979a32d12b4daf6a8f4bb74b990f184bcdafc11767747da2877210b9610e794ec1151
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 'gocd-slack-server'
2
+ require 'boojs'
3
+ require 'optparse'
4
+ require 'phantomjs'
3
5
 
4
- gocd_addr = ARGV[0]
5
- slack_hook = ARGV[1]
6
- bot_name = ARGV[2]
7
- user_pass = ARGV[3]
6
+ #Parse
7
+ ##########################################
8
+ parser = OptionParser.new do |opts|
9
+ opts.banner = "Usage: boojs [-v file]"
8
10
 
9
- def usage
10
- puts "-------------------------------------------------------------------------------------------"
11
- puts "usage:"
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
- usage unless gocd_addr and slack_hook and bot_name
15
+ parser.parse!
16
+ ##########################################
18
17
 
19
- server = Gocdss::Server.new gocd_addr: gocd_addr, slack_hook: slack_hook, bot_name: bot_name, user_pass:user_pass
20
- server.start
21
-
22
- #require 'json'
23
- #events = JSON.parse(File.read "./spec/assets/cancelled_first")
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
@@ -0,0 +1,13 @@
1
+
2
+ Can't find variable: o
3
+
4
+ Can't find variable: ls
5
+
6
+ hi
7
+ undefined
8
+
9
+
10
+
11
+
12
+ Can't find variable: exit
13
+
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
@@ -1,3 +1,3 @@
1
1
  module BooJS
2
- VERSION = '0.0.2'
2
+ VERSION = '0.0.3'
3
3
  end
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.2
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
- - boojs
99
+ - bin/sout
43
100
  - boojs.gemspec
44
- - lib/boo.js
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
@@ -1,2 +0,0 @@
1
- module BooJS
2
- end