SlideShare a Scribd company logo
1 of 7
Download to read offline
gogo shell
http://felix.apache.org/site/rfc-147-overview.html
OSGi Command Line Interface (draft)
Mittwoch, 25. Februar 15
Was ist gogo shell?
g! lb -s | grep felix.gogo
1|Active | 1|org.apache.felix.gogo.shell (0.10.0)
2|Active | 1|org.apache.felix.gogo.runtime (0.12.1)
3|Active | 1|org.apache.felix.gogo.command (0.14.0)
felix:
install/uninstall, start/stop/resolve, refresh/update
cd, ls, help, log
lb, inspect, headers, which, bundlelevel/frameworklevel
gogo:
cat, echo, grep, set, sh/gosh/source, telnetd
type, format, getopt, each, until, not, tac
obr:
repos add refresh remove list
list, deploy, info, javadoc/source
2
Mittwoch, 25. Februar 15
Konzept?
g! cat .project | grep name.*go # Kommentar
• Command
g! macro = { echo Bla $args blub }
g! macro bla
Bla bla blub
g! xml = ( cat .project | tac )
• Rückgabewert
• Macro/Closure
g! variable = string | 'string with space' # String
g! variable = 1 | 1.0 | true # Long | Double | Boolean
g! list = [1, '2', 3.0, true] # [Long, String, Double, Boolean]
g! map = [Jan=1 'Feb'=true Mar=3.0] # [String=Long, .=Boolean, .=Double]
g! echo $variable ${list} # $.. == ${..}
• SessionVariable $... oder {...}
3
Mittwoch, 25. Februar 15
Reflection
g! $exception printstacktrace # ((Exception) e).printStackTrace();
g! ( $exception stacktrace ) 0 # ((Exception) e).getStackTrace()[0]
g! ( ( ( $exception stacktrace ) 0 ) class ) name # ...
...((Exception) e).getStackTrace()[0].getClass().getName()
• Exceptionhandling
g! macro = { echo Bla $args blub } # Closure macro = `echo Bla $args blub`
g! map = ['1'=Jan '2'=Feb '3'=Mar] # Map<String, String> map = ...
g! each ( ( $map ) entryset ) { macro $it } # ...
... for (Object entry : map.entrySet()) macro.execute(entry);
Bla 1=Jan blub
Bla 2=Feb blub
Bla 3=Mar blub
null # 3x wegen echo-command
• Ein bischen mehr
4
Mittwoch, 25. Februar 15
FirstCommand
public class FirstCommand {
	 public void macro(Object arg){
	 	 System.out.println("macro#obj: Bla " + arg + " blub");
	 }
}
• FirstCommand
<component name="FirstCommand">
<implementation class="FirstCommand"/>
<service>
<provide interface="FirstCommand"/>
</service>
<property name="osgi.command.scope" type="String" value="itemis"/>
<property name="osgi.command.function" type="String" value="macro"/>
</component>
• Als Declarative Service oder programmatisch
public class Activator implements BundleActivator {
	 @Override
	 public void start(BundleContext context) throws Exception {		
	 	 Dictionary<String, Object> dict = new Hashtable<>();
	 	 dict.put("osgi.command.scope", "itemis");
	 	 dict.put("osgi.command.function", new String[] {"macro"});
	 	 context.registerService(FirstCommand.class, new FirstCommand(), dict);
	 }
5
Mittwoch, 25. Februar 15
Risks
• Polymorphy & Reflection ( polymorph cmd-order )
• Cmd-Return vs System.out/System.in
• System.out reading in ,|‘ mode
• Bad-help
• Missing eclipse-console tooling ( tab-, history-support)
• OBR: duplicate Capability/Requirement Impl
6
Mittwoch, 25. Februar 15
Links
• GitHub: https://github.com/jwausle/gogo.shell/blob/master/gogo.shell
• Overview: http://felix.apache.org/site/rfc-147-overview.html
• Cmds: https://github.com/jwausle/gogo.shell/blob/master/
gogo.shell.doc/help/README.MD
• OSGi-Spec: http://www.osgi.org/download/osgi-4.2-early-draft.pdf
• Cmd-History-UpdateSite: https://github.com/jwausle/
de.jwausle.support.org.eclipse.ui.console/raw/master/
de.jwausle.support.org.eclipse.ui.console.updatesite/update-site/2.1.0
7
Mittwoch, 25. Februar 15

More Related Content

What's hot

When RegEx is not enough
When RegEx is not enoughWhen RegEx is not enough
When RegEx is not enoughNati Cohen
 
Clojure + MongoDB on Heroku
Clojure + MongoDB on HerokuClojure + MongoDB on Heroku
Clojure + MongoDB on HerokuNaoyuki Kakuda
 
Why my Go program is slow?
Why my Go program is slow?Why my Go program is slow?
Why my Go program is slow?Inada Naoki
 
Process monitoring in UNIX shell scripting
Process monitoring in UNIX shell scriptingProcess monitoring in UNIX shell scripting
Process monitoring in UNIX shell scriptingDan Morrill
 
Cis 216 – shell scripting
Cis 216 – shell scriptingCis 216 – shell scripting
Cis 216 – shell scriptingDan Morrill
 
ClojureScript loves React, DomCode May 26 2015
ClojureScript loves React, DomCode May 26 2015ClojureScript loves React, DomCode May 26 2015
ClojureScript loves React, DomCode May 26 2015Michiel Borkent
 
Стажировка 2016-07-27 02 Денис Нелюбин. PostgreSQL и jsonb
Стажировка 2016-07-27 02 Денис Нелюбин. PostgreSQL и jsonbСтажировка 2016-07-27 02 Денис Нелюбин. PostgreSQL и jsonb
Стажировка 2016-07-27 02 Денис Нелюбин. PostgreSQL и jsonbSmartTools
 
RedHat/CentOs Commands for administrative works
RedHat/CentOs Commands for administrative worksRedHat/CentOs Commands for administrative works
RedHat/CentOs Commands for administrative worksMd Shihab
 
Javascript ES6 generators
Javascript ES6 generatorsJavascript ES6 generators
Javascript ES6 generatorsRamesh Nair
 
Writing a compiler in go
Writing a compiler in goWriting a compiler in go
Writing a compiler in goYusuke Kita
 
第一回MongoDBソースコードリーディング
第一回MongoDBソースコードリーディング第一回MongoDBソースコードリーディング
第一回MongoDBソースコードリーディングnobu_k
 
Devinsampa nginx-scripting
Devinsampa nginx-scriptingDevinsampa nginx-scripting
Devinsampa nginx-scriptingTony Fabeen
 
Commit2015 kharchenko - python generators - ext
Commit2015   kharchenko - python generators - extCommit2015   kharchenko - python generators - ext
Commit2015 kharchenko - python generators - extMaxym Kharchenko
 

What's hot (20)

When RegEx is not enough
When RegEx is not enoughWhen RegEx is not enough
When RegEx is not enough
 
node ffi
node ffinode ffi
node ffi
 
Comets notes
Comets notesComets notes
Comets notes
 
2015 555 kharchenko_ppt
2015 555 kharchenko_ppt2015 555 kharchenko_ppt
2015 555 kharchenko_ppt
 
Clojure + MongoDB on Heroku
Clojure + MongoDB on HerokuClojure + MongoDB on Heroku
Clojure + MongoDB on Heroku
 
Why my Go program is slow?
Why my Go program is slow?Why my Go program is slow?
Why my Go program is slow?
 
Process monitoring in UNIX shell scripting
Process monitoring in UNIX shell scriptingProcess monitoring in UNIX shell scripting
Process monitoring in UNIX shell scripting
 
Cis 216 – shell scripting
Cis 216 – shell scriptingCis 216 – shell scripting
Cis 216 – shell scripting
 
GoLang & GoatCore
GoLang & GoatCore GoLang & GoatCore
GoLang & GoatCore
 
ClojureScript loves React, DomCode May 26 2015
ClojureScript loves React, DomCode May 26 2015ClojureScript loves React, DomCode May 26 2015
ClojureScript loves React, DomCode May 26 2015
 
Стажировка 2016-07-27 02 Денис Нелюбин. PostgreSQL и jsonb
Стажировка 2016-07-27 02 Денис Нелюбин. PostgreSQL и jsonbСтажировка 2016-07-27 02 Денис Нелюбин. PostgreSQL и jsonb
Стажировка 2016-07-27 02 Денис Нелюбин. PostgreSQL и jsonb
 
RedHat/CentOs Commands for administrative works
RedHat/CentOs Commands for administrative worksRedHat/CentOs Commands for administrative works
RedHat/CentOs Commands for administrative works
 
ES6 generators
ES6 generatorsES6 generators
ES6 generators
 
Javascript ES6 generators
Javascript ES6 generatorsJavascript ES6 generators
Javascript ES6 generators
 
Full Stack Clojure
Full Stack ClojureFull Stack Clojure
Full Stack Clojure
 
Writing a compiler in go
Writing a compiler in goWriting a compiler in go
Writing a compiler in go
 
第一回MongoDBソースコードリーディング
第一回MongoDBソースコードリーディング第一回MongoDBソースコードリーディング
第一回MongoDBソースコードリーディング
 
Devinsampa nginx-scripting
Devinsampa nginx-scriptingDevinsampa nginx-scripting
Devinsampa nginx-scripting
 
Txjs
TxjsTxjs
Txjs
 
Commit2015 kharchenko - python generators - ext
Commit2015   kharchenko - python generators - extCommit2015   kharchenko - python generators - ext
Commit2015 kharchenko - python generators - ext
 

Viewers also liked

Marie curie
Marie curieMarie curie
Marie curieAnnasjo
 
Bruker_Atmosfir Dfenceline brochure_EN (3)
Bruker_Atmosfir Dfenceline brochure_EN (3)Bruker_Atmosfir Dfenceline brochure_EN (3)
Bruker_Atmosfir Dfenceline brochure_EN (3)Ram Hashmonay, ScD
 
생방송카지노ク『OTP88。COM』オ실시간카지노
생방송카지노ク『OTP88。COM』オ실시간카지노 생방송카지노ク『OTP88。COM』オ실시간카지노
생방송카지노ク『OTP88。COM』オ실시간카지노 이 현제
 
James Higginbotham - API Design
James Higginbotham - API DesignJames Higginbotham - API Design
James Higginbotham - API DesignJohn Zozzaro
 
Design Ergonómico/Funcional
Design Ergonómico/FuncionalDesign Ergonómico/Funcional
Design Ergonómico/Funcionalluatum
 
경마사이트 ̄¨race77.com¨ ̄인터넷경마x8o8
경마사이트 ̄¨race77.com¨ ̄인터넷경마x8o8 경마사이트 ̄¨race77.com¨ ̄인터넷경마x8o8
경마사이트 ̄¨race77.com¨ ̄인터넷경마x8o8 강 대디
 
1.75 mm vs 2.85mm filament
1.75 mm vs 2.85mm filament1.75 mm vs 2.85mm filament
1.75 mm vs 2.85mm filamentAhmed Shawki
 

Viewers also liked (12)

Marie curie
Marie curieMarie curie
Marie curie
 
Weight loss tips
Weight loss tipsWeight loss tips
Weight loss tips
 
Bruker_Atmosfir Dfenceline brochure_EN (3)
Bruker_Atmosfir Dfenceline brochure_EN (3)Bruker_Atmosfir Dfenceline brochure_EN (3)
Bruker_Atmosfir Dfenceline brochure_EN (3)
 
생방송카지노ク『OTP88。COM』オ실시간카지노
생방송카지노ク『OTP88。COM』オ실시간카지노 생방송카지노ク『OTP88。COM』オ실시간카지노
생방송카지노ク『OTP88。COM』オ실시간카지노
 
Stateless generation
Stateless generationStateless generation
Stateless generation
 
James Higginbotham - API Design
James Higginbotham - API DesignJames Higginbotham - API Design
James Higginbotham - API Design
 
Design Ergonómico/Funcional
Design Ergonómico/FuncionalDesign Ergonómico/Funcional
Design Ergonómico/Funcional
 
My last vacations (1)
My last vacations (1)My last vacations (1)
My last vacations (1)
 
경마사이트 ̄¨race77.com¨ ̄인터넷경마x8o8
경마사이트 ̄¨race77.com¨ ̄인터넷경마x8o8 경마사이트 ̄¨race77.com¨ ̄인터넷경마x8o8
경마사이트 ̄¨race77.com¨ ̄인터넷경마x8o8
 
Bio for admission 1
Bio for admission 1Bio for admission 1
Bio for admission 1
 
Angelica Rivera-Psicopedagogia200
Angelica Rivera-Psicopedagogia200Angelica Rivera-Psicopedagogia200
Angelica Rivera-Psicopedagogia200
 
1.75 mm vs 2.85mm filament
1.75 mm vs 2.85mm filament1.75 mm vs 2.85mm filament
1.75 mm vs 2.85mm filament
 

Similar to Gogo shell

Exploring Clojurescript
Exploring ClojurescriptExploring Clojurescript
Exploring ClojurescriptLuke Donnet
 
Groovy on the Shell
Groovy on the ShellGroovy on the Shell
Groovy on the Shellsascha_klein
 
JavaScript Growing Up
JavaScript Growing UpJavaScript Growing Up
JavaScript Growing UpDavid Padbury
 
A Recovering Java Developer Learns to Go
A Recovering Java Developer Learns to GoA Recovering Java Developer Learns to Go
A Recovering Java Developer Learns to GoMatt Stine
 
10 tips for making Bash a sane programming language
10 tips for making Bash a sane programming language10 tips for making Bash a sane programming language
10 tips for making Bash a sane programming languageYaroslav Tkachenko
 
How Secure Are Docker Containers?
How Secure Are Docker Containers?How Secure Are Docker Containers?
How Secure Are Docker Containers?Ben Hall
 
Geeks Anonymes - Le langage Go
Geeks Anonymes - Le langage GoGeeks Anonymes - Le langage Go
Geeks Anonymes - Le langage GoGeeks Anonymes
 
ESCMAScript 6: Get Ready For The Future. Now
ESCMAScript 6: Get Ready For The Future. NowESCMAScript 6: Get Ready For The Future. Now
ESCMAScript 6: Get Ready For The Future. NowKrzysztof Szafranek
 
Debugging: Rules And Tools - PHPTek 11 Version
Debugging: Rules And Tools - PHPTek 11 VersionDebugging: Rules And Tools - PHPTek 11 Version
Debugging: Rules And Tools - PHPTek 11 VersionIan Barber
 
Hacking with ruby2ruby
Hacking with ruby2rubyHacking with ruby2ruby
Hacking with ruby2rubyMarc Chung
 
2007 09 10 Fzi Training Groovy Grails V Ws
2007 09 10 Fzi Training Groovy Grails V Ws2007 09 10 Fzi Training Groovy Grails V Ws
2007 09 10 Fzi Training Groovy Grails V Wsloffenauer
 
Clojure Intro
Clojure IntroClojure Intro
Clojure Introthnetos
 
GPars For Beginners
GPars For BeginnersGPars For Beginners
GPars For BeginnersMatt Passell
 
ClojureScript for the web
ClojureScript for the webClojureScript for the web
ClojureScript for the webMichiel Borkent
 
Introducing PHP Latest Updates
Introducing PHP Latest UpdatesIntroducing PHP Latest Updates
Introducing PHP Latest UpdatesIftekhar Eather
 
Debugging: Rules & Tools
Debugging: Rules & ToolsDebugging: Rules & Tools
Debugging: Rules & ToolsIan Barber
 

Similar to Gogo shell (20)

Exploring Clojurescript
Exploring ClojurescriptExploring Clojurescript
Exploring Clojurescript
 
Groovy on the Shell
Groovy on the ShellGroovy on the Shell
Groovy on the Shell
 
JavaScript Growing Up
JavaScript Growing UpJavaScript Growing Up
JavaScript Growing Up
 
Groovy
GroovyGroovy
Groovy
 
A Recovering Java Developer Learns to Go
A Recovering Java Developer Learns to GoA Recovering Java Developer Learns to Go
A Recovering Java Developer Learns to Go
 
Es6 hackathon
Es6 hackathonEs6 hackathon
Es6 hackathon
 
10 tips for making Bash a sane programming language
10 tips for making Bash a sane programming language10 tips for making Bash a sane programming language
10 tips for making Bash a sane programming language
 
How Secure Are Docker Containers?
How Secure Are Docker Containers?How Secure Are Docker Containers?
How Secure Are Docker Containers?
 
Geeks Anonymes - Le langage Go
Geeks Anonymes - Le langage GoGeeks Anonymes - Le langage Go
Geeks Anonymes - Le langage Go
 
ESCMAScript 6: Get Ready For The Future. Now
ESCMAScript 6: Get Ready For The Future. NowESCMAScript 6: Get Ready For The Future. Now
ESCMAScript 6: Get Ready For The Future. Now
 
Debugging: Rules And Tools - PHPTek 11 Version
Debugging: Rules And Tools - PHPTek 11 VersionDebugging: Rules And Tools - PHPTek 11 Version
Debugging: Rules And Tools - PHPTek 11 Version
 
Golang勉強会
Golang勉強会Golang勉強会
Golang勉強会
 
Hacking with ruby2ruby
Hacking with ruby2rubyHacking with ruby2ruby
Hacking with ruby2ruby
 
2007 09 10 Fzi Training Groovy Grails V Ws
2007 09 10 Fzi Training Groovy Grails V Ws2007 09 10 Fzi Training Groovy Grails V Ws
2007 09 10 Fzi Training Groovy Grails V Ws
 
Clojure Intro
Clojure IntroClojure Intro
Clojure Intro
 
GPars For Beginners
GPars For BeginnersGPars For Beginners
GPars For Beginners
 
ClojureScript for the web
ClojureScript for the webClojureScript for the web
ClojureScript for the web
 
Introducing PHP Latest Updates
Introducing PHP Latest UpdatesIntroducing PHP Latest Updates
Introducing PHP Latest Updates
 
ECMA5 and ES6 Promises
ECMA5 and ES6 PromisesECMA5 and ES6 Promises
ECMA5 and ES6 Promises
 
Debugging: Rules & Tools
Debugging: Rules & ToolsDebugging: Rules & Tools
Debugging: Rules & Tools
 

More from jwausle

Blockchain Ethereum Iota
Blockchain Ethereum IotaBlockchain Ethereum Iota
Blockchain Ethereum Iotajwausle
 
Svn to-git
Svn to-gitSvn to-git
Svn to-gitjwausle
 
Frege is a Haskell for the JVM
Frege is a Haskell for the JVMFrege is a Haskell for the JVM
Frege is a Haskell for the JVMjwausle
 
Bndtools.key
Bndtools.keyBndtools.key
Bndtools.keyjwausle
 
Docker.key
Docker.keyDocker.key
Docker.keyjwausle
 

More from jwausle (6)

Slides
SlidesSlides
Slides
 
Blockchain Ethereum Iota
Blockchain Ethereum IotaBlockchain Ethereum Iota
Blockchain Ethereum Iota
 
Svn to-git
Svn to-gitSvn to-git
Svn to-git
 
Frege is a Haskell for the JVM
Frege is a Haskell for the JVMFrege is a Haskell for the JVM
Frege is a Haskell for the JVM
 
Bndtools.key
Bndtools.keyBndtools.key
Bndtools.key
 
Docker.key
Docker.keyDocker.key
Docker.key
 

Recently uploaded

The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfThe Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfkalichargn70th171
 
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...Christina Lin
 
chapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptchapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptkotipi9215
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfkalichargn70th171
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comFatema Valibhai
 
Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)OPEN KNOWLEDGE GmbH
 
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataBradBedford3
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxbodapatigopi8531
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...MyIntelliSource, Inc.
 
Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...OnePlan Solutions
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software DevelopersVinodh Ram
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...ICS
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...harshavardhanraghave
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...stazi3110
 
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...soniya singh
 
Engage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The UglyEngage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The UglyFrank van der Linden
 
why an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfwhy an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfjoe51371421
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio, Inc.
 

Recently uploaded (20)

The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfThe Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
 
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
 
Exploring iOS App Development: Simplifying the Process
Exploring iOS App Development: Simplifying the ProcessExploring iOS App Development: Simplifying the Process
Exploring iOS App Development: Simplifying the Process
 
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...Call Girls In Mukherjee Nagar 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
 
chapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptchapter--4-software-project-planning.ppt
chapter--4-software-project-planning.ppt
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.com
 
Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)
 
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptx
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
 
Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software Developers
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
 
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
 
Engage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The UglyEngage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The Ugly
 
why an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfwhy an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdf
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
 

Gogo shell

  • 1. gogo shell http://felix.apache.org/site/rfc-147-overview.html OSGi Command Line Interface (draft) Mittwoch, 25. Februar 15
  • 2. Was ist gogo shell? g! lb -s | grep felix.gogo 1|Active | 1|org.apache.felix.gogo.shell (0.10.0) 2|Active | 1|org.apache.felix.gogo.runtime (0.12.1) 3|Active | 1|org.apache.felix.gogo.command (0.14.0) felix: install/uninstall, start/stop/resolve, refresh/update cd, ls, help, log lb, inspect, headers, which, bundlelevel/frameworklevel gogo: cat, echo, grep, set, sh/gosh/source, telnetd type, format, getopt, each, until, not, tac obr: repos add refresh remove list list, deploy, info, javadoc/source 2 Mittwoch, 25. Februar 15
  • 3. Konzept? g! cat .project | grep name.*go # Kommentar • Command g! macro = { echo Bla $args blub } g! macro bla Bla bla blub g! xml = ( cat .project | tac ) • Rückgabewert • Macro/Closure g! variable = string | 'string with space' # String g! variable = 1 | 1.0 | true # Long | Double | Boolean g! list = [1, '2', 3.0, true] # [Long, String, Double, Boolean] g! map = [Jan=1 'Feb'=true Mar=3.0] # [String=Long, .=Boolean, .=Double] g! echo $variable ${list} # $.. == ${..} • SessionVariable $... oder {...} 3 Mittwoch, 25. Februar 15
  • 4. Reflection g! $exception printstacktrace # ((Exception) e).printStackTrace(); g! ( $exception stacktrace ) 0 # ((Exception) e).getStackTrace()[0] g! ( ( ( $exception stacktrace ) 0 ) class ) name # ... ...((Exception) e).getStackTrace()[0].getClass().getName() • Exceptionhandling g! macro = { echo Bla $args blub } # Closure macro = `echo Bla $args blub` g! map = ['1'=Jan '2'=Feb '3'=Mar] # Map<String, String> map = ... g! each ( ( $map ) entryset ) { macro $it } # ... ... for (Object entry : map.entrySet()) macro.execute(entry); Bla 1=Jan blub Bla 2=Feb blub Bla 3=Mar blub null # 3x wegen echo-command • Ein bischen mehr 4 Mittwoch, 25. Februar 15
  • 5. FirstCommand public class FirstCommand { public void macro(Object arg){ System.out.println("macro#obj: Bla " + arg + " blub"); } } • FirstCommand <component name="FirstCommand"> <implementation class="FirstCommand"/> <service> <provide interface="FirstCommand"/> </service> <property name="osgi.command.scope" type="String" value="itemis"/> <property name="osgi.command.function" type="String" value="macro"/> </component> • Als Declarative Service oder programmatisch public class Activator implements BundleActivator { @Override public void start(BundleContext context) throws Exception { Dictionary<String, Object> dict = new Hashtable<>(); dict.put("osgi.command.scope", "itemis"); dict.put("osgi.command.function", new String[] {"macro"}); context.registerService(FirstCommand.class, new FirstCommand(), dict); } 5 Mittwoch, 25. Februar 15
  • 6. Risks • Polymorphy & Reflection ( polymorph cmd-order ) • Cmd-Return vs System.out/System.in • System.out reading in ,|‘ mode • Bad-help • Missing eclipse-console tooling ( tab-, history-support) • OBR: duplicate Capability/Requirement Impl 6 Mittwoch, 25. Februar 15
  • 7. Links • GitHub: https://github.com/jwausle/gogo.shell/blob/master/gogo.shell • Overview: http://felix.apache.org/site/rfc-147-overview.html • Cmds: https://github.com/jwausle/gogo.shell/blob/master/ gogo.shell.doc/help/README.MD • OSGi-Spec: http://www.osgi.org/download/osgi-4.2-early-draft.pdf • Cmd-History-UpdateSite: https://github.com/jwausle/ de.jwausle.support.org.eclipse.ui.console/raw/master/ de.jwausle.support.org.eclipse.ui.console.updatesite/update-site/2.1.0 7 Mittwoch, 25. Februar 15