aboutsummaryrefslogtreecommitdiff
path: root/src/install
diff options
context:
space:
mode:
authorGravatar Colin McDonnell <colinmcd94@gmail.com> 2023-10-10 00:07:41 -0700
committerGravatar Colin McDonnell <colinmcd94@gmail.com> 2023-10-12 16:04:02 -0700
commit07db922aad3b043a0b1826019e356b9e09c8d27b (patch)
tree3807f229efcabec7c1645abf212fd8167a08bfe1 /src/install
parentbd2c8ca3d3d4c9ab6b89917395b13989bb08b051 (diff)
downloadbun-07db922aad3b043a0b1826019e356b9e09c8d27b.tar.gz
bun-07db922aad3b043a0b1826019e356b9e09c8d27b.tar.zst
bun-07db922aad3b043a0b1826019e356b9e09c8d27b.zip
WIP
Diffstat (limited to 'src/install')
-rw-r--r--src/install/install.zig148
1 files changed, 140 insertions, 8 deletions
diff --git a/src/install/install.zig b/src/install/install.zig
index 9b2dc4502..73e471ec5 100644
--- a/src/install/install.zig
+++ b/src/install/install.zig
@@ -48,6 +48,7 @@ const Bitset = bun.bit_set.DynamicBitSetUnmanaged;
const z_allocator = @import("../memory_allocator.zig").z_allocator;
const Syscall = bun.sys;
const RunCommand = @import("../cli/run_command.zig").RunCommand;
+const PackageManagerCommand = @import("../cli/package_manager_command.zig").PackageManagerCommand;
threadlocal var initialized_store = false;
const Futex = @import("../futex.zig");
@@ -6035,7 +6036,7 @@ pub const PackageManager = struct {
"Possible values: \"hardlink\" (default), \"symlink\", \"copyfile\"";
const install_params_ = [_]ParamType{
- clap.parseParam("-c, --config <STR>? Load config (bunfig.toml)") catch unreachable,
+ clap.parseParam("-c, --config <STR>? Specify path to config file (bunfig.toml)") catch unreachable,
clap.parseParam("-y, --yarn Write a yarn.lock file (yarn v1)") catch unreachable,
clap.parseParam("-p, --production Don't install devDependencies") catch unreachable,
clap.parseParam("--no-save Don't save a lockfile") catch unreachable,
@@ -6055,10 +6056,8 @@ pub const PackageManager = struct {
clap.parseParam("--cwd <STR> Set a specific cwd") catch unreachable,
clap.parseParam("--backend <STR> Platform-specific optimizations for installing dependencies. " ++ platform_specific_backend_label) catch unreachable,
clap.parseParam("--link-native-bins <STR>... Link \"bin\" from a matching platform-specific \"optionalDependencies\" instead. Default: esbuild, turbo") catch unreachable,
-
// clap.parseParam("--omit <STR>... Skip installing dependencies of a certain type. \"dev\", \"optional\", or \"peer\"") catch unreachable,
// clap.parseParam("--no-dedupe Disable automatic downgrading of dependencies that would otherwise cause unnecessary duplicate package versions ($BUN_CONFIG_NO_DEDUPLICATE)") catch unreachable,
-
clap.parseParam("--help Print this help menu") catch unreachable,
};
@@ -6149,6 +6148,141 @@ pub const PackageManager = struct {
}
};
+ pub fn printHelp(comptime subcommand: Subcommand) void {
+ switch (subcommand) {
+ // fall back to HelpCommand.printWithReason
+ Subcommand.install => {
+ const intro_text =
+ \\<b>Usage<r>: <b><green>bun install<r> <cyan>[flags]<r> [...\<pkg\>]
+ \\ Install the dependencies listed in package.json
+ ;
+ const outro_text =
+ \\<b>Examples:<r>
+ \\ <d>Install the dependencies for the current project<r>
+ \\ <b><green>bun install<r>
+ \\
+ \\ <d>Skip devDependencies<r>
+ \\ <b><green>bun install --production<r>
+ \\
+ \\Full documentation is available at <magenta>https://bun.sh/docs/cli/install<r>
+ ;
+ Output.pretty("\n" ++ intro_text, .{});
+ Output.flush();
+ Output.pretty("\n<b>Flags:<r>", .{});
+ Output.flush();
+ clap.simpleHelp(&PackageManager.add_params);
+ Output.pretty("\n\n" ++ outro_text, .{});
+ Output.flush();
+ },
+ Subcommand.update => {
+ const intro_text =
+ \\<b>Usage<r>: <b><green>bun update<r> <cyan>[flags]<r>
+ \\ Update all dependencies to most recent versions within the version range in package.json
+ ;
+ const outro_text =
+ \\<b>Examples:<r>
+ \\ <d>Update all dependencies:<r>
+ \\ <b><green>bun update<r>
+ \\
+ \\Full documentation is available at <magenta>https://bun.sh/docs/cli/install#bun-update<r>
+ ;
+ Output.pretty("\n" ++ intro_text, .{});
+ Output.flush();
+ Output.pretty("\n<b>Flags:<r>", .{});
+ Output.flush();
+ clap.simpleHelp(&PackageManager.add_params);
+ Output.pretty("\n\n" ++ outro_text, .{});
+ Output.flush();
+ },
+ Subcommand.pm => {
+ PackageManagerCommand.printHelp();
+ },
+ Subcommand.add => {
+ const intro_text =
+ \\<b>Usage<r>: <b><green>bun add<r> <cyan>[flags]<r> \<pkg\> [...\<pkg\>]
+ ;
+ const outro_text =
+ \\<b>Examples:<r>
+ \\ <d>Add a dependency from the npm registry<r>
+ \\ <b><green>bun add zod<r>
+ \\ <b><green>bun add zod@next<r>
+ \\ <b><green>bun add zod@3.0.0<r>
+ \\
+ \\ <d>Add a dev, optional, or peer dependency <r>
+ \\ <b><green>bun add -d typescript<r>
+ \\ <b><green>bun add -o lodash<r>
+ \\ <b><green>bun add --peer esbuild<r>
+ \\
+ \\Full documentation is available at <magenta>https://bun.sh/docs/cli/install<r>
+ ;
+ Output.pretty("\n" ++ intro_text, .{});
+ Output.flush();
+ Output.pretty("\n\n<b>Flags:<r>", .{});
+ Output.flush();
+ clap.simpleHelp(&PackageManager.add_params);
+ Output.pretty("\n\n" ++ outro_text, .{});
+ Output.flush();
+ },
+ Subcommand.remove => {
+ const intro_text =
+ \\<b>Usage<r>: <b><green>bun remove<r> <cyan>[flags]<r> \<pkg\> [...\<pkg\>]
+ \\ Remove a package from package.json and uninstall from node_modules
+ ;
+ const outro_text =
+ \\<b>Examples:<r>
+ \\ <d>Add a dependency from the npm registry<r>
+ \\ <b><green>bun remove ts-node<r>
+ \\
+ \\Full documentation is available at <magenta>https://bun.sh/docs/cli/install#bun-remove<r>
+ ;
+ Output.pretty("\n" ++ intro_text, .{});
+ Output.flush();
+ Output.pretty("\n<b>Flags:<r>", .{});
+ Output.flush();
+ clap.simpleHelp(&PackageManager.remove_params);
+ Output.pretty("\n\n" ++ outro_text, .{});
+ Output.flush();
+ },
+ Subcommand.link => {
+ const intro_text =
+ \\<b>Usage<r>: <b><green>bun link<r> <cyan>[flags]<r> [\<package\>]
+ ;
+ const outro_text =
+ \\<b>Examples:<r>
+ \\ <d>Register the current directory as a linkable package.<r>
+ \\ <d>Directory should contain a package.json.<r>
+ \\ <b><green>bun link<r>
+ \\
+ \\ <d>Add a previously-registered linkable package as a dependency of the current project.<r>
+ \\ <b><green>bun link \<package\><r>
+ \\
+ \\Full documentation is available at <magenta>https://bun.sh/docs/cli/install#bun-link<r>
+ ;
+ Output.pretty("\n" ++ intro_text, .{});
+ Output.flush();
+ Output.pretty("\n<b>Flags:<r>", .{});
+ Output.flush();
+ clap.simpleHelp(&PackageManager.link_params);
+ Output.pretty("\n\n" ++ outro_text, .{});
+ Output.flush();
+ },
+ Subcommand.unlink => {
+ const intro_text =
+ \\<b>Usage<r>: <b><green>bun unlink<r> <cyan>[flags]<r>
+ \\
+ \\<b>Examples:<r>
+ \\ <d>Unregister the current directory as a linkable package.<r>
+ \\ <b><green>bun unlink<r>
+ \\
+ \\Full documentation is available at <magenta>https://bun.sh/docs/cli/install#bun-link<r>
+ ;
+
+ Output.pretty("\n" ++ intro_text, .{});
+ Output.flush();
+ },
+ }
+ }
+
pub fn parse(allocator: std.mem.Allocator, comptime subcommand: Subcommand) !CommandLineArguments {
comptime var params: []const ParamType = &switch (subcommand) {
.install => install_params,
@@ -6173,11 +6307,9 @@ pub const PackageManager = struct {
};
if (args.flag("--help")) {
- Output.prettyln("\n<b><magenta>bun<r> (package manager) flags:<r>\n\n", .{});
- Output.flush();
-
- clap.help(Output.writer(), params) catch {};
-
+ // Output.prettyln("\n<b><magenta>bun<r> (package manager) flags:<r>\n\n", .{});
+ // Output.flush();
+ printHelp(subcommand);
Global.exit(0);
}