ruby元編程助力Flutter持續(xù)集成

前言: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.lockmyFlutter-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)的干貨憨奸,也是希望大家能把問題拋出來革屠,讓我也能研究一下,也希望能互相幫助。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末似芝,一起剝皮案震驚了整個濱河市那婉,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌党瓮,老刑警劉巖详炬,帶你破解...
    沈念sama閱讀 219,270評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異寞奸,居然都是意外死亡呛谜,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,489評論 3 395
  • 文/潘曉璐 我一進店門枪萄,熙熙樓的掌柜王于貴愁眉苦臉地迎上來隐岛,“玉大人,你說我怎么就攤上這事瓷翻【郯迹” “怎么了?”我有些...
    開封第一講書人閱讀 165,630評論 0 356
  • 文/不壞的土叔 我叫張陵齐帚,是天一觀的道長妒牙。 經(jīng)常有香客問我,道長童谒,這世上最難降的妖魔是什么单旁? 我笑而不...
    開封第一講書人閱讀 58,906評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮饥伊,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘蔫饰。我一直安慰自己琅豆,他們只是感情好,可當我...
    茶點故事閱讀 67,928評論 6 392
  • 文/花漫 我一把揭開白布篓吁。 她就那樣靜靜地躺著茫因,像睡著了一般。 火紅的嫁衣襯著肌膚如雪杖剪。 梳的紋絲不亂的頭發(fā)上冻押,一...
    開封第一講書人閱讀 51,718評論 1 305
  • 那天,我揣著相機與錄音盛嘿,去河邊找鬼洛巢。 笑死,一個胖子當著我的面吹牛次兆,可吹牛的內(nèi)容都是我干的稿茉。 我是一名探鬼主播,決...
    沈念sama閱讀 40,442評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼漓库!你這毒婦竟也來了恃慧?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,345評論 0 276
  • 序言:老撾萬榮一對情侶失蹤渺蒿,失蹤者是張志新(化名)和其女友劉穎痢士,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體茂装,經(jīng)...
    沈念sama閱讀 45,802評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡良瞧,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,984評論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了训唱。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片褥蚯。...
    茶點故事閱讀 40,117評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖况增,靈堂內(nèi)的尸體忽然破棺而出赞庶,到底是詐尸還是另有隱情,我是刑警寧澤澳骤,帶...
    沈念sama閱讀 35,810評論 5 346
  • 正文 年R本政府宣布歧强,位于F島的核電站,受9級特大地震影響为肮,放射性物質(zhì)發(fā)生泄漏摊册。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,462評論 3 331
  • 文/蒙蒙 一颊艳、第九天 我趴在偏房一處隱蔽的房頂上張望茅特。 院中可真熱鬧,春花似錦棋枕、人聲如沸白修。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,011評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽兵睛。三九已至,卻和暖如春窥浪,著一層夾襖步出監(jiān)牢的瞬間祖很,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,139評論 1 272
  • 我被黑心中介騙來泰國打工漾脂, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留假颇,地道東北人。 一個月前我還...
    沈念sama閱讀 48,377評論 3 373
  • 正文 我出身青樓符相,卻偏偏與公主長得像拆融,于是被迫代替她去往敵國和親蠢琳。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,060評論 2 355

推薦閱讀更多精彩內(nèi)容