1
Fork 0
mirror of https://github.com/RGBCube/nu_scripts synced 2025-08-01 22:57:46 +00:00

update some scripts from dash to underscore, add 20k_club script (#271)

This commit is contained in:
Darren Schroeder 2022-08-04 15:25:52 -05:00 committed by GitHub
parent 9ae962ce41
commit ea7de87315
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 206 additions and 106 deletions

View file

@ -260,8 +260,8 @@ export extern "cargo run" [
# Run the tests # Run the tests
export extern "cargo test" [ export extern "cargo test" [
test-arg-seperator?: string test_arg_seperator?: string
...args?: any # Arguments to be passed to the tests ...args: any # Arguments to be passed to the tests
--no-run # Compile, but don't run tests --no-run # Compile, but don't run tests
--no-fail-fast # Run all tests regardless of failure --no-fail-fast # Run all tests regardless of failure
--package(-p): string@"nu-complete cargo packages" # Test only the specified packages --package(-p): string@"nu-complete cargo packages" # Test only the specified packages
@ -304,8 +304,8 @@ export extern "cargo test" [
# Execute benchmarks of a package # Execute benchmarks of a package
export extern "cargo bench" [ export extern "cargo bench" [
bench-option-seperator?: string bench_option_seperator?: string
...options?: any # Options to be passed to the benchmarks # ...options?: any # Options to be passed to the benchmarks
--no-run # Compile, but don't run benchmarks --no-run # Compile, but don't run benchmarks
--no-fail-fast # Run all benchmarks regardless of failure --no-fail-fast # Run all benchmarks regardless of failure
--package(-p): string@"nu-complete cargo packages" # Benchmark only the specified packages --package(-p): string@"nu-complete cargo packages" # Benchmark only the specified packages
@ -397,7 +397,7 @@ export extern "cargo publish" [
--locked # Require Cargo.lock is up to date --locked # Require Cargo.lock is up to date
--offline # Run without accessing the network --offline # Run without accessing the network
--help(-h) # Prints help information --help(-h) # Prints help information
-Z: any # Unstable (nightly-only) flags to Cargo, see 'cargo -Z help' for details -Z: any # Unstable (nightly-only) flags to Cargo, see 'cargo -Z help' for details
--jobs(-j): number # Number of parallel jobs to run --jobs(-j): number # Number of parallel jobs to run
--keep-going # Build as many crates in the dependency graph as possible --keep-going # Build as many crates in the dependency graph as possible
] ]

View file

@ -26,9 +26,9 @@ export extern "winget install" [
--override: string, # Override arguments to be passed on to the installer --override: string, # Override arguments to be passed on to the installer
--location(-l): path, # Location to install to (if supported) --location(-l): path, # Location to install to (if supported)
--force: bool, # Override the installer hash check --force: bool, # Override the installer hash check
--accept-package-agreements: bool, # Accept all licence agreements for packages --accept_package_agreements: bool, # Accept all licence agreements for packages
--header: string, # Optional Windows-Package-Manager REST source HTTP header --header: string, # Optional Windows-Package-Manager REST source HTTP header
--accept-source-agreements: bool, # Accept all source agreements during source operations --accept_source_agreements: bool, # Accept all source agreements during source operations
--help(-?): bool # Display the help for this command --help(-?): bool # Display the help for this command
] ]
@ -49,9 +49,9 @@ def "winget show" [
--override: string, # Override arguments to be passed on to the installer --override: string, # Override arguments to be passed on to the installer
--location(-l): path, # Location to install to (if supported) --location(-l): path, # Location to install to (if supported)
--force: bool, # Override the installer hash check --force: bool, # Override the installer hash check
--accept-package-agreements: bool, # Accept all licence agreements for packages --accept_package_agreements: bool, # Accept all licence agreements for packages
--header: string, # Optional Windows-Package-Manager REST source HTTP header --header: string, # Optional Windows-Package-Manager REST source HTTP header
--accept-source-agreements: bool, # Accept all source agreements during source operations --accept_source_agreements: bool, # Accept all source agreements during source operations
--raw: bool, # Output the raw CLI output instead of structured data --raw: bool, # Output the raw CLI output instead of structured data
--help(-?): bool, # Display the help for this command --help(-?): bool, # Display the help for this command
] { ] {
@ -109,7 +109,7 @@ export extern "winget source add" [
--arg(-a): string, # Argument given to the source --arg(-a): string, # Argument given to the source
--type(-t): string@"nu-complete winget source type", # Type of the source --type(-t): string@"nu-complete winget source type", # Type of the source
--header: string, # Optional Windows-Package-Manager REST source HTTP header --header: string, # Optional Windows-Package-Manager REST source HTTP header
--accept-source-agreements: bool, # Accept all source agreements during source operations --accept_source_agreements: bool, # Accept all source agreements during source operations
--help(-?): bool # Display the help for this command --help(-?): bool # Display the help for this command
] ]
@ -179,7 +179,7 @@ def "winget search" [
--count(-n): int, # Show no more than specified number of results --count(-n): int, # Show no more than specified number of results
--exact(-e): bool, # Find package using exact match --exact(-e): bool, # Find package using exact match
--header: string, # Optional Windows-Package-Manager REST source HTTP header --header: string, # Optional Windows-Package-Manager REST source HTTP header
--accept-source-agreements: bool, # Accept all source agreements during source operations --accept_source_agreements: bool, # Accept all source agreements during source operations
--raw: bool, # Output the raw CLI output instead of structured data --raw: bool, # Output the raw CLI output instead of structured data
--help(-?): bool # Display the help for this command --help(-?): bool # Display the help for this command
] { ] {
@ -227,7 +227,7 @@ def "winget list" [
--count(-n): int, # Show no more than specified number of results --count(-n): int, # Show no more than specified number of results
--exact(-e): bool, # Find package using exact match --exact(-e): bool, # Find package using exact match
--header: string, # Optional Windows-Package-Manager REST source HTTP header --header: string, # Optional Windows-Package-Manager REST source HTTP header
--accept-source-agreements: bool, # Accept all source agreements during source operations --accept_source_agreements: bool, # Accept all source agreements during source operations
--raw: bool, # Output the raw CLI output instead of structured data --raw: bool, # Output the raw CLI output instead of structured data
--help(-?): bool # Display the help for this command --help(-?): bool # Display the help for this command
] { ] {
@ -279,9 +279,9 @@ export extern "winget upgrade" [
--override: string, # Override arguments to be passed on to the installer --override: string, # Override arguments to be passed on to the installer
--location(-l): path, # Location to install to (if supported) --location(-l): path, # Location to install to (if supported)
--force: bool, # Override the installer hash check --force: bool, # Override the installer hash check
--accept-package-agreements: bool, # Accept all licence agreements for packages --accept_package_agreements: bool, # Accept all licence agreements for packages
--header: string, # Optional Windows-Package-Manager REST source HTTP header --header: string, # Optional Windows-Package-Manager REST source HTTP header
--accept-source-agreements: bool, # Accept all source agreements during source operations --accept_source_agreements: bool, # Accept all source agreements during source operations
--all: bool, # Update all installed packages to latest if available --all: bool, # Update all installed packages to latest if available
--help(-?): bool # Display the help for this command --help(-?): bool # Display the help for this command
] ]
@ -336,7 +336,7 @@ export extern "winget export" [
--output(-o): path, # File where the result is to be written --output(-o): path, # File where the result is to be written
--source(-s): string@"nu-complete winget install source", # Export packages from the specified source --source(-s): string@"nu-complete winget install source", # Export packages from the specified source
--include-versions: bool, # Include package versions in produced file --include-versions: bool, # Include package versions in produced file
--accept-source-agreements: bool, # Accept all source agreements during source operations --accept_source_agreements: bool, # Accept all source agreements during source operations
--help(-?): bool # Display the help for this command --help(-?): bool # Display the help for this command
] ]
@ -345,8 +345,8 @@ export extern "winget import" [
--import-file(-i): path, # File describing the packages to install --import-file(-i): path, # File describing the packages to install
--ignore-unavailable: bool, # Ignore unavailable packages --ignore-unavailable: bool, # Ignore unavailable packages
--ignore-versions: bool, # Ignore package versions --ignore-versions: bool, # Ignore package versions
--accept-package-agreements: bool, # Accept all licence agreements for packages --accept_package_agreements: bool, # Accept all licence agreements for packages
--accept-source-agreements: bool # Accept all source agreements during source operations --accept_source_agreements: bool # Accept all source agreements during source operations
] ]
def "nu-complete winget install locale" [] { def "nu-complete winget install locale" [] {

100
make_release/20k_club.nu Normal file
View file

@ -0,0 +1,100 @@
# Readme
# a .mailmap file needs to be in the root of each repo to aggregate users with multiple email addresses
# we could add users if we need to map multiple email addresses to a single user
# and commit the mailmap file to the repo if we wanted to. Format of the mailmap file is at the
# end of the script.
#
# 1. git clone every repo in the list
# 2. setup repos_root_folder to match your system
# 3. setup the proper slash by system (TODO make the slash system agnostic)
# 4. setup the output folder to the path you want it in
# Generate PR Counts for the XX Clubs.
# example usage: get_pr_counts true
# If true is provided as an argument, the script will also generate CSV files for each
# repo with one line per commit, username, email, date in order for you to figure out
# if you need to update the mailmap file so you can merge mutliple users into one.
# If false is provided as an argument, the script will summarize the PR counts and
# display a table with the top 50 rows.
# Whether you run in debug_csv mode or not, the output is written to csv files in the
# $repos_root_folder/20k folder
def get_pr_counts [debug_csv: bool] {
# let repos_root_folder = 'c:\users\dschroeder\source\repos\forks'
let repos_root_folder = '/Users/fdncred/src/forks'
let repos = [[name, folder];
[nushell, $'($repos_root_folder)(char psep)nushell'],
[reedline, $'($repos_root_folder)(char psep)reedline'],
[scripts, $'($repos_root_folder)(char psep)nu_scripts'],
[vscode, $'($repos_root_folder)(char psep)vscode-nushell-lang'],
[nana, $'($repos_root_folder)(char psep)nana'],
[docs, $'($repos_root_folder)(char psep)nushell.github.io']
]
let output_folder = $'($repos_root_folder)(char psep)20k'
if not ($output_folder | path exists) {
mkdir $output_folder
}
$repos | each {|repo|
let repo_name = $repo.name
let repo_folder = $repo.folder
let output_file = $'($output_folder)(char psep)($repo_name).csv'
print $"Working on ($repo_name). Saving to ($output_file)."
cd $repo.folder
if $debug_csv {
# This outputs commit, name, email, date for use for adding info to mailmap file
git log --pretty=%h»¦«%aN»¦«%aE»¦«%aD |
lines |
split column "»¦«" commit name email date |
upsert date {|d| $d.date | into datetime} |
to csv |
save ($output_file)
} else {
git log --pretty=%h»¦«%aN»¦«%aE»¦«%aD |
lines |
split column "»¦«" commit name email date |
upsert date {|d| $d.date | into datetime} |
group-by name |
transpose |
upsert column1 {|c| $c.column1 | length} |
sort-by column1 |
rename name commits |
reverse |
to csv |
save ($output_file)
}
}
cd $output_folder
if not $debug_csv {
let data = (open docs.csv |
append (open nana.csv) |
append (open nushell.csv) |
append (open reedline.csv) |
append (open scripts.csv) |
append (open vscode.csv)
)
let data_dfr = ($data | into df)
$data_dfr |
group-by name |
agg [(col commits | sum | as "all_commits")] |
collect |
sort-by all_commits |
reverse |
into nu |
first 50
}
}
# .mailmap file
# format
# new_name <new_email> old_name <old_email>
# name <email_we_now_want_to_use> some old name <old email address1>
# name <email_we_now_want_to_use> some old name <old email address2>
# name <email_we_now_want_to_use> some old name <old email address3>
# name <email_we_now_want_to_use> some old name <old email address4>

View file

@ -21,34 +21,34 @@ module panache-plumbing {
# Get the current directory with home abbreviated # Get the current directory with home abbreviated
export def "panache-git dir" [] { export def "panache-git dir" [] {
let current-dir = ($env.PWD) let current_dir = ($env.PWD)
let current-dir-relative-to-home = ( let current_dir_relative_to_home = (
do --ignore-errors { $current-dir | path relative-to $nu.home-path } | str collect do --ignore-errors { $current_dir | path relative-to $nu.home-path } | str collect
) )
let in-sub-dir-of-home = ($current-dir-relative-to-home | empty? | nope) let in_sub_dir_of_home = ($current_dir_relative_to_home | empty? | nope)
let current-dir-abbreviated = (if $in-sub-dir-of-home { let current_dir_abbreviated = (if $in_sub_dir_of_home {
$'~(char separator)($current-dir-relative-to-home)' $'~(char separator)($current_dir_relative_to_home)'
} else { } else {
$current-dir $current_dir
}) })
$'(ansi reset)($current-dir-abbreviated)' $'(ansi reset)($current_dir_abbreviated)'
} }
# Get repository status as structured data # Get repository status as structured data
export def "panache-git structured" [] { export def "panache-git structured" [] {
let in-git-repo = (do --ignore-errors { git rev-parse --abbrev-ref HEAD } | empty? | nope) let in_git_repo = (do --ignore-errors { git rev-parse --abbrev-ref HEAD } | empty? | nope)
let status = (if $in-git-repo { let status = (if $in_git_repo {
git --no-optional-locks status --porcelain=2 --branch | lines git --no-optional-locks status --porcelain=2 --branch | lines
} else { } else {
[] []
}) })
let on-named-branch = (if $in-git-repo { let on_named_branch = (if $in_git_repo {
$status $status
| where ($it | str starts-with '# branch.head') | where ($it | str starts-with '# branch.head')
| first | first
@ -58,7 +58,7 @@ module panache-plumbing {
false false
}) })
let branch-name = (if $on-named-branch { let branch_name = (if $on_named_branch {
$status $status
| where ($it | str starts-with '# branch.head') | where ($it | str starts-with '# branch.head')
| split column ' ' col1 col2 branch | split column ' ' col1 col2 branch
@ -68,7 +68,7 @@ module panache-plumbing {
'' ''
}) })
let commit-hash = (if $in-git-repo { let commit_hash = (if $in_git_repo {
$status $status
| where ($it | str starts-with '# branch.oid') | where ($it | str starts-with '# branch.oid')
| split column ' ' col1 col2 full_hash | split column ' ' col1 col2 full_hash
@ -79,7 +79,7 @@ module panache-plumbing {
'' ''
}) })
let tracking-upstream-branch = (if $in-git-repo { let tracking_upstream_branch = (if $in_git_repo {
$status $status
| where ($it | str starts-with '# branch.upstream') | where ($it | str starts-with '# branch.upstream')
| str collect | str collect
@ -89,7 +89,7 @@ module panache-plumbing {
false false
}) })
let upstream-exists-on-remote = (if $in-git-repo { let upstream_exists_on_remote = (if $in_git_repo {
$status $status
| where ($it | str starts-with '# branch.ab') | where ($it | str starts-with '# branch.ab')
| str collect | str collect
@ -99,7 +99,7 @@ module panache-plumbing {
false false
}) })
let ahead-behind-table = (if $upstream-exists-on-remote { let ahead_behind_table = (if $upstream_exists_on_remote {
$status $status
| where ($it | str starts-with '# branch.ab') | where ($it | str starts-with '# branch.ab')
| split column ' ' col1 col2 ahead behind | split column ' ' col1 col2 ahead behind
@ -107,8 +107,8 @@ module panache-plumbing {
[[]] [[]]
}) })
let commits-ahead = (if $upstream-exists-on-remote { let commits_ahead = (if $upstream_exists_on_remote {
$ahead-behind-table $ahead_behind_table
| get ahead | get ahead
| first | first
| into int | into int
@ -116,8 +116,8 @@ module panache-plumbing {
0 0
}) })
let commits-behind = (if $upstream-exists-on-remote { let commits_behind = (if $upstream_exists_on_remote {
$ahead-behind-table $ahead_behind_table
| get behind | get behind
| first | first
| into int | into int
@ -126,7 +126,7 @@ module panache-plumbing {
0 0
}) })
let has-staging-or-worktree-changes = (if $in-git-repo { let has_staging_or_worktree_changes = (if $in_git_repo {
$status $status
| where ($it | str starts-with '1') || ($it | str starts-with '2') | where ($it | str starts-with '1') || ($it | str starts-with '2')
| str collect | str collect
@ -136,7 +136,7 @@ module panache-plumbing {
false false
}) })
let has-untracked-files = (if $in-git-repo { let has_untracked_files = (if $in_git_repo {
$status $status
| where ($it | str starts-with '?') | where ($it | str starts-with '?')
| str collect | str collect
@ -146,7 +146,7 @@ module panache-plumbing {
false false
}) })
let has-unresolved-merge-conflicts = (if $in-git-repo { let has_unresolved_merge_conflicts = (if $in_git_repo {
$status $status
| where ($it | str starts-with 'u') | where ($it | str starts-with 'u')
| str collect | str collect
@ -156,7 +156,7 @@ module panache-plumbing {
false false
}) })
let staging-worktree-table = (if $has-staging-or-worktree-changes { let staging_worktree_table = (if $has_staging_or_worktree_changes {
$status $status
| where ($it | str starts-with '1') || ($it | str starts-with '2') | where ($it | str starts-with '1') || ($it | str starts-with '2')
| split column ' ' | split column ' '
@ -166,31 +166,31 @@ module panache-plumbing {
[[]] [[]]
}) })
let staging-added-count = (if $has-staging-or-worktree-changes { let staging_added_count = (if $has_staging_or_worktree_changes {
$staging-worktree-table $staging_worktree_table
| where staging == 'A' | where staging == 'A'
| length | length
} else { } else {
0 0
}) })
let staging-modified-count = (if $has-staging-or-worktree-changes { let staging_modified_count = (if $has_staging_or_worktree_changes {
$staging-worktree-table $staging_worktree_table
| where staging in ['M', 'R'] | where staging in ['M', 'R']
| length | length
} else { } else {
0 0
}) })
let staging-deleted-count = (if $has-staging-or-worktree-changes { let staging_deleted_count = (if $has_staging_or_worktree_changes {
$staging-worktree-table $staging_worktree_table
| where staging == 'D' | where staging == 'D'
| length | length
} else { } else {
0 0
}) })
let untracked-count = (if $has-untracked-files { let untracked_count = (if $has_untracked_files {
$status $status
| where ($it | str starts-with '?') | where ($it | str starts-with '?')
| length | length
@ -198,23 +198,23 @@ module panache-plumbing {
0 0
}) })
let worktree-modified-count = (if $has-staging-or-worktree-changes { let worktree_modified_count = (if $has_staging_or_worktree_changes {
$staging-worktree-table $staging_worktree_table
| where worktree in ['M', 'R'] | where worktree in ['M', 'R']
| length | length
} else { } else {
0 0
}) })
let worktree-deleted-count = (if $has-staging-or-worktree-changes { let worktree_deleted_count = (if $has_staging_or_worktree_changes {
$staging-worktree-table $staging_worktree_table
| where worktree == 'D' | where worktree == 'D'
| length | length
} else { } else {
0 0
}) })
let merge-conflict-count = (if $has-unresolved-merge-conflicts { let merge_conflict_count = (if $has_unresolved_merge_conflicts {
$status $status
| where ($it | str starts-with 'u') | where ($it | str starts-with 'u')
| length | length
@ -223,21 +223,21 @@ module panache-plumbing {
}) })
{ {
in_git_repo: $in-git-repo, in_git_repo: $in_git_repo,
on_named_branch: $on-named-branch, on_named_branch: $on_named_branch,
branch_name: $branch-name, branch_name: $branch_name,
commit_hash: $commit-hash, commit_hash: $commit_hash,
tracking_upstream_branch: $tracking-upstream-branch, tracking_upstream_branch: $tracking_upstream_branch,
upstream_exists_on_remote: $upstream-exists-on-remote, upstream_exists_on_remote: $upstream_exists_on_remote,
commits_ahead: $commits-ahead, commits_ahead: $commits_ahead,
commits_behind: $commits-behind, commits_behind: $commits_behind,
staging_added_count: $staging-added-count, staging_added_count: $staging_added_count,
staging_modified_count: $staging-modified-count, staging_modified_count: $staging_modified_count,
staging_deleted_count: $staging-deleted-count, staging_deleted_count: $staging_deleted_count,
untracked_count: $untracked-count, untracked_count: $untracked_count,
worktree_modified_count: $worktree-modified-count, worktree_modified_count: $worktree_modified_count,
worktree_deleted_count: $worktree-deleted-count, worktree_deleted_count: $worktree_deleted_count,
merge_conflict_count: $merge-conflict-count merge_conflict_count: $merge_conflict_count
} }
} }
@ -245,38 +245,38 @@ module panache-plumbing {
export def "panache-git styled" [] { export def "panache-git styled" [] {
let status = (panache-git structured) let status = (panache-git structured)
let is-local-only = ($status.tracking_upstream_branch != true) let is_local_only = ($status.tracking_upstream_branch != true)
let upstream-deleted = ( let upstream_deleted = (
$status.tracking_upstream_branch && $status.tracking_upstream_branch &&
$status.upstream_exists_on_remote != true $status.upstream_exists_on_remote != true
) )
let is-up-to-date = ( let is_up_to_date = (
$status.upstream_exists_on_remote && $status.upstream_exists_on_remote &&
$status.commits_ahead == 0 && $status.commits_ahead == 0 &&
$status.commits_behind == 0 $status.commits_behind == 0
) )
let is-ahead = ( let is_ahead = (
$status.upstream_exists_on_remote && $status.upstream_exists_on_remote &&
$status.commits_ahead > 0 && $status.commits_ahead > 0 &&
$status.commits_behind == 0 $status.commits_behind == 0
) )
let is-behind = ( let is_behind = (
$status.upstream_exists_on_remote && $status.upstream_exists_on_remote &&
$status.commits_ahead == 0 && $status.commits_ahead == 0 &&
$status.commits_behind > 0 $status.commits_behind > 0
) )
let is-ahead-and-behind = ( let is_ahead_and_behind = (
$status.upstream_exists_on_remote && $status.upstream_exists_on_remote &&
$status.commits_ahead > 0 && $status.commits_ahead > 0 &&
$status.commits_behind > 0 $status.commits_behind > 0
) )
let branch-name = (if $status.in_git_repo { let branch_name = (if $status.in_git_repo {
(if $status.on_named_branch { (if $status.on_named_branch {
$status.branch_name $status.branch_name
} else { } else {
@ -286,73 +286,73 @@ module panache-plumbing {
'' ''
}) })
let branch-styled = (if $status.in_git_repo { let branch_styled = (if $status.in_git_repo {
(if $is-local-only { (if $is_local_only {
(branch-local-only $branch-name) (branch-local-only $branch_name)
} else if $is-up-to-date { } else if $is_up_to_date {
(branch-up-to-date $branch-name) (branch-up-to-date $branch_name)
} else if $is-ahead { } else if $is_ahead {
(branch-ahead $branch-name $status.commits_ahead) (branch-ahead $branch_name $status.commits_ahead)
} else if $is-behind { } else if $is_behind {
(branch-behind $branch-name $status.commits_behind) (branch-behind $branch_name $status.commits_behind)
} else if $is-ahead-and-behind { } else if $is_ahead_and_behind {
(branch-ahead-and-behind $branch-name $status.commits_ahead $status.commits_behind) (branch-ahead-and-behind $branch_name $status.commits_ahead $status.commits_behind)
} else if $upstream-deleted { } else if $upstream_deleted {
(branch-upstream-deleted $branch-name) (branch-upstream-deleted $branch_name)
} else { } else {
$branch-name $branch_name
}) })
} else { } else {
'' ''
}) })
let has-staging-changes = ( let has_staging_changes = (
$status.staging_added_count > 0 || $status.staging_added_count > 0 ||
$status.staging_modified_count > 0 || $status.staging_modified_count > 0 ||
$status.staging_deleted_count > 0 $status.staging_deleted_count > 0
) )
let has-worktree-changes = ( let has_worktree_changes = (
$status.untracked_count > 0 || $status.untracked_count > 0 ||
$status.worktree_modified_count > 0 || $status.worktree_modified_count > 0 ||
$status.worktree_deleted_count > 0 || $status.worktree_deleted_count > 0 ||
$status.merge_conflict_count > 0 $status.merge_conflict_count > 0
) )
let has-merge-conflicts = $status.merge_conflict_count > 0 let has_merge_conflicts = $status.merge_conflict_count > 0
let staging-summary = (if $has-staging-changes { let staging_summary = (if $has_staging_changes {
(staging-changes $status.staging_added_count $status.staging_modified_count $status.staging_deleted_count) (staging-changes $status.staging_added_count $status.staging_modified_count $status.staging_deleted_count)
} else { } else {
'' ''
}) })
let worktree-summary = (if $has-worktree-changes { let worktree_summary = (if $has_worktree_changes {
(worktree-changes $status.untracked_count $status.worktree_modified_count $status.worktree_deleted_count) (worktree-changes $status.untracked_count $status.worktree_modified_count $status.worktree_deleted_count)
} else { } else {
'' ''
}) })
let merge-conflict-summary = (if $has-merge-conflicts { let merge_conflict_summary = (if $has_merge_conflicts {
(unresolved-conflicts $status.merge_conflict_count) (unresolved-conflicts $status.merge_conflict_count)
} else { } else {
'' ''
}) })
let delimiter = (if ($has-staging-changes && $has-worktree-changes) { let delimiter = (if ($has_staging_changes && $has_worktree_changes) {
('|' | bright-yellow) ('|' | bright-yellow)
} else { } else {
'' ''
}) })
let local-summary = ( let local_summary = (
$'($staging-summary) ($delimiter) ($worktree-summary) ($merge-conflict-summary)' | str trim $'($staging_summary) ($delimiter) ($worktree_summary) ($merge_conflict_summary)' | str trim
) )
let local-indicator = (if $status.in_git_repo { let local_indicator = (if $status.in_git_repo {
(if $has-worktree-changes { (if $has_worktree_changes {
('!' | red) ('!' | red)
} else if $has-staging-changes { } else if $has_staging_changes {
('~' | bright-cyan) ('~' | bright-cyan)
} else { } else {
'' ''
@ -361,15 +361,15 @@ module panache-plumbing {
'' ''
}) })
let repo-summary = ( let repo_summary = (
$'($branch-styled) ($local-summary) ($local-indicator)' | str trim $'($branch_styled) ($local_summary) ($local_indicator)' | str trim
) )
let left-bracket = ('[' | bright-yellow) let left_bracket = ('[' | bright-yellow)
let right-bracket = (']' | bright-yellow) let right_bracket = (']' | bright-yellow)
(if $status.in_git_repo { (if $status.in_git_repo {
$'($left-bracket)($repo-summary)($right-bracket)' $'($left_bracket)($repo_summary)($right_bracket)'
} else { } else {
'' ''
}) })