A set of utilities to assist developers of tools that build N-API native add-ons
Utilities for ESLint plugins.
A few language trigram utilities
Analytics utility functions used by 'analytics' module
Captures and cleans stack traces
merge() utility function
Utilities for ESLint plugins.
Package to aggregate shared logic and dependencies for the IPFS ecosystem
General utilities for plugins to use
Utility functions for working with TypeScript's API. Successor to the wonderful tsutils. 🛠️️
Collection of i18n utilities
webpack Validation Utils
Utils for using parse5
Type utilities for working with TypeScript + ESLint together
Utilities for working with TypeScript + ESLint together
Utilities for collecting TSConfigs for linting scenarios.
Shared Vitest utility functions
A small set of utilities for streams.
destroy a stream if possible
Static methods for the Grunt 0.4.x logger.
utility functions for archiver
Brazilian Utils is a library focused on solving problems that we face daily in the development of applications for the Brazilian business.
Get and validate the raw body of a readable stream.
webpack Validation Utils
Tetcore crate with utility functions for `build.rs` scripts.
Crate with utility functions for `build.rs` scripts.
Crate with utility functions for `build.rs` scripts.
Crate with utility functions for `build.rs` scripts.
Rumake is a tiny Make/Rake-like build utility. Rumake files are just regular Ruby scripts named "rumakefile.rb" that can be run by using "rumake" in the directory containing that file.
Log2json lets you read, filter and send logs as JSON objects via Unix pipes. It is inspired by Logstash, and is meant to be compatible with it at the JSON event/record level so that it can easily work with Kibana. Reading logs is done via a shell script(eg, `tail`) running in its own process. You then configure(see the `syslog2json` or the `nginxlog2json` script for examples) and run your filters in Ruby using the `Log2Json` module and its contained helper classes. `Log2Json` reads from stdin the logs(one log record per line), parses the log lines into JSON records, and then serializes and writes the records to stdout, which then can be piped to another process for processing or sending it to somewhere else. Currently, Log2json ships with a `tail-log` script that can be run as the input process. It's the same as using the Linux `tail` utility with the `-v -F` options except that it also tracks the positions(as the numbers of lines read from the beginning of the files) in a few files in the file system so that if the input process is interrupted, it can continue reading from where it left off next time if the files had been followed. This feature is similar to the sincedb feature in Logstash's file input. Note: If you don't need the tracking feature(ie, you are fine with always tailling from the end of file with `-v -F -n0`), then you can just use the `tail` utility that comes with your Linux distribution.(Or more specifically, the `tail` from the GNU coreutils). Other versions of the `tail` utility may also work, but are not tested. The input protocol expected by Log2json is very simple and documented in the source code. ** The `tail-log` script uses a patched version of `tail` from the GNU coreutils package. A binary of the `tail` utility compiled for Ubuntu 12.04 LTS is included with the Log2json gem. If the binary doesn't work for your distribution, then you'll need to get GNU coreutils-8.13, apply the patch(it can be found in the src/ directory of the installed gem), and then replace the bin/tail binary in the directory of the installed gem with your version of the binary. ** P.S. If you know of a way to configure and compile ONLY the tail program in coreutils, please let me know! The reason I'm not building tail post gem installation is that it takes too long to configure && make because that actually builds every utilties in coreutils. For shipping logs to Redis, there's the `lines2redis` script that can be used as the output process in the pipe. For shipping logs from Redis to ElasticSearch, Log2json provides a `redis2es` script. Finally here's an example of Log2json in action: From a client machine: tail-log /var/log/{sys,mail}log /var/log/{kern,auth}.log | syslog2json | queue=jsonlogs \ flush_size=20 \ flush_interval=30 \ lines2redis host.to.redis.server 6379 0 # use redis DB 0 On the Redis server: redis_queue=jsonlogs redis2es host.to.es.server Resources that help writing log2json filters: - look at log2json.rb source and example filters - http://grokdebug.herokuapp.com/ - http://www.ruby-doc.org/stdlib-1.9.3/libdoc/date/rdoc/DateTime.html#method-i-strftime
Log2json lets you read, filter and send logs as JSON objects via Unix pipes. It is inspired by Logstash, and is meant to be compatible with it at the JSON event/record level so that it can easily work with Kibana. Reading logs is done via a shell script(eg, `tail`) running in its own process. You then configure(see the `syslog2json` or the `nginxlog2json` script for examples) and run your filters in Ruby using the `Log2Json` module and its contained helper classes. `Log2Json` reads from stdin the logs(one log record per line), parses the log lines into JSON records, and then serializes and writes the records to stdout, which then can be piped to another process for processing or sending it to somewhere else. Currently, Log2json ships with a `tail-log` script that can be run as the input process. It's the same as using the Linux `tail` utility with the `-v -F` options except that it also tracks the positions(as the numbers of lines read from the beginning of the files) in a few files in the file system so that if the input process is interrupted, it can continue reading from where it left off next time if the files had been followed. This feature is similar to the sincedb feature in Logstash's file input. Note: If you don't need the tracking feature(ie, you are fine with always tailling from the end of file with `-v -F -n0`), then you can just use the `tail` utility that comes with your Linux distribution.(Or more specifically, the `tail` from the GNU coreutils). Other versions of the `tail` utility may also work, but are not tested. The input protocol expected by Log2json is very simple and documented in the source code. ** The `tail-log` script uses a patched version of `tail` from the GNU coreutils package. A binary of the `tail` utility compiled for Ubuntu 12.04 LTS is included with the Log2json gem. If the binary doesn't work for your distribution, then you'll need to get GNU coreutils-8.13, apply the patch(it can be found in the src/ directory of the installed gem), and then replace the bin/tail binary in the directory of the installed gem with your version of the binary. ** P.S. If you know of a way to configure and compile ONLY the tail program in coreutils, please let me know! The reason I'm not building tail post gem installation is that it takes too long to configure && make because that actually builds every utilties in coreutils. For shipping logs to Redis, there's the `lines2redis` script that can be used as the output process in the pipe. For shipping logs from Redis to ElasticSearch, Log2json provides a `redis2es` script. Finally here's an example of Log2json in action: From a client machine: tail-log /var/log/{sys,mail}log /var/log/{kern,auth}.log | syslog2json | queue=jsonlogs \ flush_size=20 \ flush_interval=30 \ lines2redis host.to.redis.server 6379 0 # use redis DB 0 On the Redis server: redis_queue=jsonlogs redis2es host.to.es.server Resources that help writing log2json filters: - look at log2json.rb source and example filters - http://grokdebug.herokuapp.com/ - http://www.ruby-doc.org/stdlib-1.9.3/libdoc/date/rdoc/DateTime.html#method-i-strftime
Most existing gems that address command execution provide a limited interface or lack notable features. In contast, Exek seeks to provide comprehensive support for all of a program's exec needs with one thoughtfully-designed library. Intended features: - A "Command" class that encapsulates argv, env, and IO options, and process state. - Easy-to-use high level interfaces with sensible defaults for running commands to completion. - Comprehensive support for low-level concerns like piping, PTYs, and file descriptor magic. - Utilities for manipulating `sh` script strings, idiomatically building argument arrays, and generating reusable interaces for common system commands. - Tracing and introspection facilities for logging and latency analysis. - Safety: does not monkeypatch external modules, encourage mixins or use eval. Attempts to guide developers away from unsafe practices like shell scripts and shell injection.
# DECC 2050 CALCULATOR TOOL A C version and ruby wrapper for the www.decc.gov.uk 2050 energy and climate change excel calculator Further detail on the project: http://www.decc.gov.uk/2050 Canonical source: http://github.com/decc/decc_2050_model ## DEPENDENCIES 1. ruby 1.9.2 (including development headers) 2. basic c development headers This has ONLY been tested on OSX and on Ubuntu 64 bit EC2 ami. Grateful for reports from other platforms. In the util folder are two example scripts than can be helpful: 1. start-high-memory-instance.sh - is the script we use to setup an aws server to compile the model. You can't use it directly, because you won't have the right keys and certificates, but it can give clues. 2. setup-2050-model-builder-script.sh - is the script we use to get all the dependencies on that aws server correct, download this code, and then compile the model. Again, it may not be quite right for you but can server as inspiration ## INSTALLATION Note that this compiles the underlying c code, which might take 10-20 minutes or so gem install decc_2050_model ## UPDATING TO NEWER VERSIONS OF EXCEL MODEL First of all, you need to be working on the github version of the code, not the rubygem: git clone http://github.com/decc/decc_2050_model Then put the new spreadsheet in spreadsheet/2050Model.xlsx Then, from the top directory of the gem: bundle bundle exec rake The next step is to check whether lib/decc_2050_model/decc_2050_model_result.rb and lib/decc_2050_model/model_structure.rb need to be altered so that they pick up the correct places in the underlying excel. The final stage is to build and install the new gem: gem build decc_2050_model.gemspec gem install decc_2050_model-<version>.gem ... where <version> is the version number of the gem file that was created in the folder. Now follow the instructions in the twenty-fifty server directory in order to ensure that it is using this new version of the gem.
# DECC 2050 CALCULATOR TOOL A C version and ruby wrapper for the www.decc.gov.uk 2050 energy and climate change excel calculator Further detail on the project: http://www.decc.gov.uk/2050 Canonical source: http://github.com/decc/decc_2050_model ## DEPENDENCIES 1. ruby 1.9.2 (including development headers) 2. basic c development headers This has ONLY been tested on OSX and on Ubuntu 64 bit EC2 ami. Grateful for reports from other platforms. In the util folder there is an example script that creates a new EC2 EMI, installs all the dependencies and then compiles the gem. It may be useful if you are trying to figure out the complete set of dependencies. ## INSTALLATION Note that this compiles the underlying c code, which might take 10-20 minutes or so gem install decc_2050_model ## UPDATING TO NEWER VERSIONS OF EXCEL MODEL First of all, you need to be working on the github version of the code, not the rubygem: git clone http://github.com/decc/decc_2050_model Then put the new spreadsheet in spreadsheet/model.xlsx Then, from the top directory of the gem: bundle bundle exec rake The next step is to check whether Rakefile, lib/model/_model_result.rb and lib/model/model_structure.rb need to be altered so that they pick up the correct places in the underlying excel. The final stage is to build and install the new gem: gem build model.gemspec gem install decc_2050_model-<version>.gem ... where <version> is the version number of the gem file that was created in the folder. Now follow the instructions in the twenty-fifty server directory in order to ensure that it is using this new version of the gem.
# BELGIAN 2050 CALCULATOR TOOL A C version and ruby wrapper for the Belgian 2050 calcualtor ## GOTCHAS Some versions have a special formula in 2050!B2 that the translator doesn't recognise. Just write 2050 in that cell and recompile. Some tests fail for columns AN and AM on OUTPUT. I think this is due to rounding differences between excel and C. ## DEPENDENCIES 1. ruby 1.9.2 (including development headers) 2. basic c development headers This has ONLY been tested on OSX and on Ubuntu 64 bit EC2 ami. Grateful for reports from other platforms. In the util folder there is an example script that creates a new EC2 EMI, installs all the dependencies and then compiles the gem. It may be useful if you are trying to figure out the complete set of dependencies. ## INSTALLATION Note that this compiles the underlying c code, which might take 10-20 minutes or so gem install belgium_2050_model ## UPDATING TO NEWER VERSIONS OF EXCEL MODEL First of all, you need to be working on the github version of the code, not the rubygem: git clone http://github.com/decc/belgium_2050_model Then put the new spreadsheet in spreadsheet/2050Model.xlsx Then, from the top directory of the gem: bundle bundle exec rake The next step is to check whether lib/belgium_2050_model/belgium_2050_model_result.rb and lib/belgium_2050_model/model_structure.rb need to be altered so that they pick up the correct places in the underlying excel. The final stage is to build and install the new gem: gem build belgium_2050_model.gemspec gem install belgium_2050_model-<version>.gem ... where <version> is the version number of the gem file that was created in the folder. Now follow the instructions in the twenty-fifty server directory in order to ensure that it is using this new version of the gem.
Diff and patch tables
Diff and patch tables