mirror of
https://github.com/XcodesOrg/XcodesApp.git
synced 2026-03-25 08:55:46 +00:00
add Xcode-Beta.app Symlink and localizations
This commit is contained in:
parent
78c9207877
commit
7ae956e44d
17 changed files with 55 additions and 21 deletions
|
|
@ -609,10 +609,10 @@ class AppState: ObservableObject {
|
|||
NSPasteboard.general.setString(url.absoluteString, forType: .string)
|
||||
}
|
||||
|
||||
func createSymbolicLink(xcode: Xcode) {
|
||||
func createSymbolicLink(xcode: Xcode, isBeta: Bool = false) {
|
||||
guard let installedXcodePath = xcode.installedPath else { return }
|
||||
|
||||
let destinationPath: Path = Path.installDirectory/"Xcode.app"
|
||||
let destinationPath: Path = Path.installDirectory/"Xcode\(isBeta ? "-Beta" : "").app"
|
||||
|
||||
// does an Xcode.app file exist?
|
||||
if FileManager.default.fileExists(atPath: destinationPath.string) {
|
||||
|
|
@ -634,7 +634,7 @@ class AppState: ObservableObject {
|
|||
|
||||
do {
|
||||
try FileManager.default.createSymbolicLink(atPath: destinationPath.string, withDestinationPath: installedXcodePath.string)
|
||||
Logger.appState.info("Successfully created symbolic link with Xcode.app")
|
||||
Logger.appState.info("Successfully created symbolic link with Xcode\(isBeta ? "-Beta": "").app")
|
||||
} catch {
|
||||
Logger.appState.error("Unable to create symbolic Link")
|
||||
self.error = error
|
||||
|
|
|
|||
|
|
@ -189,6 +189,23 @@ struct CreateSymbolicLinkButton: View {
|
|||
}
|
||||
}
|
||||
|
||||
struct CreateSymbolicBetaLinkButton: View {
|
||||
@EnvironmentObject var appState: AppState
|
||||
let xcode: Xcode?
|
||||
|
||||
var body: some View {
|
||||
Button(action: createSymbolicBetaLink) {
|
||||
Text("CreateSymLinkBeta")
|
||||
}
|
||||
.help("CreateSymLinkBeta")
|
||||
}
|
||||
|
||||
private func createSymbolicBetaLink() {
|
||||
guard let xcode = xcode else { return }
|
||||
appState.createSymbolicLink(xcode: xcode, isBeta: true)
|
||||
}
|
||||
}
|
||||
|
||||
// MARK: - Commands
|
||||
|
||||
struct InstallCommand: View {
|
||||
|
|
|
|||
|
|
@ -6,16 +6,16 @@ struct XcodeListViewRow: View {
|
|||
let xcode: Xcode
|
||||
let selected: Bool
|
||||
let appState: AppState
|
||||
|
||||
|
||||
var body: some View {
|
||||
HStack {
|
||||
appIconView(for: xcode)
|
||||
|
||||
|
||||
VStack(alignment: .leading) {
|
||||
HStack {
|
||||
Text(verbatim: "\(xcode.description) \(xcode.version.buildMetadataIdentifiersDisplay)")
|
||||
.font(.body)
|
||||
|
||||
|
||||
if !xcode.identicalBuilds.isEmpty {
|
||||
Image(systemName: "square.fill.on.square.fill")
|
||||
.font(.subheadline)
|
||||
|
|
@ -25,7 +25,7 @@ struct XcodeListViewRow: View {
|
|||
.help("IdenticalBuilds.help")
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if case let .installed(path) = xcode.installState {
|
||||
Text(verbatim: path.string)
|
||||
.font(.caption)
|
||||
|
|
@ -35,9 +35,9 @@ struct XcodeListViewRow: View {
|
|||
.font(.caption)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Spacer()
|
||||
|
||||
|
||||
selectControl(for: xcode)
|
||||
.padding(.trailing, 16)
|
||||
installControl(for: xcode)
|
||||
|
|
@ -54,14 +54,17 @@ struct XcodeListViewRow: View {
|
|||
RevealButton(xcode: xcode)
|
||||
CopyPathButton(xcode: xcode)
|
||||
CreateSymbolicLinkButton(xcode: xcode)
|
||||
if xcode.version.isPrerelease {
|
||||
CreateSymbolicBetaLinkButton(xcode: xcode)
|
||||
}
|
||||
Divider()
|
||||
UninstallButton(xcode: xcode)
|
||||
|
||||
|
||||
#if DEBUG
|
||||
Divider()
|
||||
Button("Perform post-install steps") {
|
||||
appState.performPostInstallSteps(for: InstalledXcode(path: path)!) as Void
|
||||
}
|
||||
Divider()
|
||||
Button("Perform post-install steps") {
|
||||
appState.performPostInstallSteps(for: InstalledXcode(path: path)!) as Void
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
|
@ -77,7 +80,7 @@ struct XcodeListViewRow: View {
|
|||
.foregroundColor(.secondary)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ViewBuilder
|
||||
private func selectControl(for xcode: Xcode) -> some View {
|
||||
if xcode.installState.installed {
|
||||
|
|
@ -97,7 +100,7 @@ struct XcodeListViewRow: View {
|
|||
EmptyView()
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ViewBuilder
|
||||
private func installControl(for xcode: Xcode) -> some View {
|
||||
switch xcode.installState {
|
||||
|
|
@ -129,31 +132,31 @@ struct XcodeListViewRow_Previews: PreviewProvider {
|
|||
selected: false,
|
||||
appState: AppState()
|
||||
)
|
||||
|
||||
|
||||
XcodeListViewRow(
|
||||
xcode: Xcode(version: Version("12.2.0")!, installState: .notInstalled, selected: false, icon: nil),
|
||||
selected: false,
|
||||
appState: AppState()
|
||||
)
|
||||
|
||||
|
||||
XcodeListViewRow(
|
||||
xcode: Xcode(version: Version("12.1.0")!, installState: .installing(.downloading(progress: configure(Progress(totalUnitCount: 100)) { $0.completedUnitCount = 40 })), selected: false, icon: nil),
|
||||
selected: false,
|
||||
appState: AppState()
|
||||
)
|
||||
|
||||
|
||||
XcodeListViewRow(
|
||||
xcode: Xcode(version: Version("12.0.0")!, installState: .installed(Path("/Applications/Xcode-12.3.0.app")!), selected: false, icon: nil),
|
||||
selected: false,
|
||||
appState: AppState()
|
||||
)
|
||||
|
||||
|
||||
XcodeListViewRow(
|
||||
xcode: Xcode(version: Version("12.0.0+1234A")!, installState: .installed(Path("/Applications/Xcode-12.3.0.app")!), selected: false, icon: nil),
|
||||
selected: false,
|
||||
appState: AppState()
|
||||
)
|
||||
|
||||
|
||||
XcodeListViewRow(
|
||||
xcode: Xcode(version: Version("12.0.0+1234A")!, identicalBuilds: [Version("12.0.0-RC+1234A")!], installState: .installed(Path("/Applications/Xcode-12.3.0.app")!), selected: false, icon: nil),
|
||||
selected: false,
|
||||
|
|
|
|||
|
|
@ -16,6 +16,7 @@
|
|||
"OpenDescription" = "Diese Version öffnen";
|
||||
"CopyPath" = "Pfad kopieren";
|
||||
"CreateSymLink" = "Symlink als Xcode.app erstellen";
|
||||
"CreateSymLinkBeta" = "Symlink als Xcode-Beta.app erstellen";
|
||||
"Uninstall" = "Deinstallieren";
|
||||
"Selected" = "Ausgewählt";
|
||||
"Select" = "Auswählen";
|
||||
|
|
|
|||
|
|
@ -16,6 +16,7 @@
|
|||
"OpenDescription" = "Open this version";
|
||||
"CopyPath" = "Copy Path";
|
||||
"CreateSymLink" = "Create Symlink as Xcode.app";
|
||||
"CreateSymLinkBeta" = "Create Symlink as Xcode-Beta.app";
|
||||
"Uninstall" = "Uninstall";
|
||||
"Selected" = "Selected";
|
||||
"Select" = "Select";
|
||||
|
|
|
|||
|
|
@ -16,6 +16,7 @@
|
|||
"OpenDescription" = "Abrir esta versión";
|
||||
"CopyPath" = "Copiar Ruta";
|
||||
"CreateSymLink" = "Crear Symlink como Xcode.app";
|
||||
"CreateSymLinkBeta" = "Crear Symlink como Xcode-Beta.app";
|
||||
"Uninstall" = "Desinstalar";
|
||||
"Selected" = "Seleccionado";
|
||||
"Select" = "Seleccionar";
|
||||
|
|
|
|||
|
|
@ -16,6 +16,7 @@
|
|||
"OpenDescription" = "Avaa tämä versio";
|
||||
"CopyPath" = "Kopioi polku";
|
||||
"CreateSymLink" = "Luo Symlink nimellä Xcode.app";
|
||||
"CreateSymLinkBeta" = "Luo Symlink nimellä Xcode-Beta.app";
|
||||
"Uninstall" = "Poista";
|
||||
"Selected" = "Valittu";
|
||||
"Select" = "Valitse";
|
||||
|
|
|
|||
|
|
@ -17,6 +17,7 @@
|
|||
"OpenDescription" = "Ouvrir cette version";
|
||||
"CopyPath" = "Copier le chemin d'accès";
|
||||
"CreateSymLink" = "Créer un Symlink pour Xcode.app";
|
||||
"CreateSymLink" = "Créer un Symlink pour Xcode-Beta.app";
|
||||
"Uninstall" = "Désinstaller";
|
||||
"Selected" = "Sélectionné";
|
||||
"Select" = "Sélectionner";
|
||||
|
|
|
|||
|
|
@ -16,6 +16,7 @@
|
|||
"OpenDescription" = "इस संस्करण को खोलें";
|
||||
"CopyPath" = "पथ की कॉपी करे";
|
||||
"CreateSymLink" = "Xcode.app के रूप में सिमलिंक बनाएं";
|
||||
"CreateSymLinkBeta" = "Xcode-Beta.app के रूप में सिमलिंक बनाएं";
|
||||
"Uninstall" = "असंस्थापित करे";
|
||||
"Selected" = "चयनित";
|
||||
"Select" = "चयन करे";
|
||||
|
|
|
|||
|
|
@ -16,6 +16,7 @@
|
|||
"OpenDescription" = "Apri questa versione";
|
||||
"CopyPath" = "Copia Percorso";
|
||||
"CreateSymLink" = "Crea Symlink come Xcode.app";
|
||||
"CreateSymLinkBeta" = "Crea Symlink come Xcode-Beta.app";
|
||||
"Uninstall" = "Disinstalla";
|
||||
"Selected" = "Selezionato";
|
||||
"Select" = "Seleziona";
|
||||
|
|
|
|||
|
|
@ -16,6 +16,7 @@
|
|||
"OpenDescription" = "このバージョンを開く";
|
||||
"CopyPath" = "パスをコピー";
|
||||
"CreateSymLink" = "Xcode.appとしてシンボリックリンクを作成";
|
||||
"CreateSymLinkBeta" = "Xcode-Beta.appとしてシンボリックリンクを作成";
|
||||
"Uninstall" = "アンインストール";
|
||||
"Selected" = "アクティブ";
|
||||
"Select" = "アクティブにする";
|
||||
|
|
|
|||
|
|
@ -16,6 +16,7 @@
|
|||
"OpenDescription" = "이 버전 열기";
|
||||
"CopyPath" = "경로 복사하기";
|
||||
"CreateSymLink" = "Xcode.app과 같은 Symlink 만들기";
|
||||
"CreateSymLinkBeta" = "Xcode-Beta.app과 같은 Symlink 만들기";
|
||||
"Uninstall" = "제거";
|
||||
"Selected" = "선택됨";
|
||||
"Select" = "선택";
|
||||
|
|
|
|||
|
|
@ -16,6 +16,7 @@
|
|||
"OpenDescription" = "Открыть эту версию";
|
||||
"CopyPath" = "Копировать путь";
|
||||
"CreateSymLink" = "Создать символическую ссылку к Xcode.app";
|
||||
"CreateSymLinkBeta" = "Создать символическую ссылку к Xcode-Beta.app";
|
||||
"Uninstall" = "Удалить";
|
||||
"Selected" = "Выбрано";
|
||||
"Select" = "Выбрать";
|
||||
|
|
|
|||
|
|
@ -16,6 +16,7 @@
|
|||
"OpenDescription" = "Bu sürümü aç";
|
||||
"CopyPath" = "Yolu Kopyala";
|
||||
"CreateSymLink" = "Xcode.app olarak sembolik link yarat";
|
||||
"CreateSymLinkBeta" = "Xcode-Beta.app olarak sembolik link yarat";
|
||||
"Uninstall" = "Kaldır";
|
||||
"Selected" = "Seçili";
|
||||
"Select" = "Seç";
|
||||
|
|
|
|||
|
|
@ -16,6 +16,7 @@
|
|||
"OpenDescription" = "Запустити цю версію";
|
||||
"CopyPath" = "Скопіювати шлях";
|
||||
"CreateSymLink" = "Створити символічну ссилку як Xcode.app";
|
||||
"CreateSymLinkBeta" = "Створити символічну ссилку як Xcode-Beta.app";
|
||||
"Uninstall" = "Видалити";
|
||||
"Selected" = "Обрано";
|
||||
"Select" = "Обрати";
|
||||
|
|
|
|||
|
|
@ -16,6 +16,7 @@
|
|||
"OpenDescription" = "打开此版本";
|
||||
"CopyPath" = "复制文件位置";
|
||||
"CreateSymLink" = "以Xcode.app创建软链接";
|
||||
"CreateSymLinkBeta" = "以Xcode-Beta.app创建软链接";
|
||||
"Uninstall" = "卸载";
|
||||
"Selected" = "已选定";
|
||||
"Select" = "选定";
|
||||
|
|
|
|||
|
|
@ -16,6 +16,7 @@
|
|||
"OpenDescription" = "打開這個版本";
|
||||
"CopyPath" = "拷貝路徑";
|
||||
"CreateSymLink" = "製作 Xcode.app 的 Symlink";
|
||||
"CreateSymLink" = "製作 Xcode-Beta.app 的 Symlink";
|
||||
"Uninstall" = "解除安裝";
|
||||
"Selected" = "已選取";
|
||||
"Select" = "選取";
|
||||
|
|
|
|||
Loading…
Reference in a new issue