Skip to content

Conversation

@jaipaljadeja
Copy link
Member

No description provided.

@coderabbitai
Copy link

coderabbitai bot commented Feb 26, 2025

📝 Walkthrough

Walkthrough

The pull request introduces a JSON metadata file for the pre-release of the "apibara" package and integrates new functionality in the CLI. The CLI now creates or updates a .gitignore file during project initialization. This includes adding a new function in both the initialization script and the templates file, along with standardized success message formatting.

Changes

File(s) Summary
change/apibara-e6e30cda-092c-494d-b47b-f3c452f6e898.json Added new JSON metadata file specifying a prerelease for apibara including type, comment, package name, email, and dependent change type.
packages/cli/src/create/{init.ts,templates.ts} Updated project initialization to call createGitIgnoreFile. Added the function to create/update a .gitignore file with user prompts and predefined items; standardized success messages.

Sequence Diagram(s)

sequenceDiagram
    participant User
    participant CLI
    participant FS as FileSystem
    participant Prompter

    User->>CLI: Run project initialization
    CLI->>FS: Check if ".gitignore" exists
    alt File exists
        FS-->>CLI: true
        CLI->>Prompter: Prompt for action (append, keep, overwrite)
        Prompter-->>CLI: Return user decision
        alt Append selected
            CLI->>FS: Read current ".gitignore"
            CLI->>FS: Append selected items
        else Overwrite selected
            CLI->>FS: Write new ".gitignore" content
        else Keep selected
            CLI-->>User: Retain existing ".gitignore"
        end
    else File does not exist
        FS-->>CLI: false
        CLI->>FS: Create new ".gitignore" with default entries
    end
    CLI-->>User: Log success message
Loading

Possibly related PRs

Poem

I'm a rabbit hopping through lines of code,
Adding a .gitignore on this winding road.
Metadata sprouts like carrots in spring,
CLI prompts make my circuits sing.
Hoppy changes now, let the code dance and go!
🐇🥕

✨ Finishing Touches
  • 📝 Generate Docstrings

Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media?

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Generate unit testing code for this file.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai generate unit testing code for this file.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and generate unit testing code.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

@jaipaljadeja jaipaljadeja requested a review from fracek February 26, 2025 19:42
Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 0

🧹 Nitpick comments (3)
packages/cli/src/create/templates.ts (3)

500-569: Comprehensive .gitignore file handling with user interaction.

The implementation handles different scenarios well:

  • Creating a new file if none exists
  • Providing options to append, keep, or overwrite if file exists
  • Interactive selection of items to append

However, there's a small inconsistency in the code.

In the append case, you're using result.ignoreItems instead of the destructured ignoreItems variable:

- fs.writeFileSync(gitIgnorePath, `${gitIgnoreContent}\n${result.ignoreItems.join("\n")}`,);
+ fs.writeFileSync(gitIgnorePath, `${gitIgnoreContent}\n${ignoreItems.join("\n")}`,);

Also consider adding a check for duplicates when appending items to avoid adding entries that already exist in the file.


548-548: Use destructured variable for consistency.

There's a variable naming inconsistency where you use result.ignoreItems instead of the destructured ignoreItems variable that was defined earlier.

- `${gitIgnoreContent}\n${result.ignoreItems.join("\n")}`
+ `${gitIgnoreContent}\n${ignoreItems.join("\n")}`

544-552: Consider checking for duplicates when appending items.

When appending to an existing .gitignore file, it would be useful to check if the selected items already exist in the file to avoid duplicates. This enhances the user experience by preventing redundant entries.

Here's a simple approach:

if (overwrite === "append" && ignoreItems.length > 0) {
  const gitIgnoreContent = fs.readFileSync(gitIgnorePath, "utf8");
+ const existingItems = gitIgnoreContent.split("\n").map(line => line.trim());
+ const newItems = ignoreItems.filter(item => !existingItems.includes(item));
+ 
+ if (newItems.length === 0) {
+   consola.info("All selected items already exist in .gitignore");
+   return;
+ }
  
  fs.writeFileSync(
    gitIgnorePath,
-   `${gitIgnoreContent}\n${result.ignoreItems.join("\n")}`,
+   `${gitIgnoreContent}\n${newItems.join("\n")}`,
  );
  consola.success(`Updated ${cyan(".gitignore")}`);
  return;
}
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 04564ad and c870af6.

📒 Files selected for processing (3)
  • change/apibara-e6e30cda-092c-494d-b47b-f3c452f6e898.json (1 hunks)
  • packages/cli/src/create/init.ts (3 hunks)
  • packages/cli/src/create/templates.ts (2 hunks)
✅ Files skipped from review due to trivial changes (1)
  • change/apibara-e6e30cda-092c-494d-b47b-f3c452f6e898.json
⏰ Context from checks skipped due to timeout of 90000ms (1)
  • GitHub Check: test
🔇 Additional comments (4)
packages/cli/src/create/init.ts (3)

8-8: Added import for new functionality.

The createGitIgnoreFile function has been properly imported from the templates module.


133-133: Standardized success message formatting.

Removed space after "Created" for consistency in the success messages. This makes the output formatting more consistent across all files created during project initialization.

Also applies to: 141-141, 149-149


158-159: Integration of .gitignore file creation.

Good placement of the createGitIgnoreFile function call - after creating all other project files but before the success message, ensuring a complete project initialization.

packages/cli/src/create/templates.ts (1)

471-498: Well-structured .gitignore template with clear categorization.

The gitIgnoreItems structure provides a good foundation with:

  • Common entries like node_modules, dist
  • Apibara-specific entries
  • Clear marking of recommended items
  • Helpful descriptions for certain entries

This makes the .gitignore template both comprehensive and informative for users.

Copy link
Contributor

@fracek fracek left a comment

Choose a reason for hiding this comment

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

Looks good! I really like they can pick what they add when the file already exists.

@fracek fracek merged commit 8e74dc4 into apibara:main Feb 26, 2025
2 checks passed
@coderabbitai coderabbitai bot mentioned this pull request Mar 5, 2025
@jaipaljadeja jaipaljadeja deleted the feat/gitignore-template branch March 11, 2025 11:18
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.

2 participants