boojs 0.0.11 → 0.0.12

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: c072155e89cbe9c87fa0c80edf00e4b411c7a3cf
4
- data.tar.gz: 4cd6935d7e63cb6476b94730f8ce714664030176
3
+ metadata.gz: 2816f9929db6f4b3a6ba72ec65c64decc07ab016
4
+ data.tar.gz: 1c843b29d1261e9ffcc08e460eb6a8247c3621ef
5
5
  SHA512:
6
- metadata.gz: cefd885550f3db5d0d532fdffdb171010605a9c9cbb8b53a7ef6070a620613fdb6b85fa494e240bf98f9214bda915cbf76474a7e4214407221036bcafd6d542f
7
- data.tar.gz: e7ca5a1da6d6535fb21b3644af9856e187b98d592dfbf25e73a4f856a9665c1fb7e97dad65b9ec8c8d11cb4fc1819d7ab859ec82494a52bd5329bca902650377
6
+ metadata.gz: 839246c16475ca0a1d4bed48163f9a39773a6aacd537a8927762a9bd67e3aa0d5c815321b11feeaad8e96df098f51a945eef29945b9306c502e7d81ad7193871
7
+ data.tar.gz: e1b8b16bc122526097f36ed8c62541b379538b47cfdb9fe0e545cbad4d6abc9f8fbbfe561d681f45031bee4219aa03d89624d5d8226e878ffd1d708d641cc9d9
data/README.md CHANGED
@@ -10,9 +10,12 @@
10
10
  </p>
11
11
 
12
12
  # What is this?
13
- A simple tool that allows you to execute javascript in the command line as if you were in a browser. Built on-top of [PhantomJS](phantomjs.org) and
14
- addresess it's shortcomings as a unix tool.
13
+ A simple tool that allows you to execute javascript in the command line as if you were in a browser. Built on-top of [PhantomJS](http://phantomjs.org/) and
14
+ acts as a well-behaved unix tool.
15
15
 
16
+ **Wait, isn't this just NodeJS? No, they are for different things. BooJS gives you the full DOM, you can call `document` in BooJS and import arbitrary browser javascript libraries.**
17
+
18
+ # Setup
16
19
  ```sh
17
20
  #Setup
18
21
  gem install boojs
@@ -21,15 +24,16 @@ gem install boojs
21
24
  # Usage
22
25
  #### SYNOPSIS
23
26
  ```sh
24
- boojs [-v file]
27
+ boojs [-e statement] [-v file] [file]
25
28
  ```
26
29
 
27
30
  #### DESCRIPTION
28
31
  The following options are available:
32
+ * `-e` - Pass a javascript statement to execute after the file (if a file is provided) and then immediately terminate.
29
33
  * `-v` - Verify that a file contains no javascript syntax errors. Returns 0 if there are no errors.
30
34
 
31
35
  #### EXAMPLES
32
- Open a standard headless javascript browser REPL
36
+ Open a standard headless javascript browser 'REPL'
33
37
  ```sh
34
38
  (sh)>boojs
35
39
  ```
@@ -39,6 +43,11 @@ Execute a file first, then enter pipe mode (repl like)
39
43
  (sh)>boojs code.js
40
44
  ```
41
45
 
46
+ Execute a statement, and then immediately exit.
47
+ ```sh
48
+ (sh)>boojs -e "console.log(document);"
49
+ ```
50
+
42
51
  Verify that a file contains no javascript errors
43
52
  ```sh
44
53
  (sh)>boojs -v code.js
data/bin/boojs CHANGED
@@ -6,11 +6,17 @@ require 'phantomjs'
6
6
  #Parse
7
7
  ##########################################
8
8
  parser = OptionParser.new do |opts|
9
- opts.banner = "Usage: boojs [-v file] [file]"
9
+ opts.banner = "Usage: boojs [-v file] [-e command] [file]"
10
10
 
11
+ #Verify this file
11
12
  opts.on "-v FILE" do |f|
12
13
  @vfile = f
13
14
  end
15
+
16
+ #One-shot command
17
+ opts.on "-e COMMAND" do |c|
18
+ @c = c
19
+ end
14
20
  end
15
21
  parser.parse!
16
22
  file = ARGV.pop
@@ -22,8 +28,8 @@ if @vfile
22
28
  BooJS.verify File.read(@file)
23
29
  else
24
30
  if file
25
- BooJS.pipe File.read(file)
31
+ BooJS.pipe File.read(file), @c
26
32
  else
27
- BooJS.pipe
33
+ BooJS.pipe nil, @c
28
34
  end
29
35
  end
data/lib/boojs/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module BooJS
2
- VERSION = '0.0.11'
2
+ VERSION = '0.0.12'
3
3
  end
data/lib/boojs.rb CHANGED
@@ -28,8 +28,9 @@ module BooJS
28
28
  system("phantomjs #{tmp.path} 2>&1") or raise "Verifying failed"
29
29
  end
30
30
 
31
- #Optionally, accept code to inject
32
- def self.pipe(str=nil)
31
+ #Optionally, accept code to inject and a command to run
32
+ #If the command is nil, this is not executed as a oneshot
33
+ def self.pipe(str=nil, cmd=nil)
33
34
  js = %{
34
35
  var system = require('system');
35
36
  function __spec_ping(str) {
@@ -53,7 +54,12 @@ module BooJS
53
54
  js += "\n#{str}" if str
54
55
 
55
56
  #Repl
56
- js += "\nwhile (true) { var line = system.stdin.readLine(); eval(line); }"
57
+ if cmd
58
+ js += "\n#{cmd}"
59
+ js += "\nphantom.exit(1)"
60
+ else
61
+ js += "\nwhile (true) { var line = system.stdin.readLine(); eval(line); }"
62
+ end
57
63
 
58
64
  phantom = Phantomjs.path
59
65
  tmp = Tempfile.new(SecureRandom.hex)
data/logo.png CHANGED
Binary file
data/spec/cli_spec.rb CHANGED
@@ -3,12 +3,12 @@ require 'tempfile'
3
3
  require 'securerandom'
4
4
 
5
5
  describe "CLI" do
6
- before(:all) do
6
+ before(:each) do
7
7
  #Laziness
8
8
  `ps -ax | grep phantomjs | grep -v phantomjs | awk '{print $1}' | xargs kill -9`
9
9
  end
10
10
 
11
- it "Will not exit in pipe mode" do
11
+ it "Will not exit in pipe mode" do
12
12
  @finished = false
13
13
  Thread.new do
14
14
  `ruby -I./lib ./bin/boojs`
@@ -91,4 +91,42 @@ describe "CLI" do
91
91
  sleep 5
92
92
  expect(@read).to eq("hello")
93
93
  end
94
+
95
+ it "Can be passed a command as an argument with the -e flag for a one shot" do
96
+ Thread.new do
97
+ Open3.popen3(%{ruby -I./lib ./bin/boojs -e 'console.log("hello");'}) do |i, o, e, t|
98
+ @read = o.gets.chomp
99
+ @value = t.value
100
+ end
101
+ end
102
+
103
+ sleep 5
104
+ expect(@read).to eq("hello")
105
+ expect(@value).not_to eq(nil)
106
+ end
107
+
108
+ it "Can be passed a command as an argument with the -e flag for a one shot and a file" do
109
+ #Write to a temporary file
110
+ function_name = SecureRandom.hex
111
+ value = SecureRandom.hex
112
+ jsc = %{
113
+ function a_#{function_name}() {
114
+ console.log("#{value}");
115
+ }
116
+ }
117
+ f = Tempfile.new(SecureRandom.hex)
118
+ f.puts jsc
119
+ f.close
120
+
121
+ Thread.new do
122
+ Open3.popen3(%{ruby -I./lib ./bin/boojs -e 'a_#{function_name}()' #{f.path}}) do |i, o, e, t|
123
+ @read = o.gets.chomp
124
+ @value = t.value
125
+ end
126
+ end
127
+
128
+ sleep 5
129
+ expect(@read).to eq(value)
130
+ expect(@value).not_to eq(nil)
131
+ end
94
132
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: boojs
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.11
4
+ version: 0.0.12
5
5
  platform: ruby
6
6
  authors:
7
7
  - seo
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-04-19 00:00:00.000000000 Z
11
+ date: 2015-04-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler