前言:ruby可以運行在多個平臺上屁奏,Mac和Windows都是支持的娄蔼,所以我打算使用ruby寫一個腳本虑粥,然后上傳的gem的source上面赖条,用來實現(xiàn)Flutter本地SDK安裝失乾、卸載、升級纬乍、版本切換等工作碱茁。
一:首先感受一下ruby能幫我們做什么:
介紹:我自己寫的一個很簡單的ruby demo
,可以安裝和卸載flutter SDK,并且已經(jīng)pub到了gem source上面了(對應(yīng)的source是https://rubygems.org/)仿贬。
第一步:安裝myFlutter
gem install myFlutter
安裝完之后執(zhí)行一下myFlutter -h
可以看見如下界面:
第二步:執(zhí)行myFlutter install
這時候會自動下載flutter sdk
并且會自動配置好flutter的環(huán)境變量纽竣。
二:ruby 元編程開發(fā)
網(wǎng)上有很多學(xué)習(xí)資料,我是看的:ruby教程茧泪。先別看蜓氨,先聽我說:
第一步:安裝IDE
我使用的是RubyMine
,自己去官網(wǎng)下載,RubyMine
下載之后需要認證的队伟,如果需要驗證碼穴吹,在公眾號給我留言,我發(fā)給你嗜侮。
第二步:配置Ruby
的開發(fā)環(huán)境
第三步:新建Project
File->New Project->下圖
第四部:為工程依賴thor
第五步:編寫自己的代碼
一:myFlutter.rb
源碼如下:
require "myFlutter/version"
require 'thor'
module MyFlutter
class Tool < Thor
@@flutter_root = ENV['HOME']+'/flutter'
@@flutterSDK_url = "https://github.com/flutter/flutter.git"
desc "install" , "Install the flutter SDK . "
def install()
if File.exist?(@@flutter_root)
puts("flutterSDK 已經(jīng)安裝了")
else
Dir.chdir(ENV['HOME'])
puts("執(zhí)行下載FLutter SDK")
`git clone #{@@flutterSDK_url}`
raise 'flutter sdk下載失敗' unless $?.success?
puts("flutter SDK下載成功")
end
annotation = "#flutter settings\n"
path_setting = "export PATH=\"$PATH:#{@@flutter_root}/bin\"\n"
bash_profile_path = ENV['HOME']+'/.bash_profile'
if File.exist?("#{bash_profile_path}")
puts "Export the settings into #{bash_profile_path}"
content = File.readlines("#{bash_profile_path}")
bash_file = File.open(ENV['HOME']+'/.bash_profile', 'a')
bash_file << "\n" unless content.last.eql?("\n")
bash_file << "#{annotation}" unless content.include?("#{annotation}")
bash_file << "#{path_setting}" unless content.include?("#{path_setting}")
bash_file.close
end
zshrc_path = ENV['HOME']+'/.zshrc'
if File.exist?("#{zshrc_path}")
puts "Export the settings into #{zshrc_path}"
content = File.readlines("#{zshrc_path}")
zshrc = File.open(ENV['HOME']+'/.zshrc', 'a')
zshrc << "\n" unless content.last.eql?("\n")
zshrc << "#{annotation}" unless content.include?("#{annotation}")
zshrc << "#{path_setting}" unless content.include?("#{path_setting}")
zshrc.close
end
end
desc "uninstall", "Uninstall the Flutter SDK"
def uninstall()
if File.exist?("#{@@flutter_root}")
puts "deleting the flutter sdk..."
`rm -rf #{@@flutter_root}`
raise 'git clone failed' unless $?.success?
end
puts "Remove the exported flutter variables in ~/.bash_profile and ~/.zshrc, if not needed anymore."
end
end
end
二:exe/myFlutter
源碼如下:
#!/usr/bin/env ruby
require "myFlutter"
MyFlutter::Tool.start(ARGV)
第六步:執(zhí)行gem build myFlutter.gemspec
此時會發(fā)現(xiàn)工程目錄下面多出來兩個文件:Gemfile.lock
和myFlutter-0.0.1.gem
第七步:測試我們的代碼
執(zhí)行:
gem install --local 你的myFlutter-0.0.1.gem的絕對路徑
安裝之后港令,自己測試一下myFlutter install
是否可用呢
三:總結(jié):
- demo很簡單,不過你讀完的上文給出的教程锈颗,你可以做到更多顷霹。
- ruby是項目ci化的重要組成部分。
- 想要IDE的驗證碼击吱,關(guān)注淋淀、留言。
flutter的廣大愛好者們姨拥,我在微信創(chuàng)建了一個公眾號绅喉,搜索flutter 干貨
、或微信掃一掃下面的二維碼
關(guān)注一下吧叫乌,平時會發(fā)一些flutter源碼解讀柴罐、技術(shù)點使用、平臺化落地相關(guān)的干貨憨奸,也是希望大家能把問題拋出來革屠,讓我也能研究一下,也希望能互相幫助。