Commit graph

621 commits

Author SHA1 Message Date
mo8it
b01fddef8b Show progress of dev check 2024-08-19 23:52:22 +02:00
mo8it
78a8553f1c "Continue at" quits the list 2024-08-19 23:29:17 +02:00
mo8it
72e557b3a9 Break help footer on narrow terminals 2024-08-17 16:54:44 +02:00
mo8it
3eaccbb61a Restore the terminal after an error in the list 2024-08-17 16:49:07 +02:00
mo8it
b678bd8ed2 Disable mouse in the list 2024-08-17 16:34:43 +02:00
mo8it
2baa140615 q only quits the list 2024-08-17 15:53:34 +02:00
mo8it
e760f07767 Make it clear that reset only resets one exercise 2024-08-17 15:53:24 +02:00
mo8it
6ce31defb6 Ignore stdout of git init 2024-08-17 14:40:09 +02:00
mo8it
52a231ce2f Update Ratatui 2024-08-09 02:17:01 +02:00
mo8it
16af981772 Hide stderr of cargo locate-project 2024-08-09 01:27:31 +02:00
mo8it
fc141b8dfc Put Cargo.toml in `` 2024-08-09 01:16:45 +02:00
mo8it
82ebd29ff6 Add a special confirmation for initialization in a workspace 2024-08-09 01:14:08 +02:00
mo8it
f5737b5a49 Fix typos 2024-08-09 01:08:52 +02:00
mo8it
140c4e4812 Improve initialization in a Cargo workspace 2024-08-09 00:49:30 +02:00
mo8it
337460d299 Check the status of the cargo metadata command 2024-08-09 00:12:49 +02:00
mo8it
e41c3a7c92 Use fixed seeds with ahash 2024-08-08 23:48:54 +02:00
Mo
9f9a754a64
Merge pull request #2076 from senekor/remo/snryotxotoxv
Improve initialization in workspace
2024-08-08 23:48:09 +02:00
Mo
f7b0cfe8d1
Merge pull request #2075 from senekor/remo/swzqnkxqzutw
Replace hashbrown with ahash
2024-08-08 23:12:43 +02:00
mo8it
4ce8667b9d Show the exercise name in the waiting message 2024-08-08 22:48:53 +02:00
mo8it
0785b24192 Show a message before running the exercise 2024-08-08 22:41:41 +02:00
mo8it
34f02cf83d Attach error message as context 2024-08-08 22:37:56 +02:00
Remo Senekowitsch
dc086c6bf1 Improve initialization in workspace
- Detect if we are in a cargo project more reliably.
  (e.g. if `rustlings init` is run in the `src/` directory)

- Refuse to initialize rustlings in a non-workspace cargo project.

- Automatically populate the `workspace.members` field if `rustlings init` is
  run in a workspace.

  This may be considered risky, as there is no guarantee that's what the user
  wanted to do. However, it is consistent with the behavior of `cargo new`.
  Also, newcomers to Rust are unlikely to accidentally be in a cargo workspace,
  as they won't know how to create one in the first place.

  The use case for initialization in a workspace is when a workshop organizer
  wants to use rustlings alongside other exerices and provide a single
  repository with everything in one place.
2024-08-08 13:34:27 +02:00
Remo Senekowitsch
dc0ffbe16e Replace hashbrown with ahash
hashbrown is already used in the standard library, but we want the
improved performance of the different hash algorithm.
Using ahash directly conveys this intent more clearly.
2024-08-08 11:12:17 +02:00
mo8it
8df66f7991 Allow initialization in a workspace 2024-08-08 02:45:18 +02:00
mo8it
11fc3f1e56 Fix errors not being shown after the welcome message 2024-08-08 00:41:12 +02:00
mo8it
693bb708b2 Add README to the solutions dir 2024-08-08 00:41:12 +02:00
mo8it
97719fe8da Remove state file and solutions dir from .gitignore 2024-08-08 00:41:12 +02:00
mo8it
286a455fa9 Avoid using RUSTFLAGS to not trigger rebuilding, especially in rust-analyzer 2024-08-07 23:35:50 +02:00
mo8it
bdf4960b6a Fix exercise name shift in exercise check 2024-08-07 23:25:22 +02:00
mo8it
5016c7cf7c Use trim_ascii instead of trim 2024-08-02 16:28:05 +02:00
mo8it
1468206052 Stop on first exercise solved 2024-08-02 15:54:14 +02:00
mo8it
d1ff4b5cf0 Remove newline 2024-08-01 19:19:25 +02:00
mo8it
700a065abd Fix rustfmt option 2024-08-01 19:19:14 +02:00
mo8it
3fc462f90f Fix tests 2024-08-01 19:17:40 +02:00
mo8it
65a8f6bb4b Run rustfmt on solutions in dev check 2024-08-01 19:14:09 +02:00
mo8it
e0f0944bff Refactor check_solutions 2024-08-01 15:53:32 +02:00
mo8it
c7590dd752 Improve the runner 2024-08-01 15:23:54 +02:00
mo8it
33a5680328 Hide cargo build warnings if there is no output 2024-08-01 11:28:26 +02:00
mo8it
455d87cadd Fix capacity 2024-08-01 11:26:30 +02:00
mo8it
766f3c50ec Add hint to run dev check again after dev update 2024-08-01 01:07:56 +02:00
mo8it
802b97b2ed Set stdin to null when running the binary of an exercise 2024-08-01 01:07:31 +02:00
mo8it
74fab994e2 Make the output optional 2024-07-28 20:30:23 +02:00
mo8it
3a99542f73 Run the final check in parallel 2024-07-28 17:39:46 +02:00
mo8it
1937b4bf66 Use the rexported crossterm from ratatui 2024-07-25 16:26:48 +02:00
mo8it
8beb290842 Test initialization 2024-07-25 16:14:38 +02:00
mo8it
a7a881809f Check is_terminal 2024-07-08 12:53:44 +02:00
mo8it
a5f221aa39 Improve some messages 2024-07-07 15:53:48 +02:00
mo8it
01b8432d58 Mark the last exercise as done 2024-07-07 13:55:39 +02:00
mo8it
652f0c7676 Fix tests 2024-07-04 23:39:06 +02:00
mo8it
4bf0ddc0e1 Check exercises unsolved 2024-07-04 21:12:57 +02:00
mo8it
a3657188b6 Check for missing TODO comments 2024-07-04 20:28:46 +02:00
mo8it
6cf75d569b Fix typos 2024-07-02 14:28:08 +02:00
mo8it
67ce9b9e56 Underline "next" 2024-07-02 01:50:05 +02:00
mo8it
bdd76cdf77 Merge branch 'run-sols-in-parallel' 2024-07-02 01:43:22 +02:00
mo8it
5bf8d1fa1b Fix typos 2024-06-14 13:32:37 +02:00
mo8it
42a3503906 Run solutions in parallel 2024-06-10 17:42:11 +02:00
mo8it
08ac11ff22 Add --require-solutions option to dev check 2024-06-02 00:11:41 +02:00
mo8it
6ae4a979f4 Check for unexpected files in the solutions dir 2024-06-02 00:03:48 +02:00
mo8it
a3ada0eee8 Print the exercise solution on check 2024-06-01 21:51:45 +02:00
mo8it
50530fa3cf Don't try to check a solution that doesn't exist 2024-06-01 21:50:11 +02:00
mo8it
611f9d8722 Check that all solutions run successfully 2024-06-01 21:48:15 +02:00
mo8it
8e9c99ae5b Change condition order 2024-06-01 15:10:43 +02:00
mo8it
84a818dbda Update the bins buffer capacity 2024-06-01 15:01:18 +02:00
mo8it
beb7b24e8e Add solutions to bins 2024-05-25 18:19:30 +02:00
mo8it
cf3f6fd6a1 Fix typo 2024-05-14 01:50:03 +02:00
mo8it
c8481d35c1 Done documentation 2024-05-14 01:49:22 +02:00
mo8it
96a44f3dcf Make it more clear that only one char is expected 2024-05-14 01:23:58 +02:00
mo8it
0ae66d1860 Remove inline 2024-05-14 00:55:07 +02:00
mo8it
700605ff35 Document init 2024-05-14 00:35:12 +02:00
mo8it
a67e63cce0 Document info_file 2024-05-13 22:02:45 +02:00
mo8it
d48e86b154 Use public comments for public items 2024-05-13 21:40:40 +02:00
mo8it
39a19f9450 Document exercise 2024-05-13 21:36:20 +02:00
mo8it
2dfc7cdb1a Document embedded 2024-05-13 21:07:04 +02:00
mo8it
e80e91faf2 Thanks Clippy :) 2024-05-13 17:12:58 +02:00
mo8it
4ae3fcc3ca Don't skip exercises on file changes 2024-05-13 17:06:11 +02:00
mo8it
17a2d42ffd Better variable naming 2024-05-13 16:44:48 +02:00
mo8it
a7bc6d53a5 Only send Unrecognized on ENTER if the last input wasn't valid 2024-05-13 16:39:38 +02:00
mo8it
f6cf6c611c Fix Windows terminal links 2024-05-13 04:11:11 +02:00
mo8it
8b2d9ed503 Use PartialEq instead of matches! 2024-05-13 02:45:12 +02:00
mo8it
d2b5906be2 No more word input 2024-05-13 02:37:32 +02:00
mo8it
f9e35a4344 Improve input handling 2024-05-13 02:32:25 +02:00
mo8it
0525739046 Fix invisible input on Windows 2024-05-13 02:20:04 +02:00
mo8it
11fda5d70f Move info.toml to rustlings-macros/
This improves the experience for contributors on Windows becuase
Windows can't deal with git symbolic links out of the box…
2024-05-13 01:25:38 +02:00
mo8it
d9df809838 Optimize embedded dirs 2024-05-12 17:40:53 +02:00
mo8it
2d0497bf3b Fix errors 2024-05-02 17:08:39 +02:00
mo8it
5e7afce019 Document dev 2024-05-01 19:47:35 +02:00
mo8it
74180ba1cc Check for tests while test=false 2024-05-01 19:16:59 +02:00
mo8it
d425dbe203 Test run_cmd 2024-05-01 18:08:18 +02:00
mo8it
32415e1e6c Document cmd 2024-05-01 17:55:49 +02:00
mo8it
8e178ac60d Document and test cargo_toml 2024-04-30 02:48:56 +02:00
mo8it
3ae6c208b2 Disable the pretty format because of --show-output 2024-04-30 02:43:51 +02:00
mo8it
563727f47f test next_pending_exercise_ind 2024-04-30 02:14:20 +02:00
mo8it
2b7ac91505 Add press_enter_prompt 2024-04-30 01:46:57 +02:00
mo8it
52c0f5b39e Fix clearing the terminal 2024-04-30 01:41:08 +02:00
mo8it
fef66b80ad Implement From<ExerciseInfo> for Exercise 2024-04-30 01:39:31 +02:00
mo8it
b6f40f2ec8 Document main and app_state 2024-04-29 17:01:47 +02:00
mo8it
3c7e7368b2 Add solutions to the initialized .gitignore 2024-04-28 23:25:44 +02:00
mo8it
593f0e0916 Revert escaping with ESC in list to be able to clear the message 2024-04-28 23:22:11 +02:00
mo8it
1508938fed Highlight the active filter 2024-04-28 23:21:13 +02:00
mo8it
aedeff8b24 Reorder the footer keys 2024-04-27 23:45:26 +02:00
mo8it
75e2804c83 Esacpe the list with ESC 2024-04-27 23:42:09 +02:00
mo8it
ea40804371 Put long version in () 2024-04-27 23:38:26 +02:00
mo8it
cdeb8ce229 Fix initialization 2024-04-27 17:31:51 +02:00
mo8it
2150d629b1 Use --show-output instead of --nocapture 2024-04-27 04:15:16 +02:00
mo8it
c82c367324 Respect the target-dir config and show tests' output 2024-04-27 04:14:59 +02:00
mo8it
5920a58e83 Include dev/Cargo.toml 2024-04-25 19:58:55 +02:00
mo8it
3ce3235294 Show warnings and errors in the tests 2024-04-25 16:08:07 +02:00
mo8it
c51f1b3f31 Thanks Clippy :D 2024-04-25 15:58:46 +02:00
mo8it
8bf8b19a5d Improve output after initialization 2024-04-25 15:51:12 +02:00
mo8it
6d1d42d2dd Try to run git init 2024-04-25 15:41:52 +02:00
mo8it
212c82c6f6 Don't ignore .vscode/extensions.json when developing third-party exercises 2024-04-25 15:34:58 +02:00
mo8it
fcefa3d614 Name the exercises' package exercises 2024-04-25 15:33:24 +02:00
mo8it
b3b4b7d59c Update initialized .gitignore 2024-04-25 15:23:24 +02:00
mo8it
c7c8d99680 Moar responsive :P 2024-04-25 15:22:11 +02:00
mo8it
14fe248b4b Optimize the notify event handler 2024-04-25 14:44:12 +02:00
mo8it
1f1a62d83e Raise the output capacity 2024-04-25 14:43:02 +02:00
mo8it
428998a4cf Quicker response to file changes 2024-04-25 03:28:44 +02:00
mo8it
2af0cd9cce Replace mode by test and strict_clippy 2024-04-25 03:25:45 +02:00
mo8it
f92d45fa68 Use write macros instead of write_fmt 2024-04-25 02:03:26 +02:00
mo8it
67fa017742 Use os_pipe 2024-04-25 01:56:01 +02:00
mo8it
d8c2ab8349 Fix tests 2024-04-24 16:26:48 +02:00
mo8it
8a085a0a85 Dump solution and show its path 2024-04-24 02:52:30 +02:00
mo8it
edf5762612 Preallocate path 2024-04-24 01:17:39 +02:00
mo8it
ef02c6c6ab Use the embedded info.toml in debug mode 2024-04-24 00:58:52 +02:00
mo8it
e4ee2cd548 Don't write solutions in debug mode 2024-04-24 00:48:58 +02:00
mo8it
b77007887c Write the solution file on done 2024-04-24 00:47:46 +02:00
mo8it
2dac8e509b Refactor embedded files to add solutions 2024-04-23 19:18:25 +02:00
mo8it
86684b7fc9 Document dev commands 2024-04-22 00:45:16 +02:00
mo8it
4ce2714da1 Add --no-git 2024-04-22 00:38:34 +02:00
mo8it
e93a99e19e Third-party exercises should be in a separate Git repo 2024-04-22 00:34:55 +02:00
mo8it
61a84a2c11 dev init -> dev new PATH 2024-04-21 23:43:49 +02:00
mo8it
30040d7778 Add a disclaimer to the state file 2024-04-21 23:39:44 +02:00
mo8it
e3b9124b85 Add a confirmation prompt to the init subcommand 2024-04-21 23:24:10 +02:00
mo8it
642c3bd37e Fix the generated Cargo.toml after rustlings init 2024-04-21 20:22:01 +02:00
mo8it
49e4a1fab0 Catch the usage of the old method 2024-04-21 19:34:55 +02:00
mo8it
f1a60780b9 Rename constant 2024-04-21 19:26:19 +02:00
mo8it
a2be6754bf Make the exercise name option for the hint subcommand 2024-04-18 17:17:39 +02:00
mo8it
01e6732e4d Improve resetting 2024-04-18 12:41:17 +02:00
mo8it
f04089b8bc Only take a reference 2024-04-18 11:40:54 +02:00
mo8it
2566f9aaf6 Place mods under all imports 2024-04-18 11:31:08 +02:00
mo8it
1eac00e89a Disable init command during development 2024-04-18 11:28:28 +02:00
mo8it
2e9b9a9f13 Move constant 2024-04-18 11:21:39 +02:00
mo8it
9f5be60b40 Use git stash to reset third-party exercises 2024-04-18 11:20:51 +02:00
mo8it
d64836f317 Avoid an unneeded syscall 2024-04-18 01:49:32 +02:00
mo8it
634e17a5ab Fix tests 2024-04-17 23:37:31 +02:00
mo8it
cb9f1ac9ce Require a main function in all exercises 2024-04-17 22:46:21 +02:00
mo8it
d83cc69afe Trim before checking if the hint is empty 2024-04-17 19:16:48 +02:00
mo8it
d6bb27ec20 Check for empty field values 2024-04-17 19:12:10 +02:00
mo8it
d42a6e7415 Print the path of the missing file 2024-04-17 18:59:40 +02:00
mo8it
b9167e9299 Remove redundant checks 2024-04-17 18:19:28 +02:00