Closed Tonkpils closed 7 years ago
Is it possible to send these updates by language? I get emails for all the different languages. It would be cool to see just the ones I'm interested in at the time.
On Apr 2, 2016, at 7:58 AM, Leo Correa notifications@github.com wrote:
From #259 (comment)
executing exercism restore we should display a list of files that were not restored because they already exist and specify that if the user wants those files overwritten, they should re-run the command with the --force command.
exercism restore --force should overwrite files with the ones provided by the restore API.
— You are receiving this because you are subscribed to this thread. Reply to this email directly or view it on GitHub
Is it possible to send these updates by language? I get emails for all the different languages. It would be cool to see just the ones I'm interested in at the time.
I'm not sure what you mean? The CLI itself doesn't send any updates. I think you mean to post this in the https://github.com/exercism/exercism.io repo?
@kytrinyx I have something going on but it seems a bit messy with the output. I'm wondering how we can improve this or maybe it's just not the right way to go with displaying the files on the output?
Here's the output I have with items being restored and some unable to be restored because they exist:
% go build && ./exercism restore
Updated: 19 problems
clojure (Bob) /Users/leo/code/exercisms/clojure/bob
clojure (Rna Transcription) /Users/leo/code/exercisms/clojure/rna-transcription
elixir (Word Count) /Users/leo/code/exercisms/elixir/word-count
go (Gigasecond) /Users/leo/code/exercisms/go/gigasecond
java (Anagram) /Users/leo/code/exercisms/java/anagram
java (Etl) /Users/leo/code/exercisms/java/etl
java (Hello World) /Users/leo/code/exercisms/java/hello-world
java (Nucleotide Count) /Users/leo/code/exercisms/java/nucleotide-count
java (Pangram) /Users/leo/code/exercisms/java/pangram
java (Word Count) /Users/leo/code/exercisms/java/word-count
javascript (Bob) /Users/leo/code/exercisms/javascript/bob
javascript (Word Count) /Users/leo/code/exercisms/javascript/word-count
ruby (Beer Song) /Users/leo/code/exercisms/ruby/beer-song
ruby (Grade School) /Users/leo/code/exercisms/ruby/grade-school
ruby (Nucleotide Count) /Users/leo/code/exercisms/ruby/nucleotide-count
ruby (Phone Number) /Users/leo/code/exercisms/ruby/phone-number
ruby (Rna Transcription) /Users/leo/code/exercisms/ruby/rna-transcription
ruby (Robot Name) /Users/leo/code/exercisms/ruby/robot-name
ruby (Word Count) /Users/leo/code/exercisms/ruby/word-count
New: 3 problems
erlang (Leap) /Users/leo/code/exercisms/erlang/leap
ruby (Gigasecond) /Users/leo/code/exercisms/ruby/gigasecond
ruby (Hamming) /Users/leo/code/exercisms/ruby/hamming
unchanged: 8, updated: 19, new: 3
There was errors saving files:
- clojure (Bob): unable to write 2 files:
* /Users/leo/code/exercisms/clojure/bob/README.md
* /Users/leo/code/exercisms/clojure/bob/bob.clj
- clojure (Rna Transcription): unable to write 1 files:
* /Users/leo/code/exercisms/clojure/rna-transcription/README.md
- elixir (Anagram): unable to write 3 files:
* /Users/leo/code/exercisms/elixir/anagram/anagram.exs
* /Users/leo/code/exercisms/elixir/anagram/anagram_test.exs
* /Users/leo/code/exercisms/elixir/anagram/README.md
- elixir (Bob): unable to write 3 files:
* /Users/leo/code/exercisms/elixir/bob/bob.exs
* /Users/leo/code/exercisms/elixir/bob/bob_test.exs
* /Users/leo/code/exercisms/elixir/bob/README.md
- elixir (Word Count): unable to write 3 files:
* /Users/leo/code/exercisms/elixir/word-count/word-count.exs
* /Users/leo/code/exercisms/elixir/word-count/word_count_test.exs
* /Users/leo/code/exercisms/elixir/word-count/README.md
- go (Clock): unable to write 4 files:
* /Users/leo/code/exercisms/go/clock/cases_test.go
* /Users/leo/code/exercisms/go/clock/clock.go
* /Users/leo/code/exercisms/go/clock/clock_test.go
* /Users/leo/code/exercisms/go/clock/README.md
- go (Gigasecond): unable to write 4 files:
* /Users/leo/code/exercisms/go/gigasecond/gigasecond_test.go
* /Users/leo/code/exercisms/go/gigasecond/README.md
* /Users/leo/code/exercisms/go/gigasecond/cases_test.go
* /Users/leo/code/exercisms/go/gigasecond/gigasecond.go
- go (Leap): unable to write 4 files:
* /Users/leo/code/exercisms/go/leap/cases_test.go
* /Users/leo/code/exercisms/go/leap/leap.go
* /Users/leo/code/exercisms/go/leap/leap_test.go
* /Users/leo/code/exercisms/go/leap/README.md
- haskell (Bob): unable to write 3 files:
* /Users/leo/code/exercisms/haskell/bob/bob_test.hs
* /Users/leo/code/exercisms/haskell/bob/README.md
* /Users/leo/code/exercisms/haskell/bob/bob.hs
- java (Anagram): unable to write 4 files:
* /Users/leo/code/exercisms/java/anagram/build.gradle
* /Users/leo/code/exercisms/java/anagram/src/main/java/.keep
* /Users/leo/code/exercisms/java/anagram/src/main/java/Anagram.java
* /Users/leo/code/exercisms/java/anagram/README.md
- java (Etl): unable to write 6 files:
* /Users/leo/code/exercisms/java/etl/src/test/java/.keep
* /Users/leo/code/exercisms/java/etl/src/test/java/EtlTest.java
* /Users/leo/code/exercisms/java/etl/README.md
* /Users/leo/code/exercisms/java/etl/build.gradle
* /Users/leo/code/exercisms/java/etl/src/main/java/.keep
* /Users/leo/code/exercisms/java/etl/src/main/java/Etl.java
- java (Hello World): unable to write 5 files:
* /Users/leo/code/exercisms/java/hello-world/GETTING_STARTED.md
* /Users/leo/code/exercisms/java/hello-world/build.gradle
* /Users/leo/code/exercisms/java/hello-world/src/main/java/.keep
* /Users/leo/code/exercisms/java/hello-world/src/main/java/HelloWorld.java
* /Users/leo/code/exercisms/java/hello-world/README.md
- java (Nucleotide Count): unable to write 6 files:
* /Users/leo/code/exercisms/java/nucleotide-count/src/test/java/.keep
* /Users/leo/code/exercisms/java/nucleotide-count/src/test/java/NucleotideTest.java
* /Users/leo/code/exercisms/java/nucleotide-count/README.md
* /Users/leo/code/exercisms/java/nucleotide-count/build.gradle
* /Users/leo/code/exercisms/java/nucleotide-count/src/main/java/.keep
* /Users/leo/code/exercisms/java/nucleotide-count/src/main/java/DNA.java
- java (Pangram): unable to write 5 files:
* /Users/leo/code/exercisms/java/pangram/build.gradle
* /Users/leo/code/exercisms/java/pangram/src/main/java/.keep
* /Users/leo/code/exercisms/java/pangram/src/test/java/.keep
* /Users/leo/code/exercisms/java/pangram/src/test/java/PangramTest.java
* /Users/leo/code/exercisms/java/pangram/README.md
- java (Word Count): unable to write 4 files:
* /Users/leo/code/exercisms/java/word-count/README.md
* /Users/leo/code/exercisms/java/word-count/build.gradle
* /Users/leo/code/exercisms/java/word-count/src/main/java/.keep
* /Users/leo/code/exercisms/java/word-count/src/main/java/WordCount.java
- javascript (Bob): unable to write 2 files:
* /Users/leo/code/exercisms/javascript/bob/README.md
* /Users/leo/code/exercisms/javascript/bob/bob.js
- javascript (Word Count): unable to write 1 files:
* /Users/leo/code/exercisms/javascript/word-count/README.md
- python (Bob): unable to write 3 files:
* /Users/leo/code/exercisms/python/bob/README.md
* /Users/leo/code/exercisms/python/bob/bob.py
* /Users/leo/code/exercisms/python/bob/bob_test.py
- ruby (Anagram): unable to write 3 files:
* /Users/leo/code/exercisms/ruby/anagram/anagram_test.rb
* /Users/leo/code/exercisms/ruby/anagram/README.md
* /Users/leo/code/exercisms/ruby/anagram/anagram.rb
- ruby (Beer Song): unable to write 2 files:
* /Users/leo/code/exercisms/ruby/beer-song/beer_song_test.rb
* /Users/leo/code/exercisms/ruby/beer-song/README.md
- ruby (Bob): unable to write 3 files:
* /Users/leo/code/exercisms/ruby/bob/README.md
* /Users/leo/code/exercisms/ruby/bob/bob.rb
* /Users/leo/code/exercisms/ruby/bob/bob_test.rb
- ruby (Grade School): unable to write 2 files:
* /Users/leo/code/exercisms/ruby/grade-school/grade_school_test.rb
* /Users/leo/code/exercisms/ruby/grade-school/README.md
- ruby (Nucleotide Count): unable to write 2 files:
* /Users/leo/code/exercisms/ruby/nucleotide-count/nucleotide_count_test.rb
* /Users/leo/code/exercisms/ruby/nucleotide-count/README.md
- ruby (Phone Number): unable to write 2 files:
* /Users/leo/code/exercisms/ruby/phone-number/phone_number_test.rb
* /Users/leo/code/exercisms/ruby/phone-number/README.md
- ruby (Rna Transcription): unable to write 2 files:
* /Users/leo/code/exercisms/ruby/rna-transcription/rna_transcription_test.rb
* /Users/leo/code/exercisms/ruby/rna-transcription/README.md
- ruby (Robot Name): unable to write 2 files:
* /Users/leo/code/exercisms/ruby/robot-name/robot_name_test.rb
* /Users/leo/code/exercisms/ruby/robot-name/README.md
- ruby (Word Count): unable to write 2 files:
* /Users/leo/code/exercisms/ruby/word-count/word_count_test.rb
* /Users/leo/code/exercisms/ruby/word-count/README.md
If you wish to override these files re-run the restore command using the --force flag
Thoughts?
Yeah, that's a lot of output. A couple of options come to mind:
--verbose
flag could output all the actual files that didn't get written because they already exist.Also, maybe it doesn't make sense to differentiate with the updated/new in this context.
Also, maybe it doesn't make sense to differentiate with the updated/new in this context.
I'm not sure what you mean there. Do you not want to display the updated/new output if there's conflicts and instead display a conflicts: N
section?
"updated/new" is mainly relevant when fetching. When you're restoring, then presumably you've had all of them. Conflict vs not kind of makes more sense to me in this context.
Fair enough, I'll work on that :+1:
I may be missing some context but when doing a restore new
can actually be something? I'm assuming exercises I haven't fetched on the machine?
I have something similar to this
Now another issue with running with verbose
flag is that the network calls get logged along with the output of the response body. It can leads to a load of files being sent to STDOUT.
What do you think about having a specific flag for restore that would display which items are conflicts?
I may be missing some context but when doing a restore new can actually be something? I'm assuming exercises I haven't fetched on the machine?
Huh. Yeah, you're right. New is relevant to the machine, not to your account. Not sure how I feel about that, actually :)
Now another issue with running with verbose flag is that the network calls get logged along with the output of the response body. It can leads to a load of files being sent to STDOUT.
Eew. Yeah, that kind of stinks. I'm not sure what to do about that.
What do you think about having a specific flag for restore that would display which items are conflicts?
Instead of showing conflicts by default?
Instead of showing conflicts by default?
Yeah, so without any flags we'd have the number of conflicts. With a flag as --dry-run
or something similar, it would display the files that would be overwritten by --force
?
What if without any flags we had a small symbol in front of exercises with conflicts, and an explanation at the bottom about what it means?
I also like the idea of --force
with --dry-run
which would give you the verbose list of what it would overwrite with --force
.
TODO: we need to make a final decision on the behavior of the --force command. I've pinned this so it doesn't get closed as stale.
In the nextercism CLI we will have a download
command that is more flexible than the current fetch
command. It will have some of the behavior of restore
. This will have several flags to customize the behavior of overwriting, including --force
.
I'm going to close this issue in favor of https://github.com/exercism/cli/issues/411
From https://github.com/exercism/cli/issues/259#issuecomment-164016348
exercism restore
we should display a list of files that were not restored because they already exist and specify that if the user wants those files overwritten, they should re-run the command with the--force
command.exercism restore --force
should overwrite files with the ones provided by the restore API.