Module: Utility

Included in:
Rumodule
Defined in:
bin/rumodule

Overview

Utility routines for Rumodule internal functions.

Constant Summary

LOADED =

List of loaded modules.

'RUMODULE_LOADED'
SYSLOADED =

List of loaded system modules.

'RUMODULE_SYSLOADED'
SUBLOADED =

List of loaded submodules.

'RUMODULE_SUBLOADED'
MODULEDIRS =

List of directories including modules.

ENV['RUMODULE'] ? ENV['RUMODULE'].split(':') : []
RUMODULE_PUSH =

Stack to store pushed env vars.

'RUMODULE_PUSH'

Instance Method Summary (collapse)

Instance Method Details

- (Object) abort

Exit program without shell output.



491
492
493
494
# File 'bin/rumodule', line 491

def abort
    STDERR.flush
    exit( false )
end

- (Array<String>) all_loaded

List of loaded modules (normal + system).

Returns:

  • (Array<String>)

    Loaded modules.



462
463
464
465
466
# File 'bin/rumodule', line 462

def all_loaded
    getenvar( LOADED, true ).value +
        getenvar( SYSLOADED, true ).value +
        getenvar( SUBLOADED, true ).value
end

- (Object) commonHelp

Rumodule help.



604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
# File 'bin/rumodule', line 604

def commonHelp
    usage %Q{
  Available Commands and Args:
- add                   modulefile+
- sadd                  modulefile+
- rm                    modulefile+
- list
- slist
- which                 modulefile
- display               modulefile
- avail
- savail
- help                  modulefile

}
end

- (Object) error(msg)

Report error.



477
478
479
480
# File 'bin/rumodule', line 477

def error( msg )
    STDERR.puts( "rumodule error: #{msg}" )
    abort
end

- (String) findModule(m)

Return module file. If argument is dir, then check for directory content for modules.

Alternatively 'm' can be abspath to module.

Parameters:

  • m (String)

    Module name hint.

Returns:

  • (String)

    Path to module.



504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
# File 'bin/rumodule', line 504

def findModule( m )

    if m[0] == '/'

        # Abspath
        m

    else

        # Search for module.

        pwd = Dir.pwd

        ret = nil

        MODULEDIRS.each do |mdir|

            Dir.chdir mdir

            if File.directory?( m )
                ret = Dir[ "#{m}/*" ].sort[-1]
            elsif File.exist?( m )
                ret = m
            end

            if ret
                ret = mdir + "/" + ret
                break
            end

        end

        Dir.chdir( pwd )

        ret
    end
end

- (Object) help(str)

Empty help for modules. Help gets defined in CmdHelp when help is requested by user.



624
625
626
# File 'bin/rumodule', line 624

def help( str )
    true
end

- (Array<String>) loaded

List of loaded modules.

Returns:

  • (Array<String>)

    Loaded modules.



446
447
448
# File 'bin/rumodule', line 446

def loaded
    getenvar( LOADED, true ).value
end

- (Object) loadModule(m)

Load module content.

Parameters:

  • m (String)

    Module name hint.



546
547
548
549
550
551
552
553
554
# File 'bin/rumodule', line 546

def loadModule( m )
    path = findModule( m )
    if path && File.exist?( path )
        instance_eval( IO::read( path ), path )
        path
    else
        error "Unknown module: \"#{m}\"!"
    end
end

- (Object) registerModule(m, list = :normal)

Register module as loaded.

Parameters:

  • m (String)

    Module path.



560
561
562
563
564
565
566
# File 'bin/rumodule', line 560

def registerModule( m, list = :normal )
    case list
    when :normal; getenvar( LOADED, true ).append_path( m )
    when :system; getenvar( SYSLOADED, true ).append_path( m )
    when :sub; getenvar( SUBLOADED, true ).append_path( m )
    end
end

- (Array<String>) sys_loaded

List of loaded system modules.

Returns:

  • (Array<String>)

    Loaded modules.



454
455
456
# File 'bin/rumodule', line 454

def sys_loaded
    getenvar( SYSLOADED, true ).value
end

- (Object) unregisterModule(m, list = :normal)

UnRegister module as loaded.

Parameters:

  • m (String)

    Module path.



572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
# File 'bin/rumodule', line 572

def unregisterModule( m, list = :normal )

    case list
    when :normal; loaded = getenvar( LOADED )
    when :system; loaded = getenvar( SYSLOADED )
    when :sub; loaded = getenvar( SUBLOADED )
    end

    # loaded = getenvar( LOADED )
    index = loaded.value.index( m )

    if index

        # Accurate match.
        loaded.delete_index( index )

    else

        # Regexp match.
        loaded.length.times do |i|
            if Regexp.new( "#{m}/" ).match( loaded.value[i] )
                loaded.delete_index( i )
                return
            end
        end

    end

end

- (Object) usage(msg)

Report usage info.



470
471
472
473
# File 'bin/rumodule', line 470

def usage( msg )
    STDERR.puts( msg )
    abort
end

- (Object) warning(msg)

Report warning.



484
485
486
487
# File 'bin/rumodule', line 484

def warning( msg )
    STDERR.puts( "rumodule warning: #{msg}" )
    abort
end