20210611のMacに関する記事は1件です。

開発環境自動化②

経緯 mac,linux(arch,ubuntu,debian),windows(wsl)で同じ環境作るのめんどくさすぎ問題。が発端 詳しくは以下の"開発環境めんどくさすぎる問題"を読んでください。 https://qiita.com/aki-f/items/494cefe0e98cc74249fa  問題 今までのやり方だとすべてのパソコンでhaskellやrustがインストールされてしまう。 そして環境変数化へ 以下のファイルを作った。 config.json { "languages": { "haskell": { "enable" : true }, "rust": { "enable" : true }, "ruby": { "enable": true, "version": "3.0.1", "modules": [ "solargraph" ] }, "nodejs": { "enable": true, "version": "14.17.0", "modules": [] }, "jvm": { "enable": true, "version": "11.0.10", "modules": ["gradle"] } } } これを環境変数にするには enviroment.sh export RUBY_FLAG=$(cat ~/dotfiles/config.json | jq .languages.ruby.enable) export RUBY_VER=$(cat ~/dotfiles/config.json | jq -r .languages.ruby.version) export RUBY_MODULES=$(cat ~/dotfiles/config.json | jq -r .languages.ruby.modules\[\] | tr '\n' ' ' ) export NODE_FLAG=$(cat ~/dotfiles/config.json | jq .languages.nodejs.enable) export NODE_VER=$(cat ~/dotfiles/config.json | jq -r .languages.nodejs.version) export NODE_MODULES=$(cat ~/dotfiles/config.json | jq -r .languages.nodejs.modules\[\] | tr '\n' ' ') export JVM_FLAG=$(cat ~/dotfiles/config.json | jq .languages.jvm.enable) export JVM_VER=$(cat ~/dotfiles/config.json | jq -r .languages.jvm.version) export JVM_MODULES=$(cat ~/dotfiles/config.json | jq -r .languages.jvm.modules\[\] | tr '\n' ' ') export RUST_FLAG=$(cat ~/dotfiles/config.json | jq -r .languages.rust.enable) export HASKELL_FLAG=$(cat ~/dotfiles/config.json | jq -r .languages.haskell.enable) source enviroment.sh 例えばjavaだとこうなる install/jvm.sh if [ $JVM_FLAG ]; then curl -s "https://get.sdkman.io" | bash source ~/.sdkman/bin/sdkman-init.sh if [ "$(uname)" == 'Darwin' ]; then if [ "$(uname -m)" == 'arm64' ]; then sdk install java $JVM_VER-zulu else sdk install java $JVM_VER.9-ms fi else sdk install java $JVM_VER-ms fi sdk install $JVM_MODULES fi $JVM_FLAGがfalseならインストールしないし、各種アーキテクチャによってパッケージを変えるが、すべて同じバージョン。 現状はruby,nodejs,jvm,rust,haskellに対応してる。  最後に これからはconfig.jsonをパソコンごとに変更するだけで環境を作れます。 やっぱりdotfile用にフレームワーク作りたい。 もっとクールなやり方あったら教えて下さい。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む