ok/jj
1
0
Fork 0
forked from mirrors/jj

cli: add BUILD files

The `grammar` macro from `pest_derive` doesn't actually interpret the given file
as relative in our case, so we have to give it the fully qualified relative path
which exists in the `buck-out/` dir.

Signed-off-by: Austin Seipp <aseipp@pobox.com>
This commit is contained in:
Austin Seipp 2023-08-06 17:50:00 -05:00
parent 38fe6fcb29
commit d4cce209d8
5 changed files with 126 additions and 0 deletions

38
cli/BUILD Normal file
View file

@ -0,0 +1,38 @@
load("//buck/shims/jj.bzl", "jj")
load("//cli/BUILD.deps.bzl", "JJ_CLI_DEPS")
alias(
# NOTE: default target for this package
name = 'cli',
actual = ':jj',
)
jj.rust_library(
name = "jj-cli",
srcs = glob([
"src/**/*.rs",
"src/**/*.toml",
"src/**/*.json",
"src/**/*.pest",
], exclude = [
"**/main.rs"
]),
features = [
"watchman",
"git",
],
deps = JJ_CLI_DEPS,
)
jj.rust_binary(
name = 'jj',
srcs = ['src/main.rs'],
features = [
"watchman",
"git",
],
deps = [ ":jj-cli" ] + JJ_CLI_DEPS,
)

55
cli/BUILD.deps.bzl Normal file
View file

@ -0,0 +1,55 @@
JJ_CLI_DEPS = [
# CARGO-SYNC-START: dependencies
'//lib:jj-lib',
'third-party//rust:bstr',
'third-party//rust:chrono',
'third-party//rust:clap',
'third-party//rust:clap-markdown',
'third-party//rust:clap_complete',
'third-party//rust:clap_complete_nushell',
'third-party//rust:clap_mangen',
'third-party//rust:config',
'third-party//rust:criterion',
'third-party//rust:crossterm',
'third-party//rust:dirs',
'third-party//rust:dunce',
'third-party//rust:esl01-renderdag',
'third-party//rust:futures',
'third-party//rust:git2',
'third-party//rust:gix',
'third-party//rust:hex',
'third-party//rust:indexmap',
'third-party//rust:indoc',
'third-party//rust:itertools',
'third-party//rust:maplit',
'third-party//rust:minus',
'third-party//rust:once_cell',
'third-party//rust:pest',
'third-party//rust:pest_derive',
'third-party//rust:pollster',
'third-party//rust:rayon',
'third-party//rust:regex',
'third-party//rust:rpassword',
'third-party//rust:scm-record',
'third-party//rust:serde',
'third-party//rust:slab',
'third-party//rust:strsim',
'third-party//rust:tempfile',
'third-party//rust:textwrap',
'third-party//rust:thiserror',
'third-party//rust:timeago',
'third-party//rust:toml_edit',
'third-party//rust:tracing',
'third-party//rust:tracing-chrome',
'third-party//rust:tracing-subscriber',
'third-party//rust:unicode-width',
# CARGO-SYNC-END
] + select({
"config//os:windows": [],
"DEFAULT": [
# CARGO-SYNC-START: dependencies@cfg(unix)
'third-party//rust:libc',
# CARGO-SYNC-END
],
})

4
cli/PACKAGE Normal file
View file

@ -0,0 +1,4 @@
package(
visibility = [ 'PUBLIC' ],
)

23
cli/examples/BUILD Normal file
View file

@ -0,0 +1,23 @@
load("//buck/shims/jj.bzl", "jj")
load("//cli/BUILD.deps.bzl", "JJ_CLI_DEPS")
EXAMPLES = [
'custom-backend',
'custom-command',
'custom-commit-templater',
'custom-global-flag',
'custom-operation-templater',
'custom-working-copy',
]
[
jj.rust_binary(
name = name,
srcs = glob(["{}/**/*.rs".format(name)]),
deps = [
"//cli:jj-cli",
"third-party//rust:async-trait",
] + JJ_CLI_DEPS,
) for name in EXAMPLES
]

View file

@ -40,6 +40,12 @@ use pest::Parser;
use pest_derive::Parser;
use thiserror::Error;
#[cfg(buck_build)]
#[derive(Parser)]
#[grammar = "cli/src/template.pest"]
struct TemplateParser;
#[cfg(not(buck_build))]
#[derive(Parser)]
#[grammar = "template.pest"]
struct TemplateParser;