codersdojo 1.2.08 → 1.2.09
Sign up to get free protection for your applications and to get access to all the features.
- data/app/argument_parser.rb +27 -28
- data/app/codersdojo.rb +1 -3
- data/app/console_view.rb +28 -42
- data/app/generate_command.rb +30 -0
- data/app/help_command.rb +23 -0
- data/app/scaffolder.rb +7 -0
- data/app/scheduler.rb +7 -5
- data/app/shell_wrapper.rb +1 -1
- data/app/start_command.rb +37 -0
- data/app/state_reader.rb +1 -2
- data/app/upload_command.rb +57 -0
- data/app/upload_no_open_command.rb +19 -0
- data/app/uploader.rb +7 -1
- data/templates/javascript.jspec/README +1 -1
- metadata +9 -5
- data/app/controller.rb +0 -84
data/app/argument_parser.rb
CHANGED
@@ -1,42 +1,41 @@
|
|
1
1
|
require 'session_id_generator'
|
2
2
|
require 'runner'
|
3
3
|
require 'shell_argument_exception'
|
4
|
+
require 'shell_wrapper'
|
5
|
+
require 'console_view'
|
6
|
+
require 'help_command'
|
7
|
+
require 'generate_command'
|
8
|
+
require 'upload_command'
|
9
|
+
require 'upload_no_open_command'
|
10
|
+
require 'start_command'
|
4
11
|
|
5
12
|
class ArgumentParser
|
6
13
|
|
7
|
-
def initialize
|
8
|
-
@
|
14
|
+
def initialize shell, view, scaffolder, hostname
|
15
|
+
@help_command = HelpCommand.new view
|
16
|
+
@upload_command = UploadCommand.new shell, view, hostname
|
17
|
+
@upload_no_open_command = UploadNoOpenCommand.new @upload_command
|
18
|
+
@generate_command = GenerateCommand.new shell, view, scaffolder
|
19
|
+
@start_command = StartCommand.new shell, view, @upload_command
|
20
|
+
@commands = [@help_command, @generate_command, @start_command, @upload_command, @upload_no_open_command]
|
9
21
|
end
|
10
22
|
|
11
|
-
def parse params
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
@controller.upload_with_framework params[1], params[2]
|
23
|
-
elsif command == "start" then
|
24
|
-
run_command = expand_run_command params[1]
|
25
|
-
@controller.start run_command, params[2]
|
26
|
-
elsif command == "spec" then
|
23
|
+
def parse params
|
24
|
+
params[0] = params[0] ? params[0].downcase : 'help'
|
25
|
+
command_name = params[0]
|
26
|
+
command_executed = false
|
27
|
+
@commands.each do |command|
|
28
|
+
if command.accepts_shell_command?(command_name)
|
29
|
+
command.execute_from_shell params
|
30
|
+
command_executed = true
|
31
|
+
end
|
32
|
+
end
|
33
|
+
if not command_executed and command_name == "spec"
|
27
34
|
# 'spec" is for testing purpose only: do nothing special
|
28
|
-
|
29
|
-
raise ShellArgumentException.new
|
35
|
+
elsif not command_executed
|
36
|
+
raise ShellArgumentException.new command_name
|
30
37
|
end
|
31
38
|
end
|
32
39
|
|
33
|
-
def expand_run_command command
|
34
|
-
if command.end_with?(".sh") then
|
35
|
-
"bash #{command}"
|
36
|
-
else
|
37
|
-
command
|
38
|
-
end
|
39
|
-
end
|
40
|
-
|
41
40
|
end
|
42
41
|
|
data/app/codersdojo.rb
CHANGED
@@ -1,7 +1,6 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
3
|
require 'console_view'
|
4
|
-
require 'controller'
|
5
4
|
require 'argument_parser'
|
6
5
|
require 'scaffolder'
|
7
6
|
|
@@ -17,10 +16,9 @@ class CodersDojo
|
|
17
16
|
shell = ShellWrapper.new
|
18
17
|
scaffolder = Scaffolder.new shell
|
19
18
|
view = ConsoleView.new scaffolder
|
20
|
-
controller = Controller.new shell, view, scaffolder, @hostname
|
21
19
|
|
22
20
|
begin
|
23
|
-
arg_parser = ArgumentParser.new
|
21
|
+
arg_parser = ArgumentParser.new shell, view, scaffolder, @hostname
|
24
22
|
command = arg_parser.parse @params
|
25
23
|
rescue ShellArgumentException => e
|
26
24
|
view.show_unknwon_command_message e.command
|
data/app/console_view.rb
CHANGED
@@ -3,6 +3,8 @@ require 'text_template_machine'
|
|
3
3
|
require 'property_file_missing_exception'
|
4
4
|
|
5
5
|
class ConsoleView
|
6
|
+
|
7
|
+
FRAMEWORK_LIST_INDENTATION = 6
|
6
8
|
|
7
9
|
def initialize scaffolder
|
8
10
|
@scaffolder = scaffolder
|
@@ -27,12 +29,6 @@ Commands:
|
|
27
29
|
setup <framework> <kata_file> Setup the environment for running the kata.
|
28
30
|
upload [<session_dir>] Upload the kata to http://www.codersdojo.org and open the kata in a browser.
|
29
31
|
upload-no-open [<session_dir>] Upload the kata to http://www.codersdojo.org
|
30
|
-
upload-with-framework <framework> [<session_dir>]
|
31
|
-
Upload the kata to http://www.codersdojo.org
|
32
|
-
!!! This command exists for compatibility reasons only.
|
33
|
-
!!! It will be removed in the near future.
|
34
|
-
!!! Please run 'setup' again to generate the .meta file
|
35
|
-
!!! and use 'upload' without the 'framework' parameter.
|
36
32
|
|
37
33
|
Report bugs to <codersdojo@it-agile.de>
|
38
34
|
helptext
|
@@ -47,45 +43,51 @@ helptext
|
|
47
43
|
show_help_upload
|
48
44
|
elsif command == 'upload-no-open' then
|
49
45
|
show_help_upload_no_open
|
50
|
-
elsif command == 'upload-with-framework' then
|
51
|
-
show_help_upload_with_framework
|
52
46
|
else
|
53
47
|
show_help_unknown command
|
54
48
|
end
|
55
49
|
end
|
56
50
|
|
57
51
|
def show_help_setup
|
58
|
-
templates = @scaffolder.
|
52
|
+
templates = @scaffolder.list_templates_as_dotted_list FRAMEWORK_LIST_INDENTATION
|
59
53
|
show <<-helptext
|
60
54
|
|
61
|
-
setup <framework> <kata_file>
|
62
|
-
|
63
|
-
|
55
|
+
setup <framework> <kata_file>
|
56
|
+
Setup the environment for the kata for the given framework and kata file.
|
57
|
+
The <kata_file> is the one file that will contain the source code of the code kata.
|
58
|
+
If <kata_file> does not have an extension it will be added automatically
|
59
|
+
- except if <framework> is ??? (see below).
|
60
|
+
By now <framework> is one of these:
|
61
|
+
#{templates}.
|
62
|
+
Use ??? as framework if your framework isn't in the list.
|
64
63
|
|
65
64
|
Example:
|
66
65
|
:%/%dojo%/%my_kata$ #{current_command_path} setup ruby.test-unit prime
|
67
|
-
|
66
|
+
Setup the the environment for executing a code kata in kata file 'prime' with Ruby and test/unit.
|
68
67
|
helptext
|
69
68
|
end
|
70
69
|
|
71
70
|
def show_help_start
|
72
71
|
show <<-helptext
|
73
72
|
|
74
|
-
start <shell_command> <kata_file>
|
75
|
-
|
76
|
-
|
77
|
-
|
73
|
+
start <shell_command> <kata_file>
|
74
|
+
Start the continuous test runner, that runs <shell-command> whenever <kata_file>
|
75
|
+
changes. The <kata_file> has to include the whole source code of the kata.
|
76
|
+
Whenever the test runner is started, it creates a new session directory in the
|
77
|
+
directory .codersdojo where it logs the steps of the kata.
|
78
78
|
helptext
|
79
79
|
end
|
80
80
|
|
81
81
|
def show_help_upload
|
82
82
|
show <<-helptext
|
83
83
|
|
84
|
-
upload
|
85
|
-
|
84
|
+
upload
|
85
|
+
Upload the newest kata session in .codersdojo to codersdojo.com.
|
86
|
+
After the kata is uploaded the browser is started with the URL of the uploaded kata.
|
86
87
|
|
87
|
-
upload <session_directory>
|
88
|
-
|
88
|
+
upload <session_directory>
|
89
|
+
Upload the kata <session_directory> to codersdojo.com.
|
90
|
+
<session_directory> is relative to the working directory.
|
89
91
|
|
90
92
|
Examples:
|
91
93
|
:%/%dojo%/%my_kata$ #{current_command_path} upload
|
@@ -98,10 +100,12 @@ helptext
|
|
98
100
|
def show_help_upload_no_open
|
99
101
|
show <<-helptext
|
100
102
|
|
101
|
-
upload-no-open
|
103
|
+
upload-no-open
|
104
|
+
Upload the newest kata session in .codersdojo to codersdojo.com.
|
102
105
|
|
103
|
-
upload-no-opem <session_directory>
|
104
|
-
|
106
|
+
upload-no-opem <session_directory>
|
107
|
+
Upload the kata <session_directory> to codersdojo.com.
|
108
|
+
<session_directory> is relative to the working directory.
|
105
109
|
|
106
110
|
Examples:
|
107
111
|
:%/%dojo%/%my_kata$ #{current_command_path} upload-no-open
|
@@ -111,24 +115,6 @@ Examples:
|
|
111
115
|
helptext
|
112
116
|
end
|
113
117
|
|
114
|
-
def show_help_upload_with_framework
|
115
|
-
templates = @scaffolder.list_templates
|
116
|
-
show <<-helptext
|
117
|
-
|
118
|
-
upload-with-framework <framework> [<session_directory>]
|
119
|
-
Upload the kata written with <framework> in <session_directory> to codersdojo.com.
|
120
|
-
<session_directory> is relative to the working directory.
|
121
|
-
If you don't specify a <session_directory> the newest session in .codersdojo is uploaded.
|
122
|
-
By now <framework> is one of #{templates}.
|
123
|
-
If you used another framework, use ??? and send an email to codersdojo@it-agile.de
|
124
|
-
After the kata is uploaded the browser is started with the URL of the uploaded kata.
|
125
|
-
|
126
|
-
Example:
|
127
|
-
:%/%dojo%/%my_kata$ #{current_command_path} upload-with-framework ruby.test-unit .codersdojo%/%2010-11-02_16-21-53
|
128
|
-
Upload the kata (written in Ruby with the test/unit framework) located in directory ".codersdojo%/%2010-11-02_16-21-53" to codersdojo.com.
|
129
|
-
helptext
|
130
|
-
end
|
131
|
-
|
132
118
|
def show_help_unknown command
|
133
119
|
show <<-helptext
|
134
120
|
Command #{command} not known. Try '#{current_command_path} help' to list the supported commands.
|
@@ -0,0 +1,30 @@
|
|
1
|
+
class GenerateCommand
|
2
|
+
|
3
|
+
def initialize shell, view, scaffolder
|
4
|
+
@shell = shell
|
5
|
+
@view = view
|
6
|
+
@scaffolder = scaffolder
|
7
|
+
end
|
8
|
+
|
9
|
+
def execute_from_shell params
|
10
|
+
generate params[1], params[2]
|
11
|
+
end
|
12
|
+
|
13
|
+
def generate framework, kata_file
|
14
|
+
if not kata_file then
|
15
|
+
@view.show_missing_command_argument_error "setup", "kata_file"
|
16
|
+
return
|
17
|
+
end
|
18
|
+
begin
|
19
|
+
@scaffolder.scaffold framework, kata_file
|
20
|
+
@view.show "\n" + @shell.read_file("README")
|
21
|
+
rescue
|
22
|
+
@view.show_unknown_framework_error framework, @scaffolder.list_templates
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
def accepts_shell_command? command
|
27
|
+
command == 'setup'
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
data/app/help_command.rb
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
class HelpCommand
|
2
|
+
|
3
|
+
def initialize view
|
4
|
+
@view = view
|
5
|
+
end
|
6
|
+
|
7
|
+
def execute_from_shell params
|
8
|
+
help params[1]
|
9
|
+
end
|
10
|
+
|
11
|
+
def help command=nil
|
12
|
+
if command then
|
13
|
+
@view.show_detailed_help command.downcase
|
14
|
+
else
|
15
|
+
@view.show_help
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
def accepts_shell_command? command
|
20
|
+
['help', '-h', '--help'].member? command
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
data/app/scaffolder.rb
CHANGED
@@ -16,6 +16,13 @@ class Scaffolder
|
|
16
16
|
templates.join(', ')
|
17
17
|
end
|
18
18
|
|
19
|
+
def list_templates_as_dotted_list indentation
|
20
|
+
templates = @shell.real_dir_entries template_path
|
21
|
+
templates.delete ANY_TEMPLATE
|
22
|
+
indent_string = ' '*indentation
|
23
|
+
"#{indent_string}* " + templates.join("\n#{indent_string}* ")
|
24
|
+
end
|
25
|
+
|
19
26
|
def scaffold template, kata_file
|
20
27
|
@template_machine.placeholder_values['kata_file.ext'] = kata_file
|
21
28
|
@template_machine.placeholder_values['kata_file'] = @filename_formatter.without_extension kata_file
|
data/app/scheduler.rb
CHANGED
@@ -1,9 +1,10 @@
|
|
1
1
|
class Scheduler
|
2
2
|
|
3
|
-
def initialize runner, view
|
3
|
+
def initialize runner, view, commands
|
4
4
|
@runner = runner
|
5
5
|
@view = view
|
6
6
|
@last_action = ""
|
7
|
+
@commands = commands
|
7
8
|
end
|
8
9
|
|
9
10
|
def start
|
@@ -25,6 +26,11 @@ class Scheduler
|
|
25
26
|
def interrupt_kata
|
26
27
|
@view.show_kata_exit_message
|
27
28
|
@last_action = @view.read_user_input.downcase
|
29
|
+
@commands.each do |command|
|
30
|
+
if @last_action == command.command_key
|
31
|
+
command.execute
|
32
|
+
end
|
33
|
+
end
|
28
34
|
if last_action_was_exit? then
|
29
35
|
@view.show_kata_upload_hint
|
30
36
|
end
|
@@ -42,8 +48,4 @@ class Scheduler
|
|
42
48
|
@last_action.start_with? 'e'
|
43
49
|
end
|
44
50
|
|
45
|
-
def last_action_was_upload?
|
46
|
-
@last_action.start_with? 'u'
|
47
|
-
end
|
48
|
-
|
49
51
|
end
|
data/app/shell_wrapper.rb
CHANGED
@@ -0,0 +1,37 @@
|
|
1
|
+
class StartCommand
|
2
|
+
|
3
|
+
def initialize shell, view, upload_command
|
4
|
+
@shell = shell
|
5
|
+
@view = view
|
6
|
+
@upload_command = upload_command
|
7
|
+
end
|
8
|
+
|
9
|
+
def execute_from_shell params
|
10
|
+
start params[1], params[2]
|
11
|
+
end
|
12
|
+
|
13
|
+
def start command, file
|
14
|
+
unless command then @view.show_missing_command_argument_error "start", "shell_command"; return end
|
15
|
+
unless file then @view.show_missing_command_argument_error "start", "kata_file"; return end
|
16
|
+
command = expand_run_command command
|
17
|
+
@view.show_start_kata command, file, framework_property
|
18
|
+
dojo = Runner.new @shell, SessionIdGenerator.new
|
19
|
+
dojo.file = file
|
20
|
+
dojo.run_command = command
|
21
|
+
scheduler = Scheduler.new dojo, @view, [@upload_command]
|
22
|
+
scheduler.start
|
23
|
+
end
|
24
|
+
|
25
|
+
def accepts_shell_command? command
|
26
|
+
command == 'start'
|
27
|
+
end
|
28
|
+
|
29
|
+
def expand_run_command command
|
30
|
+
if command.end_with?(".sh") then
|
31
|
+
"bash #{command}"
|
32
|
+
else
|
33
|
+
command
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
end
|
data/app/state_reader.rb
CHANGED
@@ -22,8 +22,7 @@ class StateReader
|
|
22
22
|
end
|
23
23
|
|
24
24
|
def state_count
|
25
|
-
|
26
|
-
Dir.new(@filename_formatter.session_dir @session_id).count - dummy_dirs_current_and_parent
|
25
|
+
@shell.real_dir_entries(@filename_formatter.session_dir @session_id).count
|
27
26
|
end
|
28
27
|
|
29
28
|
def enough_states?
|
@@ -0,0 +1,57 @@
|
|
1
|
+
require 'uploader'
|
2
|
+
|
3
|
+
class UploadCommand
|
4
|
+
|
5
|
+
PROPERTY_FILENAME = '.meta'
|
6
|
+
|
7
|
+
attr_accessor :uploader
|
8
|
+
|
9
|
+
def initialize shell, view, hostname
|
10
|
+
@shell = shell
|
11
|
+
@view = view
|
12
|
+
@hostname = hostname
|
13
|
+
@uploader = Uploader.new(hostname, '', '')
|
14
|
+
end
|
15
|
+
|
16
|
+
def execute
|
17
|
+
upload nil, nil
|
18
|
+
end
|
19
|
+
|
20
|
+
def execute_from_shell params
|
21
|
+
upload params[1]
|
22
|
+
end
|
23
|
+
|
24
|
+
def upload session_directory, open_browser=true
|
25
|
+
formatter = FilenameFormatter.new
|
26
|
+
framework = framework_property
|
27
|
+
if not session_directory then
|
28
|
+
session_directory = formatter.session_dir @shell.newest_dir_entry(FilenameFormatter.codersdojo_workspace)
|
29
|
+
end
|
30
|
+
@view.show_upload_start session_directory, @hostname, framework
|
31
|
+
@uploader.framework = framework
|
32
|
+
@uploader.session_dir = session_directory
|
33
|
+
upload_result = @uploader.upload
|
34
|
+
@view.show_upload_result upload_result
|
35
|
+
url = upload_result.split.last
|
36
|
+
if open_browser then
|
37
|
+
@shell.open_with_default_app url
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
def command_key
|
42
|
+
'u'
|
43
|
+
end
|
44
|
+
|
45
|
+
def accepts_shell_command? command
|
46
|
+
command == 'upload'
|
47
|
+
end
|
48
|
+
|
49
|
+
def framework_property
|
50
|
+
properties['framework']
|
51
|
+
end
|
52
|
+
|
53
|
+
def properties
|
54
|
+
@shell.read_properties PROPERTY_FILENAME
|
55
|
+
end
|
56
|
+
|
57
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
class UploadNoOpenCommand
|
2
|
+
|
3
|
+
def initialize upload_command
|
4
|
+
@upload_command = upload_command
|
5
|
+
end
|
6
|
+
|
7
|
+
def execute_from_shell params
|
8
|
+
upload params[1]
|
9
|
+
end
|
10
|
+
|
11
|
+
def upload session_directory
|
12
|
+
@upload_command.upload session_directory, false
|
13
|
+
end
|
14
|
+
|
15
|
+
def accepts_shell_command? command
|
16
|
+
command == 'upload-no-open'
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
data/app/uploader.rb
CHANGED
@@ -4,11 +4,13 @@ require 'progress'
|
|
4
4
|
require 'filename_formatter'
|
5
5
|
require 'xml_element_extractor'
|
6
6
|
require 'rest_client'
|
7
|
+
require 'shell_wrapper'
|
7
8
|
|
8
9
|
class Uploader
|
9
10
|
|
10
11
|
attr_reader :states
|
11
|
-
|
12
|
+
attr_accessor :framework
|
13
|
+
|
12
14
|
def initialize hostname, framework, session_dir, state_reader = StateReader.new(ShellWrapper.new)
|
13
15
|
@states = []
|
14
16
|
@hostname = hostname
|
@@ -17,6 +19,10 @@ class Uploader
|
|
17
19
|
@state_reader.session_dir = session_dir
|
18
20
|
end
|
19
21
|
|
22
|
+
def session_dir= dir
|
23
|
+
@state_reader.session_dir = dir
|
24
|
+
end
|
25
|
+
|
20
26
|
def upload
|
21
27
|
return upload_kata_and_states if @state_reader.enough_states?
|
22
28
|
return "You need at least two states"
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: codersdojo
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 13
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 1
|
8
8
|
- 2
|
9
|
-
-
|
10
|
-
version: 1.2.
|
9
|
+
- 9
|
10
|
+
version: 1.2.09
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- CodersDojo-Team
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-
|
18
|
+
date: 2011-05-05 00:00:00 +02:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
@@ -62,8 +62,9 @@ files:
|
|
62
62
|
- app/argument_parser.rb
|
63
63
|
- app/codersdojo.rb
|
64
64
|
- app/console_view.rb
|
65
|
-
- app/controller.rb
|
66
65
|
- app/filename_formatter.rb
|
66
|
+
- app/generate_command.rb
|
67
|
+
- app/help_command.rb
|
67
68
|
- app/info_property_file.rb
|
68
69
|
- app/progress.rb
|
69
70
|
- app/property_file_missing_exception.rb
|
@@ -74,10 +75,13 @@ files:
|
|
74
75
|
- app/shell_argument_exception.rb
|
75
76
|
- app/shell_process.rb
|
76
77
|
- app/shell_wrapper.rb
|
78
|
+
- app/start_command.rb
|
77
79
|
- app/state.rb
|
78
80
|
- app/state_reader.rb
|
79
81
|
- app/text_converter.rb
|
80
82
|
- app/text_template_machine.rb
|
83
|
+
- app/upload_command.rb
|
84
|
+
- app/upload_no_open_command.rb
|
81
85
|
- app/uploader.rb
|
82
86
|
- app/xml_element_extractor.rb
|
83
87
|
- templates/any/README
|
data/app/controller.rb
DELETED
@@ -1,84 +0,0 @@
|
|
1
|
-
require 'scheduler'
|
2
|
-
require 'uploader'
|
3
|
-
require 'filename_formatter'
|
4
|
-
|
5
|
-
class Controller
|
6
|
-
|
7
|
-
def initialize shell, view, scaffolder, hostname
|
8
|
-
@property_filename = '.meta'
|
9
|
-
@shell = shell
|
10
|
-
@view = view
|
11
|
-
@scaffolder = scaffolder
|
12
|
-
@hostname = hostname
|
13
|
-
@filename_formatter = FilenameFormatter.new
|
14
|
-
end
|
15
|
-
|
16
|
-
def help command=nil
|
17
|
-
if command then
|
18
|
-
@view.show_detailed_help command.downcase
|
19
|
-
else
|
20
|
-
@view.show_help
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
|
-
def generate framework, kata_file
|
25
|
-
if not kata_file then
|
26
|
-
@view.show_missing_command_argument_error "setup", "kata_file"
|
27
|
-
return
|
28
|
-
end
|
29
|
-
begin
|
30
|
-
@scaffolder.scaffold framework, kata_file
|
31
|
-
@view.show "\n" + @shell.read_file("README")
|
32
|
-
rescue
|
33
|
-
@view.show_unknown_framework_error framework, @scaffolder.list_templates
|
34
|
-
end
|
35
|
-
end
|
36
|
-
|
37
|
-
def start command, file
|
38
|
-
if not command or not file then
|
39
|
-
@view.show_missing_command_argument_error "start"
|
40
|
-
return
|
41
|
-
end
|
42
|
-
@view.show_start_kata command, file, framework_property
|
43
|
-
dojo = Runner.new @shell, SessionIdGenerator.new
|
44
|
-
dojo.file = file
|
45
|
-
dojo.run_command = command
|
46
|
-
scheduler = Scheduler.new dojo, @view
|
47
|
-
scheduler.start
|
48
|
-
if scheduler.last_action_was_upload? then
|
49
|
-
upload nil
|
50
|
-
end
|
51
|
-
end
|
52
|
-
|
53
|
-
# merge with 'upload_with_framework' when the framework parameter is removed
|
54
|
-
def upload session_directory, open_browser=true
|
55
|
-
upload_with_framework framework_property, session_directory, open_browser
|
56
|
-
end
|
57
|
-
|
58
|
-
# framework parameter is obsolete since client version 1.1.08 (08-feb-2011)
|
59
|
-
# it stays here for compatibility reasons and will be removed in the near future
|
60
|
-
def upload_with_framework framework, session_directory , open_browser=true
|
61
|
-
formatter = FilenameFormatter.new
|
62
|
-
if not session_directory then
|
63
|
-
session_directory = formatter.session_dir @shell.newest_dir_entry(FilenameFormatter.codersdojo_workspace)
|
64
|
-
end
|
65
|
-
@view.show_upload_start session_directory, @hostname, framework
|
66
|
-
uploader = Uploader.new @hostname, framework, session_directory
|
67
|
-
upload_result = uploader.upload
|
68
|
-
@view.show_upload_result upload_result
|
69
|
-
url = upload_result.split.last
|
70
|
-
if open_browser then
|
71
|
-
@shell.open_with_default_app url
|
72
|
-
end
|
73
|
-
end
|
74
|
-
|
75
|
-
def framework_property
|
76
|
-
properties['framework']
|
77
|
-
end
|
78
|
-
|
79
|
-
def properties
|
80
|
-
@shell.read_properties @property_filename
|
81
|
-
end
|
82
|
-
|
83
|
-
end
|
84
|
-
|