自動化開發環境的二部分

経緯 的中文释义是”经过”或者”历程”。

在mac、linux(如arch、ubuntu、debian)和windows(如wsl)上建立相同环境太麻烦的问题是起因。

请阅读以下链接中的”开发环境太麻烦的问题”详细了解。

请问有什么需要帮忙的?

以前的方法会在所有电脑上都安装上Haskell和Rust。

然后转换为环境变量

我创建了以下文件。

{
  "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"]
    }
  }
}

要将其设为环境变量

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)

把环境设定脚本“enviroment.sh”呼叫出来。

举例来说,如果用java,就会变成这样

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创建一个框架。

如果有更酷的方式,请告诉我。

广告
将在 10 秒后关闭
bannerAds