Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 11 additions & 11 deletions src/commands.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import * as fs from "fs";
import * as path from "path";
import { addListeners, ISelect } from "./debug";
import axios from "axios";
import dotenv from "dotenv";

const copyFiles = (source: string, destination: string) => {
fs.readdirSync(source).forEach((file) => {
Expand Down Expand Up @@ -69,22 +70,23 @@ export const initCommand = async (type: "c" | "js", folderName: string) => {
fs.mkdirSync(newProjectDir, { recursive: true });

if (type === "c" || type === "js") {
// TODO: Remove this when jshooks is merged into mainnet
process.env.NETWORK_NAME = "testnet";
process.env.NETWORK_DOMAIN = "xahau-test.net";
if (type === "js") {
process.env.NETWORK_NAME = "jshooks";
process.env.NETWORK_DOMAIN = "jshooks.xahau-test.net";
}
copyFiles(templateDir, newProjectDir);
console.log(
`Created ${
type === "c" ? "CHooks" : "JSHooks"
} project in ${newProjectDir}`
);
try {
const projectEnv = dotenv.config({
path: path.join(newProjectDir, ".env"),
});
if (!projectEnv.parsed) {
console.log("No .env file found in the project template.");
process.exit(1);
}
const env = projectEnv.parsed;
const aliceResponse = await axios.post(
`https://${process.env.NETWORK_DOMAIN}/newcreds`
`https://${env.XRPLD_WSS.replace("wss://", "")}/newcreds`
);
if (aliceResponse.data.error) {
console.error(aliceResponse.data.error);
Expand All @@ -95,9 +97,7 @@ export const initCommand = async (type: "c" | "js", folderName: string) => {

const envFilePath = path.join(newProjectDir, ".env");
const envObject = {
HOOKS_COMPILE_HOST: process.env.HOOKS_COMPILE_HOST || "",
XAHAU_ENV: process.env.NETWORK_NAME || "",
XRPLD_WSS: `wss://${process.env.NETWORK_DOMAIN}`,
...env,
ALICE_SEED: aliceSecret,
};
const envContent = Object.entries(envObject)
Expand Down
4 changes: 2 additions & 2 deletions src/init/c/.env
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
HOOKS_COMPILE_HOST=https://hook-buildbox.xrpl.org
HOOKS_DEBUG_HOST=wss://jshooks.xahau-test.net/debugstream
HOOKS_DEBUG_HOST=wss://xahau-test.net/debugstream
XAHAU_ENV=testnet
XRPLD_WSS=wss://jshooks.xahau-test.net
XRPLD_WSS=wss://xahau-test.net
ALICE_SEED=
33 changes: 33 additions & 0 deletions test/integration/init.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import { initCommand } from "../../src/commands";
import * as fs from "fs";
import * as path from "path";
import axios from "axios";
import { configDotenv } from "dotenv";

jest.mock("axios");

Expand Down Expand Up @@ -33,6 +34,8 @@ describe("Init Tests", () => {
const folderNameJS = "test-js-project";
const projectPathC = path.join(process.cwd(), folderNameC);
const projectPathJS = path.join(process.cwd(), folderNameJS);
const tempPathC = path.join(__dirname, "..", "..", "src", "init", "c");
const tempPathJS = path.join(__dirname, "..", "..", "src", "init", "js");

beforeEach(() => {
// Clean up any existing directories
Expand Down Expand Up @@ -76,9 +79,24 @@ describe("Init Tests", () => {
// Verify contents of .env file
const envContent = fs.readFileSync(envFilePath, "utf-8");
expect(envContent).toContain("HOOKS_COMPILE_HOST");
expect(envContent).toContain("HOOKS_DEBUG_HOST");
expect(envContent).toContain("XAHAU_ENV");
expect(envContent).toContain("XRPLD_WSS");
expect(envContent).toContain("ALICE_SEED=ss8Smfd73swruz4LATV5xkmydjZd6");

const env = configDotenv({ path: envFilePath }).parsed;
const originalEnv = configDotenv({
path: path.join(tempPathC, ".env"),
}).parsed;
expect(env?.HOOKS_COMPILE_HOST).toBeDefined();
expect(env?.HOOKS_COMPILE_HOST).toEqual(originalEnv?.HOOKS_COMPILE_HOST);
expect(env?.HOOKS_DEBUG_HOST).toBeDefined();
expect(env?.HOOKS_DEBUG_HOST).toEqual(originalEnv?.HOOKS_DEBUG_HOST);
expect(env?.XAHAU_ENV).toBeDefined();
expect(env?.XAHAU_ENV).toEqual(originalEnv?.XAHAU_ENV);
expect(env?.XRPLD_WSS).toBeDefined();
expect(env?.XRPLD_WSS).toEqual(originalEnv?.XRPLD_WSS);
expect(env?.ALICE_SEED).toBeDefined();
});

it("should initialize a new JS project", async () => {
Expand All @@ -102,9 +120,24 @@ describe("Init Tests", () => {
// Verify contents of .env file
const envContent = fs.readFileSync(envFilePath, "utf-8");
expect(envContent).toContain("HOOKS_COMPILE_HOST");
expect(envContent).toContain("HOOKS_DEBUG_HOST");
expect(envContent).toContain("XAHAU_ENV");
expect(envContent).toContain("XRPLD_WSS");
expect(envContent).toContain("ALICE_SEED=ss8Smfd73swruz4LATV5xkmydjZd6");

const env = configDotenv({ path: envFilePath }).parsed;
const originalEnv = configDotenv({
path: path.join(tempPathJS, ".env"),
}).parsed;
expect(env?.HOOKS_COMPILE_HOST).toBeDefined();
expect(env?.HOOKS_COMPILE_HOST).toEqual(originalEnv?.HOOKS_COMPILE_HOST);
expect(env?.HOOKS_DEBUG_HOST).toBeDefined();
expect(env?.HOOKS_DEBUG_HOST).toEqual(originalEnv?.HOOKS_DEBUG_HOST);
expect(env?.XAHAU_ENV).toBeDefined();
expect(env?.XAHAU_ENV).toEqual(originalEnv?.XAHAU_ENV);
expect(env?.XRPLD_WSS).toBeDefined();
expect(env?.XRPLD_WSS).toEqual(originalEnv?.XRPLD_WSS);
expect(env?.ALICE_SEED).toBeDefined();
});

it("should handle existing directory error", async () => {
Expand Down
Loading