शेल रूल

नियम

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

Name; required

इस टारगेट के लिए यूनीक नाम.

deps

List of labels; optional

"लाइब्रेरी" की सूची को इस टारगेट में इकट्ठा करना होगा. deps के बारे में सामान्य टिप्पणियां देखें पर सामान्य विशेषताएं ज़्यादातर बिल्ड रूल के तहत आते हैं.

इस एट्रिब्यूट का इस्तेमाल, उन sh_library नियमों की सूची बनाने के लिए किया जाना चाहिए जिनमें ये नियम दिए गए हैं इंटरप्रेटेड प्रोग्राम का सोर्स कोड, srcs में दिए गए कोड पर निर्भर करता है. फ़ाइलें इन नियमों के ज़रिए दिए गए नियम, इस टारगेट के runfiles में मौजूद होंगे.

srcs

List of labels; required

शेल स्क्रिप्ट वाली फ़ाइल.

यह एट्रिब्यूट एक सिंगलटन सूची होनी चाहिए, जिसका एलिमेंट शेल स्क्रिप्ट है. यह स्क्रिप्ट एक्ज़ीक्यूटेबल होनी चाहिए. साथ ही, यह कोई सोर्स फ़ाइल या जनरेट की गई फ़ाइल हो सकती है. रनटाइम के दौरान ज़रूरी अन्य सभी फ़ाइलें (चाहे स्क्रिप्ट हों या डेटा) data एट्रिब्यूट की वैल्यू सबमिट करें.

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)

इस नियम का मुख्य इस्तेमाल यह है कि "लाइब्रेरी" जिसमें संबंधित स्क्रिप्ट शामिल हैं—ऐसे प्रोग्राम जो अनुवाद की गई ऐसी भाषा जिसे कंपाइल करने या लिंक करने की ज़रूरत न हो, जैसे कि बॉर्न शेल—और ऐसा कोई भी डेटा जिसे उन प्रोग्राम को रन-टाइम. ऐसी "लाइब्रेरी" तो इसकी मदद से इस्तेमाल किया जा सकता है एक याdata sh_binary और नियम.

डेटा इकट्ठा करने के लिए, filegroup नियम का इस्तेमाल किया जा सकता है फ़ाइलें शामिल हैं.

इंटरप्रेटेड प्रोग्रामिंग लैंग्वेज में, यह ज़रूरी नहीं है कि "कोड" में अंतर और "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

Name; required

इस टारगेट के लिए यूनीक नाम.

deps

List of labels; optional

"लाइब्रेरी" की सूची को इस टारगेट में इकट्ठा करना होगा. deps के बारे में सामान्य टिप्पणियां देखें पर सामान्य विशेषताएं ज़्यादातर बिल्ड रूल के तहत आते हैं.

इस एट्रिब्यूट का इस्तेमाल, उन sh_library नियमों की सूची बनाने के लिए किया जाना चाहिए जिनमें ये नियम दिए गए हैं इंटरप्रेटेड प्रोग्राम का सोर्स कोड, srcs में दिए गए कोड पर निर्भर करता है. फ़ाइलें इन नियमों के ज़रिए दिए गए नियम, इस टारगेट के runfiles में मौजूद होंगे.

srcs

List of labels; optional

इनपुट फ़ाइलों की सूची.

इस एट्रिब्यूट का इस्तेमाल उन शेल स्क्रिप्ट सोर्स फ़ाइलों को सूची में शामिल करने के लिए किया जाना चाहिए जिनसे जुड़ी शेल स्क्रिप्ट सोर्स फ़ाइलें हैं इस लाइब्रेरी पर क्लिक करें. स्क्रिप्ट, शेल के source का इस्तेमाल करके अन्य स्क्रिप्ट लोड कर सकती हैं या . निर्देश का इस्तेमाल करें.

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

Name; required

इस टारगेट के लिए यूनीक नाम.

deps

List of labels; optional

"लाइब्रेरी" की सूची को इस टारगेट में इकट्ठा करना होगा. deps के बारे में सामान्य टिप्पणियां देखें पर सामान्य विशेषताएं ज़्यादातर बिल्ड रूल के तहत आते हैं.

इस एट्रिब्यूट का इस्तेमाल, उन sh_library नियमों की सूची बनाने के लिए किया जाना चाहिए जिनमें ये नियम दिए गए हैं इंटरप्रेटेड प्रोग्राम का सोर्स कोड, srcs में दिए गए कोड पर निर्भर करता है. फ़ाइलें इन नियमों के ज़रिए दिए गए नियम, इस टारगेट के runfiles में मौजूद होंगे.

srcs

List of labels; required

शेल स्क्रिप्ट वाली फ़ाइल.

यह एट्रिब्यूट एक सिंगलटन सूची होनी चाहिए, जिसका एलिमेंट शेल स्क्रिप्ट है. यह स्क्रिप्ट एक्ज़ीक्यूटेबल होनी चाहिए. साथ ही, यह कोई सोर्स फ़ाइल या जनरेट की गई फ़ाइल हो सकती है. रनटाइम के दौरान ज़रूरी अन्य सभी फ़ाइलें (चाहे स्क्रिप्ट हों या डेटा) data एट्रिब्यूट की वैल्यू सबमिट करें.