https://github.com/b1f6c1c4/wicky-monads

Pain-reliever for build systems.

https://github.com/b1f6c1c4/wicky-monads

Science Score: 26.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (7.6%) to scientific vocabulary
Last synced: 10 months ago · JSON representation

Repository

Pain-reliever for build systems.

Basic Info
  • Host: GitHub
  • Owner: b1f6c1c4
  • License: mit
  • Language: C++
  • Default Branch: master
  • Homepage:
  • Size: 32.2 KB
Statistics
  • Stars: 1
  • Watchers: 1
  • Forks: 0
  • Open Issues: 0
  • Releases: 1
Created about 5 years ago · Last pushed almost 5 years ago
Metadata Files
Readme License

README.md

wicky-monads

Pain-reliever for build systems.

Basic Use Cases

  • Update ./foo.inc if and only if ./codegen emits a different content.

    bash wic -o ./foo.inc -- ./codegen

    • Using wic together with ninja's restat can significantly reduce the amount of re-bulids when any sort of code generation is present.
  • Run ./test1, report failure in ./rpt1.monad instead of returning error:

    bash monad -o ./rpt1 -- ./test1

    • Using monad(1) is better than make --keep-going because the execution details are saved into <output>.monad.
    • Furthermore, monad(1) also saves the amount of time and memory use during execution into <output>.monad.
  • Run ./test2 for a maximum of 1 minute, report timeout and/or failure in ./rpt2.monad:

    bash monad -t 1:00 -o ./rpt2 -- ./test2

    • monad(1) is better than timeout(1) because the latter doesn't have a chance to save the execution detail (e.g. memory used before killing.)
  • Run wc -l on ./rpt1 and/or ./rpt2 (whichever succeeded,) write everything to ./final.json:

    bash monad --merge -o ./final.json --partial ./rpt1 ./rpt2 -- wc -l

    • monad(1) here will be very helpful if you want to gather all the results together, whether succeeded or failed, into a big file for data visualization.

Usage

wic(1): Write-If-Changed

Usage: wic -o <output> -- <executable> <args>... Run the <executable> with <args>..., redirect its output to <output> if and only if their content differs.

monad(1): Monoid in the Category of Endofunctors

Usage: monad [-t <time-limit>] [-m <mem-limit>] [-M|--merge] [-p|--partial] [-P|--panic] [-v] -o <output> <input>... -- <executable> <arg>... Run <executable> with <arg>... <input>... and redirect stdout to <output> Info from <input>.monad... will be read and (with --partial) failed ones will be skipped, or (no --partial) any faulty input will cancel the run. If the <executable> timeout/failed, <output>.monad will record the case. If the <executable> succeed, <output>.monad will record duration and mem. If --merge is specified, <output> itself will store such info instead. If --panic is given, successful run will return 0, failed/cancelled will return 1, errored will return 2. If --panic is not given, it will always return 0 unless errored. <output> will be created/removed according to the return value of monad (0 = always exist, 1/2 = always removed).

Install

Use CMake.

License

MIT

Owner

  • Login: b1f6c1c4
  • Kind: user
  • Location: NJ, USA
  • Company: Princeton University

52BE D143 A92D BE96 2B83 092B 9BAC 0164 9600 1E70

GitHub Events

Total
Last Year

Issues and Pull Requests

Last synced: about 1 year ago

All Time
  • Total issues: 0
  • Total pull requests: 0
  • Average time to close issues: N/A
  • Average time to close pull requests: N/A
  • Total issue authors: 0
  • Total pull request authors: 0
  • Average comments per issue: 0
  • Average comments per pull request: 0
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 0
  • Pull requests: 0
  • Average time to close issues: N/A
  • Average time to close pull requests: N/A
  • Issue authors: 0
  • Pull request authors: 0
  • Average comments per issue: 0
  • Average comments per pull request: 0
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
Pull Request Authors
Top Labels
Issue Labels
Pull Request Labels