नियम
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(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
|
यह एट्रिब्यूट सिंगलटन सूची होनी चाहिए, जिसका एलिमेंट शेल स्क्रिप्ट है.
यह स्क्रिप्ट एक्ज़ीक्यूटेबल होनी चाहिए और कोई सोर्स फ़ाइल या जनरेट की गई फ़ाइल हो सकती है.
रनटाइम के समय ज़रूरी सभी फ़ाइलें (चाहे स्क्रिप्ट हों या डेटा),
|