1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- using System;
- using System.Collections.Generic;
- using System.IO;
-
- using UnityEditor;
- using UnityEngine;
-
- using Codice.LogWrapper;
-
- namespace Unity.PlasticSCM.Editor.ProjectDownloader
- {
- internal static class CloudProjectDownloader
- {
- internal const string IS_PROJECT_DOWNLOADER_ALREADY_EXECUTED_KEY =
- "PlasticSCM.ProjectDownloader.IsAlreadyExecuted";
-
- internal const string SHOULD_PROJECT_BE_DOWNLOADED_KEY =
- "PlasticSCM.ProjectDownloader.ShouldProjectBeDownloaded";
-
- internal static void Initialize()
- {
- EditorApplication.update += RunOnceWhenAccessTokenIsInitialized;
- }
-
- static void RunOnceWhenAccessTokenIsInitialized()
- {
- if (string.IsNullOrEmpty(CloudProjectSettings.accessToken))
- return;
-
- EditorApplication.update -= RunOnceWhenAccessTokenIsInitialized;
-
- Execute(CloudProjectSettings.accessToken);
- }
-
- static void Execute(string unityAccessToken)
- {
- if (SessionState.GetBool(
- IS_PROJECT_DOWNLOADER_ALREADY_EXECUTED_KEY, false))
- {
- return;
- }
-
- DownloadRepository(unityAccessToken);
-
- SessionState.SetBool(
- IS_PROJECT_DOWNLOADER_ALREADY_EXECUTED_KEY, true);
- }
-
- internal static void DownloadRepository(string unityAccessToken)
- {
- DownloadRepository(unityAccessToken, Environment.GetCommandLineArgs());
- }
-
- internal static void DownloadRepository(string unityAccessToken, string[] commandLineArgs)
- {
- Dictionary<string, string> args = CommandLineArguments.Build(commandLineArgs);
-
- mLog.DebugFormat(
- "Processing Unity arguments: {0}", string.Join(" ", commandLineArgs));
-
- string projectPath = ParseArguments.ProjectPath(args);
- string cloudRepository = ParseArguments.CloudProject(args);
- string cloudOrganization = ParseArguments.CloudOrganization(args);
-
- if (string.IsNullOrEmpty(projectPath) ||
- string.IsNullOrEmpty(cloudRepository) ||
- string.IsNullOrEmpty(cloudOrganization))
- {
- return;
- }
-
- SessionState.SetBool(
- SHOULD_PROJECT_BE_DOWNLOADED_KEY, true);
-
- PlasticApp.InitializeIfNeeded();
-
- DownloadRepositoryOperation downloadOperation =
- new DownloadRepositoryOperation();
-
- downloadOperation.DownloadRepositoryToPathIfNeeded(
- cloudRepository,
- cloudOrganization,
- Path.GetFullPath(projectPath),
- unityAccessToken);
- }
-
- static readonly ILog mLog = LogManager.GetLogger("ProjectDownloader");
- }
- }
|