शेल के नियम

किसी समस्या की शिकायत करें सोर्स देखें

नियम

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