#!/bin/bash # # Ensures the latest Chrome Canary is available, downloading it # if necessary. # # Directory ~/.chrome/canary can safely be cached as the existing # version will be checked before reusing a previously downloaded # canary. # set -eusetconst global FOO = "bar" readonly CHROME_SNAPSHOTS = 'https://storage.googleapis.com/chromium-browser-snapshots'TODO declare CHROME_URL = ''TODO declare CHROME_NAME = ''TODO declare CHROME_RELATIVE_BIN = '' if [[ "$OSTYPE" == "linux"* ]] { global CHROME_URL := "$CHROME_SNAPSHOTS/Linux_x64" global CHROME_NAME := 'chrome-linux' global CHROME_RELATIVE_BIN := 'chrome' } elif [[ "$OSTYPE" == "darwin"* ]] { global CHROME_URL := "$CHROME_SNAPSHOTS/Mac" global CHROME_NAME := 'chrome-mac' global CHROME_RELATIVE_BIN := 'Chromium.app/Contents/MacOS/Chromium' } elif [[ "$OSTYPE" == "cygwin" ]] { global CHROME_URL := "$CHROME_SNAPSHOTS/Win" global CHROME_NAME := 'chrome-win32' global CHROME_RELATIVE_BIN := 'chrome.exe' } else { echo "Unknown platform: $OSTYPE" > !2 exit 1 }setconst global FOO = "bar" readonly CHROME_CANARY_DIR = "$HOME/.chrome/canary"setconst global FOO = "bar" readonly CHROME_CANARY_BIN = "$CHROME_CANARY_DIR/$CHROME_NAME/$CHROME_RELATIVE_BIN"setconst global FOO = "bar" readonly CHROME_CANARY_REV_FILE = "$CHROME_CANARY_DIR/VERSION"setconst global FOO = "bar" readonly CHROME_REV = $[curl -s $(CHROME_URL)/LAST_CHANGE] proc getCanary { var existing_version = ''"" if [[ -f $CHROME_CANARY_REV_FILE && -x $CHROME_CANARY_BIN ]] { existing_version := $[cat $CHROME_CANARY_REV_FILE] echo "Found cached Chrome Canary version: $existing_version" } if [[ "$existing_version" != "$CHROME_REV" ]] { echo "Downloading Chrome Canary version: $CHROME_REV" rm -fR $CHROME_CANARY_DIR mkdir -p $CHROME_CANARY_DIR var file = "$CHROME_NAME.zip" curl $(CHROME_URL)/$(CHROME_REV)/$file -o $file unzip $file -d $CHROME_CANARY_DIR rm $file echo $CHROME_REV > $CHROME_CANARY_REV_FILE } } getCanary > !2 echo $CHROME_CANARY_BIN (CommandList children: [ (C {(set)} {(-eu)}) (Assignment keyword: Assign_Readonly pairs: [ (assign_pair lhs: (LhsName name:CHROME_SNAPSHOTS) op: Equal rhs: {(https) (Lit_Other ":") (//storage.googleapis.com/chromium-browser-snapshots)} spids: [35] ) ] spids: [33] ) (Assignment keyword: Assign_Declare pairs: [(assign_pair lhs:(LhsName name:CHROME_URL) op:Equal spids:[42])] spids: [40] ) (Assignment keyword: Assign_Declare pairs: [(assign_pair lhs:(LhsName name:CHROME_NAME) op:Equal spids:[46])] spids: [44] ) (Assignment keyword: Assign_Declare pairs: [(assign_pair lhs:(LhsName name:CHROME_RELATIVE_BIN) op:Equal spids:[50])] spids: [48] ) (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_GlobDEqual left: {(DQ ($ VSub_Name "$OSTYPE"))} right: {(DQ (linux)) (Lit_Other "*")} ) ) terminator: ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:CHROME_URL) op: Equal rhs: {($ VSub_Name "$CHROME_SNAPSHOTS") (/Linux_x64)} spids: [74] ) ] spids: [74] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:CHROME_NAME) op: Equal rhs: {(chrome-linux)} spids: [79] ) ] spids: [79] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:CHROME_RELATIVE_BIN) op: Equal rhs: {(chrome)} spids: [83] ) ] spids: [83] ) ] spids: [-1 71] ) (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_GlobDEqual left: {(DQ ($ VSub_Name "$OSTYPE"))} right: {(DQ (darwin)) (Lit_Other "*")} ) ) terminator: ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:CHROME_URL) op: Equal rhs: {($ VSub_Name "$CHROME_SNAPSHOTS") (/Mac)} spids: [107] ) ] spids: [107] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:CHROME_NAME) op: Equal rhs: {(chrome-mac)} spids: [112] ) ] spids: [112] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:CHROME_RELATIVE_BIN) op: Equal rhs: {(Chromium.app/Contents/MacOS/Chromium)} spids: [116] ) ] spids: [116] ) ] spids: [86 104] ) (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_GlobDEqual left: {(DQ ($ VSub_Name "$OSTYPE"))} right: {(DQ (cygwin))} ) ) terminator: ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:CHROME_URL) op: Equal rhs: {($ VSub_Name "$CHROME_SNAPSHOTS") (/Win)} spids: [139] ) ] spids: [139] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:CHROME_NAME) op: Equal rhs: {(chrome-win32)} spids: [144] ) ] spids: [144] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:CHROME_RELATIVE_BIN) op: Equal rhs: {(chrome.exe)} spids: [148] ) ] spids: [148] ) ] spids: [119 136] ) ] else_action: [ (SimpleCommand words: [{(echo)} {(DQ ("Unknown platform: ") ($ VSub_Name "$OSTYPE"))}] redirects: [(Redir op_id:Redir_GreatAnd fd:-1 arg_word:{(2)} spids:[161])] ) (C {(exit)} {(1)}) ] spids: [151 169] ) (Assignment keyword: Assign_Readonly pairs: [ (assign_pair lhs: (LhsName name:CHROME_CANARY_DIR) op: Equal rhs: {($ VSub_Name "$HOME") (/.chrome/canary)} spids: [174] ) ] spids: [172] ) (Assignment keyword: Assign_Readonly pairs: [ (assign_pair lhs: (LhsName name:CHROME_CANARY_BIN) op: Equal rhs: {($ VSub_Name "$CHROME_CANARY_DIR") (/) ($ VSub_Name "$CHROME_NAME") (/) ($ VSub_Name "$CHROME_RELATIVE_BIN") } spids: [180] ) ] spids: [178] ) (Assignment keyword: Assign_Readonly pairs: [ (assign_pair lhs: (LhsName name:CHROME_CANARY_REV_FILE) op: Equal rhs: {($ VSub_Name "$CHROME_CANARY_DIR") (/VERSION)} spids: [189] ) ] spids: [187] ) (Assignment keyword: Assign_Readonly pairs: [ (assign_pair lhs: (LhsName name:CHROME_REV) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [(C {(curl)} {(-s)} {(${ VSub_Name CHROME_URL) (/LAST_CHANGE)})] ) left_token: spids: [196 205] ) } spids: [195] ) ] spids: [193] ) (FuncDef name: getCanary body: (BraceGroup children: [ (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:existing_version) op: Equal rhs: {(DQ )} spids: [219] ) ] spids: [217] ) (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (LogicalAnd left: (BoolUnary op_id: BoolUnary_f child: {($ VSub_Name "$CHROME_CANARY_REV_FILE")} ) right: (BoolUnary op_id: BoolUnary_x child: {($ VSub_Name "$CHROME_CANARY_BIN")} ) ) ) terminator: ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:existing_version) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [(C {(cat)} {($ VSub_Name "$CHROME_CANARY_REV_FILE")})] ) left_token: spids: [245 249] ) } spids: [244] ) ] spids: [244] ) (C {(echo)} { (DQ ("Found cached Chrome Canary version: ") ($ VSub_Name "$existing_version")) } ) ] spids: [-1 241] ) ] spids: [-1 260] ) (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_GlobNEqual left: {(DQ ($ VSub_Name "$existing_version"))} right: {(DQ ($ VSub_Name "$CHROME_REV"))} ) ) terminator: ) ] action: [ (C {(echo)} {(DQ ("Downloading Chrome Canary version: ") ($ VSub_Name "$CHROME_REV"))} ) (C {(rm)} {(-fR)} {($ VSub_Name "$CHROME_CANARY_DIR")}) (C {(mkdir)} {(-p)} {($ VSub_Name "$CHROME_CANARY_DIR")}) (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:file) op: Equal rhs: {($ VSub_Name "$CHROME_NAME") (.zip)} spids: [309] ) ] spids: [307] ) (C {(curl)} {(${ VSub_Name CHROME_URL) (/) (${ VSub_Name CHROME_REV) (/) ($ VSub_Name "$file") } {(-o)} {($ VSub_Name "$file")} ) (C {(unzip)} {($ VSub_Name "$file")} {(-d)} {($ VSub_Name "$CHROME_CANARY_DIR")}) (C {(rm)} {($ VSub_Name "$file")}) (SimpleCommand words: [{(echo)} {($ VSub_Name "$CHROME_REV")}] redirects: [ (Redir op_id: Redir_Great fd: -1 arg_word: {($ VSub_Name "$CHROME_CANARY_REV_FILE")} spids: [349] ) ] ) ] spids: [-1 281] ) ] spids: [-1 354] ) ] spids: [214] ) spids: [208 213] ) (SimpleCommand words: [{(getCanary)}] redirects: [(Redir op_id:Redir_GreatAnd fd:-1 arg_word:{(2)} spids:[361])] ) (C {(echo)} {($ VSub_Name "$CHROME_CANARY_BIN")}) ] )