के साथ कमांड लाइनों के लिए स्केल में डीएसएल कैसे बनाएं, मुझे स्केल (न तो जावा) से परिचित नहीं बल्कि शैल से परिचित उपयोगकर्ताओं के लिए एक एपीआई विकसित करने की आवश्यकता है। वे मूल रूप से स्केल क्लास के अंदर खोल स्क्रिप्ट लिखेंगे (मुझे पता है कि मैं केवल बाहरी शैल स्क्रिप्ट्स को कॉल कर सकता हूं, लेकिन आओ! इसके अलावा, बाद में हमारे पास सामान्य शैल कार्यों के लिए कुछ फ़ंक्शन होंगे)।न्यूनतम अतिरिक्त बॉयलरप्लेट
मैं की तरह कुछ हासिल करने के लिए उम्मीद कर रहा था:
1 object MyCoolScript extends MyMagicTrait {
2 $ "mkdir /tmp/test"
3 $ "cd /tmp/test"
4 $ "wget some-url"
5 }
अधिक प्रत्यक्ष होने के नाते, मैं कैसे में Seq [स्ट्रिंग] लाइनों 2-4 (या एक संभवतः कम संक्षिप्त संस्करण) को बदल सकते हैं कि मैं MyMagicTrait में संसाधित कर सकते हैं ?
मैं के बारे में sys.process.stringToProcess जानते हैं, लेकिन अगर मेरे पास है:
object MyCoolScript extends MyMagicTrait {
"mkdir /tmp/test" !!
"cd /tmp/test" !!
"wget some-url" !!
}
कैसे मैं एक संक्षिप्त तरीके से प्रत्येक आदेश का परिणाम मिल सकता है? भी, मैं $ "xxx" नोटेशन की उम्मीद कर रहा था।
पोस्ट अपडेट जवाब:
धन्यवाद, @debilski को @tenshi और @ डैनियल-सी Sobral मैं आने के लिए सक्षम था एक बहुत ही वांछित कार्यान्वयन के करीब: https://gist.github.com/2777994
मुझे यह पसंद है जब हमें कोड में लाइन नंबर मिलते हैं। 5 तक गिनना इतना मुश्किल है! और यह मेरे sed-experience हमेशा ताजा रहता है। –
मैंने ऐसा इसलिए किया क्योंकि मैं लाइनों 2-4 का जिक्र कर रहा था। अब sed के लिए उपयोग नहीं देखें :)। –
वैसे, '$' का उपयोग न करें। आप इसका उपयोग कर कोड लिख सकते हैं, लेकिन यह कानूनी कोड नहीं है, और यह बिना किसी सूचना के तोड़ सकता है। –