नियम
sh_बाइनरी
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
नियम का इस्तेमाल किया जा सकता है.
पहचानी गई प्रोग्रामिंग भाषाओं में, "code" और "data" के बीच हमेशा साफ़ तौर पर अंतर दिखता है: आखिरकार, प्रोग्राम
को सिर्फ़ अनुवादक के नज़रिए से देखा जा सकता है. इस वजह से, इस नियम में तीन एट्रिब्यूट हैं, जो एक जैसे हैं: 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
|
इस एट्रिब्यूट का इस्तेमाल, शेल स्क्रिप्ट की उन सोर्स फ़ाइलों की सूची बनाने के लिए किया जाना चाहिए जो इस लाइब्रेरी से जुड़ी हैं. स्क्रिप्ट, शेल's |
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
|
यह एट्रिब्यूट सिंगलटन सूची की होनी चाहिए, जिसका एलिमेंट शेल स्क्रिप्ट है.
यह स्क्रिप्ट एक्ज़ीक्यूटेबल होनी चाहिए और यह कोई सोर्स फ़ाइल या जनरेट की गई फ़ाइल हो सकती है.
रनटाइम के लिए ज़रूरी अन्य सभी फ़ाइलें (चाहे स्क्रिप्ट हों या डेटा), |