कार्यक्षेत्र एडमिन स्क्रिप्ट और कमांड
डेटाबेस साफ़ करें
./scripts/clean-db.sh
डेटाबेस स्कीमा और संरचना को बनाए रखते हुए सभी डेटा को हटाकर डेटाबेस को साफ़ करता है।
Caution
सावधानी से उपयोग करें क्योंकि यह सभी मौजूदा डेटा को हटा देगा।
निर्माण कलाकृतियों और निर्भरताओं को साफ़ करें
scripts/clean-workspace.sh
सभी निर्माण कलाकृतियों, node_modules निर्देशिका, और अन्य उत्पन्न फ़ाइलों को हटाता है ताकि एक साफ़ स्थिति सुनिश्चित हो सके। यह तब उपयोगी है जब आपको एक ताज़ा स्थापना करनी हो या निर्भरता समस्याओं को हल करना हो। कमांड निम्नलिखित को हटा देगा:
node_modules/निर्देशिका.next/निर्माण निर्देशिकाdist/निर्देशिकाout/निर्देशिका.turbo/निर्देशिकाpnpm-lock.yamldata/*.json(विकास JSON बैकअप फ़ाइलें)public/documentationdocumentation/.docusaurus,.cache,.cache-*,build,node_modules,pnpm-lock.yaml.genkit/निर्देशिका*.tsbuildinfoफ़ाइलें- pnpm स्टोर कैश (के माध्यम से
pnpm store prune) - डॉकर निर्माण कैश और सिस्टम प्रून (छवियाँ, नेटवर्क, वॉल्यूम)
डॉकर कंपोज़ और डॉकर वातावरण साफ़ करें
scripts/clean-docker.sh
पूर्ण डॉकर सफाई करें, जो निम्नलिखित के लिए उपयोगी है:
- डिस्क स्थान मुक्त करना
- पुराने/अप्रयुक्त डॉकर कलाकृतियों को हटाना
- विकास या परीक्षण सत्रों के बाद साफ़ करना
- एक साफ डॉकर वातावरण बनाए रखना
पैकेज को नवीनतम संस्करण में अपडेट करें
आप मैन्युअल रूप से पैकेज को अपडेट कर सकते हैं:
ncu --upgrade
pnpm update
या स्वचालित स्क्रिप्ट का उपयोग करें (प्राथमिकता दें source ताकि nvm आपके वर्तमान शेल पर लागू हो; CI या गैर-इंटरैक्टिव रन के लिए CI=1 या UPGRADE_ALLOW_EXEC=1 का उपयोग करें):
source ./scripts/upgrade-dependencies.sh
upgrade-dependencies.sh स्क्रिप्ट पूरी निर्भरता अपग्रेड प्रक्रिया को स्वचालित करती है। यह प्रोजेक्ट-निष्पक्ष है: पैकेज प्रबंधक, कार्यक्षेत्र पैकेज, और प्रत्येक पैकेज का सत्यापन कमांड स्वचालित रूप से पहचान लिया जाता है (इसलिए मूल और documentation/ पैकेज दोनों को अपग्रेड किया जाता है, बिना हार्डकोडेड पथ के)। यह:
upgrade-tools.sh(nvm / Node LTS, वैश्विकpnpm,npm-check-updates,doctoc) के माध्यम से उपकरण सेटअप का स्रोत बनाता है- प्रत्येक पैकेज के लिए निर्माण-सुरक्षित अपग्रेड करता है:
npm-check-updatesनवीनतम संस्करणों को हल करता है, फिर इंस्टॉल औरtypecheck/lintकार्यक्षेत्र की जड़ से चलाते हैं। अपग्रेड जो सत्यापन में विफल होते हैं, उन्हेंpackage.jsonको संपादित करके बाइसेक्ट किया जाता है (नहींpnpm add, जिसे pnpm कार्यक्षेत्र की जड़ पर अस्वीकार करता है)। एम्बेडेड पीयर गेट्सeslintऔरtypescriptको पिन करते हैं जबeslint-plugin-react/typescript-eslintअभी तक नवीनतम प्रमुख की अनुमति नहीं देते। - कार्यक्षेत्र pnpm लॉकफ़ाइल को अपडेट करता है और निर्भरताएँ स्थापित करता है
- browserslist डेटाबेस को अपडेट करता है
- कमजोरियों की जांच करता है (
pnpm audit) और गैर-तोड़ने वाले फिक्स लागू करता है (pnpm audit --fix) - सुरक्षा को प्राथमिकता देता है: यदि एक कमजोर प्रत्यक्ष निर्भरता को केवल एक निर्माण-तोड़ने वाले अपग्रेड द्वारा ठीक किया जा सकता है, तो सुरक्षित संस्करण को बलपूर्वक लागू किया जाता है और निर्माण त्रुटियों की रिपोर्ट की जाती है ताकि कोड को संगतता के लिए अपडेट किया जा सके
- एक सारांश प्रिंट करता है (अपग्रेड किए गए बनाम निर्माण-तोड़ने वाले पैकेज छोड़े गए, कमजोरियों को ठीक किया/बचा हुआ, और मैन्युअल रोलबैक के लिए एक मैनिफेस्ट स्नैपशॉट पथ)
package.jsonऔर लॉकफ़ाइलों को/usr/bin/cpके साथ कॉपी करता है ताकि एक स्रोतित इंटरैक्टिवcpउपनाम (उदाहरण के लिएcp -i) उन फ़ाइलों को ओवरराइट करने के लिए संकेत न दे
यह स्क्रिप्ट निर्भरताओं को अद्यतित और सुरक्षित रखने के लिए एक पूर्ण कार्यप्रवाह प्रदान करती है।
अप्रयुक्त पैकेज के लिए जांचें
pnpm depcheck
संस्करण जानकारी अपडेट करें
./scripts/update-version.sh
यह स्क्रिप्ट स्वचालित रूप से कई फ़ाइलों में संस्करण जानकारी को अद्यतन करती है ताकि उन्हें सिंक्रनाइज़ किया जा सके। यह:
package.jsonसे संस्करण निकालता है.envफ़ाइल कोVERSIONचर के साथ अद्यतन करता है (यदि यह मौजूद नहीं है तो इसे बनाता है)DockerfileकोVERSIONचर के साथ अद्यतन करता है (यदि यह मौजूद है)documentation/package.jsonसंस्करण फ़ील्ड को अद्यतन करता है (यदि यह मौजूद है)- केवल तभी अद्यतन करता है जब संस्करण बदल गया हो
- प्रत्येक संचालन पर प्रतिक्रिया प्रदान करता है
GitHub रिलीज़ प्रकाशित करें
pnpm release:github:dry
pnpm release:github
scripts/release.mjs HEAD पर v<package.json version> को टैग करता है, एक GitHub रिलीज़ प्रकाशित करता है जिसके नोट्स documentation/docs/release-notes/<version>.md (RELEASE_NOTES_github_<version>.md में रीराइट किए गए) से आते हैं, फिर Docusaurus साइट को डिप्लॉय करता है। रिलीज़ मैनेजमेंट देखें।
प्री-चेक स्क्रिप्ट
./scripts/pre-checks.sh
यह स्क्रिप्ट डेवलपमेंट सर्वर शुरू करने, बिल्ड करने या प्रोडक्शन सर्वर शुरू करने से पहले प्री-चेक चलाता है। यह:
- सुनिश्चित करता है कि
.duplistatus.keyफ़ाइल मौजूद है (ensure-key-file.shके माध्यम से) - संस्करण जानकारी को अद्यतन करता है (
update-version.shके माध्यम से)
यह स्क्रिप्ट स्वचालित रूप से pnpm dev, pnpm build और pnpm start-local द्वारा कॉल किया जाता है।
सुनिश्चित करें कि मुख्य फ़ाइल मौजूद है
./scripts/ensure-key-file.sh
यह स्क्रिप्ट सुनिश्चित करता है कि .duplistatus.key फ़ाइल data डायरेक्टरी में मौजूद है। यह:
dataडायरेक्टरी बनाता है यदि यह मौजूद नहीं है- एक नई 32-बाइट यादृच्छिक कुंजी फ़ाइल उत्पन्न करता है यदि यह गुम है
- फ़ाइल की अनुमतियाँ 0400 पर सेट करता है (केवल मालिक के लिए केवल पढ़ने के लिए)
- अनुमतियाँ ठीक करता है यदि वे गलत हैं
कुंजी फ़ाइल का उपयोग एप्लिकेशन में क्रिप्टोग्राफिक ऑपरेशन के लिए किया जाता है।
एडमिन खाता पुनर्प्राप्ति
./admin-recovery <username> <new-password>
यह स्क्रिप्ट एडमिन खातों की पुनर्प्राप्ति की अनुमति देता है यदि लॉकआउट हो गया हो या पासवर्ड भूल गया हो। यह:
- निर्दिष्ट उपयोगकर्ता के लिए पासवर्ड रीसेट करता है
- खाता अनलॉक करता है यदि यह लॉक किया गया था
- असफल लॉगिन प्रयासों के काउंटर को रीसेट करता है
- "पासवर्ड बदलना आवश्यक है" फ्लैग साफ़ करता है
- पासवर्ड की पुष्टि करता है कि यह सुरक्षा आवश्यकताओं को पूरा करता है
- ऑडिट लॉग में कार्रवाई लॉग करता है
उदाहरण:
./admin-recovery admin NewPassword123
Caution
यह स्क्रिप्ट सीधे डेटाबेस को संशोधित करता है। केवल खाता पुनर्प्राप्ति के लिए आवश्यकता पर ही उपयोग करें।
छवियाँ कॉपी करें
./scripts/copy-images.sh
documentation/static/img से छवि फ़ाइलों को एप्लिकेशन में उनके उचित स्थानों पर कॉपी करता है:
favicon.icoकोsrc/app/पर कॉपी करता हैduplistatus_logo.pngकोpublic/images/पर कॉपी करता हैduplistatus_banner.pngकोpublic/images/पर कॉपी करता है
एप्लिकेशन छवियों को दस्तावेज़ीकरण छवियों के साथ सिंक्रनाइज़ रखने के लिए उपयोगी है।
स्थानीय या npm ai-i18n-tools स्विच करें
./scripts/link-ai-i18n-tools.sh --local
./scripts/link-ai-i18n-tools.sh --remote
pnpm i18n:tools --local
pnpm i18n:tools --remote
इस रेपो को एक सहोदर ai-i18n-tools चेकआउट पर या फिर से प्रकाशित npm पैकेज पर पॉइंट करता है, फिर हल किए गए संस्करण को प्रिंट करता है। --local link:../ai-i18n-tools लिखता है (--path या AI_I18N_TOOLS_PATH के साथ पथ ओवरराइड करें) ताकि pnpm i18n:* और ai-i18n-tools/runtime दोनों उसी ट्री का उपयोग करें। --remote नवीनतम npm संस्करण को ^x.y.z के रूप में स्थापित करता है। link: स्पेसिफायर को कमिट न करें।
डेवलपमेंट और डॉकर के बीच संस्करणों की तुलना करें
./scripts/compare-versions.sh
यह स्क्रिप्ट आपके डेवलपमेंट वातावरण और चल रहे डॉकर कंटेनर के बीच संस्करणों की तुलना करता है। यह:
- केवल मुख्य संस्करण के अनुसार SQLite संस्करणों की तुलना करता है (उदाहरण के लिए, 3.45.1 बनाम 3.51.1 को संगत माना जाता है, "✅ (मुख्य)" के रूप में दिखाया गया है)
- Node, npm, और duplistatus संस्करणों की सटीक तुलना करता है (सटीक रूप से मिलान करना आवश्यक है)
- सभी संस्करण तुलनाओं को दिखाने वाला एक स्वरूपित तालिका प्रदर्शित करता है
- रंग-कोडित परिणाम (मिलान के लिए ✅, गलत मिलान के लिए ❌) के साथ एक सारांश प्रदान करता है
- सभी संस्करणों के मेल खाने पर कोड 0 के साथ बाहर निकलता है, गलत मिलान होने पर 1
आवश्यकताएँ:
- डॉकर कंटेनर जिसका नाम
duplistatusहै, चल रहा होना चाहिए - स्क्रिप्ट डॉकर कंटेनर लॉग से संस्करण जानकारी पढ़ता है
उदाहरण आउटपुट:
┌─────────────────────────┬──────────────────────────────┬──────────────────────────────┬──────────────┐
│ Component │ Development │ Docker │ Match │
├─────────────────────────┼──────────────────────────────┼──────────────────────────────┼──────────────┤
│ SQLite │ 3.45.1 │ 3.51.1 │ ✅ (major) │
│ Node │ 24.12.0 │ 24.12.0 │ ✅ │
│ npm │ 10.9.2 │ 10.9.2 │ ✅ │
│ Duplistatus │ 1.2.1 │ 1.2.1 │ ✅ │
└─────────────────────────┴──────────────────────────────┴──────────────────────────────┴──────────────┘
नोट: अलग-अलग पैच संस्करणों के भीतर एक ही प्रमुख संस्करण के सामान्य रूप से संगत होने के कारण एसक्यूलाइट संस्करणों की तुलना केवल प्रमुख संस्करण के आधार पर की जाती है। स्क्रिप्ट यह संकेत देगा कि एसक्यूलाइट संस्करण प्रमुख स्तर पर मेल खाते हैं लेकिन पैच संस्करणों में अलग हैं।
डेटाबेस में कॉन्फ़िगरेशन देखना
sqlite3 data/backups.db "SELECT key, value FROM configurations;" | awk -F'|' '
{print "\n" $1 ": ";
if(index($2,"{")>0) {print $2 |"jq -C ."; close("jq -C .")}
else {print $2;}}' | less -R
sqlite3 /var/lib/docker/volumes/duplistatus_data/_data/backups.db "SELECT key, value FROM configurations;" | awk -F'|' '
{print "\n" $1 ": ";
if(index($2,"{")>0) {print $2 |"jq -C ."; close("jq -C .")}
else {print $2;}}' | less -R
बैकअप सेटिंग्स दिखाएँ
./scripts/show-backup-settings.sh [database_path]
कॉन्फ़िगरेशन तालिका में backup_settings मान की सामग्री को एक स्वरूपित तालिका में प्रदर्शित करता है। अधिसूचना कॉन्फ़िगरेशन के डीबगिंग के लिए उपयोगी है। डिफ़ॉल्ट डेटाबेस पथ: data/backups.db।