Git Product home page Git Product logo

go-zoom's People

Contributors

pwr22 avatar

Stargazers

 avatar  avatar

Watchers

 avatar

Forkers

kubrat

go-zoom's Issues

Decide whether to use GNU Parallel or MIT / Rust Parallel :::: semantics

IMO the Rust Parallel semantics make more sense but GNU Parallel is the popular implementation everyone will be using

I think the answer to this probably boils down to "Are we mostly compatible with GNU Parallel?" and if the answer is yes then adopt those semantics, otherwise not. If supporting GNU Parallel compatibility behind a flag then we can potentially have both semantics available

Disallow passing - as a :::: file argument multiple times

In the current implementation this will generate an empty list of commands so it's pointless to allow it

In parallel it will do a permutation of the first line with every other line but it does allow it. I consider this more of a bug than a feature since I can't find it documented anywhere

Rename to go-zoom

This is to avoid confusion with things like the zoom messenger or presentation library.

Add support for {}

Just the basics here: any occurrences of {} will be replaced with the job arguments and this will disable the auto-concatenation

Remove signal handlers when done running commands

This will have no meaningful effect right now because the process is going to exit pretty much right after

However, when the runner is itself a separate project then I still don't think it would be a problem because the only goroutine that would ever listen on that channel is gone but it's still worth doing to keep everything clean

What subset of GNU parallel should we implement for v1?

Device on what it is and stub out the arguments with a not implemented yet response.

Options

  • commands: will work the same except maybe shell functions
  • {}: will work the same including the quoting
  • {.}: will work the same
  • {/}: will work the same
  • {//}: will work the same
  • {./}: will work the same
  • {#}: will work the same
  • {%}: will work the same
  • {n}: will work the same except not doing input source stuff
  • {n.}: will work the same except not doing input source stuff
  • {n/}: will work the same except not doing input source stuff
  • -I: will work the same
  • --er: will work the same but be called --extensionless-placeholder
  • --basenamereplace: will work the same but be called --file-placeholder
  • --dirnamereplace: will work the same but be called --directory-placeholder
  • --basenameextensionreplace: will work the same but be called --extentionless-file-placeholder.
  • --seqreplace: will work the same --job-placeholder
  • --slotreplace: will work the same but be called --runner-placeholder

WIP

Update documentation on aims of the project

  • More details on other similar solutions
  • More details on the motivations
  • Aiming for a reasonably simple subset of GNU Parallel interface
  • Add details on the differences between zoom, GNU Parallel and Rust Parallel

Prefix output with job ID

The ID could be the ordinal number of the jobs 1..n. This will be particularly useful if the output is interleaved.

Document performance

Would be good to have a few different scenarios and compare cpu, memory and runtime to GNU parallel, MIT Parallel and rush.

Show a synopsis or summary in the help output

I'm not sure how to do with with pflag or even if it's possible. Right now it shows the flags which is great but there needs to be a lot more documentation of the other arguments that can be passed and what the tool actually does!

Fails to prevent new commands starting after an error

This can occur if the commands from the initial batch are sent into the channel before the main goroutine starts. So basically if an error occurs in a command before all the initial commands are started then zoom will not stop all commands and exit early as expected

Add different ways of handling failures

Right now if one command fails we try to stop every other command and then wait for them all to finish. This is so things always end gracefully and we always get all output (zoom was designed for some tools that are a bit flakey at flushing their output).

Other failure modes we should support:

  • Eventually sending SIGKILL to commands after some timeout.
  • Ignoring failures and continuing in a best effort to complete as much work per run as possible (later probably want to add some way of tracking what failed to allow retries).

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.