public string GetDirectory(WellKnownDirectory directory)
        {
            string path;

            switch (directory)
            {
            case WellKnownDirectory.Bin:
                path = Path.GetDirectoryName(Assembly.GetEntryAssembly().Location);
                break;

            case WellKnownDirectory.Diag:
                path = Path.Combine(
                    GetDirectory(WellKnownDirectory.Root),
                    Constants.Path.DiagDirectory);
                break;

            case WellKnownDirectory.Externals:
                path = Path.Combine(
                    GetDirectory(WellKnownDirectory.Root),
                    Constants.Path.ExternalsDirectory);
                break;

            case WellKnownDirectory.Root:
                path = new DirectoryInfo(GetDirectory(WellKnownDirectory.Bin)).Parent.FullName;
                break;

            case WellKnownDirectory.Temp:
                path = Path.Combine(
                    GetDirectory(WellKnownDirectory.Work),
                    Constants.Path.TempDirectory);
                break;

            case WellKnownDirectory.Actions:
                path = Path.Combine(
                    GetDirectory(WellKnownDirectory.Work),
                    Constants.Path.ActionsDirectory);
                break;

            case WellKnownDirectory.Tools:
                path = Environment.GetEnvironmentVariable("RUNNER_TOOL_CACHE");

                if (string.IsNullOrEmpty(path))
                {
                    path = Path.Combine(
                        GetDirectory(WellKnownDirectory.Work),
                        Constants.Path.ToolDirectory);
                }
                break;

            case WellKnownDirectory.Update:
                path = Path.Combine(
                    GetDirectory(WellKnownDirectory.Work),
                    Constants.Path.UpdateDirectory);
                break;

            case WellKnownDirectory.Work:
                path = Path.Combine(
                    _tempDirectoryRoot,
                    WellKnownDirectory.Work.ToString());
                break;

            default:
                throw new NotSupportedException($"Unexpected well known directory: '{directory}'");
            }

            _trace.Info($"Well known directory '{directory}': '{path}'");
            return(path);
        }
Beispiel #2
0
 public string GetDirectory(WellKnownDirectory directory)
 {
     throw new Exception("TODO: USE A NEW RANDOM TEMP DIR FOR EACH TEST. TEST-HOST-CONTEXT TEARDOWN CAN CLEANUP THE DIRECTORY");
 }
        public string GetDirectory(WellKnownDirectory directory)
        {
            string path;

            switch (directory)
            {
            case WellKnownDirectory.Bin:
                path = Path.GetDirectoryName(Assembly.GetEntryAssembly().Location);
                break;

            case WellKnownDirectory.Diag:
                path = Path.Combine(
                    GetDirectory(WellKnownDirectory.Root),
                    Constants.Path.DiagDirectory);
                break;

            case WellKnownDirectory.Externals:
                path = Path.Combine(
                    GetDirectory(WellKnownDirectory.Root),
                    Constants.Path.ExternalsDirectory);
                break;

            case WellKnownDirectory.LegacyPSHost:
                path = Path.Combine(
                    GetDirectory(WellKnownDirectory.Externals),
                    Constants.Path.LegacyPSHostDirectory);
                break;

            case WellKnownDirectory.Root:
                path = new DirectoryInfo(GetDirectory(WellKnownDirectory.Bin)).Parent.FullName;
                break;

            case WellKnownDirectory.ServerOM:
                path = Path.Combine(
                    GetDirectory(WellKnownDirectory.Externals),
                    Constants.Path.ServerOMDirectory);
                break;

            case WellKnownDirectory.Tf:
                path = Path.Combine(
                    GetDirectory(WellKnownDirectory.Externals),
                    Constants.Path.TfDirectory);
                break;

            case WellKnownDirectory.Tee:
                path = Path.Combine(
                    GetDirectory(WellKnownDirectory.Externals),
                    Constants.Path.TeeDirectory);
                break;

            case WellKnownDirectory.Temp:
                path = Path.Combine(
                    GetDirectory(WellKnownDirectory.Work),
                    Constants.Path.TempDirectory);
                break;

            case WellKnownDirectory.Tasks:
                path = Path.Combine(
                    GetDirectory(WellKnownDirectory.Work),
                    Constants.Path.TasksDirectory);
                break;

            case WellKnownDirectory.Tools:
                path = Environment.GetEnvironmentVariable("AGENT_TOOLSDIRECTORY") ?? Environment.GetEnvironmentVariable(Constants.Variables.Agent.ToolsDirectory);
                if (string.IsNullOrEmpty(path))
                {
                    path = Path.Combine(
                        GetDirectory(WellKnownDirectory.Work),
                        Constants.Path.ToolDirectory);
                }
                break;

            case WellKnownDirectory.Update:
                path = Path.Combine(
                    GetDirectory(WellKnownDirectory.Work),
                    Constants.Path.UpdateDirectory);
                break;

            case WellKnownDirectory.Work:
                path = Path.Combine(
                    _tempDirectoryRoot,
                    WellKnownDirectory.Work.ToString());
                break;

            default:
                throw new NotSupportedException($"Unexpected well known directory: '{directory}'");
            }

            _trace.Info($"Well known directory '{directory}': '{path}'");
            return(path);
        }
        public virtual string GetDirectory(WellKnownDirectory directory)
        {
            string path;

            switch (directory)
            {
            case WellKnownDirectory.Bin:
                path = Path.GetDirectoryName(Assembly.GetEntryAssembly().Location);
                break;

            case WellKnownDirectory.Diag:
                path = Path.Combine(
                    GetDirectory(WellKnownDirectory.Root),
                    Constants.Path.DiagDirectory);
                break;

            case WellKnownDirectory.Externals:
                path = Path.Combine(
                    GetDirectory(WellKnownDirectory.Root),
                    Constants.Path.ExternalsDirectory);
                break;

            case WellKnownDirectory.LegacyPSHost:
                path = Path.Combine(
                    GetDirectory(WellKnownDirectory.Externals),
                    Constants.Path.LegacyPSHostDirectory);
                break;

            case WellKnownDirectory.Root:
                path = new DirectoryInfo(GetDirectory(WellKnownDirectory.Bin)).Parent.FullName;
                break;

            case WellKnownDirectory.ServerOM:
                path = Path.Combine(
                    GetDirectory(WellKnownDirectory.Externals),
                    Constants.Path.ServerOMDirectory);
                break;

            case WellKnownDirectory.Tf:
                path = Path.Combine(
                    GetDirectory(WellKnownDirectory.Externals),
                    Constants.Path.TfDirectory);
                break;

            case WellKnownDirectory.Tee:
                path = Path.Combine(
                    GetDirectory(WellKnownDirectory.Externals),
                    Constants.Path.TeeDirectory);
                break;

            case WellKnownDirectory.Temp:
                path = Path.Combine(
                    GetDirectory(WellKnownDirectory.Work),
                    Constants.Path.TempDirectory);
                break;

            case WellKnownDirectory.Tasks:
                path = Path.Combine(
                    GetDirectory(WellKnownDirectory.Work),
                    Constants.Path.TasksDirectory);
                break;

            case WellKnownDirectory.TaskZips:
                path = Path.Combine(
                    GetDirectory(WellKnownDirectory.Work),
                    Constants.Path.TaskZipsDirectory);
                break;

            case WellKnownDirectory.Tools:
                path = AgentKnobs.AgentToolsDirectory.GetValue(this).AsString();
                if (string.IsNullOrEmpty(path))
                {
                    path = Path.Combine(
                        GetDirectory(WellKnownDirectory.Work),
                        Constants.Path.ToolDirectory);
                }
                break;

            case WellKnownDirectory.Update:
                path = Path.Combine(
                    GetDirectory(WellKnownDirectory.Work),
                    Constants.Path.UpdateDirectory);
                break;

            case WellKnownDirectory.Work:
                var           configurationStore = GetService <IConfigurationStore>();
                AgentSettings settings           = configurationStore.GetSettings();
                ArgUtil.NotNull(settings, nameof(settings));
                ArgUtil.NotNullOrEmpty(settings.WorkFolder, nameof(settings.WorkFolder));
                path = Path.GetFullPath(Path.Combine(
                                            GetDirectory(WellKnownDirectory.Root),
                                            settings.WorkFolder));
                break;

            default:
                throw new NotSupportedException($"Unexpected well known directory: '{directory}'");
            }

            _trace.Info($"Well known directory '{directory}': '{path}'");
            return(path);
        }
Beispiel #5
0
        public string GetDirectory(WellKnownDirectory directory)
        {
            string path;

            switch (directory)
            {
            case WellKnownDirectory.Bin:
                path = Path.GetDirectoryName(Assembly.GetEntryAssembly().Location);
                break;

            case WellKnownDirectory.Diag:
                path = Path.Combine(
                    GetDirectory(WellKnownDirectory.Root),
                    Constants.Path.DiagDirectory);
                break;

            case WellKnownDirectory.Externals:
                path = Path.Combine(
                    GetDirectory(WellKnownDirectory.Root),
                    Constants.Path.ExternalsDirectory);
                break;

            case WellKnownDirectory.Root:
                path = new DirectoryInfo(GetDirectory(WellKnownDirectory.Bin)).Parent.FullName;
                break;

            case WellKnownDirectory.Temp:
                path = Path.Combine(
                    GetDirectory(WellKnownDirectory.Work),
                    Constants.Path.TempDirectory);
                break;

            case WellKnownDirectory.Actions:
                path = Path.Combine(
                    GetDirectory(WellKnownDirectory.Work),
                    Constants.Path.ActionsDirectory);
                break;

            case WellKnownDirectory.Tools:
                // TODO: Coallesce to just check RUNNER_TOOL_CACHE when images stabilize
                path = Environment.GetEnvironmentVariable("RUNNER_TOOL_CACHE") ?? Environment.GetEnvironmentVariable("RUNNER_TOOLSDIRECTORY") ?? Environment.GetEnvironmentVariable("AGENT_TOOLSDIRECTORY") ?? Environment.GetEnvironmentVariable(Constants.Variables.Agent.ToolsDirectory);

                if (string.IsNullOrEmpty(path))
                {
                    path = Path.Combine(
                        GetDirectory(WellKnownDirectory.Work),
                        Constants.Path.ToolDirectory);
                }
                break;

            case WellKnownDirectory.Update:
                path = Path.Combine(
                    GetDirectory(WellKnownDirectory.Work),
                    Constants.Path.UpdateDirectory);
                break;

            case WellKnownDirectory.Work:
                var            configurationStore = GetService <IConfigurationStore>();
                RunnerSettings settings           = configurationStore.GetSettings();
                ArgUtil.NotNull(settings, nameof(settings));
                ArgUtil.NotNullOrEmpty(settings.WorkFolder, nameof(settings.WorkFolder));
                path = Path.GetFullPath(Path.Combine(
                                            GetDirectory(WellKnownDirectory.Root),
                                            settings.WorkFolder));
                break;

            default:
                throw new NotSupportedException($"Unexpected well known directory: '{directory}'");
            }

            _trace.Info($"Well known directory '{directory}': '{path}'");
            return(path);
        }
Beispiel #6
0
        public string GetDirectory(WellKnownDirectory directory)
        {
            string path;

            switch (directory)
            {
            case WellKnownDirectory.Bin:
                path = Path.GetDirectoryName(Assembly.GetEntryAssembly().Location);
                break;

            case WellKnownDirectory.Diag:
                path = Path.Combine(
                    GetDirectory(WellKnownDirectory.Root),
                    Constants.Path.DiagDirectory);
                break;

            case WellKnownDirectory.Externals:
                path = Path.Combine(
                    GetDirectory(WellKnownDirectory.Root),
                    Constants.Path.ExternalsDirectory);
                break;

            case WellKnownDirectory.LegacyPSHost:
                path = Path.Combine(
                    GetDirectory(WellKnownDirectory.Externals),
                    Constants.Path.LegacyPSHostDirectory);
                break;

            case WellKnownDirectory.Root:
                path = new DirectoryInfo(GetDirectory(WellKnownDirectory.Bin)).Parent.FullName;
                break;

            case WellKnownDirectory.ServerOM:
                path = Path.Combine(
                    GetDirectory(WellKnownDirectory.Externals),
                    Constants.Path.ServerOMDirectory);
                break;

            case WellKnownDirectory.Tee:
                path = Path.Combine(
                    GetDirectory(WellKnownDirectory.Externals),
                    Constants.Path.TeeDirectory);
                break;

            case WellKnownDirectory.Tasks:
                path = Path.Combine(
                    GetDirectory(WellKnownDirectory.Work),
                    Constants.Path.TasksDirectory);
                break;

            case WellKnownDirectory.Update:
                path = Path.Combine(
                    GetDirectory(WellKnownDirectory.Work),
                    Constants.Path.UpdateDirectory);
                break;

            case WellKnownDirectory.Work:
                path = Path.Combine(
                    _tempDirectoryRoot,
                    WellKnownDirectory.Work.ToString());
                break;

            default:
                throw new NotSupportedException($"Unexpected well known directory: '{directory}'");
            }

            _trace.Info($"Well known directory '{directory}': '{path}'");
            return(path);
        }