forward 0.3.0 → 0.3.1
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/README.md +36 -7
- data/lib/forward.rb +5 -1
- data/lib/forward/cli.rb +7 -7
- data/lib/forward/config.rb +2 -10
- data/lib/forward/version.rb +1 -1
- data/test/cli_test.rb +21 -6
- metadata +2 -2
data/README.md
CHANGED
@@ -1,7 +1,36 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
1
|
+
# Forward
|
2
|
+
|
3
|
+
The ruby client for [https://forwardhq.com/](https://forwardhq.com/). Forward gives you a sharable URL for localhost websites/webapps.
|
4
|
+
|
5
|
+
## Usage
|
6
|
+
|
7
|
+
> forward <port> [options]
|
8
|
+
> forward <host> [options]
|
9
|
+
> forward <host:port> [options]
|
10
|
+
|
11
|
+
Description:
|
12
|
+
|
13
|
+
Share a server running on localhost:port over the web by tunneling
|
14
|
+
through Forward. A URL is created for each tunnel.
|
15
|
+
|
16
|
+
Simple example:
|
17
|
+
|
18
|
+
# You are developing a Rails site.
|
19
|
+
|
20
|
+
> rails server &
|
21
|
+
> forward 3000
|
22
|
+
Forward created at https://mycompany.fwd.wf
|
23
|
+
|
24
|
+
Assigning a static subdomain prefix:
|
25
|
+
|
26
|
+
> rails server &
|
27
|
+
> forward 3000 myapp
|
28
|
+
Forward created at https://myapp-mycompany.fwd.wf
|
29
|
+
|
30
|
+
Virtual Host example:
|
31
|
+
|
32
|
+
# You are already running something on port 80 that uses
|
33
|
+
# virtual host names.
|
34
|
+
|
35
|
+
> forward mysite.dev
|
36
|
+
Forward created at https://mycompany.fwd.wf
|
data/lib/forward.rb
CHANGED
@@ -39,6 +39,10 @@ module Forward
|
|
39
39
|
ENV['FORWARD_SSH_PORT'] || DEFAULT_SSH_PORT
|
40
40
|
end
|
41
41
|
|
42
|
+
def self.windows?
|
43
|
+
RbConfig::CONFIG['host_os'] =~ /mswin|mingw|cygwin/
|
44
|
+
end
|
45
|
+
|
42
46
|
def self.config=(config)
|
43
47
|
@config = config
|
44
48
|
end
|
@@ -81,7 +85,7 @@ module Forward
|
|
81
85
|
end
|
82
86
|
|
83
87
|
def self.logdev
|
84
|
-
@logdev ||= '/dev/null'
|
88
|
+
@logdev ||= (windows? ? 'NUL:' : '/dev/null')
|
85
89
|
end
|
86
90
|
|
87
91
|
def self.log
|
data/lib/forward/cli.rb
CHANGED
@@ -21,9 +21,9 @@ module Forward
|
|
21
21
|
|
22
22
|
> rails server &
|
23
23
|
> forward 3000
|
24
|
-
Forward created at https://
|
24
|
+
Forward created at https://mycompany.fwd.wf
|
25
25
|
|
26
|
-
Assigning a subdomain prefix:
|
26
|
+
Assigning a static subdomain prefix:
|
27
27
|
|
28
28
|
> rails server &
|
29
29
|
> forward 3000 myapp
|
@@ -35,14 +35,14 @@ module Forward
|
|
35
35
|
# virtual host names.
|
36
36
|
|
37
37
|
> forward mysite.dev
|
38
|
-
Forward created at https://
|
38
|
+
Forward created at https://mycompany.fwd.wf
|
39
39
|
|
40
40
|
BANNER
|
41
41
|
|
42
42
|
# Parse non-published options and remove them from ARGV, then
|
43
43
|
# parse published options and update the options Hash with provided
|
44
44
|
# options and removes switches from ARGV.
|
45
|
-
def self.parse_cli_options
|
45
|
+
def self.parse_cli_options(args)
|
46
46
|
Forward.log.debug("Parsing options")
|
47
47
|
options = {}
|
48
48
|
|
@@ -78,7 +78,7 @@ module Forward
|
|
78
78
|
end
|
79
79
|
end
|
80
80
|
|
81
|
-
@opts.parse!
|
81
|
+
@opts.parse!(args)
|
82
82
|
|
83
83
|
options
|
84
84
|
end
|
@@ -106,7 +106,7 @@ module Forward
|
|
106
106
|
Forward.log.debug("Forwardfile options: `#{options.inspect}'")
|
107
107
|
end
|
108
108
|
|
109
|
-
options.merge!(parse_cli_options)
|
109
|
+
options.merge!(parse_cli_options(args))
|
110
110
|
|
111
111
|
forwarded, prefix = args[0..1]
|
112
112
|
options[:subdomain_prefix] = prefix unless prefix.nil?
|
@@ -230,7 +230,7 @@ module Forward
|
|
230
230
|
# Parses various options and arguments, validates everything to ensure
|
231
231
|
# we're safe to proceed, and finally passes options to the Client.
|
232
232
|
def self.run(args)
|
233
|
-
::HighLine.use_color = false if Forward
|
233
|
+
::HighLine.use_color = false if Forward.windows?
|
234
234
|
if ARGV.include?('--debug')
|
235
235
|
Forward.debug!
|
236
236
|
ARGV.delete('--debug')
|
data/lib/forward/config.rb
CHANGED
@@ -1,5 +1,4 @@
|
|
1
1
|
require 'fileutils'
|
2
|
-
require 'rbconfig'
|
3
2
|
require 'yaml'
|
4
3
|
|
5
4
|
module Forward
|
@@ -80,19 +79,12 @@ module Forward
|
|
80
79
|
raise ConfigError, 'Unable to write config file'
|
81
80
|
end
|
82
81
|
|
83
|
-
# Shortcut for checking if host os is windows.
|
84
|
-
#
|
85
|
-
# Returns true or false if windows or not.
|
86
|
-
def self.windows?
|
87
|
-
RbConfig::CONFIG['host_os'] =~ /mswin|mingw|cygwin/
|
88
|
-
end
|
89
|
-
|
90
82
|
# Returns the location of the forward ssh private key
|
91
83
|
# based on the host os.
|
92
84
|
#
|
93
85
|
# Returns the String path.
|
94
86
|
def self.key_path
|
95
|
-
if windows?
|
87
|
+
if Forward.windows?
|
96
88
|
File.join(ENV['HOME'], 'forward', 'key')
|
97
89
|
else
|
98
90
|
File.join(ENV['HOME'], '.ssh', 'forwardhq.com')
|
@@ -104,7 +96,7 @@ module Forward
|
|
104
96
|
#
|
105
97
|
# Returns the String path.
|
106
98
|
def self.config_path
|
107
|
-
if windows?
|
99
|
+
if Forward.windows?
|
108
100
|
File.join(ENV['HOME'], 'forward', 'config')
|
109
101
|
else
|
110
102
|
File.join(ENV['HOME'], '.forward')
|
data/lib/forward/version.rb
CHANGED
data/test/cli_test.rb
CHANGED
@@ -51,24 +51,34 @@ describe Forward::CLI do
|
|
51
51
|
end
|
52
52
|
|
53
53
|
it 'parses a Forwardfile' do
|
54
|
-
|
55
|
-
File.open('Forwardfile', 'w') { |f| f.write(yaml) }
|
54
|
+
hash_to_forwardfile(:auth => 'username:password')
|
56
55
|
|
57
56
|
options = Forward::CLI.parse_forwardfile
|
58
57
|
options.has_key?(:auth).must_equal true
|
59
58
|
end
|
60
59
|
|
61
60
|
it 'exits if a Forwardfile does not parse to a Hash' do
|
62
|
-
|
63
|
-
File.open('Forwardfile', 'w') { |f| f.write(yaml) }
|
61
|
+
hash_to_forwardfile('username:password')
|
64
62
|
|
65
63
|
lambda {
|
66
64
|
dev_null { Forward::CLI.parse_forwardfile }
|
67
65
|
}.must_raise SystemExit
|
68
66
|
end
|
69
67
|
|
70
|
-
it 'overloads Forwardfile options via commandline' do
|
71
|
-
|
68
|
+
it 'overloads Forwardfile options via commandline options' do
|
69
|
+
hash_to_forwardfile(
|
70
|
+
:port => 8000,
|
71
|
+
:username => 'username',
|
72
|
+
:password => 'password',
|
73
|
+
:subdomain_prefix => 'foo'
|
74
|
+
)
|
75
|
+
args = [ '3000', '-a', 'example:secret', 'bar' ]
|
76
|
+
options = Forward::CLI.parse_args_and_options(args)
|
77
|
+
|
78
|
+
options[:port].must_equal 3000
|
79
|
+
options[:username].must_equal 'example'
|
80
|
+
options[:password].must_equal 'secret'
|
81
|
+
options[:subdomain_prefix].must_equal 'bar'
|
72
82
|
end
|
73
83
|
|
74
84
|
it 'doesnt exit on valid ports' do
|
@@ -114,3 +124,8 @@ describe Forward::CLI do
|
|
114
124
|
end
|
115
125
|
|
116
126
|
end
|
127
|
+
|
128
|
+
def hash_to_forwardfile(hash)
|
129
|
+
yaml = YAML.dump(hash)
|
130
|
+
File.open('Forwardfile', 'w') { |f| f.write(yaml) }
|
131
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: forward
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-01-
|
12
|
+
date: 2013-01-28 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: json
|