public CookiecutterControl(Redirector outputWindow, ICookiecutterTelemetry telemetry, Uri feedUrl, Action<string> openFolder, Action updateCommandUI) { _updateCommandUI = updateCommandUI; _checkForUpdatesTimer = new DispatcherTimer(); _checkForUpdatesTimer.Tick += new EventHandler(CheckForUpdateTimer_Tick); string gitExeFilePath = GitClient.RecommendedGitFilePath; var gitClient = new GitClient(gitExeFilePath, outputWindow); var gitHubClient = new GitHubClient(); ViewModel = new CookiecutterViewModel( CookiecutterClientProvider.Create(outputWindow), gitHubClient, gitClient, telemetry, outputWindow, new LocalTemplateSource(CookiecutterViewModel.DefaultInstalledFolderPath, gitClient), new FeedTemplateSource(feedUrl), new GitHubTemplateSource(gitHubClient), openFolder ); ViewModel.UserConfigFilePath = CookiecutterViewModel.GetUserConfigPath(); ViewModel.OutputFolderPath = string.Empty; // leaving this empty for now, force user to enter one ViewModel.ContextLoaded += ViewModel_ContextLoaded; ViewModel.HomeClicked += ViewModel_HomeClicked; _searchPage = new CookiecutterSearchPage { DataContext = ViewModel }; _optionsPage = new CookiecutterOptionsPage { DataContext = ViewModel }; var pages = new List<Page>(); pages.Add(_searchPage); pages.Add(_optionsPage); _pageSequence = new CollectionViewSource { Source = new ObservableCollection<Page>(pages) }; PageCount = _pageSequence.View.OfType<object>().Count(); PageSequence = _pageSequence.View; PageSequence.MoveCurrentToFirst(); DataContext = this; InitializeComponent(); _searchPage.SelectedTemplateChanged += SearchPage_SelectedTemplateChanged; }
public void SetupTest() { _redirector = new MockRedirector(); _gitClient = new MockGitClient(); _gitHubClient = new MockGitHubClient(); _cutterClient = new MockCookiecutterClient(); _installedTemplateSource = new MockTemplateSource(); _gitHubTemplateSource = new MockTemplateSource(); _feedTemplateSource = new MockTemplateSource(); var output = TestData.GetTempPath("Cookiecutter", true); var outputProjectFolder = Path.Combine(output, "project"); _telemetry = new CookiecutterTelemetry(new TelemetryTestService()); _vm = new CookiecutterViewModel(_cutterClient, _gitHubClient, _gitClient, _telemetry, _redirector, _installedTemplateSource, _feedTemplateSource, _gitHubTemplateSource, null, null); _vm.UserConfigFilePath = UserConfigFilePath; _vm.OutputFolderPath = outputProjectFolder; }
public void SetupTest() { _redirector = new MockRedirector(); var output = TestData.GetTempPath("Cookiecutter", true); var outputProjectFolder = Path.Combine(output, "integration"); var feedUrl = new Uri(TestFeedPath); var installedPath = TestInstalledTemplateFolderPath; var userConfigFilePath = TestUserConfigFilePath; _gitClient = GitClientProvider.Create(_redirector, null); _gitHubClient = new GitHubClient(); _cutterClient = CookiecutterClientProvider.Create(null, _redirector); _telemetry = new CookiecutterTelemetry(new TelemetryTestService()); _installedTemplateSource = new LocalTemplateSource(installedPath, _gitClient); _gitHubTemplateSource = new GitHubTemplateSource(_gitHubClient); _feedTemplateSource = new FeedTemplateSource(feedUrl); _projectSystemClient = new MockProjectSystemClient(); _vm = new CookiecutterViewModel( _cutterClient, _gitHubClient, _gitClient, _telemetry, _redirector, _installedTemplateSource, _feedTemplateSource, _gitHubTemplateSource, OpenFolder, _projectSystemClient ); _vm.UserConfigFilePath = userConfigFilePath; ((CookiecutterClient)_cutterClient).DefaultBasePath = outputProjectFolder; }
private async Task<Dictionary<string, string>> GenerateFromLocalTemplate(string userConfigFilePath) { var context = await _client.LoadContextAsync(LocalTemplatePath, userConfigFilePath); var output = TestData.GetTempPath("Cookiecutter", true); var outputProjectFolder = Path.Combine(output, "project"); var contextFilePath = Path.Combine(output, "context.json"); var vm = new CookiecutterViewModel(); foreach (var item in context) { vm.ContextItems.Add(new ContextItemViewModel(item.Name, item.Selector, item.Label, item.Description, item.Url, item.DefaultValue, item.Values)); } vm.SaveUserInput(contextFilePath); Directory.CreateDirectory(outputProjectFolder); await _client.CreateFilesAsync(LocalTemplatePath, userConfigFilePath, contextFilePath, outputProjectFolder); var reportFilePath = Path.Combine(outputProjectFolder, "report.txt"); Assert.IsTrue(File.Exists(reportFilePath), "Failed to generate some project files."); return ReadReport(reportFilePath); }