# CHANGELOG teuton v 2.1 ## Done ### 1. Export grades on csv file using Moodle format * Automaticaly exports `moodle.csv` file with all cases grades, using adecuate format so it could be imported directly into Moodle platform. * We need to configure some params like this: ``` --- :global: :cases: - :tt_members: ... :tt_moodle_id: User Moodle Identity ``` ### 2. readme keyword We currently use the "teuton readme pry-folder" command to export README file from the challenge. * This example shows how to use readme keyword to add group description or target description: ``` group "GROUPNAME" do readme "Description for this group" target "target1" readme "Description for this target" goto :host, :exec => 'id root' expec_one 'root' ``` --- ## Working ### Remote temp folder Modify send keyword so it could works with all OS. Now only work with GNU/Linux. So we need to detect remote OS, then choose remote teuton folder where uploading files. * First goto open new session to remote host. And then: 1. Detect remote OSTYPE: (a) GNU/Linux and MAC using "uname -a", (b) Windows using "ver" command. 2. Create teuton remote uploading folder: (a) /tmp/teuton for GNU/Linux and MAC, (b) %windir%/temp/teuton for Windows. * Every time we send files to remote host we will use this remote folder. ### Readme * Pass usefull information into README.md: ``` readme do title ... intro ... author ... requirements ... tags ... end ``` --- ## Pending ### moodle.csv and save partial grades. * Before play challenge read previous moodle.cvs. Then play challenge and when creates new moodle.csv... we could preseve old cases(grades) 100% for example. ### expect keyword * `expect_equal "camaleon"`, same as `expect result.equal "camaleon"`. * `expect_not_equal "lagarto"`, same as not expect equal. * `expect regexp("val1|var2")`, regexp function creates regular expresion from String. * `expect result.ok?`, result from previous goto exec. * `result.exit_code`, exit code from previous goto exec. ### get keyword simplification * Simplify getting and setting params process. For example: `_username`, may be alias for `get(:username)`. Then ``` target "Create user _username" goto :host1, :exec => "id _username" expect_one _username ``` Same as ``` target "Create user "+get(:username) goto :host1, :exec => "id "+get(:username) expect_one get(:username) ``` * Review docs and replace `"id #{get(:username)}"` by something line `"id "+get(:username)`. ### Reports and export keyword * Work on more output formats: CSV, HTML, XML. * `export :format=>:html, :prefix => IAN` * `export :format=>:xml, :prefix => IAN` * `export :format=>:csv, :prefix => IAN` * Improve RESUME report or create stat-report, with stat information: * the worst target/task/case, * the best target/task/case, * the slowest target/task/case, * the fastest target/task/case, etc. * Related targets: group of targets that always have the same state in every case. ### File extension * Change ".rb" file extension by ".tt" for example. To avoid users think on ruby when using teuton files. * So move "ruby language" documentation to other section like "expert mode"... * Change "start,rb" or "play.rb" name to "run.tt". ### loop keyword * Create keyword to do loops without using ruby style: ``` loop i: 1..5 do puts i end loop :a => [3,5,7] do puts a end ``` ### Teuton web server * It coud be posible read students credential directly from config.yaml information.. ### Feedback Add new features to DSL * `feedback or advise "Some usefull information"` provide this information when studends demand help. ### Installation process * Use Bundler to install gems instead of rake. * It will be usefull use sysadming-game as gem? And install it with `gem install teuton`. * Vagrant: test how to use vagrant machines as case hosts.