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

Define the academic and professional writing..pdf
Define the academic and professional writing..pdfDefine the academic and professional writing..pdf
Define the academic and professional writing..pdfPearlKirahMaeRagusta1
 
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
 
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
 
10 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 202410 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 2024Mind IT Systems
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...Health
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...OnePlan Solutions
 
How to Choose the Right Laravel Development Partner in New York City_compress...
How to Choose the Right Laravel Development Partner in New York City_compress...How to Choose the Right Laravel Development Partner in New York City_compress...
How to Choose the Right Laravel Development Partner in New York City_compress...software pro Development
 
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
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsAlberto González Trastoy
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providermohitmore19
 
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM TechniquesAI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM TechniquesVictorSzoltysek
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Steffen Staab
 
AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplatePresentation.STUDIO
 
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) SolutionIntroducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) SolutionOnePlan Solutions
 
VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnAmarnathKambale
 
Azure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdf
Azure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdfAzure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdf
Azure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdfryanfarris8
 
Exploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdfExploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdfproinshot.com
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️Delhi Call girls
 

Recently uploaded (20)

Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 
Define the academic and professional writing..pdf
Define the academic and professional writing..pdfDefine the academic and professional writing..pdf
Define the academic and professional writing..pdf
 
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...
 
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
 
10 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 202410 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 2024
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
 
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS LiveVip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
 
How to Choose the Right Laravel Development Partner in New York City_compress...
How to Choose the Right Laravel Development Partner in New York City_compress...How to Choose the Right Laravel Development Partner in New York City_compress...
How to Choose the Right Laravel Development Partner in New York City_compress...
 
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 ...
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
 
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM TechniquesAI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
 
AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation Template
 
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) SolutionIntroducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
 
VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learn
 
Azure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdf
Azure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdfAzure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdf
Azure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdf
 
Exploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdfExploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdf
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 

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