Skip to content

Commit

Permalink
Merge branch 'main' into enhance-readme
Browse files Browse the repository at this point in the history
  • Loading branch information
dkarnutsch committed Jan 29, 2024
2 parents de2b4f8 + f5ac2cf commit e1e8881
Show file tree
Hide file tree
Showing 13 changed files with 149 additions and 98 deletions.
3 changes: 3 additions & 0 deletions .github/auto_assign.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,3 +11,6 @@ reviewers:

skipUsers:
- dependabot[bot]

skipKeywords:
- Merge main into next
45 changes: 45 additions & 0 deletions .github/workflows/main-into-next-pr.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
name: Create "Merge main into next" PR
on:
push:
branches:
- main
jobs:
main-into-next:
name: Create "Merge main into next" PR
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
with:
fetch-depth: 0 # Needed to also fetch next branch

- name: Setup Git user
run: |
git config user.name github-actions
git config user.email github-actions@github.com
- name: Try automatic merge of main into next
id: automatic-merge-attempt
continue-on-error: true
run: |
git checkout next
git merge main
echo 'PR_TITLE=Merge main into next' >> $GITHUB_ENV
echo 'PR_BODY=This is an automated pull request to merge changes from `main` into `next`.' >> $GITHUB_ENV
- name: Merge with conflicts if automatic merge failed
if: steps.automatic-merge-attempt.outcome == 'failure' && steps.automatic-merge-attempt.conclusion == 'success' # https://docs.github.com/en/actions/learn-github-actions/contexts#steps-context
run: |
git add .
git commit -m "Merge main into next"
echo 'PR_TITLE=[Conflicts] Merge main into next' >> $GITHUB_ENV
echo 'PR_BODY=This is an automated pull request to merge changes from `main` into `next`. It has merge conflicts. To resolve conflicts, check out the branch `merge-main-into-next` locally, make any necessary changes to conflicting files, and commit and publish your changes.' >> $GITHUB_ENV
- name: Create pull request
uses: peter-evans/create-pull-request@v5
with:
token: ${{ secrets.GITHUB_TOKEN }}
title: ${{ env.PR_TITLE }}
body: ${{ env.PR_BODY }}
base: next
branch: merge-main-into-next
2 changes: 1 addition & 1 deletion create-app/bin/index.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
#!/usr/bin/env node

require("../lib/createApp");
require("../lib/index");
90 changes: 0 additions & 90 deletions create-app/src/createApp.ts

This file was deleted.

47 changes: 47 additions & 0 deletions create-app/src/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
import { Command } from "commander";
import kleur from "kleur";

import { createApp } from "./scripts/create-app/createApp";
import { removeShowcaseContent } from "./scripts/remove-showcase/removeShowcase";
import { removeSite } from "./scripts/remove-site/removeSite";
import { isValidNodeVersion } from "./util/isValidNodeVersion";
import { isValidProjectName } from "./util/isValidProjectName";

// eslint-disable-next-line @typescript-eslint/no-var-requires
const { name, version } = require("../package.json");

void (async () => {
const program = new Command();
if (!isValidNodeVersion()) {
console.log(kleur.bgRed("Invalid Node Version (your Node.js version is prior to v18)."));
return;
}

program.name(name).description("CLI to create a comet app").version(version);
program
.argument("<projectName>", "Sets the name of the project.")
.option("-v, --verbose", "Enables extra console logs for verbose output.")
.action((projectName: string, options) => {
if (isValidProjectName(projectName)) {
createApp({ projectName, verbose: options.verbose });
} else {
console.log(kleur.bgRed("Please provide a valid project name."));
}
});

program.addCommand(
new Command("remove-showcase").action(() => {
console.log(kleur.white(`Removing showcase content from project`));
removeShowcaseContent();
}),
);

program.addCommand(
new Command("remove-site").action(() => {
console.log(kleur.white(`Removing site from project`));
removeSite();
}),
);

program.parse();
})();
File renamed without changes.
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { deleteFilesAndFolders } from "./deleteFilesAndFolders";
import { removeReferenceInFile } from "./removeReferenceInFile";
import { deleteFilesAndFolders } from "../../util/deleteFilesAndFolders";
import { removeReferenceInFile } from "../../util/removeReferenceInFile";

export function cleanupWorkingDirectory(verbose: boolean) {
deleteFilesAndFolders(["create-app", ".git", ".github", "LICENSE"], verbose);
Expand Down
42 changes: 42 additions & 0 deletions create-app/src/scripts/create-app/createApp.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
import kleur from "kleur";
import process from "process";

import { replacePlaceholder } from "../../util/replacePlaceholder";
import { cleanupReadme } from "./cleanupReadme";
import { cleanupWorkingDirectory } from "./cleanupWorkingDirectory";
import { createInitialGitCommit } from "./createInitialGitCommit";
import { createWorkingDirectoryCopy } from "./createWorkingDirectoryCopy";

interface ProjectConfiguration {
projectName: string;
verbose: boolean;
}

export async function createApp(projectConfiguration: ProjectConfiguration) {
console.log(kleur.white(`Creating a new Comet app in `) + kleur.yellow(`${process.cwd()}\n`));
if (!createWorkingDirectoryCopy(projectConfiguration.projectName, projectConfiguration.verbose)) {
return;
}
cleanupReadme();
cleanupWorkingDirectory(projectConfiguration.verbose);
replacePlaceholder(projectConfiguration.projectName, projectConfiguration.verbose);
createInitialGitCommit();
console.log(`\n${kleur.white(`Success! Created '${projectConfiguration.projectName}' at '${process.cwd()}'.`)}`);
console.log(kleur.white(`Inside that directory, you can run several commands:\n`));
console.log(kleur.white(`nvm use\n`));
console.log(kleur.cyan(`sh ./install.sh\n`));
console.log(kleur.white(`Installs dependencies.\n`));
console.log(kleur.cyan(`npm run dev`));
console.log(kleur.white(`Starts all services.\n`));
console.log(kleur.cyan(`npx dev-pm status [--interval]`));
console.log(kleur.white(`Checks the status of services.\n`));
console.log(kleur.cyan(`npx dev-pm logs <service>`));
console.log(kleur.white(`Shows the logs of a service.\n`));
console.log(kleur.cyan(`npx dev-pm restart <service>`));
console.log(kleur.white(`Restarts a service.\n`));
console.log(kleur.cyan(`npx dev-pm shutdown`));
console.log(kleur.white(`Shutdown all services.\n`));
console.log(kleur.cyan(`npm run --prefix api fixtures`));
console.log(kleur.white(`Imports fixtures.\n`));
console.log(kleur.green(`\n☄️ Successfully created Comet app: ${projectConfiguration.projectName}`));
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@ import { ESLint } from "eslint";
import { existsSync, readFileSync, writeFileSync } from "fs";
import kleur from "kleur";

import { cwdIsCometProject } from "../../../util/cwdIsCometProject";
import { deleteFilesAndFolders } from "../../../util/deleteFilesAndFolders";
import { cwdIsCometProject } from "../../util/cwdIsCometProject";
import { deleteFilesAndFolders } from "../../util/deleteFilesAndFolders";

async function removeFileContent() {
const contentToRemove: Array<{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { cwdIsCometProject } from "../../../util/cwdIsCometProject";
import { deleteFilesAndFolders } from "../../../util/deleteFilesAndFolders";
import { removeReferenceInFile } from "../../../util/removeReferenceInFile";
import { cwdIsCometProject } from "../../util/cwdIsCometProject";
import { deleteFilesAndFolders } from "../../util/deleteFilesAndFolders";
import { removeReferenceInFile } from "../../util/removeReferenceInFile";

function removeSiteReferences() {
removeReferenceInFile(".vscode/settings.json", /, "site"/g);
Expand Down
4 changes: 4 additions & 0 deletions create-app/src/util/isValidProjectName.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
export function isValidProjectName(value: string): boolean {
const allowedFormat = /^[A-Za-z0-9][A-Za-z0-9-]*$/;
return allowedFormat.test(value);
}

0 comments on commit e1e8881

Please sign in to comment.