parse and create git commit objects
git-log-parser
Read details of the last commit including tags
Common typings for the Stoplight ecosystem.
Collects Git commit info from CI or from CLI
List of conventional commit types.
No description provided.
Unicode property alias mappings in JavaScript format for property names that are supported in ECMAScript RegExp property escapes.
semantic-release plugin to commit release assets to the project's git repository
Lint files staged by git
<!-- BADGES -->
Get all git semver tags of your repository in reverse chronological order.
Datadog CI plugin for `dora` commands
Automatically install pre-commit hooks for your npm modules.
Provides metadata and conversions from repository urls for GitHub, Bitbucket and GitLab
CSpell configuration for GIT.
Detect the snapshot key to be compare with using Git hash.
Lint your commit messages
git commit message lint hook
The set of canonical Unicode property names supported in ECMAScript RegExp property escapes.
Algorithm for finding the root of a yarn workspace, extracted from yarnpkg.com
Match a Unicode property or property alias to its canonical property name per the algorithm used for RegExp Unicode property escapes in ECMAScript.
a util for spawning git from npm CLI contexts
Husky Git hook to add JIRA ticket ID into the commit message
It's a way to store data along with a git commit object that is less freeform than something like "Close gh-11" but more freeform than having to add extra data structures to the git commit object. It is also completely compatible for people wanting to read this metadata directly from an interface like git-log or github. This gem allows reading this data.
GitStore implements a versioned data store based on the revision management system Git. You can store object hierarchies as nested hashes, which will be mapped on the directory structure of a git repository. GitStore checks out the repository into a in-memory representation, which can be modified and finally committed.
A command line tool that takes a git repository path and revision as input. It creates a temporary worktree, checks out the specified revision, and returns a JSON object containing the worktree path, commit SHA, and list of changed files. The tool helps you inspect changes in any git revision without affecting your current working directory.
What is send? ============= It’s a tiny wee ruby gem that is a fork of [Object#try](http://ozmm.org/posts/try.html) and [Object#try from Rails](http://api.rubyonrails.org/classes/Object.html#M000027). It will *never* throw a NoMethodError (no matter the receiver), and returns nil if called on a nil-class or if the method in the receiver does not exist. Note on Patches/Pull Requests ----------------------------- 1. [Fork me!](http://github.com/Burgestrand/send-/fork) 2. Write tests for your new feature or bug fix (important, I don’t want to break your stuff in a future update by accident!) 3. Hack away on the code; make your tests pass. 4. Commit! Don’t touch Rakefile, version or git history in any of the commits you want me to pick. 5. ??? 6. Send me a pull request!
Watermark's library for interfacing with Arena ChMS's web API
# Mint::Money Mint::Money perform currency conversion and arithmetics with different currencies. ## Installation Add this line to your application's Gemfile: ```ruby gem 'mint-money' ``` And then execute: $ bundle Or install it yourself as: $ gem install mint-money ## Usage ``` # Configure the currency rates with respect to a base currency (here EUR): Money.conversion_rates('EUR', { 'USD' => 1.11, 'Bitcoin' => 0.0047 }) ``` ``` # Instantiate money objects: fifty_eur = Money.new(50, 'EUR') # Get amount and currency: fifty_eur.amount # => 50 fifty_eur.currency # => "EUR" fifty_eur.inspect # => "50.00 EUR" ``` ``` # Convert to a different currency (should return a Money # instance, not a String): fifty_eur.convert_to('USD') # => 55.50 USD ``` ``` # Perform operations in different currencies: twenty_dollars = Money.new(20, 'USD') # Arithmetics: fifty_eur + twenty_dollars # => 68.02 EUR fifty_eur - twenty_dollars # => 31.98 EUR fifty_eur / 2 # => 25 EUR twenty_dollars * 3 # => 60 USD ``` ``` # Comparisons (also in different currencies): twenty_dollars == Money.new(20, 'USD') # => true twenty_dollars == Money.new(30, 'USD') # => false fifty_eur_in_usd = fifty_eur.convert_to('USD') fifty_eur_in_usd == fifty_eur # => true twenty_dollars > Money.new(5, 'USD') # => true twenty_dollars < fifty_eur # => true ``` ## Development After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment. To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org). ## Contributing Bug reports and pull requests are welcome on GitHub at https://github.com/mpakus/mint-money. [](https://circleci.com/gh/mpakus/mint-money)
# Fresh::Auth This gem makes it really, REALLY easy to use the Freshbooks API. It couldn't be easier. With only 3 functions you'll ever need to use, and only 2 required configuration values, it can't get any easier. ## Installation Add this line to your application's Gemfile: gem 'fresh-auth' And then execute: $ bundle Or install it yourself as: $ gem install fresh-auth ## Usage ### Configuration: You must define your Freshbooks subdomain and your OAuth Secret in your application code before using Fresh::Auth. For Ruby on Rails apps, a new file at config/initializers/fresh-auth.rb would be appropriate. Your configuration file should look like this (you fill in the three empty strings): Fresh::Auth.configure do |config| # The part of your login url between 'http://' and '.freshbooks.com' config.url.subdomain = "" # Under 'My Account' (on the top right when you're logged into Freshbooks) # -> 'Freshbooks API' -> 'OAuth Developer Access' -> 'OAuth Secret' # You'll need to request this from Freshbooks initially. config.oauth_secret = "" # Optional. Any string of your choice. Be creative or check out http://www.thebitmill.com/tools/password.html config.nonce_salt = "" end Fear not: If you try to use Fresh::Auth without configuring it first, an exception will be thrown that clearly describes the problem. ### Public API: There are two modules in this API: Fresh::Auth::Authentication and Fresh::Auth::Api #### Fresh::Auth::Authentication This module authenticates you with Freshbooks, storing the authentication in an array called `session`. This integrates seamlessly with Ruby on Rails' controller environment. If you're using some framework other than Ruby on Rails, make sure to define session in your class before including the Authentication module. This isn't recommended because your class will also need to define other objects called `params` and `request` and implement a `redirect_to` method. It gets complicated. Better leave it to Rails to handle this for you. The only public function of this module is AuthenticateWithFreshbooks. To use it, just add the following line of code to your controller: ` include Fresh::Auth::Authentication ` Then, the following line of code authenticates with Freshbooks from any method in your controller: ` AuthenticateWithFreshbooks() ` Note that, after authenticating with Freshbooks, the user will be redirected back to the same path using HTTP GET, so make sure the resource supports HTTP GET and that in the business logic executed on GET, AuthenticateWihFreshbooks() is called. #### Fresh::Auth::Api Once you've authenticated, you want to send XML requests to Freshbooks. The first step is preparing the XML with Fresh::Auth::Api.GenerateXml, which you'll supply with a block that defines all the nested XML that you want in your request. GenerateXml also takes two arguments before the block: the class and method that you want to call. First, in your controller: `include Fresh::Auth::Api` Then, in some method in that controller: my_xml = GenerateXml :invoice, :update do |xml| xml.client_id 20 xml.status 'sent' xml.notes 'Pick up the car by 5' xml.terms 'Cash only' xml.lines { xml.line { xml.name 'catalytic converter' xml.quantity 1 xml.unit_cost 450 xml.type 'Item' } xml.line { xml.name 'labor' xml.quantity 1 xml.unit_cost 60 xml.type 'Time' } } end Ok, you created the XML. Now you want to send it. Sounds pretty complicated, right? Not at all! Ready? Let's go! `_response = PostToFreshbooksApi my_xml` Now, are you wondering what's in `_response`? I'll tell you shortly, but before we discuss that, we have to know about the exception that PostToFreshbooksApi might raise. It raises a detailed error message if the response status is not 'ok'. Makes sense, right? Now, you still want to know what's in `_response`? Oh, nothing fancy. Just a Nokogiri XML object, representing the root element of the xml response. Could this get any easier? ## Contributing 1. Fork it 2. Create your feature branch (`git checkout -b my-new-feature`) 3. Commit your changes (`git commit -am 'Added some feature'`) 4. Push to the branch (`git push origin my-new-feature`) 5. Create new Pull Request
## DESCRIPTION: Ruby interface to a C++ implemention of the A\* search algorithm. The C++ implementaion is found here <http://code.google.com/p/a-star-algorithm-implementation/> ## FEATURES: ## SYNOPSIS: See `spec\castar_spec.rb` for usage examples. Create an empty map and plan a path across it: require 'castar' include Castar map = init_map(:width => 4, :height => 3) astar = HeyesDriver.new(map, HeyesDriver::EIGHT_NEIGHBORS) astar.run(0,0,3,2) puts get_map_with_path(astar) |S|1|1|1| |1|*|1|1| |1|1|*|G| Load a map from a text file and plan a path: map = load_map('./spec/map_20.txt') astar = HeyesDriver.new(map, HeyesDriver::EIGHT_NEIGHBORS) astar.run(0,0,19,19) puts get_map_with_path(astar) |S|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1| |1|*|*|*|*|*|1|1|1|1|1|1|1|1|1|1|1|1|1|1| |1|1|9|9|9|9|*|1|1|1|1|9|9|9|9|9|9|9|9|9| |1|1|9|9|9|9|1|*|1|1|1|9|9|9|9|9|9|9|9|9| |1|1|9|9|9|9|1|1|*|1|1|9|9|9|9|9|9|9|9|9| |1|1|9|9|9|9|1|1|1|*|1|9|9|9|9|9|9|9|9|9| |1|1|9|9|9|9|1|1|1|1|*|9|9|9|9|9|9|9|9|9| |1|1|9|9|9|9|1|1|1|1|*|9|9|9|9|9|9|9|9|9| |1|1|1|1|1|1|1|1|1|1|*|9|9|9|9|9|9|9|9|9| |1|1|1|1|1|1|1|1|1|1|*|9|9|9|9|9|9|9|9|9| |1|1|1|1|1|1|1|1|1|1|1|*|1|1|1|1|1|1|1|1| |1|1|1|1|1|1|1|1|1|1|1|1|*|*|*|*|*|1|1|1| |1|1|1|1|1|9|9|9|9|9|9|9|9|9|9|9|9|*|1|1| |1|1|1|1|1|9|9|9|9|9|9|9|9|9|9|9|9|1|*|1| |1|1|1|1|1|9|9|9|9|9|9|9|9|9|9|9|9|1|1|*| |1|1|1|1|1|9|9|9|9|9|9|9|9|9|9|9|9|1|1|*| |1|1|1|1|1|9|9|9|9|9|9|9|9|9|9|9|9|1|1|*| |1|1|1|1|1|9|9|9|9|9|9|9|9|9|9|9|9|1|1|*| |1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|*| |1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|G| ## REQUIREMENTS: * Ruby 1.9 * C compiler for C extensions ## DEVELOPMENT To modify the gem in a cloned repo this is what I'm doing (from root of gem): bundle install cd ext/ ruby extconf.rb make These steps will install the development dependencies, build the Makefile and compile the C++ code. Running bundle exec rspec ./spec should show all tests passing. To clean up the autogenerated Makefile and the compiled objects: cd ext/ make realclean If you need to regenerate the ruby interface functions `heyes_wrap.cxx`, run: cd swig/ swig -c++ -ruby heyes.i mv heyes_wrap.cxx ../ext If you are just trying to run the tests: rake build gem install pkg/castar-0.0.1.gem builds the gem and installs it to your local machine. gem which castar tells you where it is. You can then cd to that directory and run the tests as above (but since you're not in a git repo you can't commit them). I followed the instructions [here](https://github.com/radar/guides/blob/master/gem-development.md) for using Bundler to create the gem. ## INSTALL: * gem install castar ## LICENSE: (The MIT License)
# Rake::ToolkitProgram Create toolkit programs easily with `Rake` and `OptionParser` syntax. Bash completions and usage help are baked in. ## Installation Add this line to your application's Gemfile: ```ruby gem 'rake-toolkit_program' ``` And then execute: $ bundle Or install it yourself as: $ gem install rake-toolkit_program ## Quickstart * Shebang it up (in a file named `awesome_tool.rb`) ```ruby #!/usr/bin/env ruby ``` * Require the library ```ruby require 'rake/toolkit_program' ``` * Make your life easier ```ruby Program = Rake::ToolkitProgram ``` * Define your command tasks ```ruby Program.command_tasks do desc "Build it" task 'build' do # Ruby code here end desc "Test it" task 'test' => ['build'] do # Rake syntax ↑↑↑↑↑↑↑ for dependencies # Ruby code here end end ``` You can use `Program.args` in your tasks to access the other arguments on the command line. For argument parsing integrated into the help provided by the program, see the use of `Rake::Task(Rake::ToolkitProgram::TaskExt)#parse_args` below. * Wire the mainline ```ruby Program.run(on_error: :exit_program!) if $0 == __FILE__ ``` * In the shell, prepare to run the program (UNIX/Linux systems only) ```console $ chmod +x awesome_tool.rb $ ./awesome_tool.rb --install-completions Completions installed in /home/rtweeks/.bashrc Source /home/rtweeks/.bash-complete/awesome_tool.rb-completions for immediate availability. $ source /home/rtweeks/.bash-complete/awesome_tool.rb-completions ``` * Ask for help ```console $ ./awesome_tool.rb help *** ./awesome_tool.rb Toolkit Program *** . . . ``` ## Usage Let's look at a short sample toolkit program -- put this in `awesome.rb`: ```ruby #!/usr/bin/env ruby require 'rake/toolkit_program' require 'ostruct' ToolkitProgram = Rake::ToolkitProgram ToolkitProgram.title = "My Awesome Toolkit of Awesome" ToolkitProgram.command_tasks do desc <<-END_DESC.dedent Fooing myself I'm not sure what I'm doing, but I'm definitely fooing! END_DESC task :foo do a = ToolkitProgram.args puts "I'm fooed#{' on a ' if a.implement}#{a.implement}" end.parse_args(into: OpenStruct.new) do |parser, args| parser.no_positional_args! parser.on('-i', '--implement IMPLEMENT', 'An implement on which to be fooed') do |val| args.implement = val end end end if __FILE__ == $0 ToolkitProgram.run(on_error: :exit_program!) end ``` Make sure to `chmod +x awesome.rb`! What does this support? $ ./awesome.rb foo I'm fooed $ ./awesome.rb --help *** My Awesome Toolkit of Awesome *** Usage: ./awesome.rb COMMAND [OPTION ...] Avaliable options vary depending on the command given. For details of a particular command, use: ./awesome.rb help COMMAND Commands: foo Fooing myself help Show a list of commands or details of one command Use help COMMAND to get more help on a specific command. $ ./awesome.rb help foo *** My Awesome Toolkit of Awesome *** Usage: ./awesome.rb foo [OPTION ...] Fooing myself I'm not sure what I'm doing, but I'm definitely fooing! Options: -i, --implement IMPLEMENT An implement on which to be fooed $ ./awesome.rb --install-completions Completions installed in /home/rtweeks/.bashrc Source /home/rtweeks/.bash-complete/awesome.rb-completions for immediate availability. $ source /home/rtweeks/.bash-complete/awesome.rb-completions $ ./awesome.rb <tab><tab> foo help $ ./awesome.rb f<tab> ↳ ./awesome.rb foo $ ./awesome.rb foo <tab> ↳ ./awesome.rb foo -- $ ./awesome.rb foo --<tab><tab> --help --implement $ ./awesome.rb foo --i<tab> ↳ ./awesome.rb foo --implement $ ./awesome.rb foo --implement <tab><tab> --help awesome.rb $ ./awesome.rb foo --implement spoon I'm fooed on a spoon ### Defining Toolkit Commands Just define tasks in the block of `Rake::ToolkitProgram.command_tasks` with `task` (i.e. `Rake::DSL#task`). If `desc` is used to provide a description, the task will become visible in help and completions. When a command task is initially defined, positional arguments to the command are available as an `Array` through `Rake::ToolkitProgram.args`. ### Option Parsing This gem extends `Rake::Task` with a `#parse_args` method that creates a `Rake::ToolkitProgram::CommandOptionParser` (derived from the standard library's `OptionParser`) and an argument accumulator and `yield`s them to its block. * The arguments accumulated through the `Rake::ToolkitProgram::CommandOptionParser` are available to the task in `Rake::ToolkitProgram.args`, replacing the normal `Array` of positional arguments. * Use the `into:` keyword of `#parse_args` to provide a custom argument accumulator object for the associated command. The default argument accumulator constructor can be defined with `Rake::ToolkitProgram.default_parsed_args`. Without either of these, the default accumulator is a `Hash`. * Options defined using `OptionParser#on` (or any of the variants) will print in the help for the associated command. ### Positional Arguments Accessing positional arguments given after the command name depends on whether or not `Rake::Task(Rake::ToolkitProgram::TaskExt)#parse_args` has been called on the command task. If this method is not called, positional arguments will be an `Array` accessible through `Rake::ToolkitProgram.args`. When `Rake::Task(Rake::ToolkitProgram::TaskExt)#parse_args` is used: * `Rake::ToolkitProgram::CommandOptionParser#capture_positionals` can be used to define how positional arguments are accumulated. * If the argument accumulator is a `Hash`, the default (without calling this method) is to assign the `Array` of positional arguments to the `nil` key of the `Hash`. * For other types of accumulators, the positional arguments are only accessible if `Rake::ToolkitProgram::CommandOptionParser#capture_positionals` is used to define how they are captured. * If a block is given to this method, the block of the method will receive the `Array` of positional arguments. If it is passed an argument value, that value is used as the key under which to store the positional arguments if the argument accumulator is a `Hash`. * `Rake::ToolkitProgram::CommandOptionParser#expect_positional_cardinality` can be used to set a rule for the count of positional arguments. This will affect the _usage_ presented in the help for the associated command. * `Rake::ToolkitProgram::CommandOptionParser#map_positional_args` may be used to transform (or otherwise process) positional arguments one at a time and in the context of options and/or arguments appearing earlier on the command line. ### Convenience Methods * `Rake::Task(Rake::ToolkitProgram::TaskExt)#prohibit_args` is a quick way, for commands that accept no options or positional arguments, to declare this so the help and bash completions reflect this. It is equivalent to using `#parse_args` and telling the parser `parser.expect_positional_cardinality(0)`. * `Rake::ToolkitProgram::CommandOptionParser#no_positional_args!` is a shortcut for calling `#expect_positional_cardinality(0)` on the same object. * `Rake::Task(Rake::ToolkitProgram::TaskExt)#invalid_args!` and `Rake::ToolkitProgram::CommandOptionParser#invalid_args!` are convenient ways to raise `Rake::ToolkitProgram::InvalidCommandLine` with a message. ## OptionParser in Rubies Before and After v2.4 The `OptionParser` class was extended in Ruby 2.4 to simplify capturing options into a `Hash` or other container implementing `#[]=` in a similar way. This gem supports that, but it means that behavior varies somewhat between the pre-2.4 era and the 2.4+ era. To have consistent behavior across that version change, the recommendation is to use a `Struct`, `OpenStruct`, or custom class to hold program options rather than `Hash`. ## Development After checking out the repo, run `bin/setup` to install dependencies. You can also run `bin/console` for an interactive prompt that will allow you to experiment. To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org). To run the tests, use `rake`, `rake test`, or `rspec spec`. Tests can only be run on systems that support `Kernel#fork`, as this is used to present a pristine and isolated environment for setting up the tool. If run using Ruby 2.3 or earlier, some tests will be pending because functionality expects Ruby 2.4's `OptionParser`. ## Contributing Bug reports and pull requests are welcome on GitHub at https://github.com/PayTrace/rake-toolkit_program. For further details on contributing, see [CONTRIBUTING.md](./CONTRIBUTING.md).