शेल रूल

नियम

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)

इस नियम का मुख्य इस्तेमाल एक लॉजिकल "लाइब्रेरी" को इकट्ठा करना है, जिसमें मिलती-जुलती स्क्रिप्ट शामिल हों. ये प्रोग्राम, इंटरप्रेटेड लैंग्वेज में होते हैं और इनके लिए कंपाइलेशन या लिंकिंग की ज़रूरत नहीं होती. जैसे, बॉर्न शेल और ऐसा कोई भी डेटा जो उन प्रोग्राम को रन-टाइम के दौरान चाहिए. इसके बाद, एक या एक से ज़्यादा 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

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 एट्रिब्यूट से जुड़ी हों.