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