|
|
@@ -1,112 +0,0 @@
|
|
|
-#!/usr/bin/env node
|
|
|
-
|
|
|
-/**
|
|
|
- * This script is used to reset the project to a blank state.
|
|
|
- * It deletes or moves the /app, /components, /hooks, /scripts, and /constants directories to /app-example based on user input and creates a new /app directory with an index.tsx and _layout.tsx file.
|
|
|
- * You can remove the `reset-project` script from package.json and safely delete this file after running it.
|
|
|
- */
|
|
|
-
|
|
|
-const fs = require("fs");
|
|
|
-const path = require("path");
|
|
|
-const readline = require("readline");
|
|
|
-
|
|
|
-const root = process.cwd();
|
|
|
-const oldDirs = ["app", "components", "hooks", "constants", "scripts"];
|
|
|
-const exampleDir = "app-example";
|
|
|
-const newAppDir = "app";
|
|
|
-const exampleDirPath = path.join(root, exampleDir);
|
|
|
-
|
|
|
-const indexContent = `import { Text, View } from "react-native";
|
|
|
-
|
|
|
-export default function Index() {
|
|
|
- return (
|
|
|
- <View
|
|
|
- style={{
|
|
|
- flex: 1,
|
|
|
- justifyContent: "center",
|
|
|
- alignItems: "center",
|
|
|
- }}
|
|
|
- >
|
|
|
- <Text>Edit app/index.tsx to edit this screen.</Text>
|
|
|
- </View>
|
|
|
- );
|
|
|
-}
|
|
|
-`;
|
|
|
-
|
|
|
-const layoutContent = `import { Stack } from "expo-router";
|
|
|
-
|
|
|
-export default function RootLayout() {
|
|
|
- return <Stack />;
|
|
|
-}
|
|
|
-`;
|
|
|
-
|
|
|
-const rl = readline.createInterface({
|
|
|
- input: process.stdin,
|
|
|
- output: process.stdout,
|
|
|
-});
|
|
|
-
|
|
|
-const moveDirectories = async (userInput) => {
|
|
|
- try {
|
|
|
- if (userInput === "y") {
|
|
|
- // Create the app-example directory
|
|
|
- await fs.promises.mkdir(exampleDirPath, { recursive: true });
|
|
|
- console.log(`📁 /${exampleDir} directory created.`);
|
|
|
- }
|
|
|
-
|
|
|
- // Move old directories to new app-example directory or delete them
|
|
|
- for (const dir of oldDirs) {
|
|
|
- const oldDirPath = path.join(root, dir);
|
|
|
- if (fs.existsSync(oldDirPath)) {
|
|
|
- if (userInput === "y") {
|
|
|
- const newDirPath = path.join(root, exampleDir, dir);
|
|
|
- await fs.promises.rename(oldDirPath, newDirPath);
|
|
|
- console.log(`➡️ /${dir} moved to /${exampleDir}/${dir}.`);
|
|
|
- } else {
|
|
|
- await fs.promises.rm(oldDirPath, { recursive: true, force: true });
|
|
|
- console.log(`❌ /${dir} deleted.`);
|
|
|
- }
|
|
|
- } else {
|
|
|
- console.log(`➡️ /${dir} does not exist, skipping.`);
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- // Create new /app directory
|
|
|
- const newAppDirPath = path.join(root, newAppDir);
|
|
|
- await fs.promises.mkdir(newAppDirPath, { recursive: true });
|
|
|
- console.log("\n📁 New /app directory created.");
|
|
|
-
|
|
|
- // Create index.tsx
|
|
|
- const indexPath = path.join(newAppDirPath, "index.tsx");
|
|
|
- await fs.promises.writeFile(indexPath, indexContent);
|
|
|
- console.log("📄 app/index.tsx created.");
|
|
|
-
|
|
|
- // Create _layout.tsx
|
|
|
- const layoutPath = path.join(newAppDirPath, "_layout.tsx");
|
|
|
- await fs.promises.writeFile(layoutPath, layoutContent);
|
|
|
- console.log("📄 app/_layout.tsx created.");
|
|
|
-
|
|
|
- console.log("\n✅ Project reset complete. Next steps:");
|
|
|
- console.log(
|
|
|
- `1. Run \`npx expo start\` to start a development server.\n2. Edit app/index.tsx to edit the main screen.${
|
|
|
- userInput === "y"
|
|
|
- ? `\n3. Delete the /${exampleDir} directory when you're done referencing it.`
|
|
|
- : ""
|
|
|
- }`
|
|
|
- );
|
|
|
- } catch (error) {
|
|
|
- console.error(`❌ Error during script execution: ${error.message}`);
|
|
|
- }
|
|
|
-};
|
|
|
-
|
|
|
-rl.question(
|
|
|
- "Do you want to move existing files to /app-example instead of deleting them? (Y/n): ",
|
|
|
- (answer) => {
|
|
|
- const userInput = answer.trim().toLowerCase() || "y";
|
|
|
- if (userInput === "y" || userInput === "n") {
|
|
|
- moveDirectories(userInput).finally(() => rl.close());
|
|
|
- } else {
|
|
|
- console.log("❌ Invalid input. Please enter 'Y' or 'N'.");
|
|
|
- rl.close();
|
|
|
- }
|
|
|
- }
|
|
|
-);
|