BazelCon 2022, 16 नवंबर से 17 नवंबर तक न्यूयॉर्क में और ऑनलाइन उपलब्ध है.
आज ही रजिस्टर करें!

शेल के नियम

संग्रह की मदद से व्यवस्थित रहें अपनी प्राथमिकताओं के आधार पर, कॉन्टेंट को सेव करें और कैटगरी में बांटें.

नियम

sh_बाइनरी

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

"library" टारगेट की सूची जिसे इस टारगेट में इकट्ठा किया जाना है. 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 नियम का इस्तेमाल किया जा सकता है.

पहचानी गई प्रोग्रामिंग भाषाओं में, "code" और "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

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

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

srcs

List of labels; optional

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

इस एट्रिब्यूट का इस्तेमाल, शेल स्क्रिप्ट की उन सोर्स फ़ाइलों की सूची बनाने के लिए किया जाना चाहिए जो इस लाइब्रेरी से जुड़ी हैं. स्क्रिप्ट, शेल's 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

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

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

srcs

List of labels; required

वह फ़ाइल जिसमें शेल स्क्रिप्ट है.

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