suransys / omniscli Goto Github PK
View Code? Open in Web Editor NEWCommand Line Interface (CLI) to Omnis Studio
License: MIT License
Command Line Interface (CLI) to Omnis Studio
License: MIT License
In the danger that I am answering my own question I still want to post it here. Maybe there is a better solution.
I have been testing OmnisCLI with OmnisTAP and run up a problem when the test library is loaded before the OmnisCLI and OmnisTAP library. An error is shown that OmnisCLI is not available. A simple solution is to rename the test library and also the production library if it is separate. The only thing I run up there is that hardcoded references to the test or production library are not working anymore.
Would there be a more elegant way to deal with this?
Passed week I experimented a little bit with this tool. It was great fun. Thank you very much for making this available. I run up a problem mentioned in the subject. I followed the steps below which I got from the readme page:
Accessing arguments
Use the inherited $getCLIArgument(piArgument) method to get the arguments from the command line. Please note the command will be argument 1, and the remaining arguments will be numbered starting at 2.
For example, running this command:
omniscli say_hello 'first name' 'last name'
With this $cli_say_hello method:Calculate lcName as con($cinst.$getCLIArgument(2)," ",$cinst.$getClIArgument(3)
Will set the lcName variable to "first name last name".'''
The problem I encountered was that if I run the command
omniscli say_hello 'first name' 'last name'
I get as output
first name
Somehow each word is treated as a parameter. I googled around, but could not find a working solution.
I hope that you have a solution for this.
Oh I forgot to say I use MacOS 10.12.6
Hello,
is omniscli also working with versions of Omnis Studio prior than v. 8 (here: v. 4 !)?
Thanks!
Regards,
Studio 8.1 switched the default installation style on macOS to use a firstruninstall directory that installs to ~/Library/Application Support
. OmnisCLI supports this under Windows, but not on macOS. We need to detect where the run directory will be so we can find the output files. Ideally, the script would scrape the sub-directory in Application Support for this Omnis instance in case the developer has customized it.
I am pretty close now to run my OmnisTAP test with Jenkins, the only thing I can not get around is the error message 'Omnis quit unexpectedly'. I get this message at the end of the test run. As far as I can see this is caused by the shell script omniscli. The last line in the console is:
/Applications/OmnisStudio8RT.app/Contents/MacOS/bin/omniscli: line 145: 46327 Abort trap: 6 "${lcOmnisBin}" 2> >(cleanOmnisStdErr)
Because of the message 'Omnis quit unexpectedly' at the next start of the testrun I get the message 'The last time you opened Omnis, it unexpectedly quit while reopening windows. Do you want to try to reopen its windows again?' You have to click one of the buttons 'Don't Reopen' or 'Reopen' to start the testrun.
The test library is in the startup folder of the Run time.
I tested it in Omnis Studio 8.0.3.5 and 8.1.5 with both the same result
Used both my own test library as the omnistap_example library
What am I doing wrong? How can I fix this?
I'm trying to configure Jenkins to execute the omniscli help
command, just to understand the configuration, but i'm stuck...
I've got a VirtualBox VM with macOS 10.13, Jenkins up and running and a Development Version of OS8.1.6 with ci.lbs
, omniscli.lb
and x_demo.lbs
in the startup
folder.
I've configured Jenkins with an Empty Project which can be build only manually. The build script is just a call to another simple bash script:
# Jenkins Build script
/Users/Shared/Jenkins/Scripts/test_cli.sh
# -- test_cli.sh ---
#!/usr/bin/env bash
set -e
# Build new library
/Applications/OS-CLI.app/Contents/MacOS/bin/omniscli help
The owner of all the contents of /Applications/OS-CLI.app
is Jenkins, and the permission should be right (a+rwx, just to be sure). Furthermore, if i manually start test_cli.sh
from the terminal, it all works correctly: the Omnis Icon pops on the dock and after a short time i got the help printed on the terminal.
ManzolikCI:~ gmanzoli$ sudo su jenkins
Password:
bash-3.2$ /Users/Shared/Jenkins/Scripts/test_cli.sh
{"thread":0,"when":"20181015 14:46:41","type":"tracelog","length":83}damora8.u_xcomp component couldn't be loaded because the code fragment is missing.
2018-10-15 14:46:41.211 Omnis[3027:22376] Error loading /Applications/OS-CLI.app/Contents/MacOS/xcomp/damora8.u_xcomp/Contents/MacOS/damora8: dlopen(/Applications/OS-CLI.app/Contents/MacOS/xcomp/damora8.u_xcomp/Contents/MacOS/damora8, 262): Library not loaded: /ade/b/3071542110/oracle/rdbms/lib/libclntsh.dylib.11.1
Referenced from: /Applications/OS-CLI.app/Contents/MacOS/xcomp/damora8.u_xcomp/Contents/MacOS/damora8
Reason: image not found
{"thread":0,"when":"20181015 14:46:41","type":"tracelog","length":55}The Java Virtual Machine failed to load (Unknown Error)
buildapp [path/to/source] [path/to/library] [optional: CSV string of dependent libraries] Imports [path/to/source] to library at [path/to/library], first opening dependent libraries
export_json [library] [destination] Exports [library] to the folder at [destination]
help Output details about available commands and exits
import_json [path/to/source] [path/to/library] Imports [path/to/source] to library at [path/to/library] Library must not already exist
omnis_version Returns the Omnis version
demo Demo command
help Output details about available commands and exits
omnis_version Returns the Omnis version
But, i manually start the build from Jenkins, it doesn't work (the icon does not appear on the Doc) and Omnis launch a NSRangeException
:
Started by user Giacomo Manzoli
Building in workspace /Users/Shared/Jenkins/Home/workspace/CliTest
[CliTest] $ /bin/sh -xe /Users/Shared/Jenkins/tmp/jenkins1372875588386532915.sh
+ /Users/Shared/Jenkins/Scripts/test_cli.sh
_RegisterApplication(), FAILED TO establish the default connection to the WindowServer, _CGSDefaultConnection() is NULL.
2018-10-15 14:45:17.293 Omnis[2926:21681] *** Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[__NSArray0 objectAtIndex:]: index 0 beyond bounds for empty NSArray'
*** First throw call stack:
(
0 CoreFoundation 0x00007fff2c69366b __exceptionPreprocess + 171
1 libobjc.A.dylib 0x00007fff538cd942 objc_exception_throw + 48
2 CoreFoundation 0x00007fff2c6ad19d -[__NSArray0 objectAtIndex:] + 93
3 Omnis 0x000000010597d090 _ZN15HDCscreenStruct14createBitMapDCEiid + 130
4 Omnis 0x000000010597cfc9 _ZN15HDCscreenStructC2Et + 171
5 Omnis 0x000000010597fc64 _Z17GDIcreateScreenDCPP15HDCscreenStructPi + 33
6 Omnis 0x0000000105989efe _Z15GDIdoInitializes + 59
7 Omnis 0x00000001058f461a _ZN8xmachineC2ERs + 112
8 Omnis 0x000000010525a08e _ZN5qbaseC2ERs + 18
9 Omnis 0x000000010525968f _ZN5qappnC2ERs + 15
10 Omnis 0x000000010526e2f0 _ZN6qbuildC2ERs + 14
11 Omnis 0x000000010578ff99 _ZN6qrtimeC2ERs + 23
12 Omnis 0x00000001058f922d _GLOBAL__sub_I_xmain.cpp + 171
13 ??? 0x000000011251dac6 0x0 + 4602321606
14 ??? 0x000000011251dcf6 0x0 + 4602322166
15 ??? 0x0000000112519218 0x0 + 4602303000
16 ??? 0x000000011251834e 0x0 + 4602299214
17 ??? 0x00000001125183e2 0x0 + 4602299362
18 ??? 0x0000000112509567 0x0 + 4602238311
19 ??? 0x000000011250e239 0x0 + 4602257977
20 ??? 0x00000001125083d4 0x0 + 4602233812
21 ??? 0x00000001125081d2 0x0 + 4602233298
/Applications/OS-CLI.app/Contents/MacOS/bin/omniscli: line 111: 2926 Abort trap: 6 "${lcOmnisBin}" 2> >(cleanOmnisStdErr)
)
libc++abi.dylib: terminating with uncaught exception of type NSException
Terminated: 15
/Applications/OS-CLI.app/Contents/MacOS/bin/omniscli: line 111: kill: (2926) - No such process
What i'm doing wrong? I've tried also to launch several consecutive time the script from Terminal, and it works fine (so it shouldn't be a problem of some window appearing in a latter execution). Also the flag of #4 is set to "Close windows when quitting app".
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.