Skip to content

izyware/izymodtask

Repository files navigation

izymodtask

Node.js modtask component for Izyware.

INSTALLATION

If you are using npm (the Node.js package manager) always ensure that your npm is up-to-date by running:

npm update -g npm

Then use:

npm install izymodtask

USING THE TOOL

This tool provides libraries for traditional modtask izyware apps. You may use the libraries by referencing the node_modules folder.

When integrating izyware modtask style components to native node runtime apps and you need to ldmod on a module, you can:


var mod = require('izymodtask').getRootModule().ldmod('path_to_module');

To see what the module resolution paths are for the context that you are using the code above, you can always use:


require('izymodtask').getRootModule().ldmod('s_root').cmdlineverbs.sysview();

If you need to launch cmdline based verbs from the node app, use the following syntax:


require('izymodtask').runCmd('sysview -- or your verb --')

When the verb is called inside the g_handler module, you can extract the command line config by:


modtask.cmdlineverbs.method = function() {
   var config = modtask.ldmod('izymodtask/index').extractConfigFromCmdLine('method');
	 ...

You can customize the izyware modtask search path by creating the following:


modtask/config/kernel/extstores/file.js

in the root of your node app.

Path Resolution Use Cases for kernel/extstores/file

Note: Current Directory = CD, IzyModtask Directory = ID, Thirdparty Components Directory = TD

Consider the following setup

CD = /tmp/curdir
ID = /plat/p/izymodtask
TD = /tmp/izymodtaskapp

node TD/test.js

rm -rf /tmp/izymodtaskpathtest;
mkdir -p /tmp/izymodtaskpathtest/curdir;
mkdir -p /tmp/izymodtaskpathtest/app;
mkdir -p /tmp/izymodtaskpathtest/thirdpartylib;

clear; cp -r /plat/p/izymodtask/izymodtaskpathtest/* /tmp/izymodtaskpathtest;cd /tmp/izymodtaskpathtest/curdir;node ../app/main.js

This is very a typical use case where a thirdparty app that uses izymodtask, is launched from a random location in the system. We will analyze the following scenarios:

1: getRootModule().ldmod('rel:appdep')

In this case, rel:... is relative to the rootModule which can vary depending on the platform (i.e. circus front-end will be bootstrap/version/., nodejs modtask will be izymodtask/.).

That is the reason why __contextualName was introduced in the later version to be able to 'position' the rootModule.

2: getRootModule().ldmod('./appdep')

should be the same as rel:appdep

3: getRootModule().ldmod('/appdep')

This will first use the absolute path to locate and load the module. If not found, then it will remove the begining slash and treat it as number 4 below. The fall back is crucial when reference packageless modules from chains, i.e.

['chain.importProcessor', ':test/assert/chain'],

4: getRootModule().ldmod('appdep')

will search using the iteratePathsToSearch and external resolver rules

NOTE

for more details, visit https://izyware.com

Change Log

V5

  • implement support for code based module search path definition

    • Kernel.rootModule.usermodule.getModuleSearchPaths was added
    • rootModule can now take an array
    • this will make the modtask/... kernel/extstores/file optional and allow more flexibility in reusing existing modules in different contexts
  • implement _modToPkgMap for kernel/path.toInvokeString

  • implement expandStringEncodedConfigValues to allow passing complex JSON objects at commandline

  • add stacktrace to module load errors

  • added module loader customization feature

    • prior to this 'require' relative paths were broken and all requires would have to have used absolute paths.

    • add this to your module:

        /* izy-loadobject nodejs-require */
        ...
        module.exports = modtask;
      
  • add a simple file look up for modnames that with '/' first before falling back to iteratePathsToSearch.

  • add the __contextualName feature modules to allow customization of rel:.. path resolution

    • otherwise ldmod('rel:modname') or ldmod('./modname') would not work
  • improve verbosity control

  • fixed izymodtask so that it does not eval ljs in index.js.

  • full payload customization and manual build for customized solutions.

      ./ldo.sh mship izymodtask/build;cp ../__build/payloads/build/izymodtask/entrypoint/ljs.js ../izymodtask/ljs.js;
      cp modtask/kernel/mod.js ../izymodtask/kernel;cp modtask/kernel/path.js ../izymodtask/kernel;
    

< V5

  • relrequire is now available
    • it will allow doing node style require using relative paths to the current izy module.
    • this will alleviate the paths and search problems that customers have reported in the past

About

Node.js modtask component for Izyware.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •