Skip to content

Project ID selection#10106

Draft
christhompsongoogle wants to merge 3 commits intomainfrom
firebaserc
Draft

Project ID selection#10106
christhompsongoogle wants to merge 3 commits intomainfrom
firebaserc

Conversation

@christhompsongoogle
Copy link
Contributor

Project ID selection - prefer firebaserc over studio.json

@gemini-code-assist
Copy link
Contributor

Summary of Changes

Hello, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request refines the mechanism for identifying the active Firebase Project ID within the development environment. The primary goal is to establish a clearer and more intuitive precedence for project ID sources, ensuring that configuration files like .firebaserc are consulted before legacy studio.json files, thereby aligning with common Firebase project setup practices.

Highlights

  • Project ID Selection Logic: The logic for determining the Firebase Project ID has been updated to prioritize the .firebaserc file over studio.json (or metadata.json) when an override project ID is not explicitly provided.
  • Improved Logging: The console output now includes the source from which the Firebase Project ID was determined (e.g., '--project flag', '.firebaserc', or 'studio.json'), providing better transparency.
  • Enhanced Test Coverage: New test cases were added to validate the updated project ID selection hierarchy, specifically ensuring that the .firebaserc project ID is correctly used when available.

🧠 New Feature in Public Preview: You can now enable Memory to help Gemini Code Assist learn from your team's feedback. This makes future code reviews more consistent and personalized to your project's style. Click here to enable Memory in your admin console.

Changelog
  • src/firebase_studio/migrate.spec.ts
    • Introduced a new test case to verify that the project ID from .firebaserc is correctly used when no override is provided.
    • Updated an existing test case description to reflect the new fallback order, explicitly mentioning studio.json.
    • Modified the readFileStub to simulate .firebaserc existence and studio.json content for testing purposes.
  • src/firebase_studio/migrate.ts
    • Refactored the extractMetadata function to implement a new project ID selection hierarchy: --project flag first, then .firebaserc, and finally studio.json.
    • Added a projectIdSource variable to track and log where the project ID was obtained from.
    • Updated the success logging message to include the projectIdSource for improved clarity.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for GitHub and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

Copy link
Contributor

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

The pull request refactors the project ID selection logic in extractMetadata to prioritize .firebaserc over studio.json or metadata.json when no explicit override is provided. This change improves the flexibility of project ID detection. Unit tests have been updated to reflect this new prioritization, ensuring the logic works as expected. The logging now includes the source of the selected project ID, which is a valuable addition for debugging and clarity.


if (!projectId && metadata.projectId) {
projectId = metadata.projectId;
projectIdSource = "studio.json";
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

The projectIdSource is hardcoded to "studio.json" here. However, the extractMetadata function (lines 201-209) attempts to read metadata.json first, and then studio.json. If studio.json is not found or is invalid, metadata.projectId would originate from metadata.json. To provide more accurate logging, consider dynamically determining whether the projectId came from metadata.json or studio.json.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good suggestion.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants