Skip to content

Commit

Permalink
adjust framework indicators
Browse files Browse the repository at this point in the history
  • Loading branch information
emilwidlund committed Oct 30, 2024
1 parent 485d343 commit 625ed09
Show file tree
Hide file tree
Showing 7 changed files with 66 additions and 52 deletions.
8 changes: 4 additions & 4 deletions src/cli.tsx
Original file line number Diff line number Diff line change
@@ -1,25 +1,25 @@
import { Polar } from "@polar-sh/sdk";
import meow from "meow";
import { appendEnvironmentVariables } from "./env.js";
import { installDependencies } from "./install.js";
import { login } from "./oauth.js";
import { resolveOrganization } from "./organization.js";
import { resolvePackageName } from "./package.js";
import { createProduct } from "./product.js";
import { benefitPrompt } from "./prompts/benefit.js";
import { productPrompt } from "./prompts/product.js";
import { templatePrompt } from "./prompts/template.js";
import {
type Framework,
copyCheckoutTemplate,
copyPolarClientTemplate,
copyProductsTemplate,
copyWebhooksTemplate,
type Framework,
} from "./template.js";
import { authenticationMessage } from "./ui/authentication.js";
import { environmentMessage } from "./ui/environment.js";
import { installMessage } from "./ui/install.js";
import { precheckMessage } from "./ui/precheck.js";
import { environmentMessage } from "./ui/environment.js";
import { appendEnvironmentVariables } from "./env.js";
import { benefitPrompt } from "./prompts/benefit.js";
import { successMessage } from "./ui/success.js";

process.on("uncaughtException", (error) => {
Expand Down
86 changes: 46 additions & 40 deletions src/env.ts
Original file line number Diff line number Diff line change
@@ -1,49 +1,55 @@
import path from 'node:path';
import fs from 'node:fs/promises';
import fs from "node:fs/promises";
import path from "node:path";

const envFiles = ['.env', '.env.local'];
const envFiles = [".env", ".env.local"];

const resolveEnvPaths = async () => {
const cwd = process.cwd();
const paths = envFiles.map(file => path.join(cwd, file));

const existingFiles = await Promise.all(
paths.map(async (filePath) => {
try {
await fs.access(filePath);
return filePath;
} catch {
return null;
}
})
);

return existingFiles.filter(Boolean);
const cwd = process.cwd();
const paths = envFiles.map((file) => path.join(cwd, file));

const existingFiles = await Promise.all(
paths.map(async (filePath) => {
try {
await fs.access(filePath);
return filePath;
} catch {
return null;
}
}),
);

return existingFiles.filter(Boolean);
};

const writeEnvFile = async (filePath: string, variables: Record<string, string>, existingEnv = '') => {
const newEnvFile = Object.entries(variables).reduce((acc, [key, value]) => {
if (!acc.includes(`${key}=`)) {
return `${acc}\n${key}=${value}`;
}
return acc;
}, existingEnv);

await fs.writeFile(filePath, newEnvFile);
}
const writeEnvFile = async (
filePath: string,
variables: Record<string, string>,
existingEnv = "",
) => {
const newEnvFile = Object.entries(variables).reduce((acc, [key, value]) => {
if (!acc.includes(`${key}=`)) {
return `${acc}\n${key}=${value}`;
}
return acc;
}, existingEnv);

await fs.writeFile(filePath, newEnvFile);
};

export const appendEnvironmentVariables = async (variables: Record<string, string>) => {
const envPaths = await resolveEnvPaths();
export const appendEnvironmentVariables = async (
variables: Record<string, string>,
) => {
const envPaths = await resolveEnvPaths();

if (envPaths.length === 0) {
await writeEnvFile('.env.local', variables);
} else {
for (const envPath of envPaths) {
if (!envPath) continue;
if (envPaths.length === 0) {
await writeEnvFile(".env.local", variables);
} else {
for (const envPath of envPaths) {
if (!envPath) continue;

const envFile = await fs.readFile(envPath, 'utf8');
const envFile = await fs.readFile(envPath, "utf8");

await writeEnvFile(envPath, variables, envFile);
}
}
}
await writeEnvFile(envPath, variables, envFile);
}
}
};
2 changes: 1 addition & 1 deletion src/install.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import spawn from 'cross-spawn'
import spawn from "cross-spawn";
import { getPkgManager } from "next/dist/lib/helpers/get-pkg-manager.js";

/**
Expand Down
2 changes: 1 addition & 1 deletion src/prompts/benefit.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ export const benefitPrompt = async () => {
type: "confirm",
name: "licenseKey",
message: "Include License Key with product?",
initial: true
initial: true,
},
]);

Expand Down
2 changes: 1 addition & 1 deletion src/ui/precheck.tsx
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import { Spinner, StatusMessage } from "@inkjs/ui";
import { Text, render } from "ink";
import React from "react";
import { isNextDirectory, isNuxtDirectory } from "../utils.js";
import type { Framework } from "../template.js";
import { isNextDirectory, isNuxtDirectory } from "../utils.js";

const precheck = async (): Promise<Framework> => {
const isNuxt = isNuxtDirectory();
Expand Down
6 changes: 3 additions & 3 deletions src/ui/success.tsx
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import { Box, render, Text } from "ink";
import { StatusMessage } from "@inkjs/ui";
import Link from "ink-link";
import React from "react";
import type { Organization } from "@polar-sh/sdk/models/components/organization.js";
import type { Product } from "@polar-sh/sdk/models/components/product.js";
import { Box, Text, render } from "ink";
import Link from "ink-link";
import React from "react";

export const successMessage = (
organization: Organization,
Expand Down
12 changes: 10 additions & 2 deletions src/utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,23 @@ import fs from "node:fs";
import path from "node:path";

export const isNextDirectory = (directory: string = process.cwd()): boolean => {
const nextIndicators = ["next.config.js", "next.config.mjs", "next.config.ts", "app"];
const nextIndicators = [
"next.config.js",
"next.config.mjs",
"next.config.ts",
];

return nextIndicators.some((indicator) =>
fs.existsSync(path.join(directory, indicator)),
);
};

export const isNuxtDirectory = (directory: string = process.cwd()): boolean => {
const nuxtIndicators = ["nuxt.config.js", "nuxt.config.mjs", "nuxt.config.ts", "server", "app/pages"];
const nuxtIndicators = [
"nuxt.config.js",
"nuxt.config.mjs",
"nuxt.config.ts",
];

return nuxtIndicators.some((indicator) =>
fs.existsSync(path.join(directory, indicator)),
Expand Down

0 comments on commit 625ed09

Please sign in to comment.