Created
June 18, 2010 03:16
-
-
Save voodoojello/443173 to your computer and use it in GitHub Desktop.
Super Cheesy Chromium Updater for MacOS
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #!/usr/bin/perl -w | |
| # | |
| use strict; | |
| use warnings; | |
| use FindBin qw($Bin); | |
| my $global = { | |
| name => 'Super Cheesy Chromium Updater for MacOS', | |
| version => '0.0.2.9b', | |
| released => 'Tue Sep 13 23:11:22 CDT 2011', | |
| contact => '[email protected]', | |
| temp_dir => $Bin . '/chromium-temp', | |
| restore => $Bin . '/restore', | |
| vjcu_url => 'http://voodoojello.net/chromium-updater/mac', | |
| loc_build => '', # Local SVNRevision build number from plist | |
| }; | |
| # | |
| # Binary dependencies *should* be in $PATH but there's been | |
| # reported issues with MacPorts installs causing grief with | |
| # unzip args -- Change as needed. | |
| # | |
| my $curl = '/usr/bin/curl'; | |
| my $unzip = '/usr/bin/unzip'; | |
| system('clear'); | |
| print '=' x 85 . "\n"; | |
| print " $global->{name} v$global->{version}\n"; | |
| print " Released: $global->{released}\n"; | |
| print '=' x 85 . "\n\n"; | |
| print "--> Retrieving buildbot URL and Build ID...\n"; | |
| my $bot_data = eval(`$curl -s -L $global->{vjcu_url}`); | |
| if ($bot_data->{id}) { | |
| print "--> Chromium LATEST build appears to be $bot_data->{id}.\n"; | |
| if (stat("/Applications/Chromium.app/Contents/Info.plist")) { | |
| print "--> Checking local Chromium build version...\n"; | |
| open(PLIST,"</Applications/Chromium.app/Contents/Info.plist"); chomp(my @app_info = <PLIST>); close(PLIST); | |
| for my $l (0 .. scalar(@app_info)) { | |
| if ($app_info[$l] =~ m/SVNRevision/) { | |
| $global->{loc_build} = $app_info[($l + 1)]; | |
| $global->{loc_build} =~ s/\t//; | |
| $global->{loc_build} =~ s/\<string\>//; | |
| $global->{loc_build} =~ s/\<\/string\>//; | |
| last; | |
| } | |
| } | |
| print "--> Local Chromium build version is $global->{loc_build}.\n"; | |
| } | |
| else { | |
| print "--> Chromium does not appear to be installed... Install it now? [y/n] "; | |
| unless (getc(STDIN) =~ m/y/i) { print "--> Aborting!\n\n"; exit; } | |
| } | |
| if ($bot_data->{id} eq $global->{loc_build}) { | |
| print "--> Most current build already installed.\n"; | |
| } | |
| else { | |
| print "--> Creating temporary dirs...\n"; | |
| if (stat("$global->{temp_dir}")) { system("rm -R $global->{temp_dir}"); } | |
| system("mkdir $global->{temp_dir}"); | |
| print "--> Downloading build $bot_data->{id}...\n\n"; | |
| system("$curl -k -L $bot_data->{url} -o $global->{temp_dir}/chrome-mac.zip"); | |
| print "\n"; | |
| print "--> Creating restore point for build $bot_data->{id}..."; | |
| if (!stat("$global->{restore}")) { system("mkdir -p $global->{restore}"); } | |
| system("mkdir -p $global->{restore}/$bot_data->{id}"); | |
| system("cp -f $global->{temp_dir}/chrome-mac.zip $global->{restore}/$bot_data->{id}/."); | |
| print "\n"; | |
| print "--> Download complete. Extracting ZIP file...\n"; | |
| system("$unzip $global->{temp_dir}/chrome-mac.zip -d $global->{temp_dir} > /dev/null"); | |
| if (`ps ux` =~ m/Chromium/) { | |
| print "--> Sending TERM signal to all running Chromium processes...\n"; | |
| system("killall Chromium"); | |
| } | |
| if (stat("/Applications/Chromium.app")) { | |
| print "--> Removing previously installed build...\n"; | |
| system("rm -R /Applications/Chromium.app"); | |
| } | |
| print "--> Preparing to install version $bot_data->{id}...\n"; | |
| system("cp -f -H -R $global->{temp_dir}/chrome-mac/Chromium.app /Applications/."); | |
| print "--> Cleaning up...\n"; | |
| system("rm -R $global->{temp_dir}"); | |
| } | |
| } | |
| else { | |
| print "--> Could not reach buildbot... Try again later.\n"; | |
| } | |
| print "--> Exiting.\n\n"; | |
| print '=' x 85 . "\n"; | |
| print ' ' x 45 . "for more info: $global->{contact}\n\n"; | |
| print ' Press [ENTER] to continue... '; my $pause = <STDIN>; | |
| exit; | |
| __END__ | |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #!/usr/bin/perl -w | |
| # | |
| # File: index.pl | |
| # App Name: Chromium Build-Bot URL Updater | |
| # App Version: 0.0.0.1a | |
| # Created: Tue Jun 07 22:58:50 CDT 2011 | |
| # Modified: Thu Jun 09 07:29:43 CDT 2011 | |
| # Authored: Mark Page [[email protected]] | |
| # File Version: 0.0.0.1a | |
| # | |
| # | |
| use strict; | |
| use warnings; | |
| use CGI qw/:standard/; | |
| use CGI::Carp qw(fatalsToBrowser); | |
| print header('text/plain'); | |
| my $build_id = `curl -s -L http://commondatastorage.googleapis.com/chromium-browser-snapshots/Mac/LAST_CHANGE`; | |
| print ' | |
| { | |
| \'id\' => \'' . $build_id . '\', | |
| \'url\' => \'http://commondatastorage.googleapis.com/chromium-browser-snapshots/Mac/' . $build_id . '/chrome-mac.zip\', | |
| } | |
| '; | |
| exit; | |
| __END__ |
Author
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
snapshots-query.pl returns build id and snapshot build binary url to $global->{vjcu_url}. Populates $bot_data->{id} and $bot_data->{url} via eval'd cURL call. LWP would probably be a more elegant solution.