lunar_shell 0.3.0 → 0.4.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.
- 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)
|