چرا راه اندازی ما می مکد

چند ساعت برای تنظیم تمام ابزارهای مورد علاقه خود در دستگاه جدید نیاز دارید؟ چه می شود اگر همکار شما همان تنظیم را بخواهد و از شما کمک بخواهد؟ یا شاید شما می خواهید چیزی را تغییر دهید ، اما مدتها پیش آن را تنظیم کرده اید و هیچ ایده ای برای تغییر ندارید …
فکر کردن به این سؤالات خوب خواهد بود:
- اگر می توانیم همه پیکربندی ها را در یک مکان داشته باشیم.
- تنظیمات ما را به راحتی در دستگاه جدید بازتولید کنید.
- به راحتی پیکربندی ها را با افراد دیگر به اشتراک بگذارید.
- قادر به بررسی پیکربندی ما باشید ، بفهمید چه کاری انجام شده و قادر به تغییر آن هستید.
این مشکل مدتی مرا آزار داد. من ابزارهای اتوماسیون مانند نمک ، Ansible ، Nix را امتحان کردم … اما همه آنها برای این کار خیلی پیچیده و ناخوشایند به نظر می رسند:
- آنها برای موارد مختلف استفاده شده طراحی شده اند – بسیاری از دستگاه های توزیع شده.
- آنها کند هستند.
- قبل از استفاده از آن باید چیزهای زیادی یاد بگیرید.
واقعاً ، آیا باید یک زبان جدید یاد بگیرم تا بتوانم برخی از برنامه ها را نصب کنم و پیکربندی های خود را مدیریت کنم؟ (سلام ، نیکس! 😬)
خوشبختانه ، من اخیراً دوره ای را از Mighty thePrimeagen مشاهده کردم که او پیشنهاد می کند از هواپیما استفاده کند bash
برای خودکار سازی تنظیم محیط.
وقتی این را شنیدم ، اولین فکر من این بود که “Bash؟ هیچ راهی! من هرگز از این چیز قدیمی و زشت استفاده نمی کنم” … اما شاید اگر هیچ چیز دیگری برای من کار نمی کرد ، باید آن را امتحان کنم؟ من سعی کردم و با تعجب کار کرد!
بگذارید صادق باشیم ، bash
“بهترین زبان” در جهان نیست. در ابتدا عجیب و حتی ترسناک به نظر می رسد. اما ساده است و در این حالت کاملاً کار می شود. من در چند ساعت توانستم اسکریپت های پیکربندی را برای همه برنامه هایم بنویسم.
ایده بسیار ساده است. بگذارید یک پوشه برای همه تنظیمات خود داشته باشیم – ~/env-setup
بشر در داخل این پوشه ، ما خواهیم داشت dotfiles
وت scripts
بشر در dotfiles
شامل تمام پرونده های پیکربندی ما خواهد بود. هر پیکربندی برنامه یک پوشه جداگانه خواهد داشت ، به عنوان مثال nvim
با nvim-another-config
با zshell
با vscode
، و غیره داخل scripts
پوشه ، ما اسکریپت های پیکربندی خود را خواهیم داشت ، به عنوان مثال nvim.sh
با zshell.sh
با vscode.sh
، و غیره. هر اسکریپت منطق مربوط به یک برنامه خاص (یا مجموعه ای از برنامه ها) خواهد بود.
به عنوان مثال ، بگذارید نگاهی بیندازیم tmux.sh
:
#!/usr/bin/env bash
. bash-utils.sh
start "tmux"
log "install tmux.."
brew install tmux
log "install tmux-plugin-manager..."
git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm
source="$HOME/env-setup/dotfiles/tmux/.config/tmux/tmux.conf"
dest="$HOME/.config/tmux/tmux.conf"
link_config $source $dest
finish
اول ، ما وارد می کنیم bash-utils.sh
که شامل توابع یاور است که ما در تمام اسکریپت ها استفاده می کنیم. start
با log
وت finish
توابع پیام های یاور را به ترمینال چاپ می کنند. brew install tmux
نصب خواهد شد tmux
برنامه سپس ما نصب خواهیم کرد tmux plugin manager
با git clone
فرمان پس از آن ، ما پیوندی از ~/env-setup/dotfiles/tmux
پوشه به ~/.config/tmux
بشر اینقدر tmux
به جای یک پیش فرض از پیکربندی ما استفاده می کند. در link_config
عملکرد به اندازه کافی “هوشمند” است تا در صورت وجود از پیکربندی “قدیمی” ما نسخه پشتیبان تهیه کنید. یا اگر قبلاً ایجاد شده بود ، پیوند “قدیمی” را حذف کنید.
این است بسیار ساده ، درست است؟
در صورتی که بخواهیم همه برنامه های مورد علاقه خود را به یکباره نصب کنیم _setup-all_.sh
اسکریپت که فقط همه اسکریپت ها را یک به یک اجرا می کند.
می توانید تمام پرونده ها را در env-setup repo پیدا کنید. این کار برای MACOS انجام شده است ، اما من معتقدم که ما می توانیم همین کار را برای لینوکس و ویندوز انجام دهیم. لطفاً آن را کلون کرده و تنظیم محیط خود را ایجاد کنید. 🥳
اعتبار
عکس توسط Tudor Baciu در Unsplash
لطفاً افکار ، سوالات و ایده های خود را در نظرات ارسال کنید ، دکمه 💖 و هک کردن مبارک را فشار دهید! 🙌🏻