शेल रूल

नियम

sh_binary

नियम का सोर्स देखें
sh_binary(name, deps, srcs, data, args, aspect_hints, compatible_with, deprecation, env, env_inherit, exec_compatible_with, exec_group_compatible_with, exec_properties, features, output_licenses, package_metadata, restricted_to, tags, target_compatible_with, testonly, toolchains, use_bash_launcher, 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 पर ज़्यादातर बिल्ड नियमों के हिसाब से तय किए गए सामान्य एट्रिब्यूट के बारे में सामान्य टिप्पणियां देखें.

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

srcs

लेबल की सूची; डिफ़ॉल्ट वैल्यू है[]

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

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

env_inherit

स्ट्रिंग की सूची; डिफ़ॉल्ट वैल्यू [] है

use_bash_launcher

बूलियन; डिफ़ॉल्ट वैल्यू False है

रनफ़ाइल्स लाइब्रेरी को शुरू करने वाले बैश लॉन्चर का इस्तेमाल करें

sh_library

नियम का सोर्स देखें
sh_library(name, deps, srcs, data, aspect_hints, compatible_with, deprecation, exec_compatible_with, exec_group_compatible_with, exec_properties, features, package_metadata, restricted_to, tags, target_compatible_with, testonly, toolchains, 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 पर ज़्यादातर बिल्ड नियमों के हिसाब से तय किए गए सामान्य एट्रिब्यूट के बारे में सामान्य टिप्पणियां देखें.

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

srcs

लेबल की सूची; डिफ़ॉल्ट वैल्यू है[]

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

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

sh_test

नियम का सोर्स देखें
sh_test(name, deps, srcs, data, args, aspect_hints, compatible_with, deprecation, env, env_inherit, exec_compatible_with, exec_group_compatible_with, exec_properties, features, flaky, local, package_metadata, restricted_to, shard_count, size, tags, target_compatible_with, testonly, timeout, toolchains, use_bash_launcher, 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 पर ज़्यादातर बिल्ड नियमों के हिसाब से तय किए गए सामान्य एट्रिब्यूट के बारे में सामान्य टिप्पणियां देखें.

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

srcs

लेबल की सूची; डिफ़ॉल्ट वैल्यू है[]

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

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

use_bash_launcher

बूलियन; डिफ़ॉल्ट वैल्यू False है

रनफ़ाइल्स लाइब्रेरी को शुरू करने वाले बैश लॉन्चर का इस्तेमाल करें