Skip to content

Commit

Permalink
sign: implement jj sign command
Browse files Browse the repository at this point in the history
Changes were taken from jj-vcs#3142 and slightly modified.
  • Loading branch information
necauqua authored and pylbrecht committed Nov 8, 2024
1 parent e4df7b1 commit 46731eb
Show file tree
Hide file tree
Showing 3 changed files with 68 additions and 0 deletions.
3 changes: 3 additions & 0 deletions cli/src/commands/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@ mod restore;
mod root;
mod run;
mod show;
mod sign;
mod simplify_parents;
mod sparse;
mod split;
Expand Down Expand Up @@ -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)]
Expand Down Expand Up @@ -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)
}
Expand Down
43 changes: 43 additions & 0 deletions cli/src/commands/sign.rs
Original file line number Diff line number Diff line change
@@ -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!()
}
22 changes: 22 additions & 0 deletions cli/tests/[email protected]
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down

0 comments on commit 46731eb

Please sign in to comment.