113 lines
3.0 KiB
JavaScript
113 lines
3.0 KiB
JavaScript
#!/usr/bin/env node
|
|
import { relative } from 'node:path';
|
|
import { defineCommand, runMain } from 'citty';
|
|
import { consola } from 'consola';
|
|
import { d as downloadTemplate, s as startShell } from './shared/giget.OCaTp9b-.mjs';
|
|
import 'node:fs/promises';
|
|
import 'node:fs';
|
|
import 'assert';
|
|
import 'path';
|
|
import 'events';
|
|
import 'stream';
|
|
import 'string_decoder';
|
|
import 'buffer';
|
|
import 'zlib';
|
|
import 'process';
|
|
import 'fs';
|
|
import 'util';
|
|
import 'crypto';
|
|
import 'pathe';
|
|
import 'defu';
|
|
import 'nypm';
|
|
import 'node:stream';
|
|
import 'node:child_process';
|
|
import 'node:os';
|
|
import 'node:util';
|
|
import 'node-fetch-native/proxy';
|
|
|
|
const name = "giget";
|
|
const version = "2.0.0";
|
|
const description = "Download templates and git repositories with pleasure!";
|
|
const pkg = {
|
|
name: name,
|
|
version: version,
|
|
description: description};
|
|
|
|
const mainCommand = defineCommand({
|
|
meta: {
|
|
name: pkg.name,
|
|
version: pkg.version,
|
|
description: pkg.description
|
|
},
|
|
args: {
|
|
// TODO: Make it `-t` in the next major version
|
|
template: {
|
|
type: "positional",
|
|
description: "Template name or a a URI describing provider, repository, subdir, and branch/ref"
|
|
},
|
|
dir: {
|
|
type: "positional",
|
|
description: "A relative or absolute path where to extract the template",
|
|
required: false
|
|
},
|
|
auth: {
|
|
type: "string",
|
|
description: "Custom Authorization token to use for downloading template. (Can be overriden with `GIGET_AUTH` environment variable)"
|
|
},
|
|
cwd: {
|
|
type: "string",
|
|
description: "Set current working directory to resolve dirs relative to it"
|
|
},
|
|
force: {
|
|
type: "boolean",
|
|
description: "Clone to existing directory even if exists"
|
|
},
|
|
forceClean: {
|
|
type: "boolean",
|
|
description: "Remove any existing directory or file recusively before cloning"
|
|
},
|
|
offline: {
|
|
type: "boolean",
|
|
description: "o not attempt to download and use cached version"
|
|
},
|
|
preferOffline: {
|
|
type: "boolean",
|
|
description: "Use cache if exists otherwise try to download"
|
|
},
|
|
shell: {
|
|
type: "boolean",
|
|
description: "Open a new shell with current working "
|
|
},
|
|
install: {
|
|
type: "boolean",
|
|
description: "Install dependencies after cloning"
|
|
},
|
|
verbose: {
|
|
type: "boolean",
|
|
description: "Show verbose debugging info"
|
|
}
|
|
},
|
|
run: async ({ args }) => {
|
|
if (args.verbose) {
|
|
process.env.DEBUG = process.env.DEBUG || "true";
|
|
}
|
|
const r = await downloadTemplate(args.template, {
|
|
dir: args.dir,
|
|
force: args.force,
|
|
forceClean: args.forceClean,
|
|
offline: args.offline,
|
|
preferOffline: args.preferOffline,
|
|
auth: args.auth,
|
|
install: args.install
|
|
});
|
|
const _from = r.name || r.url;
|
|
const _to = relative(process.cwd(), r.dir) || "./";
|
|
consola.log(`\u2728 Successfully cloned \`${_from}\` to \`${_to}\`
|
|
`);
|
|
if (args.shell) {
|
|
startShell(r.dir);
|
|
}
|
|
}
|
|
});
|
|
runMain(mainCommand);
|