lunar_shell 0.3.0 → 0.4.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/controllers/lunar_shell/satellites_controller.rb +5 -5
- data/config/routes.rb +4 -1
- data/lib/generators/lunar_shell/satellite/USAGE +14 -0
- data/lib/generators/lunar_shell/satellite/satellite_generator.rb +72 -0
- data/lib/generators/lunar_shell/satellite/templates/controller.rb +8 -0
- data/lib/generators/lunar_shell/satellite/templates/test.rb +8 -0
- data/lib/generators/lunar_shell/satellite/templates/view.rb +2 -0
- data/lib/lunar_shell/engine.rb +18 -0
- data/lib/lunar_shell/middleware/interpreter.rb +1 -1
- data/lib/lunar_shell/version.rb +1 -1
- data/test/dummy/log/development.log +11 -0
- data/test/dummy/log/test.log +2473 -0
- data/test/integration/command_not_found_test.rb +11 -0
- metadata +9 -4
- data/test/dummy/tmp/pids/server.pid +0 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: cefb1c858a8b4dca7f75fc5b058924f1e4e067ea
|
4
|
+
data.tar.gz: 8166dc6a4bf78373c2c817480fe70e20d32f2da1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 714ae445a5805758b6c819013a9571ff83279436f7a3c6a6a19d91a2d6ed66574ad0833a611c41898396d0a5a3e3253192704d295021ff9417d46fdad2425441
|
7
|
+
data.tar.gz: 6150bc84fb0a45d494570567dad1fc16150b7fee1babde11a6ab7bf936fff001764660b4ea41d4744ec9766658023ec4fee554cef94a62effdd984777d642e1c
|
@@ -5,12 +5,7 @@ module LunarShell
|
|
5
5
|
before_action :log_command!
|
6
6
|
|
7
7
|
def run
|
8
|
-
render 'no_command'
|
9
|
-
end
|
10
|
-
|
11
|
-
def error
|
12
8
|
render 'no_command' and return unless command
|
13
|
-
render 'clear' and return if command == 'clear'
|
14
9
|
render 'command_not_found'
|
15
10
|
end
|
16
11
|
|
@@ -30,6 +25,11 @@ module LunarShell
|
|
30
25
|
end
|
31
26
|
helper_method :parameters
|
32
27
|
|
28
|
+
def parameters?
|
29
|
+
parameters.present?
|
30
|
+
end
|
31
|
+
helper_method :parameters?
|
32
|
+
|
33
33
|
def log_command!
|
34
34
|
return if !command || command == 'history'
|
35
35
|
session[:history] << "#{command} #{parameters.try :join, ' '}".strip
|
data/config/routes.rb
CHANGED
@@ -10,8 +10,11 @@ LunarShell::Engine.routes.draw do
|
|
10
10
|
end
|
11
11
|
resource :quit, only: []
|
12
12
|
resource :su, only: [:create]
|
13
|
+
|
14
|
+
# catch all
|
15
|
+
post '*error', action: 'run'
|
16
|
+
post :run
|
13
17
|
end
|
14
|
-
post 'satellites/*error', to: 'satellites#error'
|
15
18
|
|
16
19
|
root 'shells#show'
|
17
20
|
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
Description:
|
2
|
+
Creates a new Lunar shell satellite
|
3
|
+
|
4
|
+
Example:
|
5
|
+
rails generate lunar_shell:satellite thing
|
6
|
+
|
7
|
+
This will create:
|
8
|
+
app/controllers/lunar_shell/satellites/thing_controller.rb
|
9
|
+
app/views/lunar_shell/satellites/thing/run.js.erb
|
10
|
+
|
11
|
+
And add this route:
|
12
|
+
namespace :satellites do
|
13
|
+
resource :thing, only: []
|
14
|
+
end
|
@@ -0,0 +1,72 @@
|
|
1
|
+
module LunarShell
|
2
|
+
class SatelliteGenerator < Rails::Generators::NamedBase
|
3
|
+
source_root File.expand_path('../templates', __FILE__)
|
4
|
+
|
5
|
+
class_option :include_test, aliases: '-t', desc: 'Include test file'
|
6
|
+
|
7
|
+
def copy_satellite_files
|
8
|
+
template 'controller.rb', controller_path
|
9
|
+
template 'view.rb', view_path
|
10
|
+
template 'test.rb', test_path if options[:include_test]
|
11
|
+
end
|
12
|
+
|
13
|
+
def add_route
|
14
|
+
satellite_route singular_name
|
15
|
+
end
|
16
|
+
|
17
|
+
private
|
18
|
+
|
19
|
+
def base_path(type)
|
20
|
+
"app/#{type}/lunar_shell/satellites/#{singular_name}"
|
21
|
+
end
|
22
|
+
|
23
|
+
def controller_path
|
24
|
+
"#{base_path :controllers}_controller.rb"
|
25
|
+
end
|
26
|
+
|
27
|
+
def test_path
|
28
|
+
"test/integration/#{singular_name}_test.rb"
|
29
|
+
end
|
30
|
+
|
31
|
+
def view_path
|
32
|
+
"#{base_path :views}/run.js.erb"
|
33
|
+
end
|
34
|
+
|
35
|
+
def satellite_route(name)
|
36
|
+
route = "resource :#{name}, only: []\n"
|
37
|
+
log :route, route.strip
|
38
|
+
|
39
|
+
scopes = [{sentinel: /\.routes\.draw do\s*\n/m}]
|
40
|
+
|
41
|
+
mp = LunarShell::Engine.mount_path.gsub(/^\//, '')
|
42
|
+
scopes << satellite_scope("scope :#{mp}", scopes.count) if mp.present?
|
43
|
+
|
44
|
+
["scope module: :lunar_shell", 'namespace :satellites'].each do |name|
|
45
|
+
scopes << satellite_scope(name, scopes.count)
|
46
|
+
end
|
47
|
+
|
48
|
+
scopes << { name: "#{' ' * scopes.count}#{route}" }
|
49
|
+
|
50
|
+
in_root do
|
51
|
+
scopes.drop(1).each_with_index do |scope, i|
|
52
|
+
content = File.binread("#{destination_root}/config/routes.rb")
|
53
|
+
next if content =~ scope[:sentinel]
|
54
|
+
inject_into_file 'config/routes.rb',
|
55
|
+
scope[:name],
|
56
|
+
after: scopes[i][:sentinel],
|
57
|
+
verbose: false
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
def satellite_scope(name, level = 0)
|
63
|
+
spaces = ' ' * level
|
64
|
+
scope_start = "#{spaces}#{name} do\n"
|
65
|
+
scope_end = "#{spaces}end\n"
|
66
|
+
{
|
67
|
+
name: "#{scope_start}#{scope_end}",
|
68
|
+
sentinel: /^#{scope_start}/m
|
69
|
+
}
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
data/lib/lunar_shell/engine.rb
CHANGED
@@ -5,5 +5,23 @@ module LunarShell
|
|
5
5
|
initializer 'lunar_shell.add_middleware' do |app|
|
6
6
|
app.middleware.insert_after Rack::ETag, LunarShell::Middleware::Interpreter
|
7
7
|
end
|
8
|
+
|
9
|
+
initializer "lunar_shell.assets.precompile" do |app|
|
10
|
+
app.config.assets.precompile += %w(lunar_shell.coffee lunar_shell.sass)
|
11
|
+
end
|
12
|
+
|
13
|
+
config.app_generators.satellite :satellite
|
14
|
+
|
15
|
+
def mount_path
|
16
|
+
@mount_path ||= routes.url_helpers.root_path[0..-2]
|
17
|
+
end
|
18
|
+
|
19
|
+
def run_command_path(command)
|
20
|
+
run_path.gsub('run', "#{command}/run")
|
21
|
+
end
|
22
|
+
|
23
|
+
def run_path
|
24
|
+
@run_path ||= routes.url_helpers.satellites_run_path
|
25
|
+
end
|
8
26
|
end
|
9
27
|
end
|
@@ -16,7 +16,7 @@ module LunarShell
|
|
16
16
|
request.update_param('parameters', params) if params.any?
|
17
17
|
request.update_param('command', command)
|
18
18
|
|
19
|
-
env['PATH_INFO'] =
|
19
|
+
env['PATH_INFO'] = LunarShell::Engine.run_command_path(command)
|
20
20
|
end
|
21
21
|
end
|
22
22
|
|
data/lib/lunar_shell/version.rb
CHANGED
@@ -131599,3 +131599,14 @@ Started GET "/assets/lunar_shell/satellites/su.self-626d3eb61573185dcf5a0a5e7c8a
|
|
131599
131599
|
|
131600
131600
|
|
131601
131601
|
Started GET "/assets/lunar_shell/application.self-377610cd7c1509e934744c810e3b4cf672dfbcacac3274e7d039827e2ae0fcc7.js?body=1" for ::1 at 2016-06-25 01:50:55 -0700
|
131602
|
+
|
131603
|
+
|
131604
|
+
Started POST "/satellites/run" for ::1 at 2016-06-25 02:07:33 -0700
|
131605
|
+
Processing by LunarShell::SatellitesController#error as JS
|
131606
|
+
Parameters: {"utf8"=>"✓", "command"=>"backspin", "error"=>"backspin/run"}
|
131607
|
+
Rendered /Users/dave/Playground/lunar_shell/app/views/lunar_shell/satellites/_command_not_found.html.erb (0.1ms)
|
131608
|
+
[1m[36mLunarShell::User Load (0.3ms)[0m [1mSELECT "lunar_shell_users".* FROM "lunar_shell_users" WHERE (id = NULL OR username = NULL) ORDER BY "lunar_shell_users"."id" ASC LIMIT 1[0m
|
131609
|
+
Rendered /Users/dave/Playground/lunar_shell/app/views/lunar_shell/shells/_prompt.html.erb (1.1ms)
|
131610
|
+
Rendered /Users/dave/Playground/lunar_shell/app/views/lunar_shell/shells/_cli.html.erb (14.5ms)
|
131611
|
+
Rendered /Users/dave/Playground/lunar_shell/app/views/lunar_shell/satellites/command_not_found.js.erb (39.3ms)
|
131612
|
+
Completed 200 OK in 57ms (Views: 56.0ms | ActiveRecord: 0.3ms)
|