From 2a172759b6cfbff3d705f22715bea8e85bc4dae1 Mon Sep 17 00:00:00 2001
From: Sergei Zharinov <zharinov@users.noreply.github.com>
Date: Fri, 24 Mar 2023 15:12:21 +0300
Subject: [PATCH] feat: Better defaults for Codespaces configuration (#21113)

---
 lib/workers/global/config/parse/codespaces.ts | 24 +++++++++++++++++++
 lib/workers/global/config/parse/index.ts      |  3 +++
 2 files changed, 27 insertions(+)
 create mode 100644 lib/workers/global/config/parse/codespaces.ts

diff --git a/lib/workers/global/config/parse/codespaces.ts b/lib/workers/global/config/parse/codespaces.ts
new file mode 100644
index 0000000000..795a5afccd
--- /dev/null
+++ b/lib/workers/global/config/parse/codespaces.ts
@@ -0,0 +1,24 @@
+import readline from 'readline';
+import type { AllConfig } from '../../../../config/types';
+
+// istanbul ignore next
+export async function setConfig(config: AllConfig): Promise<AllConfig> {
+  if (process.env.CODESPACES !== 'true') {
+    return config;
+  }
+
+  if (!config.token && process.env.GITHUB_TOKEN) {
+    config.token = process.env.GITHUB_TOKEN;
+  }
+
+  if (!config.repositories?.length) {
+    const rl = readline.promises.createInterface({
+      input: process.stdin,
+      output: process.stdout,
+    });
+    const repo = await rl.question('\n\nRepository name: ');
+    config.repositories = [repo];
+  }
+
+  return config;
+}
diff --git a/lib/workers/global/config/parse/index.ts b/lib/workers/global/config/parse/index.ts
index 0823d06c6f..58352098df 100644
--- a/lib/workers/global/config/parse/index.ts
+++ b/lib/workers/global/config/parse/index.ts
@@ -6,6 +6,7 @@ import { detectAllGlobalConfig } from '../../../../modules/manager';
 import { ensureDir, getParentDir, readSystemFile } from '../../../../util/fs';
 import { ensureTrailingSlash } from '../../../../util/url';
 import * as cliParser from './cli';
+import * as codespaces from './codespaces';
 import * as envParser from './env';
 import * as fileParser from './file';
 import { hostRulesFromEnv } from './host-rules-from-env';
@@ -25,6 +26,8 @@ export async function parseConfigs(
   let config: AllConfig = mergeChildConfig(fileConfig, envConfig);
   config = mergeChildConfig(config, cliConfig);
 
+  config = await codespaces.setConfig(config);
+
   const combinedConfig = config;
 
   config = mergeChildConfig(defaultConfig, config);
-- 
GitLab