Commit graph

484 commits

Author SHA1 Message Date
mo8it b24f256f2a Merge branch 'main' into project 2024-03-27 15:06:58 +01:00
mo8it a27741b131 Merge branch 'main' into performance 2024-03-27 15:00:57 +01:00
mo8it f995b4c041 Merge branch 'main' into watch 2024-03-27 14:41:26 +01:00
mo8it b9d2756ce8 Merge branch 'main' into toml 2024-03-27 14:30:10 +01:00
Mo 07dec76f7c
Merge pull request #1916 from mo8it/command
Pipe the output of command to null instead of capturing and ignoring it
2024-03-27 14:24:16 +01:00
mo8it 8e0f7e56f7 Merge branch 'main' into which 2024-03-27 14:18:20 +01:00
mo8it 87001a68c0 The string doesn't have to be a raw string 2024-03-26 17:50:29 +01:00
mo8it a610fc1bc2 Remove unneeded closure 2024-03-26 17:50:10 +01:00
mo8it e89028581c Use == instead of eq 2024-03-26 17:49:55 +01:00
mo8it 980ffa2a2b Use == on simple enums 2024-03-26 17:49:48 +01:00
mo8it 1f2029ae55 Add missing semicolon 2024-03-26 17:49:25 +01:00
mo8it ed0fcf8e3d Formatting 2024-03-26 17:49:05 +01:00
mo8it f36efae25d Only use arg instead of args AND arg 2024-03-26 17:48:06 +01:00
mo8it 853d0593d0 Derive Eq when PartialEq is derived 2024-03-26 17:47:33 +01:00
mo8it 078f6ffc1c Add comments 2024-03-26 02:26:26 +01:00
mo8it 7a6f71f090 Fix context of previous lines and improve readability 2024-03-26 02:14:25 +01:00
mo8it a158c77d81 Add comment 2024-03-25 23:21:14 +01:00
mo8it 8ddbf9635d Add write_project_json 2024-03-25 23:01:56 +01:00
mo8it 8d3ec24c11 Optimize the serialized data types 2024-03-25 22:41:14 +01:00
mo8it a5ba44bd6a RustAnalyzerProject is not deserialized 2024-03-25 22:30:16 +01:00
mo8it f5135ae4df Remove unneeded check if crates is empty 2024-03-25 22:29:33 +01:00
mo8it 87e55ccffd Use the parsed exercises instead of glob 2024-03-25 22:20:00 +01:00
mo8it d911586788 Pipe the output to null instead of capturing and ignoring it 2024-03-25 17:21:54 +01:00
mo8it b932ed1f67 Don't capture stderr 2024-03-25 17:14:41 +01:00
mo8it d095a307dd Avoid allocations on every call to Path::join 2024-03-25 03:59:21 +01:00
mo8it 51712cc19f Merge get_sysroot_src into the constructor 2024-03-25 03:49:10 +01:00
mo8it efa9f57048 Add anyhow 2024-03-25 03:46:56 +01:00
mo8it b3aef377be Use a custom capacity for the JSON buffer 2024-03-25 03:33:14 +01:00
mo8it e4520602f5 Use the NotFound variant of the IO error 2024-03-25 02:41:45 +01:00
mo8it 83cd91ccca Replace toml with toml_edit 2024-03-25 02:35:51 +01:00
mo8it 51b4c240ed Use which instead of running rustc --version 2024-03-25 00:30:01 +01:00
mo8it bdf826a026 Make "I AM NOT DONE" caseless 2024-03-24 22:22:55 +01:00
mo8it c0c112985b Replace regex with winnow 2024-03-24 19:18:19 +01:00
mo8it f205ee3d4c Call looks_done only once 2024-03-24 18:50:46 +01:00
mo8it e1375ef431 Use to_string_lossy 2024-03-24 18:47:27 +01:00
mo8it 0aeaccc3a5 Optimize state 2024-03-24 18:34:46 +01:00
mo8it 01b7d6334c Remove unneeded to_string call 2024-03-23 22:08:25 +01:00
mo8it a325df55d1 Cache filters 2024-03-23 21:56:40 +01:00
mo8it 27fa7c3e4a Move the const string to the bottom like others 2024-03-23 19:00:15 +01:00
mo8it 0d93266462 Initialize the input buffer with some capacity 2024-03-23 18:56:30 +01:00
mo8it 3dce7e5696 Improvements to watch mode 2024-03-23 18:51:25 +01:00
honeywest e276c12192 feat: ui format 2024-03-21 15:18:50 +08:00
Dan Bond eb952a480d
verify: fix success message spacing
Signed-off-by: Dan Bond <danbond@protonmail.com>
2024-03-18 16:47:54 -07:00
mo8it 1fe32a7ff2 Fix the sysroot path when it contains whitespaces 2024-03-18 01:44:25 +01:00
Kazuki Matsuo 80388c042b
fix(verify): show stdout of the last line 2024-03-16 13:56:34 +09:00
Luca Plian 17ee0e3c7a
optimized the UI code (#1830) 2024-03-15 13:51:24 +01:00
liv 7f530ebf20
Merge pull request #1783 from neuschaefer/fe-nish
Fe-nish line rendering improvements
2023-11-29 17:33:41 +01:00
J. Neuschäfer 12d1bf407a feat(watch): Add red color to the finishing ferris
This adds some eye-candy for users who finish Rustlings. It is based on
ANSI terminal escape sequences and should work in most environments.
2023-11-22 02:07:52 +01:00
J. Neuschäfer 5c4821ac6f fix(watch): Fix rendering of the finishing ferris
In commit 571bab2 ("Run clippy --fix"), the "" string was changed to
r"", even though it contains an intentional escape sequence, which now
looks wrong. My commit undoes this change:

Before:

	+----------------------------------------------------+
	|          You made it to the Fe-nish line!          |
	+--------------------------  ------------------------+
				  \\/
	     ▒▒          ▒▒▒▒▒▒▒▒      ▒▒▒▒▒▒▒▒          ▒▒
	   ▒▒▒▒  ▒▒    ▒▒        ▒▒  ▒▒        ▒▒    ▒▒  ▒▒▒▒
	   ▒▒▒▒  ▒▒  ▒▒            ▒▒            ▒▒  ▒▒  ▒▒▒▒
	 ░░▒▒▒▒░░▒▒  ▒▒            ▒▒            ▒▒  ▒▒░░▒▒▒▒
	   ▓▓▓▓▓▓▓▓  ▓▓      ▓▓██  ▓▓  ▓▓██      ▓▓  ▓▓▓▓▓▓▓▓
	     ▒▒▒▒    ▒▒      ████  ▒▒  ████      ▒▒░░  ▒▒▒▒
	       ▒▒  ▒▒▒▒▒▒        ▒▒▒▒▒▒        ▒▒▒▒▒▒  ▒▒
		 ▒▒▒▒▒▒▒▒▒▒▓▓▓▓▓▓▒▒▒▒▒▒▒▒▓▓▒▒▓▓▒▒▒▒▒▒▒▒
		   ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
		     ▒▒▒▒▒▒▒▒▒▒██▒▒▒▒▒▒██▒▒▒▒▒▒▒▒▒▒
		   ▒▒  ▒▒▒▒▒▒▒▒▒▒██████▒▒▒▒▒▒▒▒▒▒  ▒▒
		 ▒▒    ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒    ▒▒
	       ▒▒    ▒▒    ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒    ▒▒    ▒▒
	       ▒▒  ▒▒    ▒▒                  ▒▒    ▒▒  ▒▒
		   ▒▒  ▒▒                      ▒▒  ▒▒


After:

	+----------------------------------------------------+
	|          You made it to the Fe-nish line!          |
	+--------------------------  ------------------------+
				   \/
	     ▒▒          ▒▒▒▒▒▒▒▒      ▒▒▒▒▒▒▒▒          ▒▒
	   ▒▒▒▒  ▒▒    ▒▒        ▒▒  ▒▒        ▒▒    ▒▒  ▒▒▒▒
	   ▒▒▒▒  ▒▒  ▒▒            ▒▒            ▒▒  ▒▒  ▒▒▒▒
	 ░░▒▒▒▒░░▒▒  ▒▒            ▒▒            ▒▒  ▒▒░░▒▒▒▒
	   ▓▓▓▓▓▓▓▓  ▓▓      ▓▓██  ▓▓  ▓▓██      ▓▓  ▓▓▓▓▓▓▓▓
	     ▒▒▒▒    ▒▒      ████  ▒▒  ████      ▒▒░░  ▒▒▒▒
	       ▒▒  ▒▒▒▒▒▒        ▒▒▒▒▒▒        ▒▒▒▒▒▒  ▒▒
		 ▒▒▒▒▒▒▒▒▒▒▓▓▓▓▓▓▒▒▒▒▒▒▒▒▓▓▒▒▓▓▒▒▒▒▒▒▒▒
		   ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
		     ▒▒▒▒▒▒▒▒▒▒██▒▒▒▒▒▒██▒▒▒▒▒▒▒▒▒▒
		   ▒▒  ▒▒▒▒▒▒▒▒▒▒██████▒▒▒▒▒▒▒▒▒▒  ▒▒
		 ▒▒    ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒    ▒▒
	       ▒▒    ▒▒    ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒    ▒▒    ▒▒
	       ▒▒  ▒▒    ▒▒                  ▒▒    ▒▒  ▒▒
		   ▒▒  ▒▒                      ▒▒  ▒▒

Running `cargo clippy` (version 0.1.70) after this commit does not
reveal any new warnings.

Fixes: 571bab2 ("Run clippy --fix")
2023-11-22 02:07:36 +01:00
Matthias Richter adf7d1b975 chore(watch): update notify dependency to v6
closes #1640
2023-11-17 00:56:02 +01:00
danieltinazzi 3181d9f3f8 fix progress bar count 2023-11-04 17:29:10 +01:00
markgreene74 3c4fde4610 fix(watch): update the CLIPPY_CARGO_TOML_PATH
... to reflect the changes to the exercise directory names.

The path exercises/clippy replaced with exercises/22_clippy.

closes #1726
2023-10-16 22:41:34 +01:00
liv 3bfd857a27
Merge pull request #1696 from docwilco/docwilco/fix-spawn-windows-debugging
fix(cli): make debugging in windows work
2023-09-28 11:03:08 +02:00
DocWilco 511e334365 fix(cli): stop littering pdb files on windows 2023-09-27 22:02:14 +02:00
DocWilco cc658eb288 fix(cli): make debugging in windows work
On windows, if `stderr` or `stdin` aren't also set to `Stdio::null()`
the `spawn()` fails with `The handle is invalid`, and `rustlings`
thinks that there's no `rustc` installed.
2023-09-27 21:33:49 +02:00
jyn b88c23897f Give a more helpful error when a file is missing
Previously, this would just say "missing file". Now it shows the path of the file that was missing,
which should make it easier to debug what went wrong.
2023-09-25 03:41:13 -04:00
mo8it 5a93f2a4f1 Port to Clap 2023-09-04 13:30:46 +02:00
liv d79984dbda
Merge pull request #1637 from mo8it/fix-warnings
Run clippy --fix
2023-08-28 13:38:21 +02:00
mo8it c0b8af2c42 Fix indicatif 2023-08-26 23:35:07 +02:00
mo8it 571bab20c1 Run clippy --fix 2023-08-26 23:07:20 +02:00
liv f2de12aa34 release: 5.5.1 2023-05-17 21:05:51 +02:00
liv 2d544f18b5 fix: revert back to using relative paths 2023-05-17 21:04:32 +02:00
liv f452fd7bb0 release: 5.5.0 2023-05-17 16:30:22 +02:00
liv 9508e97914 feat: write absolute root module paths for lsp 2023-05-17 16:14:10 +02:00
Romain Bayle c44e3025f9 option success_hints added to the struct Watchargs instead of Args 2023-05-02 22:46:41 +02:00
Romain Bayle 5d3696a9e6 feat(cli): added success-hints option for the rustlings command
closes #1373
2023-05-01 03:04:06 +02:00
Sebastian LaVine a4a5691a7b
feat: Add "!" command to rustlings watch 2023-04-16 21:44:08 -04:00
Alexandre ESSE d7111cb4a3 fix(main.rs): remove trailing spaces 2023-03-31 11:58:15 +02:00
liv 7f1754ecc5 release: 5.4.1 2023-03-10 17:39:59 +01:00
Nidhal Messaoudi 1acbbb6d43 Fixing the progress percentage 2023-02-27 21:17:45 +01:00
liv fc9fb536ca release: 5.4.0 2023-02-12 18:01:48 +01:00
wjwrh 1721ddc231 Fix the problem of different edition between rustc and rust-analyzer 2023-02-05 14:10:23 +08:00
liv 2b30cec974
Merge pull request #1319 from cloppingemu/main
fix(verify): progress bar percent now updates with the number of files verified
2023-01-11 12:25:09 +01:00
TenzinRabgy 8e36256eac chore(watch): decrease watch delay
closes #1215
2023-01-04 04:49:51 -05:00
himanshu soni 951826e6b5 fix(verify): progress bar proportion now updates with the number of files verified 2023-01-03 23:54:01 +09:30
liv b8d4bb1f13
Merge pull request #1316 from tklauser/fix-fn-typo
Fix typo in method name
2023-01-03 14:19:17 +01:00
Tobias Klauser 1b9d4bbf72
Fix typo in method name 2023-01-03 14:14:07 +01:00
liv 142633533e
Merge pull request #1294 from dbarrosop/nix-darwin
fix nix environment
2023-01-03 10:20:47 +01:00
liv 9ad884aadb chore: bump version 2022-12-23 16:55:42 +01:00
David Barroso b2df015fe6 when generating lsp config use RUST_SRC_PATH if set 2022-12-10 14:05:44 +01:00
liv 587e2d6dcd
Merge pull request #1220 from azzamsa/percentage
feat(verify): add progress percentage in watch mode
2022-10-14 10:30:32 +01:00
azzamsa 68388e5d4f feat(verify): add progress percentage in watch mode 2022-10-14 05:28:49 +07:00
Yuri Astrakhan 2940ad059d Apply uninlined-format-args clippy lint
This lint should also be applied to the excersies,
but I am not certain how to run it for all non-crate individual files.

To re-run:

```
rustup run nightly cargo clippy --fix -- -A clippy::all -W clippy::uninlined_format_args
```
2022-10-12 16:43:07 -04:00
mokou c923e7af73 chore: release 5.2.1 2022-09-06 12:22:17 +02:00
mokou 3309a01b5e chore: release 5.2.0 2022-08-27 19:48:15 +01:00
magnusrodseth d59dde320b chore: Add suggested changes 2022-08-18 12:47:26 +02:00
magnusrodseth 6f44cb1dd2 feat: Add reset command, given a filename 2022-08-17 16:31:53 +02:00
mokou d0c7b06eff chore: release 5.1.1 2022-08-17 10:43:50 +02:00
mokou 714a8075cc chore: bump version 2022-08-16 09:54:25 +02:00
mokou 5435b80841 chore: bump version 2022-07-16 14:30:04 +02:00
mokou ed0f278a8f chore: remove mod.rs files and exercises feature 2022-07-11 12:53:49 +02:00
liv 5fbf28dfec
Merge pull request #1038 from KatanaFluorescent/main
change edition to 2021 in exercices.rs
2022-07-11 11:57:59 +02:00
KatanaFluorescent a500ed2c3c
change edition to 2021 in exercices.rs
workaround for this issue https://github.com/rust-lang/rustlings/issues/1022
2022-07-01 16:49:36 +02:00
mokou 6588d9be22 chore: bump version 2022-07-01 16:48:34 +02:00
Jack Clayton be87cc9fa6 Add lsp command to fix rust-analyzer 2022-06-17 11:36:06 +08:00
Ryan Lowe 6fae5d6114
Merge branch 'main' into progress-indicator 2022-04-20 23:29:47 -04:00
mokou 9ec35d899c chore: bump version
Plus, remove the clog configuration file,
since that's not being used anymore.
2022-04-20 09:44:37 +02:00
mokou c811643d1e chore: bump library versions 2022-04-20 09:35:08 +02:00
mokou cf9f382873 chore: bump version 2022-04-14 11:16:00 +02:00
diannasoreil 74895df5a7
Merge pull request #738 from apogeeoak/text
fix(cli): Move long text strings into constants.
2022-04-04 17:09:49 +02:00
x-hgg-x 179a75a68d
fix: Include exercises folder in the project structure behind a feature (#917)
closes #859
closes #913
closes #942
2022-03-29 11:44:06 +02:00
Ryan Lowe 9be012dda0 feat!: Add progress indicator
closes #360

BREAKING CHANGE: verify() has a new function signature so it can
know the current completion progress
2022-02-05 16:54:11 -05:00
apogeeoak c1f35e46df Merge branch 'main' into text 2022-02-04 19:27:42 -05:00
radicale 71a06044e6
fix(clippy1): Set clippy::float_cmp lint to deny (#907) 2022-02-04 14:39:09 +01:00
Galih wisnuaji 9b27e8d993 chore : replace filter_map() with find_map() 2021-12-24 13:48:43 +07:00
ana d57c183028 release: 4.6.0 2021-09-25 11:23:05 +02:00
Antoine Busch 1caef0b434 feat: Add "quit" command to rustlings watch
closes: #842
2021-09-24 23:55:55 +10:00
diannasoriel ae56cba9c8
Merge pull request #846 from rust-lang/feat/add-more-watch-commands
feat: add more watch commands
2021-09-24 13:05:04 +02:00
ana 3352b5a4d3 chore: improve println! usage 2021-09-24 13:04:30 +02:00
LIU JIE 06d5c0973a
fix(cli): typo in exercise.rs (#848) 2021-09-21 11:50:15 +02:00
ana a7dc080b95 feat: add more watch commands
Includes:
- quit, to quit the shell instead of having to press Cmd/Ctrl-C or Cmd/Ctrl-D
- help, to display an overview of all the commands available in watch mode.

Closes #842.
2021-09-21 10:36:11 +02:00
Ben Armstead 1cd9328a58
fix(cli): remove unnecessary borrows (#829)
* Update dependencies

* Format better and remove unnecessary borrows
2021-08-24 14:06:30 +02:00
ana ba087ce64a release: 4.5.0
Signed-off-by: ana <ana@ana.st>
2021-07-07 22:23:52 +02:00
Richthofen d20e413a68
feat(cli): Add "next" to run the next unsolved exercise. (#785)
* Add "run next" to run the next unsolved exercise.

* Fix a grammar error in the message.

* Update README.md with the suggested change

Co-authored-by: marisa <mokou@fastmail.com>

* Update the README.md for "rustlings hint next".

Co-authored-by: marisa <mokou@fastmail.com>
2021-06-30 12:05:49 +02:00
apogeeoak f78c480208 fix(cli): Move long text strings into constants. 2021-04-27 17:14:54 -04:00
mokou 84461c20cb release: 4.4.0 2021-04-24 11:57:00 +02:00
Zerotask cf42ddc449
chore(watch): add hint for the exercises README.md
rustlings watch will now show an additional hint for the corresponding README.me
2021-04-23 20:28:55 +02:00
mokou 347f30bd86 fix(main): Let find_exercise work with borrows 2021-04-21 16:21:56 +02:00
mokou 7928122fce feat: Replace clap with argh
I’ve been wanting to do this for a while, but always procrastinated on it. We’ve been using Clap since the 2.0 rewrite, but Clap is known to be a fairly heavy library. Since Rustlings is usually peoples’ first contact with a Rust compilation, I think it’s in our best interests that this complation is as fast as possible. In effect, replacing Clap with the smaller, structopt-style `argh` reduces the amount of crates needing to be compiled from 82 to 60.

I also think this makes the code way easier to read, we don’t need to use Clap’s methods anymore, but can switch over to using pure Rust methods, e.g., switches are booleans, options are Option<String>s or the like, and subcommands are just structs.
2021-04-21 10:08:26 +02:00
Patrick Hintermayer 1c6f7e4b7b
feat(list): updated progress percentage 2021-04-19 09:39:05 +02:00
Zerotask bd48544e25
style: formatted files with rustfmt 2021-04-18 15:40:47 +02:00
Zerotask c0e3daacaf
feat(list): added progress info
Added a progress info at the bottom of the list for command: rustlings list

closes #705
2021-04-18 15:37:41 +02:00
Matt Lebl 01e7f27aa6 refactor: change from match to if for NO_EMOJI 2021-03-20 11:53:40 -07:00
Matt Lebl 8d62a99637 feat: Replace emojis when NO_EMOJI env variable present 2021-03-19 02:16:07 -07:00
circumspect 833df0b8b3
chore: fix typo
Co-authored-by: Chenkail <40770208+Chenkail@users.noreply.github.com>
2021-03-12 15:26:57 +01:00
Larry Garfield 91ee27f22b
fix: Spelling error 2021-02-24 15:03:26 -06:00
apogeeoak 2e84f34cf3 chore: Updated source to follow clippy suggestions. 2021-02-09 18:21:18 -05:00
Abdou Seck 8bbe4ff138 feat(cli): Improve the list command with options, and then some
1.
`rustlings list` should now display more than just the exercise names.
Information such as file paths and exercises statuses should be displayed.
The `--paths` option limits the displayed fields to only the path names; while the `--names`
option limits the displayed fields to only exercise names.
You can also control which exercises are displayed, by using the `--filter` option, or
the `--solved` or `--unsolved` flags.

Some use cases:
- Fetching pending exercise files with the keyword "conversion" to pass to my editor:
```sh
vim $(rustlings list --filter "conversion" --paths --unsolved)
```

- Fetching exercise names with keyword "conversion" to pass to `rustlings run`:
```sh
for exercise in $(rustlings list --filter "conversion" --names)
do
    rustlings run ${exercise}
done
```

2.
This should also fix #465, and will likely fix #585, as well.
That bug mentioned in those issues has to do with the way the `watch` command handler fetches the pending exercises.
Going forward, the least recently updated exercises along with all the other exercises in a pending state are fetched.
2021-01-08 13:21:00 -05:00
Abdou Seck 0b9220c1fc Add looks_done method to Exercise to expose a resolution state 2021-01-08 13:21:00 -05:00
mokou a303d508cf release: 4.3.0 2020-12-29 11:39:26 +01:00
Brock fa9f522b7f
feat: Crab? (#586)
Crab?
2020-11-11 23:06:14 +01:00
Caleb Webber 838f9f3008
feat: add "rustlings list" command 2020-11-10 18:36:19 +01:00
Caleb Webber d61b4e5a13
fix: log error output when inotify limit is exceeded
closes #472
2020-11-05 19:30:50 -05:00
Roberto Vidal 5643ef05bc fix: more unique temp_file 2020-10-30 14:39:28 +01:00
Alexx Roche c03e1e6c6c
chore: fixed test name 2020-09-27 21:57:51 +02:00
Étienne Barrié 81f8c2f83c chore: Run cargo fmt 2020-08-10 10:42:54 -04:00
Adi Vaknin 4f2468e14f
feat(cli): Added 'cls' command to 'watch' mode (#474) 2020-07-23 20:23:27 +02:00
Alexx Roche 816b1f5e85 feat: Remind the user of the hint option (#425)
Suggestion from AbdouSeck https://github.com/rust-lang/rustlings/issues/424#issuecomment-639870331
for when the student's code has errors.
2020-07-08 11:52:23 +02:00
mokou 55a9284665 chore: Move from master branch to main branch 2020-06-14 14:48:51 +02:00
Abdou Seck 8ad5f9bf53 feat: Add a --nocapture option to display test harnesses' outputs
This new feature can be accessed by invoking rustlings with --nocapture.

Both unit and integration tests added.

closes #262

BREAKING CHANGES:
The following function take a new boolean argument:
	* `run`
	* `verify`
	* `test`
	* `compile_and_test`
2020-06-04 11:18:26 -04:00
Abdou Seck 02a2fe4871 Collapse nested if statements 2020-06-04 11:18:09 -04:00
Abdou Seck 40741c5b0b Use .to_string rather than format macro 2020-06-03 17:18:48 -04:00
Rohan Jain 3ab084a421 fix(run): compile clippy exercise files
Additionally to running clippy, also compile the exercise file so that
`rustling run clippy1` works after a successful completion of the
exercise.

closes #291

Signed-off-by: Rohan Jain <crodjer@gmail.com>
2020-04-11 08:58:23 +02:00
Roberto Vidal 3b6d5c3aaa feature: makes "compile" exercise print output, resolves #270
When running "compile"-mode exercises in interactive `verify` mode,
we print their output when we prompt the learner if they want to
continue. This improves the "experimentation" experience, since
trying different things does produce a visible change.
2020-04-06 16:17:14 +02:00
Mario Reder 1e2fd9c92f feat: Add clippy lints
- adds a new 'clippy' category for exercises
- clippy exercises should throw no warnings
- install script now also installs clippy

is related to https://github.com/rust-lang/rust-clippy/issues/2604
2020-02-26 14:07:07 +01:00
Roberto Vidal 43dc31193a refactor: exercise evaluation
Exercise evaluation (compilation + execution) now uses Results
Success/failure messages are standardized
2020-02-20 20:27:05 +01:00
Kate Hart d25ee55a32
feat: Show a completion message when watching
The completion message is shown only once all exercises succeed and are
not annotated with "I AM NOT DONE." The watch command will also exit

closes #251
2019-12-26 20:27:49 -08:00
vyaslav 8143d57b4e feat(watch): show hint while watching 2019-11-18 20:52:57 +01:00
Roberto Vidal 4b26546589 fix(run): makes run never prompt
`watch` and `verify` do prompt the user to actively move to the
next exercise. This change fixes `run` to never prompt. Previously
it was inconsistent between "test" and "compile" exercises.

BREAKING CHANGE: we again change the behavior of the `run` command
2019-11-12 11:35:40 +01:00
Roberto Vidal 36a033b87a feat(cli): check for rustc before doing anything
Addresses #190.
2019-11-11 18:00:54 +01:00
marisa 1a7bb5a400 Address feedback 2019-11-11 17:47:45 +01:00
marisa 48c35bcfbc fix tests 2019-11-11 17:28:19 +01:00
marisa ec2d4bd3ee
Merge branch 'master' into refactor-hints 2019-11-11 17:21:06 +01:00
marisa ce9fa6ebbf feat(hint): Add test for hint 2019-11-11 17:19:50 +01:00
marisa 9bdb0a12e4 feat: Refactor hint system
Hints are now accessible using the CLI subcommand `rustlings hint
<exercise name`.

BREAKING CHANGE: This fundamentally changes the way people interact with exercises.
2019-11-11 16:51:38 +01:00
Roberto Vidal 2cdd61294f feat: improve watch execution mode
The `watch` command now requires user action to move to the next
exercise.

BREAKING CHANGE: this changes the behavior of `watch`.
2019-11-11 16:23:35 +01:00
marisa 627cdc07d0 feat: Index exercises by name
BREAKING CHANGE: This changes the way you use `rustlings run` by now
requiring an abridged form of the previous filename, e.g:

`rustlings run exercises/if/if1.rs` becomes
`rustlings run if1`
2019-11-11 15:46:32 +01:00
WofWca 3aff590855 improvement(watch): clear screen before each verify()
Closes #146
2019-11-09 22:24:24 +08:00
Jubilee Young 83be517e77 watch: clears terminal before entering loop
If someone is sliding in and out of "watch" mode, it can make it hard
to tell which error messages are still relevant. This patch resolves
that by clearing the terminal entirely before entering watch's loop.
2019-11-09 00:57:36 -08:00
Viacheslav Avramenko 1c4c8764ed feat: Added exercise for struct update syntax 2019-10-21 14:50:59 +02:00
Fredrik Jambrén ba85ca32c4 Check if changed exercise file exists before calling verify. 2019-07-11 23:54:18 +02:00
Dan Wilhelm f72e0ca979 chore: Remove missed highlighting char from Issue #133 2019-06-10 20:24:18 -07:00
liv 62696f5819 Remove highlighting and syntect 2019-06-05 12:18:50 +02:00
Eddy Petrisor ca6bf966dd Cargo fmt the rustlings application code
Signed-off-by: Eddy Petrisor <eddy.petrisor@gmail.com>
2019-05-22 14:50:23 +03:00
liv 35c3d0b3fc Revert --nocapture flag
This closes #149 and #152
2019-05-07 12:31:02 +02:00
liv 7eddee6f7a add a slightly more helpful error message 2019-04-22 18:43:39 +08:00
liv f2c48cfac5 fix the --nocapture functionality 2019-04-22 18:42:32 +08:00
liv bfcf38c8bc
damn it 2019-04-22 07:05:46 +02:00
liv 9e328da641
use -- --nocapture when testing 2019-04-22 05:49:23 +02:00
Chris Pearce 77de6e5d6a Clean up test includes for File and Path 2019-04-12 23:14:15 +01:00
Chris Pearce 8c867a001a Remove unwrap on canonicalize result 2019-04-12 22:24:13 +01:00
Chris Pearce d01a71f7de Extract exercise struct to encapsulate path logic 2019-04-12 08:58:25 +01:00
bors ffb165ce26 Auto merge of #140 - cjpearce:fix/test-race-condition, r=komaeda
Fix intermittent test failure caused by race condition

First public pull request 😬

There's an intermittent integration test failure when you use multiple test threads (at least for me on a mac). I narrowed it down to two tests each spawning a process using `Command` which then try to compile the same file at the same time. If the timing doesn't work out, they both try to compile, and then one process runs `clean` before the other can run the executable - causing a panic.

![Screenshot 2019-04-07 at 19 54 55](https://user-images.githubusercontent.com/3453268/55688324-20520980-596f-11e9-8474-5215d61a4387.png)

You can prevent it from happening by running with a single thread (`cargo test -- --test-threads=1`), because the `Command` blocks. That's not a particularly good solution though because it's not something you can configure in `Cargo.toml`.

I considered making the affected tests just run serially, but it occurred to me that this could also happen if someone accidentally runs rustlings in watch mode in two terminals without realising it. I wound't consider this that unlikely given it's a tool for learning.

I fixed it by ensuring that the executables made from separate processes don't conflict by appending a process id to the output executable name. I also extracted the commands into a single file next to `clean` so that we don't have to repeat the generated file name everywhere and risk missing something.
2019-04-07 22:37:34 +00:00
Chris Pearce 0c7bd12372 Fix test failing due to panic 2019-04-07 20:13:04 +01:00
Chris Pearce 592ae6b4d2 Add process id to temp file name 2019-04-07 17:28:51 +01:00
Chris Pearce 4fa79ee02f Extract command builders into util 2019-04-07 17:26:01 +01:00
liv 022921168d fix watch command path execution 2019-03-27 10:58:56 +01:00
lyn f43cb124f6 add tests 2019-03-20 21:05:45 +01:00
Kyle Isom 9fc4a83987 Be nicer when rustlings isn't run from the right directory.
Before, rustlings would panic if it wasn't in the right directory. It
took me a minute to figure out why, and this wasn't my first intro to
Rust. It would probably help new users if they saw a helpful message
instead of a stack trace.
2019-03-17 11:43:47 -07:00
Andrew Bagshaw 3b5dfac44e Remove unnessecary whitespace 2019-03-15 16:01:45 -07:00
Andrew Bagshaw a6a8b61b12
Change to \n 2019-03-15 12:47:06 -07:00
Andrew Bagshaw 6cd42bb821 Add clear break between verify executions 2019-03-13 14:08:28 -07:00
Andrew Bagshaw 4d7ce6e571 deduplicate 2019-03-13 13:53:24 -07:00
Andrew Bagshaw 3f114cc069 Start verification at most recently modified file 2019-03-13 13:50:54 -07:00
lyn abf175111d clippy-ify 2019-03-11 15:09:20 +01:00
lyn 70e59cca3c standardize exercise running via an external toml file 2019-03-06 21:47:33 +01:00
Shaun Bennett 04d0f78a2c Fix file watching for vim swap files 2019-03-06 18:38:55 +00:00
Hirokazu Hata 5cd5be8847 Add thread exercises to verify entrypoint 2019-02-17 14:03:52 +09:00
liv 02ceb0ba8c fix test command execution
seems like i forgot that you actually need to run executables created
with `rustc --test`! this also reworks the "test1" exercise a bit

closes #108
2019-02-15 12:06:05 +01:00
liv 320119ce96 add "--color always" to the other rustc commands 2019-01-25 15:11:23 +01:00
liv 8cff8de493 add more detailed command help 2019-01-23 21:43:32 +01:00
liv dc1f3b79f8 add tests; refactor exercise links 2019-01-23 20:48:01 +01:00
liv 141db7795b add --test run flag 2019-01-09 22:04:08 +01:00
liv 17e12433cb add a test 2019-01-09 21:47:50 +01:00
liv b90f642029 remove the ex*.rs files 2019-01-09 21:26:12 +01:00
liv 7fa2f87c8b make the default output a bit nicer 2019-01-09 20:44:55 +01:00
liv e03a98cbf6 rustfmt 2019-01-09 20:33:58 +01:00
liv a388bb3798 split codebase 2019-01-09 20:33:43 +01:00
liv 679508b278 ah well it was worth a try 2019-01-09 20:09:49 +01:00
liv ad26a6d0e6 revert 2019-01-09 20:08:48 +01:00
liv a0d21020df update for rust 2018 2019-01-09 20:07:19 +01:00
Erik Vesteraas 9d16d6b63d Add watch mode, and don't panic on clean failure 2018-11-26 12:45:29 +01:00
olivia a4b4350b70 switch theme to base16 eighties 2018-11-26 11:29:39 +01:00
olivia hugger a15b276d96
Merge pull request #98 from evestera/rustc-color-always
Propagate colored output from rustc
2018-11-26 11:11:35 +01:00
olivia 1d495ff7b9 add markdown output for default command 2018-11-26 11:10:38 +01:00
Erik Vesteraas f18590f0a1 Add color=always to rustc options 2018-11-26 10:54:08 +01:00
olivia e0ee5f1d7f implement run command 2018-11-23 15:18:43 +01:00
olivia 6baac88574 fmt 2018-11-14 20:12:20 +01:00
olivia b8789f09e0 add empty line after ascii 2018-11-14 20:08:38 +01:00
olivia 6cc16edff0 add a fancy ascii header 2018-11-14 20:04:48 +01:00
olivia b3c52803e9 color output messages 2018-11-14 19:23:16 +01:00
olivia 18a1447a65 add the whole curriculum 2018-11-09 22:31:54 +01:00
olivia f7846af7ac right let's try this one again 2018-11-09 20:31:14 +01:00
olivia 850a13e913 oh, commit this 2018-05-22 22:28:13 +02:00
olivia 4eca18050f put it in a separate file 2018-05-22 22:26:09 +02:00
olivia 69ff4a8b25 replace macros with more general methods 2018-05-22 22:23:22 +02:00
olivia 2f1e3bc0c7 small fixes 2018-05-22 21:24:43 +02:00
olivia 6d50965344 port the first exercise from the old curriculum 2018-05-22 21:22:21 +02:00
olivia 89f2a986c0 rustfmt 2018-05-16 15:30:30 +02:00
olivia 5310dfd406 make the initial output prettier 2018-05-16 15:27:57 +02:00
olivia 39b3e3225a add another example 2018-05-16 15:27:52 +02:00
olivia d9946a91d4 make the example work 2018-05-16 15:23:14 +02:00
olivia 8ea1b17fd9 format 2018-05-14 19:13:13 +02:00
olivia 97efff760d use macros 2018-05-14 18:41:58 +02:00
olivia 595a91df55 experiment 2018-05-06 18:59:50 +02:00
olivia 8ecc1e6ff1 move to another file 2018-05-06 17:27:03 +02:00
olivia d0e3a6e770 make return explicit 2018-04-26 22:15:18 +02:00
olivia 7148233950 add a sample 2018-04-26 22:14:20 +02:00
olivia 3ffefa32e1 init new cargo project 2018-04-26 21:41:19 +02:00
olivia 5e89d1e888 move old files to a separate directory 2018-04-26 21:29:11 +02:00
Carol (Nichols || Goulding) 426e5cf3f5
Don't be lazy, actually read the file instead of including it at compile time 2018-03-04 14:13:55 -05:00
Carol (Nichols || Goulding) 70aa18699b
Make a handlebars helper that uses prlink to generate a link from a file 2018-03-04 14:11:11 -05:00
Carol (Nichols || Goulding) 2ac0d5982c
Introduce handlebars to be able to do templating 2018-03-04 12:58:40 -05:00
Carol (Nichols || Goulding) 87d8131f1f
Start a script to regenerate README.md from a template
So far this doesn't actually do any templating, just adds a note about
the README being autogenerated :)
2018-03-04 12:41:55 -05:00