Skip to content

Commit

Permalink
👍 Add persistent arguments
Browse files Browse the repository at this point in the history
  • Loading branch information
lambdalisue committed Sep 24, 2023
1 parent 67021af commit a64111e
Show file tree
Hide file tree
Showing 10 changed files with 142 additions and 394 deletions.
36 changes: 6 additions & 30 deletions denops/gin/command/branch/main.ts
Original file line number Diff line number Diff line change
@@ -1,20 +1,14 @@
import type { Denops } from "https://deno.land/x/denops_std@v5.0.1/mod.ts";
import * as helper from "https://deno.land/x/denops_std@v5.0.1/helper/mod.ts";
import {
assert,
ensure,
is,
} from "https://deno.land/x/unknownutil@v3.9.0/mod.ts#^";
import * as vars from "https://deno.land/x/denops_std@v5.0.1/variable/mod.ts";
import { assert, is } from "https://deno.land/x/unknownutil@v3.9.0/mod.ts#^";
import {
builtinOpts,
formatOpts,
parse,
validateFlags,
validateOpts,
} from "https://deno.land/x/denops_std@v5.0.1/argument/mod.ts";

import { normCmdArgs, parseSilent } from "../../util/cmd.ts";
import { fillCmdArgs, normCmdArgs, parseSilent } from "../../util/cmd.ts";
import { exec } from "./command.ts";
import { edit } from "./edit.ts";

Expand All @@ -41,40 +35,22 @@ export function main(denops: Denops): void {
};
}

const allowedFlags = [
"a",
"all",
"r",
"remotes",
"i",
"ignore-case",
"abbrev",
"no-abbrev",
];

async function command(
denops: Denops,
bang: string,
mods: string,
args: string[],
): Promise<void> {
if (args.length === 0) {
args = ensure(
await vars.g.get(denops, "gin_branch_default_args", []),
is.ArrayOf(is.String),
{
name: "g:gin_branch_default_args",
},
);
}
args = await fillCmdArgs(denops, args, "branch");
args = await normCmdArgs(denops, args);

const [opts, flags, residue] = parse(await normCmdArgs(denops, args));
const [opts, flags, residue] = parse(args);
validateOpts(opts, [
"worktree",
"opener",
...builtinOpts,
]);
validateFlags(flags, allowedFlags);

await exec(denops, {
worktree: opts.worktree,
patterns: residue,
Expand Down
28 changes: 5 additions & 23 deletions denops/gin/command/browse/main.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,12 @@ import {
} from "https://deno.land/x/unknownutil@v3.9.0/mod.ts#^";
import * as batch from "https://deno.land/x/denops_std@v5.0.1/batch/mod.ts";
import * as fn from "https://deno.land/x/denops_std@v5.0.1/function/mod.ts";
import * as vars from "https://deno.land/x/denops_std@v5.0.1/variable/mod.ts";
import * as helper from "https://deno.land/x/denops_std@v5.0.1/helper/mod.ts";
import {
parse,
validateFlags,
validateOpts,
} from "https://deno.land/x/denops_std@v5.0.1/argument/mod.ts";
import { normCmdArgs } from "../../util/cmd.ts";
import { fillCmdArgs, normCmdArgs } from "../../util/cmd.ts";
import { exec } from "./command.ts";

type Range = readonly [number, number];
Expand Down Expand Up @@ -47,31 +45,15 @@ async function command(
args: string[],
options: CommandOptions = {},
): Promise<void> {
if (args.length === 0) {
args = ensure(
await vars.g.get(denops, "gin_browse_default_args", []),
is.ArrayOf(is.String),
{
name: "g:gin_browse_default_args",
},
);
}
args = await fillCmdArgs(denops, args, "browse");
args = await normCmdArgs(denops, args);

const [opts, flags, residue] = parse(await normCmdArgs(denops, args));
validateFlags(flags, [
"remote",
"permalink",
"path",
"home",
"commit",
"pr",
"n",
"no-browser",
]);
const [opts, flags, residue] = parse(args);
validateOpts(opts, [
"worktree",
"yank",
]);

const commitish = parseResidue(residue);
const path = unnullish(
await ensurePath(denops, opts.path),
Expand Down
25 changes: 7 additions & 18 deletions denops/gin/command/chaperon/main.ts
Original file line number Diff line number Diff line change
@@ -1,18 +1,13 @@
import type { Denops } from "https://deno.land/x/denops_std@v5.0.1/mod.ts";
import * as vars from "https://deno.land/x/denops_std@v5.0.1/variable/mod.ts";
import * as helper from "https://deno.land/x/denops_std@v5.0.1/helper/mod.ts";
import {
assert,
ensure,
is,
} from "https://deno.land/x/unknownutil@v3.9.0/mod.ts#^";
import { assert, is } from "https://deno.land/x/unknownutil@v3.9.0/mod.ts#^";
import {
builtinOpts,
formatOpts,
parse,
parseOpts,
validateOpts,
} from "https://deno.land/x/denops_std@v5.0.1/argument/mod.ts";
import { normCmdArgs, parseSilent } from "../../util/cmd.ts";
import { fillCmdArgs, normCmdArgs, parseSilent } from "../../util/cmd.ts";
import { exec } from "./command.ts";

export function main(denops: Denops): void {
Expand All @@ -39,24 +34,18 @@ async function command(
mods: string,
args: string[],
): Promise<void> {
if (args.length === 0) {
args = ensure(
await vars.g.get(denops, "gin_chaperon_default_args", []),
is.ArrayOf(is.String),
{
name: "g:gin_chaperon_default_args",
},
);
}
args = await fillCmdArgs(denops, args, "chaperon");
args = await normCmdArgs(denops, args);

const [opts, _, residue] = parse(await normCmdArgs(denops, args));
const [opts, residue] = parseOpts(args);
validateOpts(opts, [
"worktree",
"opener",
"no-ours",
"no-theirs",
...builtinOpts,
]);

const [abspath] = parseResidue(residue);
await exec(denops, abspath, {
worktree: opts.worktree,
Expand Down
42 changes: 5 additions & 37 deletions denops/gin/command/diff/main.ts
Original file line number Diff line number Diff line change
@@ -1,19 +1,13 @@
import type { Denops } from "https://deno.land/x/denops_std@v5.0.1/mod.ts";
import {
assert,
ensure,
is,
} from "https://deno.land/x/unknownutil@v3.9.0/mod.ts#^";
import { assert, is } from "https://deno.land/x/unknownutil@v3.9.0/mod.ts#^";
import * as helper from "https://deno.land/x/denops_std@v5.0.1/helper/mod.ts";
import * as vars from "https://deno.land/x/denops_std@v5.0.1/variable/mod.ts";
import {
builtinOpts,
formatOpts,
parse,
validateFlags,
validateOpts,
} from "https://deno.land/x/denops_std@v5.0.1/argument/mod.ts";
import { normCmdArgs, parseSilent } from "../../util/cmd.ts";
import { fillCmdArgs, normCmdArgs, parseSilent } from "../../util/cmd.ts";
import { exec } from "./command.ts";
import { edit } from "./edit.ts";
import { read } from "./read.ts";
Expand Down Expand Up @@ -59,48 +53,22 @@ export function main(denops: Denops): void {
};
}

const allowedFlags = [
"R",
"b",
"w",
"I",
"cached",
"staged",
"renames",
"diff-filter",
"ignore-cr-at-eol",
"ignore-space-at-eol",
"ignore-space-change",
"ignore-all-space",
"ignore-blank-lines",
"ignore-matching-lines",
"ignore-submodules",
];

async function command(
denops: Denops,
bang: string,
mods: string,
args: string[],
): Promise<void> {
if (args.length === 0) {
args = ensure(
await vars.g.get(denops, "gin_diff_default_args", []),
is.ArrayOf(is.String),
{
name: "g:gin_diff_default_args",
},
);
}
args = await fillCmdArgs(denops, args, "diff");
args = await normCmdArgs(denops, args);

const [opts, flags, residue] = parse(await normCmdArgs(denops, args));
const [opts, flags, residue] = parse(args);
validateOpts(opts, [
"processor",
"worktree",
"opener",
...builtinOpts,
]);
validateFlags(flags, allowedFlags);
const [commitish, paths] = parseResidue(residue);
await exec(denops, {
processor: opts.processor?.split(" "),
Expand Down
22 changes: 5 additions & 17 deletions denops/gin/command/edit/main.ts
Original file line number Diff line number Diff line change
@@ -1,18 +1,13 @@
import type { Denops } from "https://deno.land/x/denops_std@v5.0.1/mod.ts";
import {
assert,
ensure,
is,
} from "https://deno.land/x/unknownutil@v3.9.0/mod.ts#^";
import * as vars from "https://deno.land/x/denops_std@v5.0.1/variable/mod.ts";
import { assert, is } from "https://deno.land/x/unknownutil@v3.9.0/mod.ts#^";
import * as helper from "https://deno.land/x/denops_std@v5.0.1/helper/mod.ts";
import {
builtinOpts,
formatOpts,
parseOpts,
validateOpts,
} from "https://deno.land/x/denops_std@v5.0.1/argument/mod.ts";
import { normCmdArgs, parseSilent } from "../../util/cmd.ts";
import { fillCmdArgs, normCmdArgs, parseSilent } from "../../util/cmd.ts";
import { exec } from "./command.ts";
import { edit } from "./edit.ts";
import { read } from "./read.ts";
Expand Down Expand Up @@ -57,17 +52,10 @@ async function command(
mods: string,
args: string[],
): Promise<void> {
if (args.length === 0) {
args = ensure(
await vars.g.get(denops, "gin_edit_default_args", []),
is.ArrayOf(is.String),
{
name: "g:gin_edit_default_args",
},
);
}
args = await fillCmdArgs(denops, args, "edit");
args = await normCmdArgs(denops, args);

const [opts, residue] = parseOpts(await normCmdArgs(denops, args));
const [opts, residue] = parseOpts(args);
validateOpts(opts, [
"worktree",
"opener",
Expand Down
Loading

0 comments on commit a64111e

Please sign in to comment.