tangled
alpha
login
or
join now
danabra.mov
/
typelex
56
fork
atom
An experimental TypeSpec syntax for Lexicon
56
fork
atom
overview
issues
1
pulls
2
pipelines
deps first
danabra.mov
5 months ago
20794ba4
26b47f9b
+48
-45
1 changed file
expand all
collapse all
unified
split
packages
cli
src
commands
init.ts
+48
-45
packages/cli/src/commands/init.ts
···
61
// Remove the .* suffix for use in template
62
const namespacePrefix = namespace.slice(0, -2);
63
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
64
// Create typelex directory
65
await mkdir(typelexDir, { recursive: true });
66
···
104
console.warn("⚠ Could not update package.json:", (err as Error).message);
105
}
106
107
-
// Install dependencies
108
-
console.log("\nInstalling dependencies...");
109
-
110
-
// Detect package manager
111
-
let packageManager = "npm";
112
-
try {
113
-
await access(resolve(cwd, "pnpm-lock.yaml"));
114
-
packageManager = "pnpm";
115
-
} catch {
116
-
try {
117
-
await access(resolve(cwd, "yarn.lock"));
118
-
packageManager = "yarn";
119
-
} catch {
120
-
// Default to npm
121
-
}
122
-
}
123
-
124
-
return new Promise((resolvePromise, reject) => {
125
-
const args = packageManager === "npm"
126
-
? ["install", "--save-dev", "@typelex/cli", "@typelex/emitter"]
127
-
: ["add", "-D", "@typelex/cli", "@typelex/emitter"];
128
-
129
-
const install = spawn(packageManager, args, {
130
-
cwd,
131
-
stdio: "inherit",
132
-
});
133
-
134
-
install.on("close", (code) => {
135
-
if (code === 0) {
136
-
console.log("\n✓ Installed @typelex/cli and @typelex/emitter");
137
-
console.log("\nTypelex initialized successfully!");
138
-
console.log("\nNext steps:");
139
-
console.log(" 1. Edit typelex/main.tsp to define your lexicons");
140
-
console.log(" 2. Run: npm run build:typelex");
141
-
resolvePromise();
142
-
} else {
143
-
process.exit(code ?? 1);
144
-
}
145
-
});
146
-
147
-
install.on("error", (err) => {
148
-
console.error("Failed to install dependencies:", err);
149
-
reject(err);
150
-
});
151
-
});
152
}
···
61
// Remove the .* suffix for use in template
62
const namespacePrefix = namespace.slice(0, -2);
63
64
+
// Install dependencies first
65
+
console.log("\nInstalling dependencies...\n");
66
+
67
+
// Detect package manager
68
+
let packageManager = "npm";
69
+
try {
70
+
await access(resolve(cwd, "pnpm-lock.yaml"));
71
+
packageManager = "pnpm";
72
+
} catch {
73
+
try {
74
+
await access(resolve(cwd, "yarn.lock"));
75
+
packageManager = "yarn";
76
+
} catch {
77
+
// Default to npm
78
+
}
79
+
}
80
+
81
+
// Install dependencies and only proceed if successful
82
+
await new Promise<void>((resolvePromise, reject) => {
83
+
const args = packageManager === "npm"
84
+
? ["install", "--save-dev", "@typelex/cli", "@typelex/emitter"]
85
+
: ["add", "-D", "@typelex/cli", "@typelex/emitter"];
86
+
87
+
const install = spawn(packageManager, args, {
88
+
cwd,
89
+
stdio: "inherit",
90
+
});
91
+
92
+
install.on("close", (code) => {
93
+
if (code === 0) {
94
+
console.log("\n✓ Installed @typelex/cli and @typelex/emitter\n");
95
+
resolvePromise();
96
+
} else {
97
+
console.error("\nFailed to install dependencies");
98
+
process.exit(code ?? 1);
99
+
}
100
+
});
101
+
102
+
install.on("error", (err) => {
103
+
console.error("Failed to install dependencies:", err);
104
+
reject(err);
105
+
});
106
+
});
107
+
108
// Create typelex directory
109
await mkdir(typelexDir, { recursive: true });
110
···
148
console.warn("⚠ Could not update package.json:", (err as Error).message);
149
}
150
151
+
console.log("\nTypelex initialized successfully!");
152
+
console.log("\nNext steps:");
153
+
console.log(" 1. Edit typelex/main.tsp to define your lexicons");
154
+
console.log(" 2. Run: npm run build:typelex");
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
155
}