Project

grouik

0.0
No commit activity in last 3 years
No release in over 3 years
Simple require file generator
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

= 0.3.2
~> 2.2
~> 0.10
~> 11.3
~> 3.4
~> 0.47
~> 0.9

Runtime

 Project Readme

Adopt a Pig (Programmable Inclusions Generator)

Grouik is a french onomatopoeia of a pig's shriek.

Tired to require your own library file transversally from one file to another? If so, you should give a try to Grouik. It will allow you to completely automate this task.

Grouik eliminates the drudgery of handcrafting require statements for each Ruby source code file in your project.

A CLI (Command Line Interface) is provided. The CLI should be seen as a shortcut to discover the power of Grouik. In the other hand, grouik can easily be used through ruby/rake, erikhuda/thor or any other command-line interface.

Command Line Interface

Usage: grouik [OPTION]... [FILE]...
        --basedir=BASEDIR            Basedir [.]
    -o, --output=OUTPUT              Output [/dev/stdout]
    -r, --require=REQUIRE            Required file on startup
        --ignores x,y,z              Ignores
        --paths x,y,z                Paths
        --[no-]stats                 Display some stats

No options are required, no arguments are required. Easy (and safe) to use.

CLI can also use YAML configuration files, as arguments. They use the following structure:

basedir: src
paths:   [lib]
output:  src/awesome.rb
require: src/config/init
ignores: [^useless$, ^pointless$]
template: src/awesome.tpl

Note: configurations can be overriden by options given on the command-line.

Sample of (programmatic) use

Grouik can be programmatically used through Rake tasks:

Grouik.process do |process|
    process.basedir   = 'src'
    process.paths     = ['lib']
    process.ignores   = [/^useless$/, /^pointless$/]
    process.output    = 'lib/awesome.rb'
    process.template  = 'lib/awesome.tpl'
    process.bootstrap = nil
end.on_failure { exit Errno::ECANCELED::Errno }

Grouik::Process provides methods to be executed on success/failure.

Templating

$:.unshift "#{__dir__}/lib"

#{@requirement.call}

Grouik uses Tenjin as template engine. As a result, the following preprocessing statement:

#{@requirement.call}

will be rendered in as many require statement as necessary, including each source file listed during the process, ordered by successful loading order.

Principles

Grouik will attempt (n^2)+1 times before failing. Success is defined by a complete (without error) loading of all entries. On failure, CLI SHOULD exit with a 125 (ECANCELED) return code.

The output file is overwritten when the process is a success.

Installation

sudo gem install grouik

alternatively, install a development version (from github):

git clone https://github.com/SwagDevOps/ruby-grouik grouik
cd !$
bundle install --path vendor/bundle
rake gem:install

Alternatives