mirror of
https://github.com/expo/eas-cli.git
synced 2026-11-14 17:50:32 -10:00
Compare commits
3
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e9088dbb93 | ||
|
|
f08392888d | ||
|
|
fbcc04eb62 |
No files matched your search
@@ -13,6 +13,10 @@ This is the log of notable changes to EAS CLI and related packages.
|
|||||||
|
|
||||||
- Hide progress bar in build credits warning when usage reaches 100%. ([#3371](https://github.com/expo/eas-cli/pull/3371) by [@mackenco](https://github.com/mackenco))
|
- Hide progress bar in build credits warning when usage reaches 100%. ([#3371](https://github.com/expo/eas-cli/pull/3371) by [@mackenco](https://github.com/mackenco))
|
||||||
|
|
||||||
|
### 🐛 Bug fixes
|
||||||
|
|
||||||
|
- Fix `--non-interactive` mode prompting for git initialization. Now auto-initializes git with an initial commit when needed. Set `EAS_NO_VCS=1` to skip. ([#3387](https://github.com/expo/eas-cli/pull/3387) by [@evanbacon](https://github.com/evanbacon))
|
||||||
|
|
||||||
### 🧹 Chores
|
### 🧹 Chores
|
||||||
|
|
||||||
- Upgrade `tar` to v7. ([#3327](https://github.com/expo/eas-cli/pull/3327) by [@KarolRzeminski](https://github.com/KarolRzeminski))
|
- Upgrade `tar` to v7. ([#3327](https://github.com/expo/eas-cli/pull/3327) by [@KarolRzeminski](https://github.com/KarolRzeminski))
|
||||||
|
|||||||
@@ -128,7 +128,7 @@ export async function runBuildAndSubmitAsync({
|
|||||||
buildIds: string[];
|
buildIds: string[];
|
||||||
buildProfiles?: ProfileData<'build'>[];
|
buildProfiles?: ProfileData<'build'>[];
|
||||||
}> {
|
}> {
|
||||||
await vcsClient.ensureRepoExistsAsync();
|
await vcsClient.ensureRepoExistsAsync({ nonInteractive: flags.nonInteractive });
|
||||||
await ensureRepoIsCleanAsync(vcsClient, flags.nonInteractive);
|
await ensureRepoIsCleanAsync(vcsClient, flags.nonInteractive);
|
||||||
|
|
||||||
await ensureProjectConfiguredAsync({
|
await ensureProjectConfiguredAsync({
|
||||||
|
|||||||
@@ -46,9 +46,7 @@ export default class BuildConfigure extends EasCommand {
|
|||||||
'💡 The following process will configure your iOS and/or Android project to be compatible with EAS Build. These changes only apply to your local project files and you can safely revert them at any time.'
|
'💡 The following process will configure your iOS and/or Android project to be compatible with EAS Build. These changes only apply to your local project files and you can safely revert them at any time.'
|
||||||
);
|
);
|
||||||
|
|
||||||
// BuildConfigure.ContextOptions.Vcs.client.getValueAsync()
|
await vcsClient.ensureRepoExistsAsync({ nonInteractive: false });
|
||||||
|
|
||||||
await vcsClient.ensureRepoExistsAsync();
|
|
||||||
|
|
||||||
const expoUpdatesIsInstalled = isExpoUpdatesInstalled(projectDir);
|
const expoUpdatesIsInstalled = isExpoUpdatesInstalled(projectDir);
|
||||||
|
|
||||||
|
|||||||
@@ -74,8 +74,8 @@ export default class BuildDev extends EasCommand {
|
|||||||
Errors.error('Running iOS builds in simulator is only supported on macOS.', { exit: 1 });
|
Errors.error('Running iOS builds in simulator is only supported on macOS.', { exit: 1 });
|
||||||
}
|
}
|
||||||
|
|
||||||
await vcsClient.ensureRepoExistsAsync();
|
await vcsClient.ensureRepoExistsAsync({ nonInteractive: false });
|
||||||
await ensureRepoIsCleanAsync(vcsClient, flags.nonInteractive);
|
await ensureRepoIsCleanAsync(vcsClient, false);
|
||||||
await ensureProjectConfiguredAsync({
|
await ensureProjectConfiguredAsync({
|
||||||
projectDir,
|
projectDir,
|
||||||
nonInteractive: false,
|
nonInteractive: false,
|
||||||
|
|||||||
@@ -94,7 +94,7 @@ export default class BuildInspect extends EasCommand {
|
|||||||
await this.prepareOutputDirAsync(outputDirectory, flags.force);
|
await this.prepareOutputDirAsync(outputDirectory, flags.force);
|
||||||
|
|
||||||
if (flags.stage === InspectStage.ARCHIVE) {
|
if (flags.stage === InspectStage.ARCHIVE) {
|
||||||
await vcsClient.ensureRepoExistsAsync();
|
await vcsClient.ensureRepoExistsAsync({ nonInteractive: false });
|
||||||
await vcsClient.makeShallowCopyAsync(tmpWorkingdir);
|
await vcsClient.makeShallowCopyAsync(tmpWorkingdir);
|
||||||
await this.copyToOutputDirAsync(tmpWorkingdir, outputDirectory);
|
await this.copyToOutputDirAsync(tmpWorkingdir, outputDirectory);
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -46,7 +46,7 @@ export default class UpdateConfigure extends EasCommand {
|
|||||||
'💡 The following process will configure your project to use EAS Update. These changes only apply to your local project files and you can safely revert them at any time.'
|
'💡 The following process will configure your project to use EAS Update. These changes only apply to your local project files and you can safely revert them at any time.'
|
||||||
);
|
);
|
||||||
|
|
||||||
await vcsClient.ensureRepoExistsAsync();
|
await vcsClient.ensureRepoExistsAsync({ nonInteractive: flags['non-interactive'] });
|
||||||
|
|
||||||
const easJsonAccessor = EasJsonAccessor.fromProjectPath(projectDir);
|
const easJsonAccessor = EasJsonAccessor.fromProjectPath(projectDir);
|
||||||
const easJsonCliConfig: EasJson['cli'] =
|
const easJsonCliConfig: EasJson['cli'] =
|
||||||
|
|||||||
@@ -240,7 +240,7 @@ export default class UpdatePublish extends EasCommand {
|
|||||||
enableJsonOutput();
|
enableJsonOutput();
|
||||||
}
|
}
|
||||||
|
|
||||||
await vcsClient.ensureRepoExistsAsync();
|
await vcsClient.ensureRepoExistsAsync({ nonInteractive });
|
||||||
await ensureRepoIsCleanAsync(vcsClient, nonInteractive);
|
await ensureRepoIsCleanAsync(vcsClient, nonInteractive);
|
||||||
|
|
||||||
const {
|
const {
|
||||||
|
|||||||
@@ -31,7 +31,11 @@ export default class GitClient extends Client {
|
|||||||
this.requireCommit = options.requireCommit;
|
this.requireCommit = options.requireCommit;
|
||||||
}
|
}
|
||||||
|
|
||||||
public override async ensureRepoExistsAsync(): Promise<void> {
|
public override async ensureRepoExistsAsync(options?: {
|
||||||
|
nonInteractive?: boolean;
|
||||||
|
}): Promise<void> {
|
||||||
|
const nonInteractive = options?.nonInteractive ?? false;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
if (!(await isGitInstalledAsync())) {
|
if (!(await isGitInstalledAsync())) {
|
||||||
Log.error(
|
Log.error(
|
||||||
@@ -66,11 +70,26 @@ export default class GitClient extends Client {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const cwd = process.cwd();
|
||||||
|
const repoRoot = PackageManagerUtils.resolveWorkspaceRoot(cwd) ?? cwd;
|
||||||
|
|
||||||
|
if (nonInteractive) {
|
||||||
|
Log.log(
|
||||||
|
`No git repository found. Auto initializing in ${this.maybeCwdOverride ?? repoRoot}. ` +
|
||||||
|
`Set ${chalk.bold('EAS_NO_VCS=1')} to skip.`
|
||||||
|
);
|
||||||
|
await spawnAsync('git', ['init'], { cwd: this.maybeCwdOverride ?? repoRoot });
|
||||||
|
await this.commitAsync({
|
||||||
|
commitAllFiles: true,
|
||||||
|
commitMessage: 'Initial commit',
|
||||||
|
nonInteractive: true,
|
||||||
|
});
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
Log.warn("It looks like you haven't initialized the git repository yet.");
|
Log.warn("It looks like you haven't initialized the git repository yet.");
|
||||||
Log.warn('EAS requires you to use a git repository for your project.');
|
Log.warn('EAS requires you to use a git repository for your project.');
|
||||||
|
|
||||||
const cwd = process.cwd();
|
|
||||||
const repoRoot = PackageManagerUtils.resolveWorkspaceRoot(cwd) ?? cwd;
|
|
||||||
const confirmInit = await confirmAsync({
|
const confirmInit = await confirmAsync({
|
||||||
message: `Would you like us to run 'git init' in ${
|
message: `Would you like us to run 'git init' in ${
|
||||||
this.maybeCwdOverride ?? repoRoot
|
this.maybeCwdOverride ?? repoRoot
|
||||||
@@ -419,16 +438,22 @@ export default class GitClient extends Client {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
Log.warn(
|
const missingConfig = [
|
||||||
`You need to configure Git with your ${[
|
|
||||||
!usernameConfigured && 'username (user.name)',
|
!usernameConfigured && 'username (user.name)',
|
||||||
!emailConfigured && 'email address (user.email)',
|
!emailConfigured && 'email address (user.email)',
|
||||||
|
].filter(i => i);
|
||||||
|
|
||||||
|
Log.warn(`You need to configure Git with your ${missingConfig.join(' and ')}`);
|
||||||
|
if (nonInteractive) {
|
||||||
|
const configCommands = [
|
||||||
|
!usernameConfigured && 'git config --global user.name "Your Name"',
|
||||||
|
!emailConfigured && 'git config --global user.email "[email protected]"',
|
||||||
]
|
]
|
||||||
.filter(i => i)
|
.filter(i => i)
|
||||||
.join(' and ')}`
|
.join(' && ');
|
||||||
|
throw new Error(
|
||||||
|
`Git ${missingConfig.join(' and ')} must be configured. Run: ${configCommands}`
|
||||||
);
|
);
|
||||||
if (nonInteractive) {
|
|
||||||
throw new Error('Git cannot be configured automatically in non-interactive mode');
|
|
||||||
}
|
}
|
||||||
if (!usernameConfigured) {
|
if (!usernameConfigured) {
|
||||||
const { username } = await promptAsync({
|
const { username } = await promptAsync({
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ export abstract class Client {
|
|||||||
|
|
||||||
// (optional) ensureRepoExistsAsync should verify whether repository exists and tooling is installed
|
// (optional) ensureRepoExistsAsync should verify whether repository exists and tooling is installed
|
||||||
// it's not required for minimal support, but lack of validation might cause the failure at a later stage.
|
// it's not required for minimal support, but lack of validation might cause the failure at a later stage.
|
||||||
public async ensureRepoExistsAsync(): Promise<void> {}
|
public async ensureRepoExistsAsync(_options?: { nonInteractive?: boolean }): Promise<void> {}
|
||||||
|
|
||||||
// (optional) checks whether commit is necessary before calling makeShallowCopyAsync
|
// (optional) checks whether commit is necessary before calling makeShallowCopyAsync
|
||||||
//
|
//
|
||||||
|
|||||||
Reference in new issue
Block a user