sign: implement jj sign command

Changes were taken from #3142 and slightly modified.
This commit is contained in:
Anton Bulakh 2023-11-28 22:15:56 +02:00 committed by pylbrecht
parent e4df7b12cc
commit 46731eb56e
3 changed files with 68 additions and 0 deletions

View file

@ -47,6 +47,7 @@ mod restore;
mod root;
mod run;
mod show;
mod sign;
mod simplify_parents;
mod sparse;
mod split;
@ -149,6 +150,7 @@ enum Command {
#[command(hide = true)]
// TODO: Flesh out.
Run(run::RunArgs),
Sign(sign::SignArgs),
Show(show::ShowArgs),
SimplifyParents(simplify_parents::SimplifyParentsArgs),
#[command(subcommand)]
@ -239,6 +241,7 @@ pub fn run_command(ui: &mut Ui, command_helper: &CommandHelper) -> Result<(), Co
Command::Revert(_args) => revert(),
Command::Root(args) => root::cmd_root(ui, command_helper, args),
Command::Run(args) => run::cmd_run(ui, command_helper, args),
Command::Sign(sub_args) => sign::cmd_sign(ui, command_helper, sub_args),
Command::SimplifyParents(args) => {
simplify_parents::cmd_simplify_parents(ui, command_helper, args)
}

43
cli/src/commands/sign.rs Normal file
View file

@ -0,0 +1,43 @@
// Copyright 2023 The Jujutsu Authors
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// https://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
use crate::cli_util::CommandHelper;
use crate::cli_util::RevisionArg;
use crate::command_error::CommandError;
use crate::ui::Ui;
/// Cryptographically sign a revision
#[derive(clap::Args, Clone, Debug)]
pub struct SignArgs {
/// What key to use, depends on the configured signing backend.
#[arg()]
key: Option<String>,
/// What revision to sign
#[arg(long, short, default_value = "@")]
revision: RevisionArg,
/// Sign a commit that is not authored by you or was already signed.
#[arg(long, short)]
force: bool,
/// Drop the signature, explicitly "un-signing" the commit.
#[arg(long, short = 'D', conflicts_with = "force")]
drop: bool,
}
pub fn cmd_sign(
_ui: &mut Ui,
_command: &CommandHelper,
_args: &SignArgs,
) -> Result<(), CommandError> {
todo!()
}

View file

@ -78,6 +78,7 @@ This document contains the help content for the `jj` command-line program.
* [`jj resolve`↴](#jj-resolve)
* [`jj restore`↴](#jj-restore)
* [`jj root`↴](#jj-root)
* [`jj sign`↴](#jj-sign)
* [`jj show`↴](#jj-show)
* [`jj simplify-parents`↴](#jj-simplify-parents)
* [`jj sparse`↴](#jj-sparse)
@ -146,6 +147,7 @@ To get started, see the tutorial at https://martinvonz.github.io/jj/latest/tutor
* `resolve` — Resolve a conflicted file with an external merge tool
* `restore` — Restore paths from another revision
* `root` — Show the current workspace root directory
* `sign` — Cryptographically sign a revision
* `show` — Show commit description and changes in a revision
* `simplify-parents` — Simplify parent edges for the specified revision(s)
* `sparse` — Manage which paths from the working-copy commit are present in the working copy
@ -1886,6 +1888,26 @@ Show the current workspace root directory
## `jj sign`
Cryptographically sign a revision
**Usage:** `jj sign [OPTIONS] [KEY]`
###### **Arguments:**
* `<KEY>` — What key to use, depends on the configured signing backend
###### **Options:**
* `-r`, `--revision <REVISION>` — What revision to sign
Default value: `@`
* `-f`, `--force` — Sign a commit that is not authored by you or was already signed
* `-D`, `--drop` — Drop the signature, explicitly "un-signing" the commit
## `jj show`
Show commit description and changes in a revision