boojs 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
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