A small menubar app that allows you to switch between R versions quickly (if you have multiple versions of R framework installed).
https://rud.is/rswitch
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
78 lines
2.7 KiB
78 lines
2.7 KiB
//
|
|
// DownloadTarball.swift
|
|
// RSwitch
|
|
//
|
|
// Created by hrbrmstr on 8/24/19.
|
|
// Copyright © 2019 Bob Rudis. All rights reserved.
|
|
//
|
|
|
|
import Foundation
|
|
import Cocoa
|
|
|
|
let tarballURL = "https://mac.r-project.org/el-capitan/R-devel/R-devel-el-capitan-sa-x86_64.tar.gz"
|
|
let tarballFile = NSString(string: tarballURL).lastPathComponent as String
|
|
|
|
extension AppDelegate {
|
|
|
|
// Download latest r-devel tarball
|
|
@objc func download_latest_tarball(_ sender: NSMenuItem?) {
|
|
|
|
self.rdevel_enabled = false
|
|
|
|
let dlurl = URL(string: tarballURL)!
|
|
let dldir = FileManager.default.urls(for: .downloadsDirectory, in: .userDomainMask).first!
|
|
var dlfile = dldir
|
|
|
|
dlfile.appendPathComponent(tarballFile)
|
|
|
|
if (FileManager.default.fileExists(atPath: dlfile.relativePath)) {
|
|
|
|
self.notifyUser(title: "Action required", subtitle: "r-devel Download", text: "R-devel tarball already exists. Please remove or rename it before downloading.")
|
|
|
|
NSWorkspace.shared.openFile(dldir.path, withApplication: "Finder")
|
|
NSWorkspace.shared.activateFileViewerSelecting([dlfile])
|
|
|
|
self.rdevel_enabled = true
|
|
|
|
} else {
|
|
|
|
let task = URLSession.shared.downloadTask(with: dlurl) {
|
|
tempURL, response, error in
|
|
|
|
if (error != nil) {
|
|
self.notifyUser(title: "Action failed", subtitle: "r-devel Download", text: "Error: " + error!.localizedDescription)
|
|
} else if (response != nil) {
|
|
|
|
let status = (response as? HTTPURLResponse)!.statusCode
|
|
if (status < 300) {
|
|
|
|
guard let fileURL = tempURL else {
|
|
DispatchQueue.main.async { [weak self] in self?.rdevel_enabled = true }
|
|
return
|
|
}
|
|
|
|
do {
|
|
try FileManager.default.url(for: .documentDirectory, in: .userDomainMask, appropriateFor: nil, create: false)
|
|
try FileManager.default.moveItem(at: fileURL, to: dlfile)
|
|
self.notifyUser(title: "Success", subtitle: "r-devel Download", text: "Download of latest r-devel (" + dlurl.lastPathComponent + ") successful.")
|
|
NSWorkspace.shared.openFile(dldir.path, withApplication: "Finder")
|
|
NSWorkspace.shared.activateFileViewerSelecting([dlfile])
|
|
} catch {
|
|
self.notifyUser(title: "Action failed", subtitle: "r-devel Download", text: "Error: \(error)")
|
|
}
|
|
|
|
} else {
|
|
self.notifyUser(title: "Action failed", subtitle: "r-devel Download", text: "Error downloading latest r-devel. Status code: " + String(status))
|
|
}
|
|
}
|
|
|
|
DispatchQueue.main.async { [weak self] in self?.rdevel_enabled = true }
|
|
|
|
}
|
|
|
|
task.resume()
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|