codersdojo 1.2.13 → 1.2.14

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.
@@ -4,7 +4,10 @@ require 'shell_argument_exception'
4
4
  require 'shell_wrapper'
5
5
  require 'console_view'
6
6
  require 'help_command'
7
+ require 'xhelp_command'
7
8
  require 'generate_command'
9
+ require 'init_session_command'
10
+ require 'capture_single_run_command'
8
11
  require 'upload_command'
9
12
  require 'upload_no_open_command'
10
13
  require 'start_command'
@@ -13,11 +16,15 @@ class ArgumentParser
13
16
 
14
17
  def initialize shell, view, scaffolder, hostname
15
18
  @help_command = HelpCommand.new view
19
+ @xhelp_command = XHelpCommand.new view
20
+ @generate_command = GenerateCommand.new shell, view, scaffolder
16
21
  @upload_command = UploadCommand.new shell, view, hostname
17
22
  @upload_no_open_command = UploadNoOpenCommand.new @upload_command
18
- @generate_command = GenerateCommand.new shell, view, scaffolder
23
+ @init_session_command = InitSessionCommand.new shell, view
24
+ @capture_single_run_command = CaptureSingleRunCommand.new shell, view
19
25
  @start_command = StartCommand.new shell, view, @upload_command
20
- @commands = [@help_command, @generate_command, @start_command, @upload_command, @upload_no_open_command]
26
+ @commands = [@help_command, @xhelp_command, @generate_command, @init_session_command,
27
+ @capture_single_run_command, @start_command, @upload_command, @upload_no_open_command]
21
28
  end
22
29
 
23
30
  def parse params
@@ -0,0 +1,32 @@
1
+ require 'runner'
2
+
3
+ class CaptureSingleRunCommand
4
+
5
+ COMMAND_NAME = 'capture-single-run'
6
+
7
+ def initialize shell, view
8
+ @shell = shell
9
+ @view = view
10
+ end
11
+
12
+ def execute_from_shell params
13
+ unless params[1] then @view.show_missing_command_argument_error COMMAND_NAME, "shell_command"; return end
14
+ unless params[2] then @view.show_missing_command_argument_error COMMAND_NAME, "kata_file"; return end
15
+ capture_single_run params[1], params[2]
16
+ end
17
+
18
+ def capture_single_run run_command, kata_file
19
+ runner = Runner.new @shell, SessionIdGenerator.new
20
+ runner.run_command = run_command
21
+ session_id = @shell.newest_dir_entry(FilenameFormatter.codersdojo_workspace)
22
+ filename_formatter = FilenameFormatter.new
23
+ last_state_dir = @shell.newest_dir_entry(filename_formatter.session_dir session_id)
24
+ step = last_state_dir.nil? ? 0 : filename_formatter.step_number_from_state_dir(last_state_dir) + 1
25
+ runner.execute_once kata_file, session_id, step
26
+ end
27
+
28
+ def accepts_shell_command? command
29
+ command == COMMAND_NAME
30
+ end
31
+
32
+ end
data/app/console_view.rb CHANGED
@@ -26,6 +26,7 @@ Usage: #{current_command_path} command [options]
26
26
  Commands:
27
27
  help, -h, --help Print this help text.
28
28
  help <command> See the details of the command.
29
+ xhelp Print help text for advanced commands.
29
30
  setup <framework> <kata_file> Setup the environment for running the kata.
30
31
  upload [<session_dir>] Upload the kata to http://www.codersdojo.org and open the kata in a browser.
31
32
  upload-no-open [<session_dir>] Upload the kata to http://www.codersdojo.org
@@ -33,17 +34,23 @@ Commands:
33
34
  Report bugs to <codersdojo@it-agile.de>
34
35
  helptext
35
36
  end
37
+
38
+ def show_extended_help
39
+ show <<-helptext
40
+ Usage: #{current_command_path} command [options]
41
+ Commands:
42
+ help <command> See the details of the command.
43
+ init-session Create a new session dir within the .codersdojo dir.
44
+ capture-single-run <shell_command> <kata_file> Capture a single run.
45
+ start <shell_command> <kata_file> Start the continuous test loop.
46
+ helptext
47
+ end
36
48
 
37
49
  def show_detailed_help command
38
- if command == 'setup' then
39
- show_help_setup
40
- elsif command == 'start' then
41
- show_help_start
42
- elsif command == 'upload' then
43
- show_help_upload
44
- elsif command == 'upload-no-open' then
45
- show_help_upload_no_open
46
- else
50
+ command = command.gsub('-', '_')
51
+ begin
52
+ eval "show_help_#{command}"
53
+ rescue
47
54
  show_help_unknown command
48
55
  end
49
56
  end
@@ -71,7 +78,7 @@ helptext
71
78
  show <<-helptext
72
79
 
73
80
  start <shell_command> <kata_file>
74
- Start the continuous test runner, that runs <shell-command> whenever <kata_file>
81
+ Start the continuous test runner, that runs <shell_command> whenever <kata_file>
75
82
  changes. The <kata_file> has to include the whole source code of the kata.
76
83
  Whenever the test runner is started, it creates a new session directory in the
77
84
  directory .codersdojo where it logs the steps of the kata.
@@ -97,6 +104,26 @@ Examples:
97
104
  helptext
98
105
  end
99
106
 
107
+ def show_help_init_session
108
+ show <<-helptext
109
+
110
+ init-session
111
+ Create a new session dir in the .codersdojo dir.
112
+ Usually this command is used before using capture-single-run.
113
+ helptext
114
+ end
115
+
116
+ def show_help_capture_single_run
117
+ show <<-helptext
118
+
119
+ capture-single-run <shell_command> <kata_file>
120
+ Execute <shell-command> once for <kata_file>.
121
+ The <kata_file> has to include the whole source code of the kata.
122
+ The run will be captured into the newest session dir in the .codersdojo dir.
123
+ Usually this command is used after a session dir has been created with the init-session command.
124
+ helptext
125
+ end
126
+
100
127
  def show_help_upload_no_open
101
128
  show <<-helptext
102
129
 
@@ -132,7 +159,7 @@ helptext
132
159
 
133
160
  def show_missing_command_argument_error command, missing_argument
134
161
  show "Command <#{command}> recognized but argument <#{missing_argument}> was missing.\n"
135
- eval "show_help_#{command}"
162
+ show_detailed_help command
136
163
  end
137
164
 
138
165
  def show_upload_start session_directory, hostname, framework
@@ -174,6 +201,10 @@ msg
174
201
  def show_kata_upload_hint
175
202
  show "You finished your kata. You can upload it with 'codersdojo upload'."
176
203
  end
204
+
205
+ def show_init_session_result session_dir
206
+ show "Session directory created: #{session_dir}"
207
+ end
177
208
 
178
209
  def show text
179
210
  puts @template_machine.render(text)
@@ -35,6 +35,10 @@ class FilenameFormatter
35
35
  "#{session_directory}/#{STATE_DIR_PREFIX}#{step}"
36
36
  end
37
37
 
38
+ def step_number_from_state_dir state_dir
39
+ state_dir.delete(STATE_DIR_PREFIX).to_i
40
+ end
41
+
38
42
  def session_dir session_id
39
43
  "#{CODERSDOJO_WORKSPACE}/#{session_id}"
40
44
  end
@@ -0,0 +1,24 @@
1
+ require 'runner'
2
+
3
+ class InitSessionCommand
4
+
5
+ def initialize shell, view
6
+ @shell = shell
7
+ @view = view
8
+ end
9
+
10
+ def execute_from_shell params
11
+ init_session
12
+ end
13
+
14
+ def init_session
15
+ runner = Runner.new @shell, SessionIdGenerator.new
16
+ session_dir = runner.init_session
17
+ @view.show_init_session_result session_dir
18
+ end
19
+
20
+ def accepts_shell_command? command
21
+ command == 'init-session'
22
+ end
23
+
24
+ end
data/app/runner.rb CHANGED
@@ -13,14 +13,16 @@ class Runner
13
13
  end
14
14
 
15
15
  def start
16
- init_session
16
+ init_session
17
17
  execute
18
18
  end
19
19
 
20
20
  def init_session
21
21
  @step = 0
22
22
  @session_id = @session_provider.generate_id
23
- @shell.mkdir_p(@filename_formatter.session_dir @session_id)
23
+ session_dir = @filename_formatter.session_dir @session_id
24
+ @shell.mkdir_p(session_dir)
25
+ session_dir
24
26
  end
25
27
 
26
28
  def execute
@@ -30,16 +32,24 @@ class Runner
30
32
  return
31
33
  end
32
34
  Progress.end
33
- process = @shell.execute @run_command
35
+ execute_once @file, @session_id, @step
36
+ @step += 1
37
+ @previous_change_time = change_time
38
+ end
39
+
40
+ def execute_once file, session_id, step
41
+ process = @shell.execute @run_command
34
42
  result = TextConverter.new.remove_escape_sequences process.output
35
- state_dir = @filename_formatter.state_dir @session_id, @step
43
+ state_dir = @filename_formatter.state_dir session_id, step
36
44
  @shell.mkdir state_dir
37
- @shell.cp @file, state_dir
45
+ @shell.cp file, state_dir
38
46
  @shell.write_file @filename_formatter.result_file(state_dir), result
39
47
  @shell.write_file @filename_formatter.info_file(state_dir), "#{InfoPropertyFile.RETURN_CODE_PROPERTY}: #{process.return_code}"
40
- @step += 1
41
- @previous_change_time = change_time
42
- end
48
+ end
49
+
50
+ def run_command= command
51
+ @run_command = @shell.expand_run_command command
52
+ end
43
53
 
44
54
  end
45
55
 
data/app/shell_wrapper.rb CHANGED
@@ -109,6 +109,14 @@ class ShellWrapper
109
109
  end
110
110
  end
111
111
 
112
+ def expand_run_command command
113
+ if command.end_with?(".sh") then
114
+ "bash #{command}"
115
+ else
116
+ command
117
+ end
118
+ end
119
+
112
120
  def shell_extension
113
121
  windows? ? 'cmd' : 'sh'
114
122
  end
data/app/start_command.rb CHANGED
@@ -17,7 +17,6 @@ class StartCommand
17
17
  def start command, file
18
18
  unless command then @view.show_missing_command_argument_error "start", "shell_command"; return end
19
19
  unless file then @view.show_missing_command_argument_error "start", "kata_file"; return end
20
- command = expand_run_command command
21
20
  @view.show_start_kata command, file, @meta_file.framework_property
22
21
  dojo = Runner.new @shell, SessionIdGenerator.new
23
22
  dojo.file = file
@@ -30,12 +29,4 @@ class StartCommand
30
29
  command == 'start'
31
30
  end
32
31
 
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
32
  end
@@ -0,0 +1,23 @@
1
+ class XHelpCommand
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_extended_help
16
+ end
17
+ end
18
+
19
+ def accepts_shell_command? command
20
+ command == 'xhelp'
21
+ end
22
+
23
+ end
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: 5
4
+ hash: 3
5
5
  prerelease: false
6
6
  segments:
7
7
  - 1
8
8
  - 2
9
- - 13
10
- version: 1.2.13
9
+ - 14
10
+ version: 1.2.14
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-05-12 00:00:00 +02:00
18
+ date: 2011-05-16 00:00:00 +02:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -60,12 +60,14 @@ extra_rdoc_files: []
60
60
 
61
61
  files:
62
62
  - app/argument_parser.rb
63
+ - app/capture_single_run_command.rb
63
64
  - app/codersdojo.rb
64
65
  - app/console_view.rb
65
66
  - app/filename_formatter.rb
66
67
  - app/generate_command.rb
67
68
  - app/help_command.rb
68
69
  - app/info_property_file.rb
70
+ - app/init_session_command.rb
69
71
  - app/meta_config_file.rb
70
72
  - app/progress.rb
71
73
  - app/property_file_missing_exception.rb
@@ -84,6 +86,7 @@ files:
84
86
  - app/upload_command.rb
85
87
  - app/upload_no_open_command.rb
86
88
  - app/uploader.rb
89
+ - app/xhelp_command.rb
87
90
  - app/xml_element_extractor.rb
88
91
  - templates/any/README
89
92
  - templates/any/run-endless.%sh%