नियम
sh_binary
sh_binary(name, deps, srcs, data, args, compatible_with, deprecation, distribs, env, exec_compatible_with, exec_properties, features, licenses, output_licenses, restricted_to, tags, target_compatible_with, testonly, toolchains, visibility)
sh_binary
नियम का इस्तेमाल, एक्ज़ीक्यूटेबल शेल स्क्रिप्ट का एलान करने के लिए किया जाता है.
(sh_binary
एक गलत नाम है: यह ज़रूरी नहीं है कि इसके नतीजे बाइनरी हों.) इस नियम से यह पक्का होता है कि
सभी डिपेंडेंसी बनाई गई हैं और इसे एक्ज़ीक्यूट करने के समय, runfiles
एरिया में देखा जा सकता है.
हमारा सुझाव है कि आप अपने sh_binary()
नियमों का नाम, स्क्रिप्ट के नाम से हटाकर एक्सटेंशन (उदाहरण के लिए, .sh
) रखें. नियम का नाम और फ़ाइल का नाम अलग-अलग होने चाहिए.
sh_binary
शेबांग का सम्मान करती है, इसलिए किसी भी उपलब्ध अनुवादक का इस्तेमाल किया जा सकता है (उदाहरण के लिए,
#!/bin/zsh
)
उदाहरण
बिना किसी डिपेंडेंसी और कुछ डेटा फ़ाइलों वाली सामान्य शेल स्क्रिप्ट के लिए:
sh_binary( name = "foo", srcs = ["foo.sh"], data = glob(["datafiles/*.txt"]), )
तर्क
एट्रिब्यूट | |
---|---|
name |
इस टारगेट के लिए एक खास नाम. |
deps
|
deps के बारे में की गई सामान्य टिप्पणियां देखें.
इस एट्रिब्यूट का इस्तेमाल, |
srcs
|
यह एट्रिब्यूट एक सिंगलटन सूची होनी चाहिए, जिसका एलिमेंट शेल स्क्रिप्ट है.
यह स्क्रिप्ट एक्ज़ीक्यूटेबल होनी चाहिए. साथ ही, यह सोर्स फ़ाइल या जनरेट की गई फ़ाइल हो सकती है.
रनटाइम के दौरान ज़रूरी अन्य सभी फ़ाइलें (चाहे स्क्रिप्ट या डेटा),
|
sh_library
sh_library(name, deps, srcs, data, compatible_with, deprecation, distribs, exec_compatible_with, exec_properties, features, licenses, restricted_to, tags, target_compatible_with, testonly, visibility)
इस नियम का मुख्य इस्तेमाल एक लॉजिकल "लाइब्रेरी" को इकट्ठा करना है, जिसमें मिलती-जुलती स्क्रिप्ट शामिल हों. ये प्रोग्राम, इंटरप्रेटेड लैंग्वेज में होते हैं और इनके लिए कंपाइलेशन या लिंकिंग की ज़रूरत नहीं होती. जैसे, बॉर्न शेल और ऐसा कोई भी डेटा जो उन प्रोग्राम को रन-टाइम के दौरान चाहिए. इसके बाद, एक या एक से ज़्यादा sh_binary
नियमों के data
एट्रिब्यूट का इस्तेमाल करके, ऐसी "लाइब्रेरी" इस्तेमाल की जा सकती है.
डेटा फ़ाइलें इकट्ठा करने के लिए, filegroup
नियम का इस्तेमाल
किया जा सकता है.
इंटरप्रेटेड प्रोग्रामिंग भाषाओं में, "कोड" और "डेटा" के बीच हमेशा साफ़ तौर पर अंतर नहीं होता है: वैसे भी, इंटरप्रेटर के हिसाब से प्रोग्राम सिर्फ़ "डेटा" होता है. इस वजह से,
इस नियम में तीन ऐसे एट्रिब्यूट हैं जो ज़रूरी रूप से एक जैसे हैं:
srcs
, deps
, और data
.
लागू किया गया मौजूदा तरीका, इन सूचियों के एलिमेंट के बीच फ़र्क़ नहीं करता.
तीनों एट्रिब्यूट, नियमों, सोर्स फ़ाइलों, और जनरेट की गई फ़ाइलों को स्वीकार करते हैं.
हालांकि, एट्रिब्यूट का इस्तेमाल उनके सामान्य मकसद के लिए करना अच्छा रहता है (जैसा कि दूसरे नियमों के लिए किया जाता है).
उदाहरण
sh_library( name = "foo", data = [ ":foo_service_script", # an sh_binary with srcs ":deploy_foo", # another sh_binary with srcs ], )
तर्क
एट्रिब्यूट | |
---|---|
name |
इस टारगेट के लिए एक खास नाम. |
deps
|
deps के बारे में की गई सामान्य टिप्पणियां देखें.
इस एट्रिब्यूट का इस्तेमाल, |
srcs
|
इस एट्रिब्यूट का इस्तेमाल, इस लाइब्रेरी से जुड़ी शेल स्क्रिप्ट सोर्स फ़ाइलों की सूची बनाने के लिए किया जाना चाहिए. स्क्रिप्ट, शेल के |
sh_test
sh_test(name, deps, srcs, data, args, compatible_with, deprecation, distribs, env, env_inherit, exec_compatible_with, exec_properties, features, flaky, licenses, local, restricted_to, shard_count, size, tags, target_compatible_with, testonly, timeout, toolchains, visibility)
sh_test()
नियम, बॉर्न शेल स्क्रिप्ट के तौर पर लिखा गया टेस्ट बनाता है.
जांच के सभी नियमों (*_test) के लिए सामान्य एट्रिब्यूट देखें.
उदाहरण
sh_test( name = "foo_integration_test", size = "small", srcs = ["foo_integration_test.sh"], deps = [":foo_sh_lib"], data = glob(["testdata/*.txt"]), )
तर्क
एट्रिब्यूट | |
---|---|
name |
इस टारगेट के लिए एक खास नाम. |
deps
|
deps के बारे में की गई सामान्य टिप्पणियां देखें.
इस एट्रिब्यूट का इस्तेमाल, |
srcs
|
यह एट्रिब्यूट एक सिंगलटन सूची होनी चाहिए, जिसका एलिमेंट शेल स्क्रिप्ट है.
यह स्क्रिप्ट एक्ज़ीक्यूटेबल होनी चाहिए. साथ ही, यह सोर्स फ़ाइल या जनरेट की गई फ़ाइल हो सकती है.
रनटाइम के दौरान ज़रूरी अन्य सभी फ़ाइलें (चाहे स्क्रिप्ट या डेटा),
|