├── .codespellrc ├── .devcontainer ├── Dockerfile └── devcontainer.json ├── .editorconfig ├── .gitattributes ├── .github ├── FUNDING.yml ├── ISSUE_TEMPLATE │ ├── bug_report.md │ ├── discussion.md │ └── feature_request.md ├── dependabot.yml ├── pull_request_template.md ├── release.yml └── workflows │ ├── ci.yml │ ├── close-issues.yml │ ├── codespell.yml │ ├── release.yml │ └── sponsors.yml ├── .gitignore ├── .golangci.yml ├── .goreleaser.yml ├── .vscode ├── debugger_config.yml ├── launch.json ├── settings.json └── tasks.json ├── CODE-OF-CONDUCT.md ├── CONTRIBUTING.md ├── Dockerfile ├── LICENSE ├── Makefile ├── README.md ├── VISION.md ├── cmd ├── i18n │ └── main.go └── integration_test │ └── main.go ├── demo ├── README.md ├── config.yml └── record_demo.sh ├── docs ├── Config.md ├── Custom_Command_Keybindings.md ├── Custom_Pagers.md ├── Fixup_Commits.md ├── README.md ├── Range_Select.md ├── Searching.md ├── Stacked_Branches.md ├── Undoing.md ├── dev │ ├── Busy.md │ ├── Codebase_Guide.md │ ├── Demo_Recordings.md │ ├── Find_Base_Commit_For_Fixup_Design.md │ ├── Integration_Tests.md │ ├── Profiling.md │ └── README.md └── keybindings │ ├── Custom_Keybindings.md │ ├── Keybindings_en.md │ ├── Keybindings_ja.md │ ├── Keybindings_ko.md │ ├── Keybindings_nl.md │ ├── Keybindings_pl.md │ ├── Keybindings_pt.md │ ├── Keybindings_ru.md │ ├── Keybindings_zh-CN.md │ └── Keybindings_zh-TW.md ├── go.mod ├── go.sum ├── main.go ├── pkg ├── app │ ├── app.go │ ├── daemon │ │ ├── daemon.go │ │ └── rebase.go │ ├── entry_point.go │ ├── errors.go │ └── types │ │ └── types.go ├── cheatsheet │ ├── generate.go │ ├── generate_test.go │ └── generator.go ├── commands │ ├── git.go │ ├── git_cmd_obj_builder.go │ ├── git_cmd_obj_runner.go │ ├── git_commands │ │ ├── bisect.go │ │ ├── bisect_info.go │ │ ├── blame.go │ │ ├── branch.go │ │ ├── branch_loader.go │ │ ├── branch_loader_test.go │ │ ├── branch_test.go │ │ ├── commit.go │ │ ├── commit_file_loader.go │ │ ├── commit_file_loader_test.go │ │ ├── commit_loader.go │ │ ├── commit_loader_test.go │ │ ├── commit_test.go │ │ ├── common.go │ │ ├── config.go │ │ ├── custom.go │ │ ├── deps_test.go │ │ ├── diff.go │ │ ├── file.go │ │ ├── file_loader.go │ │ ├── file_loader_test.go │ │ ├── file_test.go │ │ ├── flow.go │ │ ├── flow_test.go │ │ ├── git_command_builder.go │ │ ├── git_command_builder_test.go │ │ ├── main_branches.go │ │ ├── patch.go │ │ ├── rebase.go │ │ ├── rebase_test.go │ │ ├── reflog_commit_loader.go │ │ ├── reflog_commit_loader_test.go │ │ ├── remote.go │ │ ├── remote_loader.go │ │ ├── repo_paths.go │ │ ├── repo_paths_test.go │ │ ├── stash.go │ │ ├── stash_loader.go │ │ ├── stash_loader_test.go │ │ ├── stash_test.go │ │ ├── status.go │ │ ├── submodule.go │ │ ├── sync.go │ │ ├── sync_test.go │ │ ├── tag.go │ │ ├── tag_loader.go │ │ ├── tag_loader_test.go │ │ ├── version.go │ │ ├── version_test.go │ │ ├── working_tree.go │ │ ├── working_tree_test.go │ │ ├── worktree.go │ │ ├── worktree_loader.go │ │ └── worktree_loader_test.go │ ├── git_config │ │ ├── cached_git_config.go │ │ ├── cached_git_config_test.go │ │ ├── fake_git_config.go │ │ └── get_key.go │ ├── hosting_service │ │ ├── definitions.go │ │ ├── hosting_service.go │ │ └── hosting_service_test.go │ ├── models │ │ ├── author.go │ │ ├── branch.go │ │ ├── commit.go │ │ ├── commit_file.go │ │ ├── file.go │ │ ├── remote.go │ │ ├── remote_branch.go │ │ ├── stash_entry.go │ │ ├── submodule_config.go │ │ ├── tag.go │ │ ├── working_tree_state.go │ │ └── worktree.go │ ├── oscommands │ │ ├── cmd_obj.go │ │ ├── cmd_obj_builder.go │ │ ├── cmd_obj_runner.go │ │ ├── cmd_obj_runner_default.go │ │ ├── cmd_obj_runner_test.go │ │ ├── cmd_obj_runner_win.go │ │ ├── cmd_obj_test.go │ │ ├── copy.go │ │ ├── dummies.go │ │ ├── fake_cmd_obj_runner.go │ │ ├── gui_io.go │ │ ├── os.go │ │ ├── os_default_platform.go │ │ ├── os_default_test.go │ │ ├── os_test.go │ │ ├── os_windows.go │ │ └── os_windows_test.go │ ├── patch │ │ ├── format.go │ │ ├── hunk.go │ │ ├── parse.go │ │ ├── patch.go │ │ ├── patch_builder.go │ │ ├── patch_line.go │ │ ├── patch_test.go │ │ └── transform.go │ └── testdata │ │ ├── a_dir │ │ └── file │ │ └── a_file ├── common │ ├── common.go │ └── dummies.go ├── config │ ├── app_config.go │ ├── app_config_test.go │ ├── config_default_platform.go │ ├── config_linux.go │ ├── config_windows.go │ ├── dummies.go │ ├── editor_presets.go │ ├── editor_presets_test.go │ ├── keynames.go │ ├── user_config.go │ ├── user_config_validation.go │ └── user_config_validation_test.go ├── constants │ └── links.go ├── env │ └── env.go ├── fakes │ └── log.go ├── gui │ ├── background.go │ ├── command_log_panel.go │ ├── context.go │ ├── context │ │ ├── base_context.go │ │ ├── branches_context.go │ │ ├── commit_files_context.go │ │ ├── commit_message_context.go │ │ ├── confirmation_context.go │ │ ├── context.go │ │ ├── context_common.go │ │ ├── dynamic_title_builder.go │ │ ├── filtered_list.go │ │ ├── filtered_list_view_model.go │ │ ├── history_trait.go │ │ ├── list_context_trait.go │ │ ├── list_renderer.go │ │ ├── list_renderer_test.go │ │ ├── list_view_model.go │ │ ├── local_commits_context.go │ │ ├── main_context.go │ │ ├── menu_context.go │ │ ├── merge_conflicts_context.go │ │ ├── parent_context_mgr.go │ │ ├── patch_explorer_context.go │ │ ├── reflog_commits_context.go │ │ ├── remote_branches_context.go │ │ ├── remotes_context.go │ │ ├── search_trait.go │ │ ├── setup.go │ │ ├── simple_context.go │ │ ├── stash_context.go │ │ ├── sub_commits_context.go │ │ ├── submodules_context.go │ │ ├── suggestions_context.go │ │ ├── tags_context.go │ │ ├── traits │ │ │ └── list_cursor.go │ │ ├── view_trait.go │ │ ├── working_tree_context.go │ │ └── worktrees_context.go │ ├── context_config.go │ ├── controllers.go │ ├── controllers │ │ ├── attach.go │ │ ├── base_controller.go │ │ ├── basic_commits_controller.go │ │ ├── bisect_controller.go │ │ ├── branches_controller.go │ │ ├── command_log_controller.go │ │ ├── commit_description_controller.go │ │ ├── commit_message_controller.go │ │ ├── commits_files_controller.go │ │ ├── common.go │ │ ├── confirmation_controller.go │ │ ├── context_lines_controller.go │ │ ├── custom_patch_options_menu_action.go │ │ ├── diffing_menu_action.go │ │ ├── files_controller.go │ │ ├── filter_controller.go │ │ ├── filtering_menu_action.go │ │ ├── git_flow_controller.go │ │ ├── global_controller.go │ │ ├── helpers │ │ │ ├── amend_helper.go │ │ │ ├── app_status_helper.go │ │ │ ├── bisect_helper.go │ │ │ ├── branches_helper.go │ │ │ ├── cherry_pick_helper.go │ │ │ ├── commits_helper.go │ │ │ ├── commits_helper_test.go │ │ │ ├── confirmation_helper.go │ │ │ ├── credentials_helper.go │ │ │ ├── diff_helper.go │ │ │ ├── files_helper.go │ │ │ ├── fixup_helper.go │ │ │ ├── fixup_helper_test.go │ │ │ ├── gpg_helper.go │ │ │ ├── helpers.go │ │ │ ├── host_helper.go │ │ │ ├── inline_status_helper.go │ │ │ ├── merge_and_rebase_helper.go │ │ │ ├── merge_conflicts_helper.go │ │ │ ├── mode_helper.go │ │ │ ├── patch_building_helper.go │ │ │ ├── record_directory_helper.go │ │ │ ├── refresh_helper.go │ │ │ ├── refs_helper.go │ │ │ ├── repos_helper.go │ │ │ ├── search_helper.go │ │ │ ├── snake_helper.go │ │ │ ├── staging_helper.go │ │ │ ├── sub_commits_helper.go │ │ │ ├── suggestions_helper.go │ │ │ ├── tags_helper.go │ │ │ ├── update_helper.go │ │ │ ├── upstream_helper.go │ │ │ ├── upstream_helper_test.go │ │ │ ├── view_helper.go │ │ │ ├── window_arrangement_helper.go │ │ │ ├── window_arrangement_helper_test.go │ │ │ ├── window_helper.go │ │ │ ├── working_tree_helper.go │ │ │ └── worktree_helper.go │ │ ├── jump_to_side_window_controller.go │ │ ├── list_controller.go │ │ ├── list_controller_trait.go │ │ ├── local_commits_controller.go │ │ ├── local_commits_controller_test.go │ │ ├── main_view_controller.go │ │ ├── menu_controller.go │ │ ├── merge_conflicts_controller.go │ │ ├── options_menu_action.go │ │ ├── patch_building_controller.go │ │ ├── patch_explorer_controller.go │ │ ├── patch_explorer_controller_test.go │ │ ├── quit_actions.go │ │ ├── reflog_commits_controller.go │ │ ├── remote_branches_controller.go │ │ ├── remotes_controller.go │ │ ├── rename_similarity_threshold_controller.go │ │ ├── screen_mode_actions.go │ │ ├── scroll_off_margin.go │ │ ├── scroll_off_margin_test.go │ │ ├── search_controller.go │ │ ├── search_prompt_controller.go │ │ ├── shell_command_action.go │ │ ├── side_window_controller.go │ │ ├── snake_controller.go │ │ ├── staging_controller.go │ │ ├── stash_controller.go │ │ ├── status_controller.go │ │ ├── sub_commits_controller.go │ │ ├── submodules_controller.go │ │ ├── suggestions_controller.go │ │ ├── switch_to_diff_files_controller.go │ │ ├── switch_to_focused_main_view_controller.go │ │ ├── switch_to_sub_commits_controller.go │ │ ├── sync_controller.go │ │ ├── tags_controller.go │ │ ├── toggle_whitespace_action.go │ │ ├── undo_controller.go │ │ ├── vertical_scroll_controller.go │ │ ├── view_selection_controller.go │ │ ├── workspace_reset_controller.go │ │ ├── worktree_options_controller.go │ │ └── worktrees_controller.go │ ├── dummies.go │ ├── editors.go │ ├── extras_panel.go │ ├── filetree │ │ ├── README.md │ │ ├── build_tree.go │ │ ├── build_tree_test.go │ │ ├── collapsed_paths.go │ │ ├── commit_file_node.go │ │ ├── commit_file_tree.go │ │ ├── commit_file_tree_view_model.go │ │ ├── file_node.go │ │ ├── file_node_test.go │ │ ├── file_tree.go │ │ ├── file_tree_test.go │ │ ├── file_tree_view_model.go │ │ └── node.go │ ├── global_handlers.go │ ├── gui.go │ ├── gui_common.go │ ├── gui_driver.go │ ├── information_panel.go │ ├── keybindings.go │ ├── keybindings │ │ └── keybindings.go │ ├── layout.go │ ├── main_panels.go │ ├── menu_panel.go │ ├── mergeconflicts │ │ ├── find_conflicts.go │ │ ├── find_conflicts_test.go │ │ ├── merge_conflict.go │ │ ├── rendering.go │ │ ├── state.go │ │ └── state_test.go │ ├── modes │ │ ├── cherrypicking │ │ │ └── cherry_picking.go │ │ ├── diffing │ │ │ └── diffing.go │ │ ├── filtering │ │ │ └── filtering.go │ │ └── marked_base_commit │ │ │ └── marked_base_commit.go │ ├── options_map.go │ ├── patch_exploring │ │ ├── focus.go │ │ ├── focus_test.go │ │ └── state.go │ ├── popup │ │ └── popup_handler.go │ ├── presentation │ │ ├── authors │ │ │ ├── authors.go │ │ │ └── authors_test.go │ │ ├── branches.go │ │ ├── branches_test.go │ │ ├── commits.go │ │ ├── commits_test.go │ │ ├── files.go │ │ ├── files_test.go │ │ ├── graph │ │ │ ├── cell.go │ │ │ ├── graph.go │ │ │ └── graph_test.go │ │ ├── icons │ │ │ ├── file_icons.go │ │ │ ├── file_icons_test.go │ │ │ ├── git_icons.go │ │ │ └── icons.go │ │ ├── item_operations.go │ │ ├── loader.go │ │ ├── reflog_commits.go │ │ ├── remote_branches.go │ │ ├── remotes.go │ │ ├── stash_entries.go │ │ ├── status.go │ │ ├── submodules.go │ │ ├── suggestions.go │ │ ├── tags.go │ │ └── worktrees.go │ ├── pty.go │ ├── pty_windows.go │ ├── recent_repos_panel.go │ ├── services │ │ └── custom_commands │ │ │ ├── client.go │ │ │ ├── handler_creator.go │ │ │ ├── keybinding_creator.go │ │ │ ├── menu_generator.go │ │ │ ├── menu_generator_test.go │ │ │ ├── models.go │ │ │ ├── resolver.go │ │ │ └── session_state_loader.go │ ├── status │ │ └── status_manager.go │ ├── style │ │ ├── basic_styles.go │ │ ├── color.go │ │ ├── decoration.go │ │ ├── hyperlink.go │ │ ├── style_test.go │ │ └── text_style.go │ ├── tasks_adapter.go │ ├── test_mode.go │ ├── types │ │ ├── common.go │ │ ├── common_commands.go │ │ ├── context.go │ │ ├── keybindings.go │ │ ├── modes.go │ │ ├── ref.go │ │ ├── refresh.go │ │ ├── rendering.go │ │ ├── search_state.go │ │ ├── suggestion.go │ │ ├── version_number.go │ │ ├── version_number_test.go │ │ └── views.go │ ├── view_helpers.go │ └── views.go ├── i18n │ ├── english.go │ ├── i18n.go │ ├── i18n_test.go │ └── translations │ │ ├── README.md │ │ ├── ja.json │ │ ├── ko.json │ │ ├── nl.json │ │ ├── pl.json │ │ ├── pt.json │ │ ├── ru.json │ │ ├── zh-CN.json │ │ └── zh-TW.json ├── integration │ ├── README.md │ ├── clients │ │ ├── cli.go │ │ ├── go_test.go │ │ ├── injector │ │ │ └── main.go │ │ └── tui.go │ ├── components │ │ ├── alert_driver.go │ │ ├── assertion_helper.go │ │ ├── commit_description_panel_driver.go │ │ ├── commit_message_panel_driver.go │ │ ├── common.go │ │ ├── confirmation_driver.go │ │ ├── env.go │ │ ├── file_system.go │ │ ├── git.go │ │ ├── int_matcher.go │ │ ├── matcher.go │ │ ├── menu_driver.go │ │ ├── paths.go │ │ ├── popup.go │ │ ├── prompt_driver.go │ │ ├── random.go │ │ ├── runner.go │ │ ├── search_driver.go │ │ ├── shell.go │ │ ├── test.go │ │ ├── test_driver.go │ │ ├── test_test.go │ │ ├── text_matcher.go │ │ ├── view_driver.go │ │ └── views.go │ ├── tests │ │ ├── bisect │ │ │ ├── basic.go │ │ │ ├── choose_terms.go │ │ │ ├── from_other_branch.go │ │ │ └── skip.go │ │ ├── branch │ │ │ ├── checkout_autostash.go │ │ │ ├── checkout_by_name.go │ │ │ ├── create_tag.go │ │ │ ├── delete.go │ │ │ ├── delete_multiple.go │ │ │ ├── delete_remote_branch_with_credential_prompt.go │ │ │ ├── delete_remote_branch_with_different_name.go │ │ │ ├── delete_while_filtering.go │ │ │ ├── detached_head.go │ │ │ ├── move_commits_to_new_branch_from_base_branch.go │ │ │ ├── move_commits_to_new_branch_from_main_branch.go │ │ │ ├── move_commits_to_new_branch_keep_stacked.go │ │ │ ├── new_branch_autostash.go │ │ │ ├── new_branch_from_remote_tracking_different_name.go │ │ │ ├── new_branch_from_remote_tracking_same_name.go │ │ │ ├── new_branch_with_prefix.go │ │ │ ├── new_branch_with_prefix_using_run_command.go │ │ │ ├── open_pull_request_invalid_target_remote_name.go │ │ │ ├── open_pull_request_no_upstream.go │ │ │ ├── open_pull_request_select_remote_and_target_branch.go │ │ │ ├── open_with_cli_arg.go │ │ │ ├── rebase.go │ │ │ ├── rebase_abort_on_conflict.go │ │ │ ├── rebase_and_drop.go │ │ │ ├── rebase_cancel_on_conflict.go │ │ │ ├── rebase_conflicts_fix_build_errors.go │ │ │ ├── rebase_copied_branch.go │ │ │ ├── rebase_does_not_autosquash.go │ │ │ ├── rebase_from_marked_base.go │ │ │ ├── rebase_onto_base_branch.go │ │ │ ├── rebase_to_upstream.go │ │ │ ├── rename.go │ │ │ ├── reset.go │ │ │ ├── reset_to_duplicate_named_tag.go │ │ │ ├── reset_to_duplicate_named_upstream.go │ │ │ ├── reset_to_upstream.go │ │ │ ├── select_commits_of_current_branch.go │ │ │ ├── set_upstream.go │ │ │ ├── shared.go │ │ │ ├── show_divergence_from_base_branch.go │ │ │ ├── show_divergence_from_upstream.go │ │ │ ├── show_divergence_from_upstream_no_divergence.go │ │ │ ├── sort_local_branches.go │ │ │ ├── sort_remote_branches.go │ │ │ ├── squash_merge.go │ │ │ ├── suggestions.go │ │ │ └── unset_upstream.go │ │ ├── cherry_pick │ │ │ ├── cherry_pick.go │ │ │ ├── cherry_pick_conflicts.go │ │ │ ├── cherry_pick_during_rebase.go │ │ │ ├── cherry_pick_merge.go │ │ │ └── cherry_pick_range.go │ │ ├── commit │ │ │ ├── add_co_author.go │ │ │ ├── add_co_author_range.go │ │ │ ├── add_co_author_while_committing.go │ │ │ ├── amend.go │ │ │ ├── amend_when_there_are_conflicts_and_amend.go │ │ │ ├── amend_when_there_are_conflicts_and_cancel.go │ │ │ ├── amend_when_there_are_conflicts_and_continue.go │ │ │ ├── auto_wrap_message.go │ │ │ ├── checkout.go │ │ │ ├── checkout_file_from_commit.go │ │ │ ├── checkout_file_from_range_selection_of_commits.go │ │ │ ├── commit.go │ │ │ ├── commit_multiline.go │ │ │ ├── commit_skip_hooks.go │ │ │ ├── commit_switch_to_editor.go │ │ │ ├── commit_switch_to_editor_skip_hooks.go │ │ │ ├── commit_wip_with_prefix.go │ │ │ ├── commit_with_fallthrough_prefix.go │ │ │ ├── commit_with_global_prefix.go │ │ │ ├── commit_with_non_matching_branch_name.go │ │ │ ├── commit_with_prefix.go │ │ │ ├── copy_author_to_clipboard.go │ │ │ ├── copy_message_body_to_clipboard.go │ │ │ ├── copy_tag_to_clipboard.go │ │ │ ├── create_amend_commit.go │ │ │ ├── create_fixup_commit_in_branch_stack.go │ │ │ ├── create_tag.go │ │ │ ├── disable_copy_commit_message_body.go │ │ │ ├── discard_old_file_changes.go │ │ │ ├── fail_hooks_then_commit_no_hooks.go │ │ │ ├── find_base_commit_for_fixup.go │ │ │ ├── find_base_commit_for_fixup_disregard_main_branch.go │ │ │ ├── find_base_commit_for_fixup_only_added_lines.go │ │ │ ├── find_base_commit_for_fixup_warning_for_added_lines.go │ │ │ ├── highlight.go │ │ │ ├── history.go │ │ │ ├── history_complex.go │ │ │ ├── new_branch.go │ │ │ ├── paste_commit_message.go │ │ │ ├── paste_commit_message_over_existing.go │ │ │ ├── preserve_commit_message.go │ │ │ ├── reset_author.go │ │ │ ├── reset_author_range.go │ │ │ ├── revert.go │ │ │ ├── revert_merge.go │ │ │ ├── revert_with_conflict_multiple_commits.go │ │ │ ├── revert_with_conflict_single_commit.go │ │ │ ├── reword.go │ │ │ ├── search.go │ │ │ ├── set_author.go │ │ │ ├── set_author_range.go │ │ │ ├── shared.go │ │ │ ├── stage_range_of_lines.go │ │ │ ├── staged.go │ │ │ ├── staged_without_hooks.go │ │ │ └── unstaged.go │ │ ├── config │ │ │ ├── custom_commands_in_per_repo_config.go │ │ │ ├── negative_refspec.go │ │ │ └── remote_named_star.go │ │ ├── conflicts │ │ │ ├── filter.go │ │ │ ├── resolve_externally.go │ │ │ ├── resolve_multiple_files.go │ │ │ ├── resolve_no_auto_stage.go │ │ │ ├── resolve_non_textual_conflicts.go │ │ │ ├── resolve_without_trailing_lf.go │ │ │ └── undo_choose_hunk.go │ │ ├── custom_commands │ │ │ ├── access_commit_properties.go │ │ │ ├── basic_command.go │ │ │ ├── check_for_conflicts.go │ │ │ ├── custom_commands_submenu.go │ │ │ ├── form_prompts.go │ │ │ ├── global_context.go │ │ │ ├── menu_from_command.go │ │ │ ├── menu_from_commands_output.go │ │ │ ├── multiple_contexts.go │ │ │ ├── multiple_prompts.go │ │ │ ├── run_command.go │ │ │ ├── selected_commit.go │ │ │ ├── selected_commit_range.go │ │ │ ├── selected_path.go │ │ │ ├── show_output_in_panel.go │ │ │ ├── suggestions_command.go │ │ │ └── suggestions_preset.go │ │ ├── demo │ │ │ ├── amend_old_commit.go │ │ │ ├── bisect.go │ │ │ ├── cherry_pick.go │ │ │ ├── commit_and_push.go │ │ │ ├── commit_graph.go │ │ │ ├── custom_command.go │ │ │ ├── custom_patch.go │ │ │ ├── diff_commits.go │ │ │ ├── filter.go │ │ │ ├── interactive_rebase.go │ │ │ ├── nuke_working_tree.go │ │ │ ├── rebase_onto.go │ │ │ ├── shared.go │ │ │ ├── stage_lines.go │ │ │ ├── undo.go │ │ │ └── worktree_create_from_branches.go │ │ ├── diff │ │ │ ├── copy_to_clipboard.go │ │ │ ├── diff.go │ │ │ ├── diff_and_apply_patch.go │ │ │ ├── diff_commits.go │ │ │ ├── diff_non_sticky_range.go │ │ │ ├── ignore_whitespace.go │ │ │ └── rename_similarity_threshold_change.go │ │ ├── file │ │ │ ├── collapse_expand.go │ │ │ ├── copy_menu.go │ │ │ ├── dir_with_untracked_file.go │ │ │ ├── discard_all_dir_changes.go │ │ │ ├── discard_range_select.go │ │ │ ├── discard_staged_changes.go │ │ │ ├── discard_unstaged_dir_changes.go │ │ │ ├── discard_unstaged_file_changes.go │ │ │ ├── discard_unstaged_range_select.go │ │ │ ├── discard_various_changes.go │ │ │ ├── discard_various_changes_range_select.go │ │ │ ├── gitignore.go │ │ │ ├── gitignore_special_characters.go │ │ │ ├── remember_commit_message_after_fail.go │ │ │ ├── rename_similarity_threshold_change.go │ │ │ ├── renamed_files.go │ │ │ ├── renamed_files_no_root_item.go │ │ │ ├── shared.go │ │ │ ├── stage_children_range_select.go │ │ │ ├── stage_deleted_range_select.go │ │ │ └── stage_range_select.go │ │ ├── filter_and_search │ │ │ ├── filter_by_file_status.go │ │ │ ├── filter_commit_files.go │ │ │ ├── filter_files.go │ │ │ ├── filter_fuzzy.go │ │ │ ├── filter_menu.go │ │ │ ├── filter_menu_cancel_filter_with_escape.go │ │ │ ├── filter_menu_with_no_keybindings.go │ │ │ ├── filter_remote_branches.go │ │ │ ├── filter_remotes.go │ │ │ ├── filter_search_history.go │ │ │ ├── filter_updates_when_model_changes.go │ │ │ ├── nested_filter.go │ │ │ ├── nested_filter_transient.go │ │ │ ├── new_search.go │ │ │ └── staging_folder_stages_only_tracked_files_in_tracked_only_filter.go │ │ ├── filter_by_author │ │ │ ├── select_author.go │ │ │ ├── shared.go │ │ │ └── type_author.go │ │ ├── filter_by_path │ │ │ ├── cli_arg.go │ │ │ ├── keep_same_commit_selected_on_exit.go │ │ │ ├── select_file.go │ │ │ ├── shared.go │ │ │ └── type_file.go │ │ ├── interactive_rebase │ │ │ ├── advanced_interactive_rebase.go │ │ │ ├── amend_commit_with_conflict.go │ │ │ ├── amend_first_commit.go │ │ │ ├── amend_fixup_commit.go │ │ │ ├── amend_head_commit_during_rebase.go │ │ │ ├── amend_merge.go │ │ │ ├── amend_non_head_commit_during_rebase.go │ │ │ ├── delete_update_ref_todo.go │ │ │ ├── dont_show_branch_heads_for_todo_items.go │ │ │ ├── drop_commit_in_copied_branch_with_update_ref.go │ │ │ ├── drop_merge_commit.go │ │ │ ├── drop_todo_commit_with_update_ref.go │ │ │ ├── drop_with_custom_comment_char.go │ │ │ ├── edit_and_auto_amend.go │ │ │ ├── edit_first_commit.go │ │ │ ├── edit_last_commit_of_stacked_branch.go │ │ │ ├── edit_non_todo_commit_during_rebase.go │ │ │ ├── edit_range_select_down_to_merge_outside_rebase.go │ │ │ ├── edit_range_select_outside_rebase.go │ │ │ ├── edit_the_confl_commit.go │ │ │ ├── fixup_first_commit.go │ │ │ ├── fixup_second_commit.go │ │ │ ├── interactive_rebase_of_copied_branch.go │ │ │ ├── interactive_rebase_with_conflict_for_edit_command.go │ │ │ ├── mid_rebase_range_select.go │ │ │ ├── move.go │ │ │ ├── move_across_branch_boundary_outside_rebase.go │ │ │ ├── move_in_rebase.go │ │ │ ├── move_update_ref_todo.go │ │ │ ├── move_with_custom_comment_char.go │ │ │ ├── outside_rebase_range_select.go │ │ │ ├── pick_rescheduled.go │ │ │ ├── quick_start.go │ │ │ ├── quick_start_keep_selection.go │ │ │ ├── quick_start_keep_selection_range.go │ │ │ ├── rebase.go │ │ │ ├── rebase_with_commit_that_becomes_empty.go │ │ │ ├── revert_during_rebase_when_stopped_on_edit.go │ │ │ ├── revert_multiple_commits_in_interactive_rebase.go │ │ │ ├── revert_single_commit_in_interactive_rebase.go │ │ │ ├── reword_commit_with_editor_and_fail.go │ │ │ ├── reword_first_commit.go │ │ │ ├── reword_last_commit.go │ │ │ ├── reword_last_commit_of_stacked_branch.go │ │ │ ├── reword_merge_commit.go │ │ │ ├── reword_you_are_here_commit.go │ │ │ ├── reword_you_are_here_commit_with_editor.go │ │ │ ├── shared.go │ │ │ ├── show_exec_todos.go │ │ │ ├── squash_down_first_commit.go │ │ │ ├── squash_down_second_commit.go │ │ │ ├── squash_fixups_above.go │ │ │ ├── squash_fixups_above_first_commit.go │ │ │ ├── squash_fixups_in_current_branch.go │ │ │ ├── swap_in_rebase_with_conflict.go │ │ │ ├── swap_in_rebase_with_conflict_and_edit.go │ │ │ ├── swap_with_conflict.go │ │ │ └── view_files_of_todo_entries.go │ │ ├── misc │ │ │ ├── confirm_on_quit.go │ │ │ ├── copy_to_clipboard.go │ │ │ ├── disabled_keybindings.go │ │ │ ├── initial_open.go │ │ │ └── recent_repos_on_launch.go │ │ ├── patch_building │ │ │ ├── apply.go │ │ │ ├── apply_in_reverse.go │ │ │ ├── apply_in_reverse_with_conflict.go │ │ │ ├── edit_line_in_patch_building_panel.go │ │ │ ├── move_range_to_index.go │ │ │ ├── move_to_earlier_commit.go │ │ │ ├── move_to_earlier_commit_from_added_file.go │ │ │ ├── move_to_earlier_commit_no_keep_empty.go │ │ │ ├── move_to_index.go │ │ │ ├── move_to_index_from_added_file_with_conflict.go │ │ │ ├── move_to_index_part_of_adjacent_added_lines.go │ │ │ ├── move_to_index_partial.go │ │ │ ├── move_to_index_with_conflict.go │ │ │ ├── move_to_index_works_even_if_noprefix_is_set.go │ │ │ ├── move_to_later_commit.go │ │ │ ├── move_to_later_commit_partial_hunk.go │ │ │ ├── move_to_new_commit.go │ │ │ ├── move_to_new_commit_before.go │ │ │ ├── move_to_new_commit_before_no_keep_empty.go │ │ │ ├── move_to_new_commit_from_added_file.go │ │ │ ├── move_to_new_commit_from_deleted_file.go │ │ │ ├── move_to_new_commit_in_last_commit_of_stacked_branch.go │ │ │ ├── move_to_new_commit_partial_hunk.go │ │ │ ├── remove_from_commit.go │ │ │ ├── remove_parts_of_added_file.go │ │ │ ├── reset_with_escape.go │ │ │ ├── select_all_files.go │ │ │ ├── specific_selection.go │ │ │ ├── start_new_patch.go │ │ │ └── toggle_range.go │ │ ├── reflog │ │ │ ├── checkout.go │ │ │ ├── cherry_pick.go │ │ │ ├── do_not_show_branch_markers_in_reflog_subcommits.go │ │ │ ├── patch.go │ │ │ └── reset.go │ │ ├── shared │ │ │ ├── README.md │ │ │ └── conflicts.go │ │ ├── shell_commands │ │ │ ├── basic_shell_command.go │ │ │ ├── complex_shell_command.go │ │ │ ├── delete_from_history.go │ │ │ ├── edit_history.go │ │ │ ├── history.go │ │ │ └── omit_from_history.go │ │ ├── staging │ │ │ ├── diff_change_screen_mode.go │ │ │ ├── diff_context_change.go │ │ │ ├── discard_all_changes.go │ │ │ ├── search.go │ │ │ ├── stage_hunks.go │ │ │ ├── stage_lines.go │ │ │ └── stage_ranges.go │ │ ├── stash │ │ │ ├── apply.go │ │ │ ├── apply_patch.go │ │ │ ├── create_branch.go │ │ │ ├── drop.go │ │ │ ├── drop_multiple.go │ │ │ ├── pop.go │ │ │ ├── prevent_discarding_file_changes.go │ │ │ ├── rename.go │ │ │ ├── stash.go │ │ │ ├── stash_all.go │ │ │ ├── stash_and_keep_index.go │ │ │ ├── stash_including_untracked_files.go │ │ │ ├── stash_staged.go │ │ │ ├── stash_staged_partial_file.go │ │ │ └── stash_unstaged.go │ │ ├── status │ │ │ ├── click_repo_name_to_open_repos_menu.go │ │ │ ├── click_to_focus.go │ │ │ ├── click_working_tree_state_to_open_rebase_options_menu.go │ │ │ ├── log_cmd.go │ │ │ ├── log_cmd_status_panel_all_branches_log.go │ │ │ └── show_divergence_from_base_branch.go │ │ ├── submodule │ │ │ ├── add.go │ │ │ ├── enter.go │ │ │ ├── enter_nested.go │ │ │ ├── remove.go │ │ │ ├── remove_nested.go │ │ │ ├── reset.go │ │ │ ├── reset_folder.go │ │ │ └── shared.go │ │ ├── sync │ │ │ ├── fetch_and_auto_forward_branches_all_branches.go │ │ │ ├── fetch_and_auto_forward_branches_none.go │ │ │ ├── fetch_and_auto_forward_branches_only_main_branches.go │ │ │ ├── fetch_prune.go │ │ │ ├── fetch_when_sorted_by_date.go │ │ │ ├── force_push.go │ │ │ ├── force_push_multiple_matching.go │ │ │ ├── force_push_multiple_upstream.go │ │ │ ├── force_push_remote_branch_not_stored_locally.go │ │ │ ├── force_push_triangular.go │ │ │ ├── pull.go │ │ │ ├── pull_and_set_upstream.go │ │ │ ├── pull_merge.go │ │ │ ├── pull_merge_conflict.go │ │ │ ├── pull_rebase.go │ │ │ ├── pull_rebase_conflict.go │ │ │ ├── pull_rebase_interactive_conflict.go │ │ │ ├── pull_rebase_interactive_conflict_drop.go │ │ │ ├── push.go │ │ │ ├── push_and_auto_set_upstream.go │ │ │ ├── push_and_set_upstream.go │ │ │ ├── push_follow_tags.go │ │ │ ├── push_no_follow_tags.go │ │ │ ├── push_tag.go │ │ │ ├── push_with_credential_prompt.go │ │ │ ├── rename_branch_and_pull.go │ │ │ └── shared.go │ │ ├── tag │ │ │ ├── checkout.go │ │ │ ├── checkout_when_branch_with_same_name_exists.go │ │ │ ├── copy_to_clipboard.go │ │ │ ├── create_while_committing.go │ │ │ ├── crud_annotated.go │ │ │ ├── crud_lightweight.go │ │ │ ├── delete_local_and_remote.go │ │ │ ├── force_tag_annotated.go │ │ │ ├── force_tag_lightweight.go │ │ │ ├── reset.go │ │ │ └── reset_to_duplicate_named_branch.go │ │ ├── test_list.go │ │ ├── test_list_generator.go │ │ ├── tests.go │ │ ├── ui │ │ │ ├── accordion.go │ │ │ ├── disable_switch_tab_with_panel_jump_keys.go │ │ │ ├── empty_menu.go │ │ │ ├── keybinding_suggestions_when_switching_repos.go │ │ │ ├── mode_specific_keybinding_suggestions.go │ │ │ ├── open_link_failure.go │ │ │ ├── range_select.go │ │ │ ├── switch_tab_from_menu.go │ │ │ └── switch_tab_with_panel_jump_keys.go │ │ ├── undo │ │ │ ├── undo_checkout_and_drop.go │ │ │ ├── undo_commit.go │ │ │ └── undo_drop.go │ │ └── worktree │ │ │ ├── add_from_branch.go │ │ │ ├── add_from_branch_detached.go │ │ │ ├── add_from_commit.go │ │ │ ├── associate_branch_bisect.go │ │ │ ├── associate_branch_rebase.go │ │ │ ├── bare_repo.go │ │ │ ├── bare_repo_worktree_config.go │ │ │ ├── crud.go │ │ │ ├── custom_command.go │ │ │ ├── detach_worktree_from_branch.go │ │ │ ├── dotfile_bare_repo.go │ │ │ ├── double_nested_linked_submodule.go │ │ │ ├── exclude_file_in_worktree.go │ │ │ ├── fast_forward_worktree_branch.go │ │ │ ├── fast_forward_worktree_branch_should_not_pollute_current_worktree.go │ │ │ ├── force_remove_worktree.go │ │ │ ├── remove_worktree_from_branch.go │ │ │ ├── reset_window_tabs.go │ │ │ ├── symlink_into_repo_subdir.go │ │ │ └── worktree_in_repo.go │ └── types │ │ └── types.go ├── jsonschema │ ├── generate.go │ ├── generate_config_docs.go │ └── generator.go ├── logs │ ├── logs.go │ └── tail │ │ ├── logs_default.go │ │ ├── logs_windows.go │ │ └── tail.go ├── snake │ ├── snake.go │ └── snake_test.go ├── tasks │ ├── async_handler.go │ ├── async_handler_test.go │ ├── tasks.go │ └── tasks_test.go ├── theme │ ├── gocui.go │ ├── style.go │ ├── style_test.go │ └── theme.go ├── updates │ └── updates.go └── utils │ ├── color.go │ ├── color_test.go │ ├── date.go │ ├── date_test.go │ ├── dummies.go │ ├── errors.go │ ├── formatting.go │ ├── formatting_test.go │ ├── history_buffer.go │ ├── history_buffer_test.go │ ├── io.go │ ├── io_test.go │ ├── lines.go │ ├── lines_test.go │ ├── once_writer.go │ ├── once_writer_test.go │ ├── rebase_todo.go │ ├── rebase_todo_test.go │ ├── regexp.go │ ├── regexp_test.go │ ├── search.go │ ├── search_test.go │ ├── slice.go │ ├── slice_test.go │ ├── string_pool.go │ ├── string_stack.go │ ├── template.go │ ├── template_test.go │ ├── thread_safe_map.go │ ├── thread_safe_map_test.go │ ├── utils.go │ ├── utils_test.go │ └── yaml_utils │ ├── yaml_utils.go │ └── yaml_utils_test.go ├── schema └── config.json ├── scripts ├── bisect.sh ├── bump_gocui.sh ├── bump_lazycore.sh ├── bump_modules.sh ├── check_filenames.sh ├── check_for_fixups.sh ├── record_demo.sh ├── run_integration_tests.sh └── update_language_files.sh ├── test ├── .gitconfig ├── README.md ├── default_test_config │ └── config.yml ├── files │ └── pre-push └── global_git_config └── vendor ├── dario.cat └── mergo │ ├── .gitignore │ ├── CODE_OF_CONDUCT.md │ ├── CONTRIBUTING.md │ ├── LICENSE │ ├── README.md │ ├── SECURITY.md │ ├── doc.go │ ├── map.go │ ├── merge.go │ └── mergo.go ├── github.com ├── Microsoft │ └── go-winio │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── .golangci.yml │ │ ├── CODEOWNERS │ │ ├── LICENSE │ │ ├── README.md │ │ ├── SECURITY.md │ │ ├── backup.go │ │ ├── doc.go │ │ ├── ea.go │ │ ├── file.go │ │ ├── fileinfo.go │ │ ├── hvsock.go │ │ ├── internal │ │ ├── fs │ │ │ ├── doc.go │ │ │ ├── fs.go │ │ │ ├── security.go │ │ │ └── zsyscall_windows.go │ │ ├── socket │ │ │ ├── rawaddr.go │ │ │ ├── socket.go │ │ │ └── zsyscall_windows.go │ │ └── stringbuffer │ │ │ └── wstring.go │ │ ├── pipe.go │ │ ├── pkg │ │ └── guid │ │ │ ├── guid.go │ │ │ ├── guid_nonwindows.go │ │ │ ├── guid_windows.go │ │ │ └── variant_string.go │ │ ├── privilege.go │ │ ├── reparse.go │ │ ├── sd.go │ │ ├── syscall.go │ │ └── zsyscall_windows.go ├── ProtonMail │ └── go-crypto │ │ ├── AUTHORS │ │ ├── CONTRIBUTORS │ │ ├── LICENSE │ │ ├── PATENTS │ │ ├── bitcurves │ │ └── bitcurve.go │ │ ├── brainpool │ │ ├── brainpool.go │ │ └── rcurve.go │ │ ├── eax │ │ ├── eax.go │ │ ├── eax_test_vectors.go │ │ └── random_vectors.go │ │ ├── internal │ │ └── byteutil │ │ │ └── byteutil.go │ │ ├── ocb │ │ ├── ocb.go │ │ ├── random_vectors.go │ │ ├── rfc7253_test_vectors_suite_a.go │ │ └── rfc7253_test_vectors_suite_b.go │ │ └── openpgp │ │ ├── aes │ │ └── keywrap │ │ │ └── keywrap.go │ │ ├── armor │ │ ├── armor.go │ │ └── encode.go │ │ ├── canonical_text.go │ │ ├── ecdh │ │ └── ecdh.go │ │ ├── ecdsa │ │ └── ecdsa.go │ │ ├── ed25519 │ │ └── ed25519.go │ │ ├── ed448 │ │ └── ed448.go │ │ ├── eddsa │ │ └── eddsa.go │ │ ├── elgamal │ │ └── elgamal.go │ │ ├── errors │ │ └── errors.go │ │ ├── hash.go │ │ ├── internal │ │ ├── algorithm │ │ │ ├── aead.go │ │ │ ├── cipher.go │ │ │ └── hash.go │ │ ├── ecc │ │ │ ├── curve25519.go │ │ │ ├── curve_info.go │ │ │ ├── curves.go │ │ │ ├── ed25519.go │ │ │ ├── ed448.go │ │ │ ├── generic.go │ │ │ └── x448.go │ │ └── encoding │ │ │ ├── encoding.go │ │ │ ├── mpi.go │ │ │ └── oid.go │ │ ├── key_generation.go │ │ ├── keys.go │ │ ├── keys_test_data.go │ │ ├── packet │ │ ├── aead_config.go │ │ ├── aead_crypter.go │ │ ├── aead_encrypted.go │ │ ├── compressed.go │ │ ├── config.go │ │ ├── config_v5.go │ │ ├── encrypted_key.go │ │ ├── literal.go │ │ ├── marker.go │ │ ├── notation.go │ │ ├── ocfb.go │ │ ├── one_pass_signature.go │ │ ├── opaque.go │ │ ├── packet.go │ │ ├── packet_sequence.go │ │ ├── packet_unsupported.go │ │ ├── padding.go │ │ ├── private_key.go │ │ ├── private_key_test_data.go │ │ ├── public_key.go │ │ ├── public_key_test_data.go │ │ ├── reader.go │ │ ├── recipient.go │ │ ├── signature.go │ │ ├── symmetric_key_encrypted.go │ │ ├── symmetrically_encrypted.go │ │ ├── symmetrically_encrypted_aead.go │ │ ├── symmetrically_encrypted_mdc.go │ │ ├── userattribute.go │ │ └── userid.go │ │ ├── read.go │ │ ├── read_write_test_data.go │ │ ├── s2k │ │ ├── s2k.go │ │ ├── s2k_cache.go │ │ └── s2k_config.go │ │ ├── write.go │ │ ├── x25519 │ │ └── x25519.go │ │ └── x448 │ │ └── x448.go ├── adrg │ └── xdg │ │ ├── CODE_OF_CONDUCT.md │ │ ├── CONTRIBUTING.md │ │ ├── LICENSE │ │ ├── README.md │ │ ├── base_dirs.go │ │ ├── codecov.yml │ │ ├── doc.go │ │ ├── internal │ │ └── pathutil │ │ │ ├── pathutil.go │ │ │ ├── pathutil_plan9.go │ │ │ ├── pathutil_unix.go │ │ │ └── pathutil_windows.go │ │ ├── paths_darwin.go │ │ ├── paths_plan9.go │ │ ├── paths_unix.go │ │ ├── paths_windows.go │ │ ├── user_dirs.go │ │ └── xdg.go ├── atotto │ └── clipboard │ │ ├── LICENSE │ │ ├── README.md │ │ ├── clipboard.go │ │ ├── clipboard_darwin.go │ │ ├── clipboard_plan9.go │ │ ├── clipboard_unix.go │ │ └── clipboard_windows.go ├── aybabtme │ └── humanlog │ │ ├── .gitignore │ │ ├── LICENSE.md │ │ ├── README.md │ │ ├── docker_compose_handler.go │ │ ├── goreleaser.yaml │ │ ├── handler.go │ │ ├── json_handler.go │ │ ├── logfmt_handler.go │ │ ├── scanner.go │ │ └── time_parse.go ├── bahlo │ └── generic-list-go │ │ ├── LICENSE │ │ ├── README.md │ │ └── list.go ├── buger │ └── jsonparser │ │ ├── .gitignore │ │ ├── Dockerfile │ │ ├── LICENSE │ │ ├── Makefile │ │ ├── README.md │ │ ├── bytes.go │ │ ├── bytes_safe.go │ │ ├── bytes_unsafe.go │ │ ├── escape.go │ │ ├── fuzz.go │ │ ├── oss-fuzz-build.sh │ │ └── parser.go ├── cloudflare │ └── circl │ │ ├── LICENSE │ │ ├── dh │ │ ├── x25519 │ │ │ ├── curve.go │ │ │ ├── curve_amd64.go │ │ │ ├── curve_amd64.h │ │ │ ├── curve_amd64.s │ │ │ ├── curve_generic.go │ │ │ ├── curve_noasm.go │ │ │ ├── doc.go │ │ │ ├── key.go │ │ │ └── table.go │ │ └── x448 │ │ │ ├── curve.go │ │ │ ├── curve_amd64.go │ │ │ ├── curve_amd64.h │ │ │ ├── curve_amd64.s │ │ │ ├── curve_generic.go │ │ │ ├── curve_noasm.go │ │ │ ├── doc.go │ │ │ ├── key.go │ │ │ └── table.go │ │ ├── ecc │ │ └── goldilocks │ │ │ ├── constants.go │ │ │ ├── curve.go │ │ │ ├── isogeny.go │ │ │ ├── point.go │ │ │ ├── scalar.go │ │ │ ├── twist.go │ │ │ ├── twistPoint.go │ │ │ ├── twistTables.go │ │ │ └── twist_basemult.go │ │ ├── internal │ │ ├── conv │ │ │ └── conv.go │ │ └── sha3 │ │ │ ├── doc.go │ │ │ ├── hashes.go │ │ │ ├── keccakf.go │ │ │ ├── rc.go │ │ │ ├── sha3.go │ │ │ ├── sha3_s390x.s │ │ │ ├── shake.go │ │ │ ├── xor.go │ │ │ ├── xor_generic.go │ │ │ └── xor_unaligned.go │ │ ├── math │ │ ├── fp25519 │ │ │ ├── fp.go │ │ │ ├── fp_amd64.go │ │ │ ├── fp_amd64.h │ │ │ ├── fp_amd64.s │ │ │ ├── fp_generic.go │ │ │ └── fp_noasm.go │ │ ├── fp448 │ │ │ ├── fp.go │ │ │ ├── fp_amd64.go │ │ │ ├── fp_amd64.h │ │ │ ├── fp_amd64.s │ │ │ ├── fp_generic.go │ │ │ ├── fp_noasm.go │ │ │ └── fuzzer.go │ │ ├── integer.go │ │ ├── mlsbset │ │ │ ├── mlsbset.go │ │ │ └── power.go │ │ ├── primes.go │ │ └── wnaf.go │ │ └── sign │ │ ├── ed25519 │ │ ├── ed25519.go │ │ ├── modular.go │ │ ├── mult.go │ │ ├── point.go │ │ ├── pubkey.go │ │ ├── pubkey112.go │ │ ├── signapi.go │ │ └── tables.go │ │ ├── ed448 │ │ ├── ed448.go │ │ └── signapi.go │ │ └── sign.go ├── cloudfoundry │ └── jibber_jabber │ │ ├── LICENSE │ │ ├── README.md │ │ ├── jibber_jabber.go │ │ ├── jibber_jabber_unix.go │ │ └── jibber_jabber_windows.go ├── creack │ └── pty │ │ ├── .gitignore │ │ ├── Dockerfile.riscv │ │ ├── LICENSE │ │ ├── README.md │ │ ├── doc.go │ │ ├── ioctl.go │ │ ├── ioctl_bsd.go │ │ ├── ioctl_solaris.go │ │ ├── mktypes.bash │ │ ├── pty_darwin.go │ │ ├── pty_dragonfly.go │ │ ├── pty_freebsd.go │ │ ├── pty_linux.go │ │ ├── pty_openbsd.go │ │ ├── pty_solaris.go │ │ ├── pty_unsupported.go │ │ ├── run.go │ │ ├── test_crosscompile.sh │ │ ├── util.go │ │ ├── util_solaris.go │ │ ├── ztypes_386.go │ │ ├── ztypes_amd64.go │ │ ├── ztypes_arm.go │ │ ├── ztypes_arm64.go │ │ ├── ztypes_dragonfly_amd64.go │ │ ├── ztypes_freebsd_386.go │ │ ├── ztypes_freebsd_amd64.go │ │ ├── ztypes_freebsd_arm.go │ │ ├── ztypes_freebsd_arm64.go │ │ ├── ztypes_mipsx.go │ │ ├── ztypes_openbsd_32bit_int.go │ │ ├── ztypes_ppc64.go │ │ ├── ztypes_ppc64le.go │ │ ├── ztypes_riscvx.go │ │ └── ztypes_s390x.go ├── cyphar │ └── filepath-securejoin │ │ ├── CHANGELOG.md │ │ ├── LICENSE │ │ ├── README.md │ │ ├── VERSION │ │ ├── doc.go │ │ ├── gocompat_errors_go120.go │ │ ├── gocompat_errors_unsupported.go │ │ ├── gocompat_generics_go121.go │ │ ├── gocompat_generics_unsupported.go │ │ ├── join.go │ │ ├── lookup_linux.go │ │ ├── mkdir_linux.go │ │ ├── open_linux.go │ │ ├── openat2_linux.go │ │ ├── openat_linux.go │ │ ├── procfs_linux.go │ │ └── vfs.go ├── davecgh │ └── go-spew │ │ ├── LICENSE │ │ └── spew │ │ ├── bypass.go │ │ ├── bypasssafe.go │ │ ├── common.go │ │ ├── config.go │ │ ├── doc.go │ │ ├── dump.go │ │ ├── format.go │ │ └── spew.go ├── emirpasic │ └── gods │ │ ├── LICENSE │ │ ├── containers │ │ ├── containers.go │ │ ├── enumerable.go │ │ ├── iterator.go │ │ └── serialization.go │ │ ├── lists │ │ ├── arraylist │ │ │ ├── arraylist.go │ │ │ ├── enumerable.go │ │ │ ├── iterator.go │ │ │ └── serialization.go │ │ └── lists.go │ │ ├── trees │ │ ├── binaryheap │ │ │ ├── binaryheap.go │ │ │ ├── iterator.go │ │ │ └── serialization.go │ │ └── trees.go │ │ └── utils │ │ ├── comparator.go │ │ ├── sort.go │ │ └── utils.go ├── fatih │ └── color │ │ ├── LICENSE.md │ │ ├── README.md │ │ ├── color.go │ │ └── doc.go ├── gdamore │ ├── encoding │ │ ├── CODE_OF_CONDUCT.md │ │ ├── LICENSE │ │ ├── README.md │ │ ├── SECURITY.md │ │ ├── ascii.go │ │ ├── charmap.go │ │ ├── doc.go │ │ ├── ebcdic.go │ │ ├── latin1.go │ │ ├── latin5.go │ │ └── utf8.go │ └── tcell │ │ └── v2 │ │ ├── .gitignore │ │ ├── AUTHORS │ │ ├── CHANGESv2.md │ │ ├── LICENSE │ │ ├── README-wasm.md │ │ ├── README.md │ │ ├── SECURITY.md │ │ ├── TUTORIAL.md │ │ ├── UKRAINE.md │ │ ├── attr.go │ │ ├── cell.go │ │ ├── charset_stub.go │ │ ├── charset_unix.go │ │ ├── charset_windows.go │ │ ├── color.go │ │ ├── colorfit.go │ │ ├── console_stub.go │ │ ├── console_win.go │ │ ├── doc.go │ │ ├── encoding.go │ │ ├── errors.go │ │ ├── event.go │ │ ├── focus.go │ │ ├── interrupt.go │ │ ├── key.go │ │ ├── mouse.go │ │ ├── nonblock_bsd.go │ │ ├── nonblock_unix.go │ │ ├── paste.go │ │ ├── resize.go │ │ ├── runes.go │ │ ├── screen.go │ │ ├── simulation.go │ │ ├── stdin_unix.go │ │ ├── style.go │ │ ├── terminfo │ │ ├── .gitignore │ │ ├── README.md │ │ ├── TERMINALS.md │ │ ├── a │ │ │ ├── aixterm │ │ │ │ └── term.go │ │ │ ├── alacritty │ │ │ │ ├── direct.go │ │ │ │ └── term.go │ │ │ └── ansi │ │ │ │ └── term.go │ │ ├── b │ │ │ └── beterm │ │ │ │ └── term.go │ │ ├── base │ │ │ └── base.go │ │ ├── c │ │ │ └── cygwin │ │ │ │ └── term.go │ │ ├── d │ │ │ └── dtterm │ │ │ │ └── term.go │ │ ├── dynamic │ │ │ └── dynamic.go │ │ ├── e │ │ │ └── emacs │ │ │ │ └── term.go │ │ ├── extended │ │ │ └── extended.go │ │ ├── f │ │ │ └── foot │ │ │ │ └── foot.go │ │ ├── g │ │ │ └── gnome │ │ │ │ └── term.go │ │ ├── gen.sh │ │ ├── h │ │ │ └── hpterm │ │ │ │ └── term.go │ │ ├── k │ │ │ ├── konsole │ │ │ │ └── term.go │ │ │ └── kterm │ │ │ │ └── term.go │ │ ├── l │ │ │ └── linux │ │ │ │ └── term.go │ │ ├── models.txt │ │ ├── p │ │ │ └── pcansi │ │ │ │ └── term.go │ │ ├── r │ │ │ └── rxvt │ │ │ │ └── term.go │ │ ├── s │ │ │ ├── screen │ │ │ │ └── term.go │ │ │ ├── simpleterm │ │ │ │ └── term.go │ │ │ └── sun │ │ │ │ └── term.go │ │ ├── t │ │ │ └── tmux │ │ │ │ └── term.go │ │ ├── terminfo.go │ │ ├── v │ │ │ ├── vt100 │ │ │ │ └── term.go │ │ │ ├── vt102 │ │ │ │ └── term.go │ │ │ ├── vt220 │ │ │ │ └── term.go │ │ │ ├── vt320 │ │ │ │ └── term.go │ │ │ ├── vt400 │ │ │ │ └── term.go │ │ │ ├── vt420 │ │ │ │ └── term.go │ │ │ └── vt52 │ │ │ │ └── term.go │ │ ├── w │ │ │ ├── wy50 │ │ │ │ └── term.go │ │ │ ├── wy60 │ │ │ │ └── term.go │ │ │ └── wy99_ansi │ │ │ │ └── term.go │ │ └── x │ │ │ ├── xfce │ │ │ └── term.go │ │ │ ├── xterm │ │ │ ├── direct.go │ │ │ └── term.go │ │ │ ├── xterm_ghostty │ │ │ └── term.go │ │ │ └── xterm_kitty │ │ │ └── term.go │ │ ├── terms_default.go │ │ ├── terms_dynamic.go │ │ ├── terms_static.go │ │ ├── tscreen.go │ │ ├── tscreen_stub.go │ │ ├── tscreen_unix.go │ │ ├── tty.go │ │ ├── tty_unix.go │ │ └── wscreen.go ├── go-errors │ └── errors │ │ ├── LICENSE.MIT │ │ ├── README.md │ │ ├── error.go │ │ ├── error_1_13.go │ │ ├── error_backward.go │ │ ├── join_unwrap_1_20.go │ │ ├── join_unwrap_backward.go │ │ ├── parse_panic.go │ │ └── stackframe.go ├── go-git │ ├── gcfg │ │ ├── .gitignore │ │ ├── LICENSE │ │ ├── Makefile │ │ ├── README │ │ ├── doc.go │ │ ├── errors.go │ │ ├── read.go │ │ ├── scanner │ │ │ ├── errors.go │ │ │ └── scanner.go │ │ ├── set.go │ │ ├── token │ │ │ ├── position.go │ │ │ ├── serialize.go │ │ │ └── token.go │ │ └── types │ │ │ ├── bool.go │ │ │ ├── doc.go │ │ │ ├── enum.go │ │ │ ├── int.go │ │ │ └── scan.go │ └── go-billy │ │ └── v5 │ │ ├── .gitignore │ │ ├── LICENSE │ │ ├── Makefile │ │ ├── README.md │ │ ├── fs.go │ │ ├── helper │ │ ├── chroot │ │ │ └── chroot.go │ │ └── polyfill │ │ │ └── polyfill.go │ │ ├── memfs │ │ ├── memory.go │ │ └── storage.go │ │ ├── osfs │ │ ├── os.go │ │ ├── os_bound.go │ │ ├── os_chroot.go │ │ ├── os_js.go │ │ ├── os_options.go │ │ ├── os_plan9.go │ │ ├── os_posix.go │ │ ├── os_wasip1.go │ │ └── os_windows.go │ │ └── util │ │ ├── glob.go │ │ ├── util.go │ │ └── walk.go ├── go-logfmt │ └── logfmt │ │ ├── .gitignore │ │ ├── CHANGELOG.md │ │ ├── LICENSE │ │ ├── README.md │ │ ├── decode.go │ │ ├── doc.go │ │ ├── encode.go │ │ └── jsonstring.go ├── gobwas │ └── glob │ │ ├── .gitignore │ │ ├── LICENSE │ │ ├── bench.sh │ │ ├── compiler │ │ └── compiler.go │ │ ├── glob.go │ │ ├── match │ │ ├── any.go │ │ ├── any_of.go │ │ ├── btree.go │ │ ├── contains.go │ │ ├── every_of.go │ │ ├── list.go │ │ ├── match.go │ │ ├── max.go │ │ ├── min.go │ │ ├── nothing.go │ │ ├── prefix.go │ │ ├── prefix_any.go │ │ ├── prefix_suffix.go │ │ ├── range.go │ │ ├── row.go │ │ ├── segments.go │ │ ├── single.go │ │ ├── suffix.go │ │ ├── suffix_any.go │ │ ├── super.go │ │ └── text.go │ │ ├── readme.md │ │ ├── syntax │ │ ├── ast │ │ │ ├── ast.go │ │ │ └── parser.go │ │ ├── lexer │ │ │ ├── lexer.go │ │ │ └── token.go │ │ └── syntax.go │ │ └── util │ │ ├── runes │ │ └── runes.go │ │ └── strings │ │ └── strings.go ├── golang │ └── groupcache │ │ ├── LICENSE │ │ └── lru │ │ └── lru.go ├── gookit │ └── color │ │ ├── .gitignore │ │ ├── LICENSE │ │ ├── README.md │ │ ├── README.zh-CN.md │ │ ├── color.go │ │ ├── color_16.go │ │ ├── color_256.go │ │ ├── color_rgb.go │ │ ├── color_tag.go │ │ ├── convert.go │ │ ├── detect_env.go │ │ ├── detect_nonwin.go │ │ ├── detect_windows.go │ │ ├── printer.go │ │ ├── quickstart.go │ │ ├── style.go │ │ └── utils.go ├── integrii │ └── flaggy │ │ ├── .gitignore │ │ ├── LICENSE │ │ ├── README.md │ │ ├── argumentParser.go │ │ ├── flag.go │ │ ├── help.go │ │ ├── helpValues.go │ │ ├── logo.png │ │ ├── main.go │ │ ├── parsedValue.go │ │ ├── parser.go │ │ ├── positionalValue.go │ │ └── subCommand.go ├── jbenet │ └── go-context │ │ ├── LICENSE │ │ └── io │ │ └── ctxio.go ├── jesseduffield │ ├── generics │ │ ├── LICENSE │ │ ├── maps │ │ │ └── maps.go │ │ ├── orderedset │ │ │ └── orderedset.go │ │ └── set │ │ │ └── set.go │ ├── go-git │ │ └── v5 │ │ │ ├── .gitignore │ │ │ ├── CODE_OF_CONDUCT.md │ │ │ ├── COMPATIBILITY.md │ │ │ ├── CONTRIBUTING.md │ │ │ ├── EXTENDING.md │ │ │ ├── LICENSE │ │ │ ├── Makefile │ │ │ ├── README.md │ │ │ ├── SECURITY.md │ │ │ ├── blame.go │ │ │ ├── common.go │ │ │ ├── config │ │ │ ├── branch.go │ │ │ ├── config.go │ │ │ ├── modules.go │ │ │ ├── refspec.go │ │ │ └── url.go │ │ │ ├── doc.go │ │ │ ├── internal │ │ │ ├── path_util │ │ │ │ └── path_util.go │ │ │ ├── revision │ │ │ │ ├── parser.go │ │ │ │ ├── scanner.go │ │ │ │ └── token.go │ │ │ └── url │ │ │ │ └── url.go │ │ │ ├── object_walker.go │ │ │ ├── options.go │ │ │ ├── oss-fuzz.sh │ │ │ ├── plumbing │ │ │ ├── cache │ │ │ │ ├── buffer_lru.go │ │ │ │ ├── common.go │ │ │ │ └── object_lru.go │ │ │ ├── color │ │ │ │ └── color.go │ │ │ ├── error.go │ │ │ ├── filemode │ │ │ │ └── filemode.go │ │ │ ├── format │ │ │ │ ├── config │ │ │ │ │ ├── common.go │ │ │ │ │ ├── decoder.go │ │ │ │ │ ├── doc.go │ │ │ │ │ ├── encoder.go │ │ │ │ │ ├── format.go │ │ │ │ │ ├── option.go │ │ │ │ │ └── section.go │ │ │ │ ├── diff │ │ │ │ │ ├── colorconfig.go │ │ │ │ │ ├── patch.go │ │ │ │ │ └── unified_encoder.go │ │ │ │ ├── gitignore │ │ │ │ │ ├── dir.go │ │ │ │ │ ├── doc.go │ │ │ │ │ ├── matcher.go │ │ │ │ │ └── pattern.go │ │ │ │ ├── idxfile │ │ │ │ │ ├── decoder.go │ │ │ │ │ ├── doc.go │ │ │ │ │ ├── encoder.go │ │ │ │ │ ├── idxfile.go │ │ │ │ │ └── writer.go │ │ │ │ ├── index │ │ │ │ │ ├── decoder.go │ │ │ │ │ ├── doc.go │ │ │ │ │ ├── encoder.go │ │ │ │ │ ├── index.go │ │ │ │ │ └── match.go │ │ │ │ ├── objfile │ │ │ │ │ ├── doc.go │ │ │ │ │ ├── reader.go │ │ │ │ │ └── writer.go │ │ │ │ ├── packfile │ │ │ │ │ ├── common.go │ │ │ │ │ ├── delta_index.go │ │ │ │ │ ├── delta_selector.go │ │ │ │ │ ├── diff_delta.go │ │ │ │ │ ├── doc.go │ │ │ │ │ ├── encoder.go │ │ │ │ │ ├── error.go │ │ │ │ │ ├── fsobject.go │ │ │ │ │ ├── object_pack.go │ │ │ │ │ ├── packfile.go │ │ │ │ │ ├── parser.go │ │ │ │ │ ├── patch_delta.go │ │ │ │ │ └── scanner.go │ │ │ │ └── pktline │ │ │ │ │ ├── encoder.go │ │ │ │ │ ├── error.go │ │ │ │ │ └── scanner.go │ │ │ ├── hash.go │ │ │ ├── hash │ │ │ │ ├── hash.go │ │ │ │ ├── hash_sha1.go │ │ │ │ └── hash_sha256.go │ │ │ ├── memory.go │ │ │ ├── object.go │ │ │ ├── object │ │ │ │ ├── blob.go │ │ │ │ ├── change.go │ │ │ │ ├── change_adaptor.go │ │ │ │ ├── commit.go │ │ │ │ ├── commit_walker.go │ │ │ │ ├── commit_walker_bfs.go │ │ │ │ ├── commit_walker_bfs_filtered.go │ │ │ │ ├── commit_walker_ctime.go │ │ │ │ ├── commit_walker_limit.go │ │ │ │ ├── commit_walker_path.go │ │ │ │ ├── difftree.go │ │ │ │ ├── file.go │ │ │ │ ├── merge_base.go │ │ │ │ ├── object.go │ │ │ │ ├── patch.go │ │ │ │ ├── rename.go │ │ │ │ ├── signature.go │ │ │ │ ├── tag.go │ │ │ │ ├── tree.go │ │ │ │ └── treenoder.go │ │ │ ├── protocol │ │ │ │ └── packp │ │ │ │ │ ├── advrefs.go │ │ │ │ │ ├── advrefs_decode.go │ │ │ │ │ ├── advrefs_encode.go │ │ │ │ │ ├── capability │ │ │ │ │ ├── capability.go │ │ │ │ │ └── list.go │ │ │ │ │ ├── common.go │ │ │ │ │ ├── doc.go │ │ │ │ │ ├── filter.go │ │ │ │ │ ├── gitproto.go │ │ │ │ │ ├── report_status.go │ │ │ │ │ ├── shallowupd.go │ │ │ │ │ ├── sideband │ │ │ │ │ ├── common.go │ │ │ │ │ ├── demux.go │ │ │ │ │ ├── doc.go │ │ │ │ │ └── muxer.go │ │ │ │ │ ├── srvresp.go │ │ │ │ │ ├── ulreq.go │ │ │ │ │ ├── ulreq_decode.go │ │ │ │ │ ├── ulreq_encode.go │ │ │ │ │ ├── updreq.go │ │ │ │ │ ├── updreq_decode.go │ │ │ │ │ ├── updreq_encode.go │ │ │ │ │ ├── uppackreq.go │ │ │ │ │ └── uppackresp.go │ │ │ ├── reference.go │ │ │ ├── revision.go │ │ │ ├── revlist │ │ │ │ └── revlist.go │ │ │ ├── storer │ │ │ │ ├── doc.go │ │ │ │ ├── index.go │ │ │ │ ├── object.go │ │ │ │ ├── reference.go │ │ │ │ ├── shallow.go │ │ │ │ └── storer.go │ │ │ └── transport │ │ │ │ ├── client │ │ │ │ └── client.go │ │ │ │ ├── common.go │ │ │ │ ├── file │ │ │ │ ├── client.go │ │ │ │ └── server.go │ │ │ │ ├── git │ │ │ │ └── common.go │ │ │ │ ├── http │ │ │ │ ├── common.go │ │ │ │ ├── receive_pack.go │ │ │ │ ├── transport.go │ │ │ │ └── upload_pack.go │ │ │ │ ├── internal │ │ │ │ └── common │ │ │ │ │ ├── common.go │ │ │ │ │ ├── mocks.go │ │ │ │ │ └── server.go │ │ │ │ ├── server │ │ │ │ ├── loader.go │ │ │ │ └── server.go │ │ │ │ └── ssh │ │ │ │ ├── auth_method.go │ │ │ │ └── common.go │ │ │ ├── prune.go │ │ │ ├── remote.go │ │ │ ├── repository.go │ │ │ ├── signer.go │ │ │ ├── status.go │ │ │ ├── storage │ │ │ ├── filesystem │ │ │ │ ├── config.go │ │ │ │ ├── deltaobject.go │ │ │ │ ├── dotgit │ │ │ │ │ ├── dotgit.go │ │ │ │ │ ├── dotgit_rewrite_packed_refs.go │ │ │ │ │ ├── dotgit_setref.go │ │ │ │ │ ├── reader.go │ │ │ │ │ ├── repository_filesystem.go │ │ │ │ │ └── writers.go │ │ │ │ ├── index.go │ │ │ │ ├── module.go │ │ │ │ ├── object.go │ │ │ │ ├── reference.go │ │ │ │ ├── shallow.go │ │ │ │ └── storage.go │ │ │ ├── memory │ │ │ │ └── storage.go │ │ │ └── storer.go │ │ │ ├── submodule.go │ │ │ ├── utils │ │ │ ├── binary │ │ │ │ ├── read.go │ │ │ │ └── write.go │ │ │ ├── diff │ │ │ │ └── diff.go │ │ │ ├── ioutil │ │ │ │ └── common.go │ │ │ ├── merkletrie │ │ │ │ ├── change.go │ │ │ │ ├── difftree.go │ │ │ │ ├── doc.go │ │ │ │ ├── doubleiter.go │ │ │ │ ├── filesystem │ │ │ │ │ └── node.go │ │ │ │ ├── index │ │ │ │ │ └── node.go │ │ │ │ ├── internal │ │ │ │ │ └── frame │ │ │ │ │ │ └── frame.go │ │ │ │ ├── iter.go │ │ │ │ └── noder │ │ │ │ │ ├── noder.go │ │ │ │ │ └── path.go │ │ │ ├── sync │ │ │ │ ├── bufio.go │ │ │ │ ├── bytes.go │ │ │ │ └── zlib.go │ │ │ └── trace │ │ │ │ └── trace.go │ │ │ ├── worktree.go │ │ │ ├── worktree_bsd.go │ │ │ ├── worktree_commit.go │ │ │ ├── worktree_js.go │ │ │ ├── worktree_linux.go │ │ │ ├── worktree_plan9.go │ │ │ ├── worktree_status.go │ │ │ ├── worktree_unix_other.go │ │ │ └── worktree_windows.go │ ├── gocui │ │ ├── .gitignore │ │ ├── AUTHORS │ │ ├── CHANGES_tcell.md │ │ ├── CODE_OF_CONDUCT.md │ │ ├── CONTRIBUTING.md │ │ ├── LICENSE │ │ ├── README.md │ │ ├── attribute.go │ │ ├── doc.go │ │ ├── edit.go │ │ ├── escape.go │ │ ├── gui.go │ │ ├── gui_others.go │ │ ├── gui_windows.go │ │ ├── keybinding.go │ │ ├── loader.go │ │ ├── scrollbar.go │ │ ├── task.go │ │ ├── task_manager.go │ │ ├── tcell_driver.go │ │ ├── text_area.go │ │ └── view.go │ ├── kill │ │ ├── LICENSE │ │ ├── README.md │ │ ├── kill_default_platform.go │ │ └── kill_windows.go │ ├── lazycore │ │ ├── LICENSE │ │ └── pkg │ │ │ ├── boxlayout │ │ │ └── boxlayout.go │ │ │ └── utils │ │ │ └── utils.go │ └── minimal │ │ └── gitignore │ │ ├── LICENSE │ │ ├── gitignore.go │ │ └── testgitignore ├── kardianos │ └── osext │ │ ├── LICENSE │ │ ├── README.md │ │ ├── osext.go │ │ ├── osext_go18.go │ │ ├── osext_plan9.go │ │ ├── osext_procfs.go │ │ ├── osext_sysctl.go │ │ └── osext_windows.go ├── karimkhaleel │ └── jsonschema │ │ ├── .gitignore │ │ ├── .golangci.yml │ │ ├── COPYING │ │ ├── README.md │ │ ├── comment_extractor.go │ │ ├── id.go │ │ ├── reflect.go │ │ └── utils.go ├── kevinburke │ └── ssh_config │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── AUTHORS.txt │ │ ├── CHANGELOG.md │ │ ├── LICENSE │ │ ├── Makefile │ │ ├── README.md │ │ ├── config.go │ │ ├── lexer.go │ │ ├── parser.go │ │ ├── position.go │ │ ├── token.go │ │ └── validators.go ├── kr │ └── logfmt │ │ ├── .gitignore │ │ ├── Readme │ │ ├── decode.go │ │ ├── scanner.go │ │ └── unquote.go ├── kyokomi │ └── emoji │ │ └── v2 │ │ ├── .gitignore │ │ ├── LICENSE │ │ ├── README.md │ │ ├── emoji.go │ │ ├── emoji_codemap.go │ │ └── wercker.yml ├── lucasb-eyer │ └── go-colorful │ │ ├── .gitignore │ │ ├── CHANGELOG.md │ │ ├── LICENSE │ │ ├── README.md │ │ ├── colorgens.go │ │ ├── colors.go │ │ ├── happy_palettegen.go │ │ ├── hexcolor.go │ │ ├── hsluv-snapshot-rev4.json │ │ ├── hsluv.go │ │ ├── soft_palettegen.go │ │ └── warm_palettegen.go ├── mailru │ └── easyjson │ │ ├── LICENSE │ │ ├── buffer │ │ └── pool.go │ │ └── jwriter │ │ └── writer.go ├── mattn │ ├── go-colorable │ │ ├── LICENSE │ │ ├── README.md │ │ ├── colorable_appengine.go │ │ ├── colorable_others.go │ │ ├── colorable_windows.go │ │ ├── go.test.sh │ │ └── noncolorable.go │ ├── go-isatty │ │ ├── LICENSE │ │ ├── README.md │ │ ├── doc.go │ │ ├── go.test.sh │ │ ├── isatty_bsd.go │ │ ├── isatty_others.go │ │ ├── isatty_plan9.go │ │ ├── isatty_solaris.go │ │ ├── isatty_tcgets.go │ │ └── isatty_windows.go │ └── go-runewidth │ │ ├── LICENSE │ │ ├── README.md │ │ ├── runewidth.go │ │ ├── runewidth_appengine.go │ │ ├── runewidth_js.go │ │ ├── runewidth_posix.go │ │ ├── runewidth_table.go │ │ └── runewidth_windows.go ├── mgutz │ └── str │ │ ├── .gitignore │ │ ├── CREDITS │ │ ├── LICENSE │ │ ├── README.md │ │ ├── VERSION │ │ ├── doc.go │ │ ├── funcsAO.go │ │ └── funcsPZ.go ├── mitchellh │ └── go-ps │ │ ├── .gitignore │ │ ├── LICENSE.md │ │ ├── README.md │ │ ├── Vagrantfile │ │ ├── process.go │ │ ├── process_darwin.go │ │ ├── process_freebsd.go │ │ ├── process_linux.go │ │ ├── process_solaris.go │ │ ├── process_unix.go │ │ └── process_windows.go ├── petermattis │ └── goid │ │ ├── .gitignore │ │ ├── LICENSE │ │ ├── README.md │ │ ├── goid.go │ │ ├── goid_gccgo.go │ │ ├── goid_go1.3.c │ │ ├── goid_go1.3.go │ │ ├── goid_go1.4.go │ │ ├── goid_go1.4.s │ │ ├── goid_go1.5.go │ │ ├── goid_go1.5.s │ │ ├── goid_slow.go │ │ ├── runtime_gccgo_go1.8.go │ │ ├── runtime_go1.23.go │ │ ├── runtime_go1.5.go │ │ ├── runtime_go1.6.go │ │ └── runtime_go1.9.go ├── pjbgf │ └── sha1cd │ │ ├── Dockerfile.arm │ │ ├── Dockerfile.arm64 │ │ ├── LICENSE │ │ ├── Makefile │ │ ├── README.md │ │ ├── detection.go │ │ ├── internal │ │ └── const.go │ │ ├── sha1cd.go │ │ ├── sha1cdblock_amd64.go │ │ ├── sha1cdblock_amd64.s │ │ ├── sha1cdblock_generic.go │ │ ├── sha1cdblock_noasm.go │ │ └── ubc │ │ ├── const.go │ │ ├── ubc.go │ │ ├── ubc_amd64.go │ │ ├── ubc_amd64.s │ │ ├── ubc_generic.go │ │ └── ubc_noasm.go ├── pmezard │ └── go-difflib │ │ ├── LICENSE │ │ └── difflib │ │ └── difflib.go ├── rivo │ └── uniseg │ │ ├── LICENSE.txt │ │ ├── README.md │ │ ├── doc.go │ │ ├── eastasianwidth.go │ │ ├── emojipresentation.go │ │ ├── gen_breaktest.go │ │ ├── gen_properties.go │ │ ├── grapheme.go │ │ ├── graphemeproperties.go │ │ ├── graphemerules.go │ │ ├── line.go │ │ ├── lineproperties.go │ │ ├── linerules.go │ │ ├── properties.go │ │ ├── sentence.go │ │ ├── sentenceproperties.go │ │ ├── sentencerules.go │ │ ├── step.go │ │ ├── width.go │ │ ├── word.go │ │ ├── wordproperties.go │ │ └── wordrules.go ├── sahilm │ └── fuzzy │ │ ├── .gitignore │ │ ├── CONTRIBUTING.md │ │ ├── Gopkg.lock │ │ ├── Gopkg.toml │ │ ├── LICENSE │ │ ├── Makefile │ │ ├── README.md │ │ └── fuzzy.go ├── samber │ └── lo │ │ ├── .gitignore │ │ ├── CHANGELOG.md │ │ ├── Dockerfile │ │ ├── LICENSE │ │ ├── Makefile │ │ ├── README.md │ │ ├── channel.go │ │ ├── concurrency.go │ │ ├── condition.go │ │ ├── constraints.go │ │ ├── docker-compose.yml │ │ ├── errors.go │ │ ├── find.go │ │ ├── func.go │ │ ├── intersect.go │ │ ├── map.go │ │ ├── math.go │ │ ├── retry.go │ │ ├── slice.go │ │ ├── string.go │ │ ├── test.go │ │ ├── tuples.go │ │ ├── type_manipulation.go │ │ └── types.go ├── sanity-io │ └── litter │ │ ├── .gitignore │ │ ├── CHANGELOG.md │ │ ├── LICENSE │ │ ├── README.md │ │ ├── dump.go │ │ ├── pointers.go │ │ ├── print.go │ │ └── util.go ├── sasha-s │ └── go-deadlock │ │ ├── LICENSE │ │ ├── Readme.md │ │ ├── deadlock.go │ │ ├── deadlock_map.go │ │ ├── stacktraces.go │ │ ├── test.sh │ │ └── trylock.go ├── sergi │ └── go-diff │ │ ├── AUTHORS │ │ ├── CONTRIBUTORS │ │ ├── LICENSE │ │ └── diffmatchpatch │ │ ├── diff.go │ │ ├── diffmatchpatch.go │ │ ├── match.go │ │ ├── mathutil.go │ │ ├── operation_string.go │ │ ├── patch.go │ │ └── stringutil.go ├── sirupsen │ └── logrus │ │ ├── .gitignore │ │ ├── .golangci.yml │ │ ├── CHANGELOG.md │ │ ├── LICENSE │ │ ├── README.md │ │ ├── alt_exit.go │ │ ├── appveyor.yml │ │ ├── buffer_pool.go │ │ ├── doc.go │ │ ├── entry.go │ │ ├── exported.go │ │ ├── formatter.go │ │ ├── hooks.go │ │ ├── json_formatter.go │ │ ├── logger.go │ │ ├── logrus.go │ │ ├── terminal_check_appengine.go │ │ ├── terminal_check_bsd.go │ │ ├── terminal_check_js.go │ │ ├── terminal_check_no_terminal.go │ │ ├── terminal_check_notappengine.go │ │ ├── terminal_check_solaris.go │ │ ├── terminal_check_unix.go │ │ ├── terminal_check_windows.go │ │ ├── text_formatter.go │ │ └── writer.go ├── skeema │ └── knownhosts │ │ ├── CONTRIBUTING.md │ │ ├── LICENSE │ │ ├── NOTICE │ │ ├── README.md │ │ └── knownhosts.go ├── spf13 │ └── afero │ │ ├── .gitignore │ │ ├── LICENSE.txt │ │ ├── README.md │ │ ├── afero.go │ │ ├── appveyor.yml │ │ ├── basepath.go │ │ ├── cacheOnReadFs.go │ │ ├── const_bsds.go │ │ ├── const_win_unix.go │ │ ├── copyOnWriteFs.go │ │ ├── httpFs.go │ │ ├── internal │ │ └── common │ │ │ └── adapters.go │ │ ├── iofs.go │ │ ├── ioutil.go │ │ ├── lstater.go │ │ ├── match.go │ │ ├── mem │ │ ├── dir.go │ │ ├── dirmap.go │ │ └── file.go │ │ ├── memmap.go │ │ ├── os.go │ │ ├── path.go │ │ ├── readonlyfs.go │ │ ├── regexpfs.go │ │ ├── symlink.go │ │ ├── unionFile.go │ │ └── util.go ├── spkg │ └── bom │ │ ├── .gitignore │ │ ├── LICENSE.md │ │ ├── README.md │ │ ├── bom.go │ │ ├── discard_go14.go │ │ └── discard_go15.go ├── stefanhaller │ └── git-todo-parser │ │ ├── LICENSE │ │ └── todo │ │ ├── parse.go │ │ ├── todo.go │ │ └── write.go ├── stretchr │ └── testify │ │ ├── LICENSE │ │ └── assert │ │ ├── assertion_compare.go │ │ ├── assertion_format.go │ │ ├── assertion_format.go.tmpl │ │ ├── assertion_forward.go │ │ ├── assertion_forward.go.tmpl │ │ ├── assertion_order.go │ │ ├── assertions.go │ │ ├── doc.go │ │ ├── errors.go │ │ ├── forward_assertions.go │ │ ├── http_assertions.go │ │ └── yaml │ │ ├── yaml_custom.go │ │ ├── yaml_default.go │ │ └── yaml_fail.go ├── wk8 │ └── go-ordered-map │ │ └── v2 │ │ ├── .gitignore │ │ ├── .golangci.yml │ │ ├── CHANGELOG.md │ │ ├── LICENSE │ │ ├── Makefile │ │ ├── README.md │ │ ├── json.go │ │ ├── orderedmap.go │ │ └── yaml.go ├── xanzy │ └── ssh-agent │ │ ├── .gitignore │ │ ├── LICENSE │ │ ├── README.md │ │ ├── pageant_windows.go │ │ ├── sshagent.go │ │ └── sshagent_windows.go └── xo │ └── terminfo │ ├── .gitignore │ ├── LICENSE │ ├── README.md │ ├── caps.go │ ├── capvals.go │ ├── color.go │ ├── load.go │ ├── param.go │ ├── stack.go │ ├── terminfo.go │ └── util.go ├── golang.org └── x │ ├── crypto │ ├── LICENSE │ ├── PATENTS │ ├── argon2 │ │ ├── argon2.go │ │ ├── blake2b.go │ │ ├── blamka_amd64.go │ │ ├── blamka_amd64.s │ │ ├── blamka_generic.go │ │ └── blamka_ref.go │ ├── blake2b │ │ ├── blake2b.go │ │ ├── blake2bAVX2_amd64.go │ │ ├── blake2bAVX2_amd64.s │ │ ├── blake2b_amd64.s │ │ ├── blake2b_generic.go │ │ ├── blake2b_ref.go │ │ ├── blake2x.go │ │ └── register.go │ ├── blowfish │ │ ├── block.go │ │ ├── cipher.go │ │ └── const.go │ ├── cast5 │ │ └── cast5.go │ ├── chacha20 │ │ ├── chacha_arm64.go │ │ ├── chacha_arm64.s │ │ ├── chacha_generic.go │ │ ├── chacha_noasm.go │ │ ├── chacha_ppc64x.go │ │ ├── chacha_ppc64x.s │ │ ├── chacha_s390x.go │ │ ├── chacha_s390x.s │ │ └── xor.go │ ├── cryptobyte │ │ ├── asn1.go │ │ ├── asn1 │ │ │ └── asn1.go │ │ ├── builder.go │ │ └── string.go │ ├── curve25519 │ │ └── curve25519.go │ ├── hkdf │ │ └── hkdf.go │ ├── internal │ │ ├── alias │ │ │ ├── alias.go │ │ │ └── alias_purego.go │ │ └── poly1305 │ │ │ ├── mac_noasm.go │ │ │ ├── poly1305.go │ │ │ ├── sum_amd64.s │ │ │ ├── sum_asm.go │ │ │ ├── sum_generic.go │ │ │ ├── sum_loong64.s │ │ │ ├── sum_ppc64x.s │ │ │ ├── sum_s390x.go │ │ │ └── sum_s390x.s │ ├── sha3 │ │ ├── doc.go │ │ ├── hashes.go │ │ ├── hashes_noasm.go │ │ ├── keccakf.go │ │ ├── keccakf_amd64.go │ │ ├── keccakf_amd64.s │ │ ├── sha3.go │ │ ├── sha3_s390x.go │ │ ├── sha3_s390x.s │ │ ├── shake.go │ │ └── shake_noasm.go │ └── ssh │ │ ├── agent │ │ ├── client.go │ │ ├── forward.go │ │ ├── keyring.go │ │ └── server.go │ │ ├── buffer.go │ │ ├── certs.go │ │ ├── channel.go │ │ ├── cipher.go │ │ ├── client.go │ │ ├── client_auth.go │ │ ├── common.go │ │ ├── connection.go │ │ ├── doc.go │ │ ├── handshake.go │ │ ├── internal │ │ └── bcrypt_pbkdf │ │ │ └── bcrypt_pbkdf.go │ │ ├── kex.go │ │ ├── keys.go │ │ ├── knownhosts │ │ └── knownhosts.go │ │ ├── mac.go │ │ ├── messages.go │ │ ├── mux.go │ │ ├── server.go │ │ ├── session.go │ │ ├── ssh_gss.go │ │ ├── streamlocal.go │ │ ├── tcpip.go │ │ └── transport.go │ ├── exp │ ├── LICENSE │ ├── PATENTS │ ├── constraints │ │ └── constraints.go │ └── slices │ │ ├── cmp.go │ │ ├── slices.go │ │ ├── sort.go │ │ ├── zsortanyfunc.go │ │ └── zsortordered.go │ ├── net │ ├── LICENSE │ ├── PATENTS │ ├── context │ │ └── context.go │ ├── internal │ │ └── socks │ │ │ ├── client.go │ │ │ └── socks.go │ └── proxy │ │ ├── dial.go │ │ ├── direct.go │ │ ├── per_host.go │ │ ├── proxy.go │ │ └── socks5.go │ ├── sync │ ├── LICENSE │ ├── PATENTS │ └── errgroup │ │ └── errgroup.go │ ├── sys │ ├── LICENSE │ ├── PATENTS │ ├── cpu │ │ ├── asm_aix_ppc64.s │ │ ├── asm_darwin_x86_gc.s │ │ ├── byteorder.go │ │ ├── cpu.go │ │ ├── cpu_aix.go │ │ ├── cpu_arm.go │ │ ├── cpu_arm64.go │ │ ├── cpu_arm64.s │ │ ├── cpu_darwin_x86.go │ │ ├── cpu_gc_arm64.go │ │ ├── cpu_gc_s390x.go │ │ ├── cpu_gc_x86.go │ │ ├── cpu_gc_x86.s │ │ ├── cpu_gccgo_arm64.go │ │ ├── cpu_gccgo_s390x.go │ │ ├── cpu_gccgo_x86.c │ │ ├── cpu_gccgo_x86.go │ │ ├── cpu_linux.go │ │ ├── cpu_linux_arm.go │ │ ├── cpu_linux_arm64.go │ │ ├── cpu_linux_loong64.go │ │ ├── cpu_linux_mips64x.go │ │ ├── cpu_linux_noinit.go │ │ ├── cpu_linux_ppc64x.go │ │ ├── cpu_linux_riscv64.go │ │ ├── cpu_linux_s390x.go │ │ ├── cpu_loong64.go │ │ ├── cpu_loong64.s │ │ ├── cpu_mips64x.go │ │ ├── cpu_mipsx.go │ │ ├── cpu_netbsd_arm64.go │ │ ├── cpu_openbsd_arm64.go │ │ ├── cpu_openbsd_arm64.s │ │ ├── cpu_other_arm.go │ │ ├── cpu_other_arm64.go │ │ ├── cpu_other_mips64x.go │ │ ├── cpu_other_ppc64x.go │ │ ├── cpu_other_riscv64.go │ │ ├── cpu_other_x86.go │ │ ├── cpu_ppc64x.go │ │ ├── cpu_riscv64.go │ │ ├── cpu_s390x.go │ │ ├── cpu_s390x.s │ │ ├── cpu_wasm.go │ │ ├── cpu_x86.go │ │ ├── cpu_zos.go │ │ ├── cpu_zos_s390x.go │ │ ├── endian_big.go │ │ ├── endian_little.go │ │ ├── hwcap_linux.go │ │ ├── parse.go │ │ ├── proc_cpuinfo_linux.go │ │ ├── runtime_auxv.go │ │ ├── runtime_auxv_go121.go │ │ ├── syscall_aix_gccgo.go │ │ ├── syscall_aix_ppc64_gc.go │ │ └── syscall_darwin_x86_gc.go │ ├── execabs │ │ ├── execabs.go │ │ ├── execabs_go118.go │ │ └── execabs_go119.go │ ├── plan9 │ │ ├── asm.s │ │ ├── asm_plan9_386.s │ │ ├── asm_plan9_amd64.s │ │ ├── asm_plan9_arm.s │ │ ├── const_plan9.go │ │ ├── dir_plan9.go │ │ ├── env_plan9.go │ │ ├── errors_plan9.go │ │ ├── mkall.sh │ │ ├── mkerrors.sh │ │ ├── mksysnum_plan9.sh │ │ ├── pwd_go15_plan9.go │ │ ├── pwd_plan9.go │ │ ├── race.go │ │ ├── race0.go │ │ ├── str.go │ │ ├── syscall.go │ │ ├── syscall_plan9.go │ │ ├── zsyscall_plan9_386.go │ │ ├── zsyscall_plan9_amd64.go │ │ ├── zsyscall_plan9_arm.go │ │ └── zsysnum_plan9.go │ ├── unix │ │ ├── .gitignore │ │ ├── README.md │ │ ├── affinity_linux.go │ │ ├── aliases.go │ │ ├── asm_aix_ppc64.s │ │ ├── asm_bsd_386.s │ │ ├── asm_bsd_amd64.s │ │ ├── asm_bsd_arm.s │ │ ├── asm_bsd_arm64.s │ │ ├── asm_bsd_ppc64.s │ │ ├── asm_bsd_riscv64.s │ │ ├── asm_linux_386.s │ │ ├── asm_linux_amd64.s │ │ ├── asm_linux_arm.s │ │ ├── asm_linux_arm64.s │ │ ├── asm_linux_loong64.s │ │ ├── asm_linux_mips64x.s │ │ ├── asm_linux_mipsx.s │ │ ├── asm_linux_ppc64x.s │ │ ├── asm_linux_riscv64.s │ │ ├── asm_linux_s390x.s │ │ ├── asm_openbsd_mips64.s │ │ ├── asm_solaris_amd64.s │ │ ├── asm_zos_s390x.s │ │ ├── auxv.go │ │ ├── auxv_unsupported.go │ │ ├── bluetooth_linux.go │ │ ├── bpxsvc_zos.go │ │ ├── bpxsvc_zos.s │ │ ├── cap_freebsd.go │ │ ├── constants.go │ │ ├── dev_aix_ppc.go │ │ ├── dev_aix_ppc64.go │ │ ├── dev_darwin.go │ │ ├── dev_dragonfly.go │ │ ├── dev_freebsd.go │ │ ├── dev_linux.go │ │ ├── dev_netbsd.go │ │ ├── dev_openbsd.go │ │ ├── dev_zos.go │ │ ├── dirent.go │ │ ├── endian_big.go │ │ ├── endian_little.go │ │ ├── env_unix.go │ │ ├── fcntl.go │ │ ├── fcntl_darwin.go │ │ ├── fcntl_linux_32bit.go │ │ ├── fdset.go │ │ ├── gccgo.go │ │ ├── gccgo_c.c │ │ ├── gccgo_linux_amd64.go │ │ ├── ifreq_linux.go │ │ ├── ioctl_linux.go │ │ ├── ioctl_signed.go │ │ ├── ioctl_unsigned.go │ │ ├── ioctl_zos.go │ │ ├── mkall.sh │ │ ├── mkerrors.sh │ │ ├── mmap_nomremap.go │ │ ├── mremap.go │ │ ├── pagesize_unix.go │ │ ├── pledge_openbsd.go │ │ ├── ptrace_darwin.go │ │ ├── ptrace_ios.go │ │ ├── race.go │ │ ├── race0.go │ │ ├── readdirent_getdents.go │ │ ├── readdirent_getdirentries.go │ │ ├── sockcmsg_dragonfly.go │ │ ├── sockcmsg_linux.go │ │ ├── sockcmsg_unix.go │ │ ├── sockcmsg_unix_other.go │ │ ├── sockcmsg_zos.go │ │ ├── symaddr_zos_s390x.s │ │ ├── syscall.go │ │ ├── syscall_aix.go │ │ ├── syscall_aix_ppc.go │ │ ├── syscall_aix_ppc64.go │ │ ├── syscall_bsd.go │ │ ├── syscall_darwin.go │ │ ├── syscall_darwin_amd64.go │ │ ├── syscall_darwin_arm64.go │ │ ├── syscall_darwin_libSystem.go │ │ ├── syscall_dragonfly.go │ │ ├── syscall_dragonfly_amd64.go │ │ ├── syscall_freebsd.go │ │ ├── syscall_freebsd_386.go │ │ ├── syscall_freebsd_amd64.go │ │ ├── syscall_freebsd_arm.go │ │ ├── syscall_freebsd_arm64.go │ │ ├── syscall_freebsd_riscv64.go │ │ ├── syscall_hurd.go │ │ ├── syscall_hurd_386.go │ │ ├── syscall_illumos.go │ │ ├── syscall_linux.go │ │ ├── syscall_linux_386.go │ │ ├── syscall_linux_alarm.go │ │ ├── syscall_linux_amd64.go │ │ ├── syscall_linux_amd64_gc.go │ │ ├── syscall_linux_arm.go │ │ ├── syscall_linux_arm64.go │ │ ├── syscall_linux_gc.go │ │ ├── syscall_linux_gc_386.go │ │ ├── syscall_linux_gc_arm.go │ │ ├── syscall_linux_gccgo_386.go │ │ ├── syscall_linux_gccgo_arm.go │ │ ├── syscall_linux_loong64.go │ │ ├── syscall_linux_mips64x.go │ │ ├── syscall_linux_mipsx.go │ │ ├── syscall_linux_ppc.go │ │ ├── syscall_linux_ppc64x.go │ │ ├── syscall_linux_riscv64.go │ │ ├── syscall_linux_s390x.go │ │ ├── syscall_linux_sparc64.go │ │ ├── syscall_netbsd.go │ │ ├── syscall_netbsd_386.go │ │ ├── syscall_netbsd_amd64.go │ │ ├── syscall_netbsd_arm.go │ │ ├── syscall_netbsd_arm64.go │ │ ├── syscall_openbsd.go │ │ ├── syscall_openbsd_386.go │ │ ├── syscall_openbsd_amd64.go │ │ ├── syscall_openbsd_arm.go │ │ ├── syscall_openbsd_arm64.go │ │ ├── syscall_openbsd_libc.go │ │ ├── syscall_openbsd_mips64.go │ │ ├── syscall_openbsd_ppc64.go │ │ ├── syscall_openbsd_riscv64.go │ │ ├── syscall_solaris.go │ │ ├── syscall_solaris_amd64.go │ │ ├── syscall_unix.go │ │ ├── syscall_unix_gc.go │ │ ├── syscall_unix_gc_ppc64x.go │ │ ├── syscall_zos_s390x.go │ │ ├── sysvshm_linux.go │ │ ├── sysvshm_unix.go │ │ ├── sysvshm_unix_other.go │ │ ├── timestruct.go │ │ ├── unveil_openbsd.go │ │ ├── vgetrandom_linux.go │ │ ├── vgetrandom_unsupported.go │ │ ├── xattr_bsd.go │ │ ├── zerrors_aix_ppc.go │ │ ├── zerrors_aix_ppc64.go │ │ ├── zerrors_darwin_amd64.go │ │ ├── zerrors_darwin_arm64.go │ │ ├── zerrors_dragonfly_amd64.go │ │ ├── zerrors_freebsd_386.go │ │ ├── zerrors_freebsd_amd64.go │ │ ├── zerrors_freebsd_arm.go │ │ ├── zerrors_freebsd_arm64.go │ │ ├── zerrors_freebsd_riscv64.go │ │ ├── zerrors_linux.go │ │ ├── zerrors_linux_386.go │ │ ├── zerrors_linux_amd64.go │ │ ├── zerrors_linux_arm.go │ │ ├── zerrors_linux_arm64.go │ │ ├── zerrors_linux_loong64.go │ │ ├── zerrors_linux_mips.go │ │ ├── zerrors_linux_mips64.go │ │ ├── zerrors_linux_mips64le.go │ │ ├── zerrors_linux_mipsle.go │ │ ├── zerrors_linux_ppc.go │ │ ├── zerrors_linux_ppc64.go │ │ ├── zerrors_linux_ppc64le.go │ │ ├── zerrors_linux_riscv64.go │ │ ├── zerrors_linux_s390x.go │ │ ├── zerrors_linux_sparc64.go │ │ ├── zerrors_netbsd_386.go │ │ ├── zerrors_netbsd_amd64.go │ │ ├── zerrors_netbsd_arm.go │ │ ├── zerrors_netbsd_arm64.go │ │ ├── zerrors_openbsd_386.go │ │ ├── zerrors_openbsd_amd64.go │ │ ├── zerrors_openbsd_arm.go │ │ ├── zerrors_openbsd_arm64.go │ │ ├── zerrors_openbsd_mips64.go │ │ ├── zerrors_openbsd_ppc64.go │ │ ├── zerrors_openbsd_riscv64.go │ │ ├── zerrors_solaris_amd64.go │ │ ├── zerrors_zos_s390x.go │ │ ├── zptrace_armnn_linux.go │ │ ├── zptrace_linux_arm64.go │ │ ├── zptrace_mipsnn_linux.go │ │ ├── zptrace_mipsnnle_linux.go │ │ ├── zptrace_x86_linux.go │ │ ├── zsymaddr_zos_s390x.s │ │ ├── zsyscall_aix_ppc.go │ │ ├── zsyscall_aix_ppc64.go │ │ ├── zsyscall_aix_ppc64_gc.go │ │ ├── zsyscall_aix_ppc64_gccgo.go │ │ ├── zsyscall_darwin_amd64.go │ │ ├── zsyscall_darwin_amd64.s │ │ ├── zsyscall_darwin_arm64.go │ │ ├── zsyscall_darwin_arm64.s │ │ ├── zsyscall_dragonfly_amd64.go │ │ ├── zsyscall_freebsd_386.go │ │ ├── zsyscall_freebsd_amd64.go │ │ ├── zsyscall_freebsd_arm.go │ │ ├── zsyscall_freebsd_arm64.go │ │ ├── zsyscall_freebsd_riscv64.go │ │ ├── zsyscall_illumos_amd64.go │ │ ├── zsyscall_linux.go │ │ ├── zsyscall_linux_386.go │ │ ├── zsyscall_linux_amd64.go │ │ ├── zsyscall_linux_arm.go │ │ ├── zsyscall_linux_arm64.go │ │ ├── zsyscall_linux_loong64.go │ │ ├── zsyscall_linux_mips.go │ │ ├── zsyscall_linux_mips64.go │ │ ├── zsyscall_linux_mips64le.go │ │ ├── zsyscall_linux_mipsle.go │ │ ├── zsyscall_linux_ppc.go │ │ ├── zsyscall_linux_ppc64.go │ │ ├── zsyscall_linux_ppc64le.go │ │ ├── zsyscall_linux_riscv64.go │ │ ├── zsyscall_linux_s390x.go │ │ ├── zsyscall_linux_sparc64.go │ │ ├── zsyscall_netbsd_386.go │ │ ├── zsyscall_netbsd_amd64.go │ │ ├── zsyscall_netbsd_arm.go │ │ ├── zsyscall_netbsd_arm64.go │ │ ├── zsyscall_openbsd_386.go │ │ ├── zsyscall_openbsd_386.s │ │ ├── zsyscall_openbsd_amd64.go │ │ ├── zsyscall_openbsd_amd64.s │ │ ├── zsyscall_openbsd_arm.go │ │ ├── zsyscall_openbsd_arm.s │ │ ├── zsyscall_openbsd_arm64.go │ │ ├── zsyscall_openbsd_arm64.s │ │ ├── zsyscall_openbsd_mips64.go │ │ ├── zsyscall_openbsd_mips64.s │ │ ├── zsyscall_openbsd_ppc64.go │ │ ├── zsyscall_openbsd_ppc64.s │ │ ├── zsyscall_openbsd_riscv64.go │ │ ├── zsyscall_openbsd_riscv64.s │ │ ├── zsyscall_solaris_amd64.go │ │ ├── zsyscall_zos_s390x.go │ │ ├── zsysctl_openbsd_386.go │ │ ├── zsysctl_openbsd_amd64.go │ │ ├── zsysctl_openbsd_arm.go │ │ ├── zsysctl_openbsd_arm64.go │ │ ├── zsysctl_openbsd_mips64.go │ │ ├── zsysctl_openbsd_ppc64.go │ │ ├── zsysctl_openbsd_riscv64.go │ │ ├── zsysnum_darwin_amd64.go │ │ ├── zsysnum_darwin_arm64.go │ │ ├── zsysnum_dragonfly_amd64.go │ │ ├── zsysnum_freebsd_386.go │ │ ├── zsysnum_freebsd_amd64.go │ │ ├── zsysnum_freebsd_arm.go │ │ ├── zsysnum_freebsd_arm64.go │ │ ├── zsysnum_freebsd_riscv64.go │ │ ├── zsysnum_linux_386.go │ │ ├── zsysnum_linux_amd64.go │ │ ├── zsysnum_linux_arm.go │ │ ├── zsysnum_linux_arm64.go │ │ ├── zsysnum_linux_loong64.go │ │ ├── zsysnum_linux_mips.go │ │ ├── zsysnum_linux_mips64.go │ │ ├── zsysnum_linux_mips64le.go │ │ ├── zsysnum_linux_mipsle.go │ │ ├── zsysnum_linux_ppc.go │ │ ├── zsysnum_linux_ppc64.go │ │ ├── zsysnum_linux_ppc64le.go │ │ ├── zsysnum_linux_riscv64.go │ │ ├── zsysnum_linux_s390x.go │ │ ├── zsysnum_linux_sparc64.go │ │ ├── zsysnum_netbsd_386.go │ │ ├── zsysnum_netbsd_amd64.go │ │ ├── zsysnum_netbsd_arm.go │ │ ├── zsysnum_netbsd_arm64.go │ │ ├── zsysnum_openbsd_386.go │ │ ├── zsysnum_openbsd_amd64.go │ │ ├── zsysnum_openbsd_arm.go │ │ ├── zsysnum_openbsd_arm64.go │ │ ├── zsysnum_openbsd_mips64.go │ │ ├── zsysnum_openbsd_ppc64.go │ │ ├── zsysnum_openbsd_riscv64.go │ │ ├── zsysnum_zos_s390x.go │ │ ├── ztypes_aix_ppc.go │ │ ├── ztypes_aix_ppc64.go │ │ ├── ztypes_darwin_amd64.go │ │ ├── ztypes_darwin_arm64.go │ │ ├── ztypes_dragonfly_amd64.go │ │ ├── ztypes_freebsd_386.go │ │ ├── ztypes_freebsd_amd64.go │ │ ├── ztypes_freebsd_arm.go │ │ ├── ztypes_freebsd_arm64.go │ │ ├── ztypes_freebsd_riscv64.go │ │ ├── ztypes_linux.go │ │ ├── ztypes_linux_386.go │ │ ├── ztypes_linux_amd64.go │ │ ├── ztypes_linux_arm.go │ │ ├── ztypes_linux_arm64.go │ │ ├── ztypes_linux_loong64.go │ │ ├── ztypes_linux_mips.go │ │ ├── ztypes_linux_mips64.go │ │ ├── ztypes_linux_mips64le.go │ │ ├── ztypes_linux_mipsle.go │ │ ├── ztypes_linux_ppc.go │ │ ├── ztypes_linux_ppc64.go │ │ ├── ztypes_linux_ppc64le.go │ │ ├── ztypes_linux_riscv64.go │ │ ├── ztypes_linux_s390x.go │ │ ├── ztypes_linux_sparc64.go │ │ ├── ztypes_netbsd_386.go │ │ ├── ztypes_netbsd_amd64.go │ │ ├── ztypes_netbsd_arm.go │ │ ├── ztypes_netbsd_arm64.go │ │ ├── ztypes_openbsd_386.go │ │ ├── ztypes_openbsd_amd64.go │ │ ├── ztypes_openbsd_arm.go │ │ ├── ztypes_openbsd_arm64.go │ │ ├── ztypes_openbsd_mips64.go │ │ ├── ztypes_openbsd_ppc64.go │ │ ├── ztypes_openbsd_riscv64.go │ │ ├── ztypes_solaris_amd64.go │ │ └── ztypes_zos_s390x.go │ └── windows │ │ ├── aliases.go │ │ ├── dll_windows.go │ │ ├── env_windows.go │ │ ├── eventlog.go │ │ ├── exec_windows.go │ │ ├── memory_windows.go │ │ ├── mkerrors.bash │ │ ├── mkknownfolderids.bash │ │ ├── mksyscall.go │ │ ├── race.go │ │ ├── race0.go │ │ ├── security_windows.go │ │ ├── service.go │ │ ├── setupapi_windows.go │ │ ├── str.go │ │ ├── syscall.go │ │ ├── syscall_windows.go │ │ ├── types_windows.go │ │ ├── types_windows_386.go │ │ ├── types_windows_amd64.go │ │ ├── types_windows_arm.go │ │ ├── types_windows_arm64.go │ │ ├── zerrors_windows.go │ │ ├── zknownfolderids_windows.go │ │ └── zsyscall_windows.go │ ├── term │ ├── CONTRIBUTING.md │ ├── LICENSE │ ├── PATENTS │ ├── README.md │ ├── codereview.cfg │ ├── term.go │ ├── term_plan9.go │ ├── term_unix.go │ ├── term_unix_bsd.go │ ├── term_unix_other.go │ ├── term_unsupported.go │ ├── term_windows.go │ └── terminal.go │ └── text │ ├── LICENSE │ ├── PATENTS │ ├── encoding │ ├── encoding.go │ └── internal │ │ └── identifier │ │ ├── identifier.go │ │ └── mib.go │ ├── runes │ ├── cond.go │ └── runes.go │ ├── transform │ └── transform.go │ └── unicode │ └── norm │ ├── composition.go │ ├── forminfo.go │ ├── input.go │ ├── iter.go │ ├── normalize.go │ ├── readwriter.go │ ├── tables10.0.0.go │ ├── tables11.0.0.go │ ├── tables12.0.0.go │ ├── tables13.0.0.go │ ├── tables15.0.0.go │ ├── tables9.0.0.go │ ├── transform.go │ └── trie.go ├── gopkg.in ├── ozeidan │ └── fuzzy-patricia.v3 │ │ ├── AUTHORS │ │ ├── LICENSE │ │ └── patricia │ │ ├── children.go │ │ └── patricia.go ├── warnings.v0 │ ├── LICENSE │ ├── README │ └── warnings.go └── yaml.v3 │ ├── LICENSE │ ├── NOTICE │ ├── README.md │ ├── apic.go │ ├── decode.go │ ├── emitterc.go │ ├── encode.go │ ├── parserc.go │ ├── readerc.go │ ├── resolve.go │ ├── scannerc.go │ ├── sorter.go │ ├── writerc.go │ ├── yaml.go │ ├── yamlh.go │ └── yamlprivateh.go └── modules.txt /.codespellrc: -------------------------------------------------------------------------------- 1 | [codespell] 2 | # Ref: https://github.com/codespell-project/codespell#using-a-config-file 3 | skip = .git*,go.sum,*.lock,.codespellrc,vendor,translations,Keybindings_*.md 4 | check-hidden = true 5 | # camel-cased 6 | ignore-regex = (\b[A-Za-z][a-z]*[A-Z]\S+\b|\.edn\b|\S+…|\\nd\b) 7 | ignore-words-list = fomrat,inbetween 8 | -------------------------------------------------------------------------------- /.devcontainer/Dockerfile: -------------------------------------------------------------------------------- 1 | # adapted from https://github.com/devcontainers/images/blob/main/src/go/.devcontainer/Dockerfile 2 | 3 | # [Choice] Go version (use -bullseye variants on local arm64/Apple Silicon): 1, 1.19, 1.18, 1-bullseye, 1.19-bullseye, 1.18-bullseye, 1-buster, 1.19-buster, 1.18-buster 4 | ARG VARIANT=1-bullseye 5 | FROM golang:${VARIANT} 6 | 7 | RUN go install mvdan.cc/gofumpt@latest 8 | RUN curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b $(go env GOPATH)/bin v1.50.0 9 | RUN golangci-lint --version 10 | 11 | # [Optional] Uncomment this section to install additional OS packages. 12 | # RUN apt-get update && export DEBIAN_FRONTEND=noninteractive \ 13 | # && apt-get -y install --no-install-recommends 14 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*.go] 4 | indent_style = tab 5 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | *.go text 2 | *.md text eol=lf 3 | *.json text eol=lf 4 | -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | 3 | github: [jesseduffield] 4 | custom: ['https://donorbox.org/lazygit'] 5 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/discussion.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Discussion 3 | about: Begin a discussion 4 | title: '' 5 | labels: discussion 6 | assignees: '' 7 | 8 | --- 9 | 10 | **Topic** 11 | A clear and concise description of what you want to discuss 12 | 13 | **Your thoughts** 14 | What you have to say about the topic 15 | -------------------------------------------------------------------------------- /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | version: 2 2 | updates: 3 | - package-ecosystem: "gomod" 4 | directory: "/" 5 | schedule: 6 | interval: "weekly" 7 | allowed_updates: 8 | - match: 9 | update_type: "security" 10 | -------------------------------------------------------------------------------- /.github/release.yml: -------------------------------------------------------------------------------- 1 | changelog: 2 | exclude: 3 | labels: 4 | - ignore-for-release 5 | categories: 6 | - title: Features ✨ 7 | labels: 8 | - feature 9 | - title: Enhancements 🔥 10 | labels: 11 | - enhancement 12 | - title: Fixes 🔧 13 | labels: 14 | - bug 15 | - title: Maintenance ⚙️ 16 | labels: 17 | - maintenance 18 | - title: Docs 📖 19 | labels: 20 | - docs 21 | - title: I18n 🌎 22 | labels: 23 | - i18n 24 | - title: Performance Improvements 📊 25 | labels: 26 | - performance 27 | - title: Other Changes 28 | labels: 29 | - "*" 30 | -------------------------------------------------------------------------------- /.github/workflows/codespell.yml: -------------------------------------------------------------------------------- 1 | # Codespell configuration is within .codespellrc 2 | --- 3 | name: Codespell 4 | 5 | on: 6 | push: 7 | branches: [master] 8 | pull_request: 9 | branches: [master] 10 | 11 | permissions: 12 | contents: read 13 | 14 | jobs: 15 | codespell: 16 | name: Check for spelling errors 17 | runs-on: ubuntu-latest 18 | 19 | steps: 20 | - name: Checkout 21 | uses: actions/checkout@v4 22 | - name: Annotate locations with typos 23 | uses: codespell-project/codespell-problem-matcher@v1 24 | - name: Codespell 25 | uses: codespell-project/actions-codespell@v2 26 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Please do not add personal files 2 | 3 | # Logs 4 | *.log 5 | 6 | # Hidden 7 | .* 8 | !.codespellrc 9 | 10 | # Notes 11 | *.notes 12 | 13 | # Tests 14 | test/repos/repo 15 | coverage.txt 16 | 17 | # Binaries 18 | lazygit 19 | lazygit.exe 20 | 21 | # Exceptions 22 | !.gitignore 23 | !.gitattributes 24 | !.goreleaser.yml 25 | !.golangci.yml 26 | !.circleci/ 27 | !.github/ 28 | !.vscode/ 29 | !.devcontainer/ 30 | 31 | # these are for our integration tests 32 | !.git_keep 33 | !.gitmodules_keep 34 | 35 | test/git_server/data 36 | 37 | test/_results/** 38 | 39 | oryxBuildBinary 40 | __debug_bin 41 | 42 | .worktrees 43 | demo/output/* 44 | 45 | coverage.out 46 | -------------------------------------------------------------------------------- /.vscode/debugger_config.yml: -------------------------------------------------------------------------------- 1 | disableStartupPopups: true 2 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "gopls": { 3 | "formatting.gofumpt": true, 4 | }, 5 | } 6 | -------------------------------------------------------------------------------- /CODE-OF-CONDUCT.md: -------------------------------------------------------------------------------- 1 | # Lazygit Code of Conduct 2 | 3 | Be nice, or face the wrath of the maintainer. 4 | -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | # run with: 2 | # docker build -t lazygit . 3 | # docker run -it lazygit:latest /bin/sh 4 | 5 | FROM golang:1.24 as build 6 | WORKDIR /go/src/github.com/jesseduffield/lazygit/ 7 | COPY go.mod go.sum ./ 8 | RUN go mod download 9 | COPY . . 10 | RUN CGO_ENABLED=0 GOOS=linux go build 11 | 12 | FROM alpine:3.19 13 | RUN apk add --no-cache -U git xdg-utils 14 | WORKDIR /go/src/github.com/jesseduffield/lazygit/ 15 | COPY --from=build /go/src/github.com/jesseduffield/lazygit ./ 16 | COPY --from=build /go/src/github.com/jesseduffield/lazygit/lazygit /bin/ 17 | RUN echo "alias gg=lazygit" >> ~/.profile 18 | 19 | ENTRYPOINT [ "lazygit" ] 20 | -------------------------------------------------------------------------------- /cmd/i18n/main.go: -------------------------------------------------------------------------------- 1 | package main 2 | 3 | import ( 4 | "encoding/json" 5 | "log" 6 | "os" 7 | 8 | "github.com/jesseduffield/lazygit/pkg/i18n" 9 | ) 10 | 11 | func saveLanguageFileToJson(tr *i18n.TranslationSet, filepath string) error { 12 | jsonData, err := json.MarshalIndent(tr, "", " ") 13 | if err != nil { 14 | return err 15 | } 16 | 17 | jsonData = append(jsonData, '\n') 18 | return os.WriteFile(filepath, jsonData, 0o644) 19 | } 20 | 21 | func main() { 22 | err := saveLanguageFileToJson(i18n.EnglishTranslationSet(), "en.json") 23 | if err != nil { 24 | log.Fatal(err) 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /demo/README.md: -------------------------------------------------------------------------------- 1 | This directory contains stuff for recording lazygit demos. 2 | 3 | -------------------------------------------------------------------------------- /docs/README.md: -------------------------------------------------------------------------------- 1 | # Documentation Overview 2 | 3 | * [Configuration](./Config.md). 4 | * [Custom Commands](./Custom_Command_Keybindings.md) 5 | * [Custom Pagers](./Custom_Pagers.md) 6 | * [Dev docs](./dev) 7 | * [Keybindings](./keybindings) 8 | * [Undo/Redo](./Undoing.md) 9 | * [Range Select](./Range_Select.md) 10 | * [Searching/Filtering](./Searching.md) 11 | * [Stacked Branches](./Stacked_Branches.md) 12 | -------------------------------------------------------------------------------- /docs/dev/Integration_Tests.md: -------------------------------------------------------------------------------- 1 | see new docs [here](../../pkg/integration/README.md) 2 | -------------------------------------------------------------------------------- /docs/dev/README.md: -------------------------------------------------------------------------------- 1 | # Dev Documentation Overview 2 | 3 | * [Codebase Guide](./Codebase_Guide.md) 4 | * [Busy/Idle Tracking](./Busy.md) 5 | * [Integration Tests](../../pkg/integration/README.md) 6 | * [Demo Recordings](./Demo_Recordings.md) 7 | * [Find base commit for fixup design](Find_Base_Commit_For_Fixup_Design.md) 8 | * [Profiling](Profiling.md) 9 | -------------------------------------------------------------------------------- /main.go: -------------------------------------------------------------------------------- 1 | package main 2 | 3 | import ( 4 | "github.com/jesseduffield/lazygit/pkg/app" 5 | ) 6 | 7 | // These values may be set by the build script via the LDFLAGS argument 8 | var ( 9 | commit string 10 | date string 11 | version string 12 | buildSource = "unknown" 13 | ) 14 | 15 | func main() { 16 | ldFlagsBuildInfo := &app.BuildInfo{ 17 | Commit: commit, 18 | Date: date, 19 | Version: version, 20 | BuildSource: buildSource, 21 | } 22 | 23 | app.Start(ldFlagsBuildInfo, nil) 24 | } 25 | -------------------------------------------------------------------------------- /pkg/cheatsheet/generator.go: -------------------------------------------------------------------------------- 1 | //go:build ignore 2 | 3 | package main 4 | 5 | import ( 6 | "fmt" 7 | 8 | "github.com/jesseduffield/lazygit/pkg/cheatsheet" 9 | ) 10 | 11 | func main() { 12 | fmt.Printf("Generating cheatsheets in %s...\n", cheatsheet.GetKeybindingsDir()) 13 | cheatsheet.Generate() 14 | } 15 | -------------------------------------------------------------------------------- /pkg/commands/git_config/fake_git_config.go: -------------------------------------------------------------------------------- 1 | package git_config 2 | 3 | type FakeGitConfig struct { 4 | mockResponses map[string]string 5 | } 6 | 7 | func NewFakeGitConfig(mockResponses map[string]string) *FakeGitConfig { 8 | return &FakeGitConfig{ 9 | mockResponses: mockResponses, 10 | } 11 | } 12 | 13 | func (self *FakeGitConfig) Get(key string) string { 14 | if self.mockResponses == nil { 15 | return "" 16 | } 17 | return self.mockResponses[key] 18 | } 19 | 20 | func (self *FakeGitConfig) GetGeneral(args string) string { 21 | if self.mockResponses == nil { 22 | return "" 23 | } 24 | return self.mockResponses[args] 25 | } 26 | 27 | func (self *FakeGitConfig) GetBool(key string) bool { 28 | return isTruthy(self.Get(key)) 29 | } 30 | 31 | func (self *FakeGitConfig) DropCache() { 32 | } 33 | -------------------------------------------------------------------------------- /pkg/commands/models/author.go: -------------------------------------------------------------------------------- 1 | package models 2 | 3 | import "fmt" 4 | 5 | // A commit author 6 | type Author struct { 7 | Name string 8 | Email string 9 | } 10 | 11 | func (self *Author) Combined() string { 12 | return fmt.Sprintf("%s <%s>", self.Name, self.Email) 13 | } 14 | -------------------------------------------------------------------------------- /pkg/commands/models/commit_file.go: -------------------------------------------------------------------------------- 1 | package models 2 | 3 | // CommitFile : A git commit file 4 | type CommitFile struct { 5 | Path string 6 | 7 | ChangeStatus string // e.g. 'A' for added or 'M' for modified. This is based on the result from git diff --name-status 8 | } 9 | 10 | func (f *CommitFile) ID() string { 11 | return f.Path 12 | } 13 | 14 | func (f *CommitFile) Description() string { 15 | return f.Path 16 | } 17 | 18 | func (f *CommitFile) Added() bool { 19 | return f.ChangeStatus == "A" 20 | } 21 | 22 | func (f *CommitFile) Deleted() bool { 23 | return f.ChangeStatus == "D" 24 | } 25 | 26 | func (f *CommitFile) GetPath() string { 27 | return f.Path 28 | } 29 | -------------------------------------------------------------------------------- /pkg/commands/models/remote.go: -------------------------------------------------------------------------------- 1 | package models 2 | 3 | // Remote : A git remote 4 | type Remote struct { 5 | Name string 6 | Urls []string 7 | Branches []*RemoteBranch 8 | } 9 | 10 | func (r *Remote) RefName() string { 11 | return r.Name 12 | } 13 | 14 | func (r *Remote) ID() string { 15 | return r.RefName() 16 | } 17 | 18 | func (r *Remote) URN() string { 19 | return "remote-" + r.ID() 20 | } 21 | 22 | func (r *Remote) Description() string { 23 | return r.RefName() 24 | } 25 | -------------------------------------------------------------------------------- /pkg/commands/models/remote_branch.go: -------------------------------------------------------------------------------- 1 | package models 2 | 3 | // Remote Branch : A git remote branch 4 | type RemoteBranch struct { 5 | Name string 6 | RemoteName string 7 | } 8 | 9 | func (r *RemoteBranch) FullName() string { 10 | return r.RemoteName + "/" + r.Name 11 | } 12 | 13 | func (r *RemoteBranch) FullRefName() string { 14 | return "refs/remotes/" + r.FullName() 15 | } 16 | 17 | func (r *RemoteBranch) RefName() string { 18 | return r.FullName() 19 | } 20 | 21 | func (r *RemoteBranch) ShortRefName() string { 22 | return r.RefName() 23 | } 24 | 25 | func (r *RemoteBranch) ParentRefName() string { 26 | return r.RefName() + "^" 27 | } 28 | 29 | func (r *RemoteBranch) ID() string { 30 | return r.RefName() 31 | } 32 | 33 | func (r *RemoteBranch) Description() string { 34 | return r.RefName() 35 | } 36 | -------------------------------------------------------------------------------- /pkg/commands/models/stash_entry.go: -------------------------------------------------------------------------------- 1 | package models 2 | 3 | import "fmt" 4 | 5 | // StashEntry : A git stash entry 6 | type StashEntry struct { 7 | Index int 8 | Recency string 9 | Name string 10 | } 11 | 12 | func (s *StashEntry) FullRefName() string { 13 | return s.RefName() 14 | } 15 | 16 | func (s *StashEntry) RefName() string { 17 | return fmt.Sprintf("stash@{%d}", s.Index) 18 | } 19 | 20 | func (s *StashEntry) ShortRefName() string { 21 | return s.RefName() 22 | } 23 | 24 | func (s *StashEntry) ParentRefName() string { 25 | return s.RefName() + "^" 26 | } 27 | 28 | func (s *StashEntry) ID() string { 29 | return s.RefName() 30 | } 31 | 32 | func (s *StashEntry) Description() string { 33 | return s.RefName() + ": " + s.Name 34 | } 35 | -------------------------------------------------------------------------------- /pkg/commands/models/tag.go: -------------------------------------------------------------------------------- 1 | package models 2 | 3 | // Tag : A git tag 4 | type Tag struct { 5 | Name string 6 | // this is either the first line of the message of an annotated tag, or the 7 | // first line of a commit message for a lightweight tag 8 | Message string 9 | } 10 | 11 | func (t *Tag) FullRefName() string { 12 | return "refs/tags/" + t.RefName() 13 | } 14 | 15 | func (t *Tag) RefName() string { 16 | return t.Name 17 | } 18 | 19 | func (t *Tag) ShortRefName() string { 20 | return t.RefName() 21 | } 22 | 23 | func (t *Tag) ParentRefName() string { 24 | return t.RefName() + "^" 25 | } 26 | 27 | func (t *Tag) ID() string { 28 | return t.RefName() 29 | } 30 | 31 | func (t *Tag) URN() string { 32 | return "tag-" + t.ID() 33 | } 34 | 35 | func (t *Tag) Description() string { 36 | return t.Message 37 | } 38 | -------------------------------------------------------------------------------- /pkg/commands/oscommands/cmd_obj_runner_default.go: -------------------------------------------------------------------------------- 1 | //go:build !windows 2 | // +build !windows 3 | 4 | package oscommands 5 | 6 | import ( 7 | "os/exec" 8 | 9 | "github.com/creack/pty" 10 | ) 11 | 12 | // we define this separately for windows and non-windows given that windows does 13 | // not have great PTY support and we need a PTY to handle a credential request 14 | func (self *cmdObjRunner) getCmdHandlerPty(cmd *exec.Cmd) (*cmdHandler, error) { 15 | ptmx, err := pty.Start(cmd) 16 | if err != nil { 17 | return nil, err 18 | } 19 | 20 | return &cmdHandler{ 21 | stdoutPipe: ptmx, 22 | stdinPipe: ptmx, 23 | close: ptmx.Close, 24 | }, nil 25 | } 26 | -------------------------------------------------------------------------------- /pkg/commands/oscommands/cmd_obj_runner_win.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | // +build windows 3 | 4 | package oscommands 5 | 6 | import ( 7 | "os/exec" 8 | ) 9 | 10 | func (self *cmdObjRunner) getCmdHandlerPty(cmd *exec.Cmd) (*cmdHandler, error) { 11 | // We don't have PTY support on Windows yet, so we just return a non-PTY handler. 12 | return self.getCmdHandlerNonPty(cmd) 13 | } 14 | -------------------------------------------------------------------------------- /pkg/commands/oscommands/os_windows.go: -------------------------------------------------------------------------------- 1 | package oscommands 2 | 3 | func GetPlatform() *Platform { 4 | return &Platform{ 5 | OS: "windows", 6 | Shell: "cmd", 7 | ShellArg: "/c", 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /pkg/commands/patch/patch_line.go: -------------------------------------------------------------------------------- 1 | package patch 2 | 3 | import "github.com/samber/lo" 4 | 5 | type PatchLineKind int 6 | 7 | const ( 8 | PATCH_HEADER PatchLineKind = iota 9 | HUNK_HEADER 10 | ADDITION 11 | DELETION 12 | CONTEXT 13 | NEWLINE_MESSAGE 14 | ) 15 | 16 | type PatchLine struct { 17 | Kind PatchLineKind 18 | Content string // something like '+ hello' (note the first character is not removed) 19 | } 20 | 21 | func (self *PatchLine) isChange() bool { 22 | return self.Kind == ADDITION || self.Kind == DELETION 23 | } 24 | 25 | // Returns the number of lines in the given slice that have one of the given kinds 26 | func nLinesWithKind(lines []*PatchLine, kinds []PatchLineKind) int { 27 | return lo.CountBy(lines, func(line *PatchLine) bool { 28 | return lo.Contains(kinds, line.Kind) 29 | }) 30 | } 31 | -------------------------------------------------------------------------------- /pkg/commands/testdata/a_dir/file: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jesseduffield/lazygit/aa331e52b8a0e5da03c59ee6b9bd1d2a9073618c/pkg/commands/testdata/a_dir/file -------------------------------------------------------------------------------- /pkg/commands/testdata/a_file: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jesseduffield/lazygit/aa331e52b8a0e5da03c59ee6b9bd1d2a9073618c/pkg/commands/testdata/a_file -------------------------------------------------------------------------------- /pkg/config/config_default_platform.go: -------------------------------------------------------------------------------- 1 | //go:build !windows && !linux 2 | // +build !windows,!linux 3 | 4 | package config 5 | 6 | // GetPlatformDefaultConfig gets the defaults for the platform 7 | func GetPlatformDefaultConfig() OSConfig { 8 | return OSConfig{ 9 | Open: "open -- {{filename}}", 10 | OpenLink: "open {{link}}", 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /pkg/config/config_windows.go: -------------------------------------------------------------------------------- 1 | package config 2 | 3 | // GetPlatformDefaultConfig gets the defaults for the platform 4 | func GetPlatformDefaultConfig() OSConfig { 5 | return OSConfig{ 6 | Open: `start "" {{filename}}`, 7 | OpenLink: `start "" {{link}}`, 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /pkg/config/dummies.go: -------------------------------------------------------------------------------- 1 | package config 2 | 3 | import ( 4 | "gopkg.in/yaml.v3" 5 | ) 6 | 7 | // NewDummyAppConfig creates a new dummy AppConfig for testing 8 | func NewDummyAppConfig() *AppConfig { 9 | appConfig := &AppConfig{ 10 | name: "lazygit", 11 | version: "unversioned", 12 | debug: false, 13 | userConfig: GetDefaultConfig(), 14 | appState: &AppState{}, 15 | } 16 | _ = yaml.Unmarshal([]byte{}, appConfig.appState) 17 | return appConfig 18 | } 19 | -------------------------------------------------------------------------------- /pkg/env/env.go: -------------------------------------------------------------------------------- 1 | package env 2 | 3 | import ( 4 | "os" 5 | ) 6 | 7 | // This package encapsulates accessing/mutating the ENV of the program. 8 | 9 | func GetGitDirEnv() string { 10 | return os.Getenv("GIT_DIR") 11 | } 12 | 13 | func SetGitDirEnv(value string) { 14 | os.Setenv("GIT_DIR", value) 15 | } 16 | 17 | func GetWorkTreeEnv() string { 18 | return os.Getenv("GIT_WORK_TREE") 19 | } 20 | 21 | func SetWorkTreeEnv(value string) { 22 | os.Setenv("GIT_WORK_TREE", value) 23 | } 24 | 25 | func UnsetGitLocationEnvVars() { 26 | _ = os.Unsetenv("GIT_DIR") 27 | _ = os.Unsetenv("GIT_WORK_TREE") 28 | } 29 | -------------------------------------------------------------------------------- /pkg/gui/context/context_common.go: -------------------------------------------------------------------------------- 1 | package context 2 | 3 | import ( 4 | "github.com/jesseduffield/lazygit/pkg/common" 5 | "github.com/jesseduffield/lazygit/pkg/gui/types" 6 | ) 7 | 8 | type ContextCommon struct { 9 | *common.Common 10 | types.IGuiCommon 11 | } 12 | -------------------------------------------------------------------------------- /pkg/gui/context/dynamic_title_builder.go: -------------------------------------------------------------------------------- 1 | package context 2 | 3 | import "fmt" 4 | 5 | type DynamicTitleBuilder struct { 6 | formatStr string // e.g. 'remote branches for %s' 7 | 8 | titleRef string // e.g. 'origin' 9 | } 10 | 11 | func NewDynamicTitleBuilder(formatStr string) *DynamicTitleBuilder { 12 | return &DynamicTitleBuilder{ 13 | formatStr: formatStr, 14 | } 15 | } 16 | 17 | func (self *DynamicTitleBuilder) SetTitleRef(titleRef string) { 18 | self.titleRef = titleRef 19 | } 20 | 21 | func (self *DynamicTitleBuilder) Title() string { 22 | return fmt.Sprintf(self.formatStr, self.titleRef) 23 | } 24 | -------------------------------------------------------------------------------- /pkg/gui/context/history_trait.go: -------------------------------------------------------------------------------- 1 | package context 2 | 3 | import ( 4 | "github.com/jesseduffield/lazygit/pkg/utils" 5 | ) 6 | 7 | // Maintains a list of strings that have previously been searched/filtered for 8 | type SearchHistory struct { 9 | history *utils.HistoryBuffer[string] 10 | } 11 | 12 | func NewSearchHistory() *SearchHistory { 13 | return &SearchHistory{ 14 | history: utils.NewHistoryBuffer[string](1000), 15 | } 16 | } 17 | 18 | func (self *SearchHistory) GetSearchHistory() *utils.HistoryBuffer[string] { 19 | return self.history 20 | } 21 | -------------------------------------------------------------------------------- /pkg/gui/context/parent_context_mgr.go: -------------------------------------------------------------------------------- 1 | package context 2 | 3 | import "github.com/jesseduffield/lazygit/pkg/gui/types" 4 | 5 | type ParentContextMgr struct { 6 | ParentContext types.Context 7 | } 8 | 9 | var _ types.ParentContexter = (*ParentContextMgr)(nil) 10 | 11 | func (self *ParentContextMgr) SetParentContext(context types.Context) { 12 | self.ParentContext = context 13 | } 14 | 15 | func (self *ParentContextMgr) GetParentContext() types.Context { 16 | return self.ParentContext 17 | } 18 | -------------------------------------------------------------------------------- /pkg/gui/controllers/attach.go: -------------------------------------------------------------------------------- 1 | package controllers 2 | 3 | import "github.com/jesseduffield/lazygit/pkg/gui/types" 4 | 5 | func AttachControllers(context types.Context, controllers ...types.IController) { 6 | for _, controller := range controllers { 7 | context.AddKeybindingsFn(controller.GetKeybindings) 8 | context.AddMouseKeybindingsFn(controller.GetMouseKeybindings) 9 | context.AddOnClickFn(controller.GetOnClick()) 10 | context.AddOnClickFocusedMainViewFn(controller.GetOnClickFocusedMainView()) 11 | context.AddOnRenderToMainFn(controller.GetOnRenderToMain()) 12 | context.AddOnFocusFn(controller.GetOnFocus()) 13 | context.AddOnFocusLostFn(controller.GetOnFocusLost()) 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /pkg/gui/controllers/common.go: -------------------------------------------------------------------------------- 1 | package controllers 2 | 3 | import ( 4 | "github.com/jesseduffield/lazygit/pkg/gui/controllers/helpers" 5 | ) 6 | 7 | type ControllerCommon struct { 8 | *helpers.HelperCommon 9 | IGetHelpers 10 | } 11 | 12 | type IGetHelpers interface { 13 | Helpers() *helpers.Helpers 14 | } 15 | 16 | func NewControllerCommon( 17 | c *helpers.HelperCommon, 18 | IGetHelpers IGetHelpers, 19 | ) *ControllerCommon { 20 | return &ControllerCommon{ 21 | HelperCommon: c, 22 | IGetHelpers: IGetHelpers, 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /pkg/gui/controllers/helpers/amend_helper.go: -------------------------------------------------------------------------------- 1 | package helpers 2 | 3 | import "github.com/jesseduffield/lazygit/pkg/commands/git_commands" 4 | 5 | type AmendHelper struct { 6 | c *HelperCommon 7 | gpg *GpgHelper 8 | } 9 | 10 | func NewAmendHelper( 11 | c *HelperCommon, 12 | gpg *GpgHelper, 13 | ) *AmendHelper { 14 | return &AmendHelper{ 15 | c: c, 16 | gpg: gpg, 17 | } 18 | } 19 | 20 | func (self *AmendHelper) AmendHead() error { 21 | cmdObj := self.c.Git().Commit.AmendHeadCmdObj() 22 | self.c.LogAction(self.c.Tr.Actions.AmendCommit) 23 | return self.gpg.WithGpgHandling(cmdObj, git_commands.CommitGpgSign, self.c.Tr.AmendingStatus, nil, nil) 24 | } 25 | -------------------------------------------------------------------------------- /pkg/gui/controllers/helpers/view_helper.go: -------------------------------------------------------------------------------- 1 | package helpers 2 | 3 | import ( 4 | "github.com/jesseduffield/lazygit/pkg/gui/context" 5 | "github.com/jesseduffield/lazygit/pkg/gui/types" 6 | ) 7 | 8 | type ViewHelper struct { 9 | c *HelperCommon 10 | } 11 | 12 | func NewViewHelper(c *HelperCommon, contexts *context.ContextTree) *ViewHelper { 13 | return &ViewHelper{ 14 | c: c, 15 | } 16 | } 17 | 18 | func (self *ViewHelper) ContextForView(viewName string) (types.Context, bool) { 19 | view, err := self.c.GocuiGui().View(viewName) 20 | if err != nil { 21 | return nil, false 22 | } 23 | 24 | for _, context := range self.c.Contexts().Flatten() { 25 | if context.GetViewName() == view.Name() { 26 | return context, true 27 | } 28 | } 29 | 30 | return nil, false 31 | } 32 | -------------------------------------------------------------------------------- /pkg/gui/filetree/commit_file_node.go: -------------------------------------------------------------------------------- 1 | package filetree 2 | 3 | import "github.com/jesseduffield/lazygit/pkg/commands/models" 4 | 5 | // CommitFileNode wraps a node and provides some commit-file-specific methods for it. 6 | type CommitFileNode struct { 7 | *Node[models.CommitFile] 8 | } 9 | 10 | func NewCommitFileNode(node *Node[models.CommitFile]) *CommitFileNode { 11 | if node == nil { 12 | return nil 13 | } 14 | 15 | return &CommitFileNode{Node: node} 16 | } 17 | 18 | // returns the underlying node, without any commit-file-specific methods attached 19 | func (self *CommitFileNode) Raw() *Node[models.CommitFile] { 20 | if self == nil { 21 | return nil 22 | } 23 | 24 | return self.Node 25 | } 26 | -------------------------------------------------------------------------------- /pkg/gui/modes/diffing/diffing.go: -------------------------------------------------------------------------------- 1 | package diffing 2 | 3 | // if ref is blank we're not diffing anything 4 | type Diffing struct { 5 | Ref string 6 | Reverse bool 7 | } 8 | 9 | func New() Diffing { 10 | return Diffing{} 11 | } 12 | 13 | func (self *Diffing) Active() bool { 14 | return self.Ref != "" 15 | } 16 | 17 | // GetFromAndReverseArgsForDiff tells us the from and reverse args to be used in a diff command. 18 | // If we're not in diff mode we'll end up with the equivalent of a `git show` i.e `git diff blah^..blah`. 19 | func (self *Diffing) GetFromAndReverseArgsForDiff(from string) (string, bool) { 20 | reverse := false 21 | 22 | if self.Active() { 23 | reverse = self.Reverse 24 | from = self.Ref 25 | } 26 | 27 | return from, reverse 28 | } 29 | -------------------------------------------------------------------------------- /pkg/gui/modes/marked_base_commit/marked_base_commit.go: -------------------------------------------------------------------------------- 1 | package marked_base_commit 2 | 3 | type MarkedBaseCommit struct { 4 | hash string // the hash of the commit used as a rebase base commit; empty string when unset 5 | } 6 | 7 | func New() MarkedBaseCommit { 8 | return MarkedBaseCommit{} 9 | } 10 | 11 | func (m *MarkedBaseCommit) Active() bool { 12 | return m.hash != "" 13 | } 14 | 15 | func (m *MarkedBaseCommit) Reset() { 16 | m.hash = "" 17 | } 18 | 19 | func (m *MarkedBaseCommit) SetHash(hash string) { 20 | m.hash = hash 21 | } 22 | 23 | func (m *MarkedBaseCommit) GetHash() string { 24 | return m.hash 25 | } 26 | -------------------------------------------------------------------------------- /pkg/gui/presentation/icons/file_icons_test.go: -------------------------------------------------------------------------------- 1 | package icons 2 | 3 | import ( 4 | "testing" 5 | ) 6 | 7 | func TestFileIcons(t *testing.T) { 8 | t.Run("TestFileIcons", func(t *testing.T) { 9 | for name, icon := range nameIconMap { 10 | if len([]rune(icon.Icon)) != 1 { 11 | t.Errorf("nameIconMap[\"%s\"] is not a single rune", name) 12 | } 13 | } 14 | 15 | for ext, icon := range extIconMap { 16 | if len([]rune(icon.Icon)) != 1 { 17 | t.Errorf("extIconMap[\"%s\"] is not a single rune", ext) 18 | } 19 | } 20 | }) 21 | } 22 | -------------------------------------------------------------------------------- /pkg/gui/presentation/icons/icons.go: -------------------------------------------------------------------------------- 1 | package icons 2 | 3 | import ( 4 | "log" 5 | 6 | "github.com/samber/lo" 7 | ) 8 | 9 | type IconProperties struct { 10 | Icon string 11 | Color string 12 | } 13 | 14 | var isIconEnabled = false 15 | 16 | func IsIconEnabled() bool { 17 | return isIconEnabled 18 | } 19 | 20 | func SetNerdFontsVersion(version string) { 21 | if version == "" { 22 | isIconEnabled = false 23 | } else { 24 | if !lo.Contains([]string{"2", "3"}, version) { 25 | log.Fatalf("Unsupported nerdFontVersion %s", version) 26 | } 27 | 28 | if version == "2" { 29 | patchGitIconsForNerdFontsV2() 30 | patchFileIconsForNerdFontsV2() 31 | } 32 | 33 | isIconEnabled = true 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /pkg/gui/presentation/item_operations.go: -------------------------------------------------------------------------------- 1 | package presentation 2 | 3 | import ( 4 | "github.com/jesseduffield/lazygit/pkg/gui/types" 5 | "github.com/jesseduffield/lazygit/pkg/i18n" 6 | ) 7 | 8 | func ItemOperationToString(itemOperation types.ItemOperation, tr *i18n.TranslationSet) string { 9 | switch itemOperation { 10 | case types.ItemOperationNone: 11 | return "" 12 | case types.ItemOperationPushing: 13 | return tr.PushingStatus 14 | case types.ItemOperationPulling: 15 | return tr.PullingStatus 16 | case types.ItemOperationFastForwarding: 17 | return tr.FastForwarding 18 | case types.ItemOperationDeleting: 19 | return tr.DeletingStatus 20 | case types.ItemOperationFetching: 21 | return tr.FetchingStatus 22 | case types.ItemOperationCheckingOut: 23 | return tr.CheckingOutStatus 24 | } 25 | 26 | return "" 27 | } 28 | -------------------------------------------------------------------------------- /pkg/gui/presentation/loader.go: -------------------------------------------------------------------------------- 1 | package presentation 2 | 3 | import ( 4 | "time" 5 | 6 | "github.com/jesseduffield/lazygit/pkg/config" 7 | ) 8 | 9 | // Loader dumps a string to be displayed as a loader 10 | func Loader(now time.Time, config config.SpinnerConfig) string { 11 | milliseconds := now.UnixMilli() 12 | index := milliseconds / int64(config.Rate) % int64(len(config.Frames)) 13 | return config.Frames[index] 14 | } 15 | -------------------------------------------------------------------------------- /pkg/gui/presentation/suggestions.go: -------------------------------------------------------------------------------- 1 | package presentation 2 | 3 | import ( 4 | "github.com/jesseduffield/lazygit/pkg/gui/types" 5 | "github.com/samber/lo" 6 | ) 7 | 8 | func GetSuggestionListDisplayStrings(suggestions []*types.Suggestion) [][]string { 9 | return lo.Map(suggestions, func(suggestion *types.Suggestion, _ int) []string { 10 | return getSuggestionDisplayStrings(suggestion) 11 | }) 12 | } 13 | 14 | func getSuggestionDisplayStrings(suggestion *types.Suggestion) []string { 15 | return []string{suggestion.Label} 16 | } 17 | -------------------------------------------------------------------------------- /pkg/gui/pty_windows.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | // +build windows 3 | 4 | package gui 5 | 6 | import ( 7 | "os/exec" 8 | 9 | "github.com/jesseduffield/gocui" 10 | ) 11 | 12 | func (gui *Gui) onResize() error { 13 | return nil 14 | } 15 | 16 | func (gui *Gui) newPtyTask(view *gocui.View, cmd *exec.Cmd, prefix string) error { 17 | return gui.newCmdTask(view, cmd, prefix) 18 | } 19 | -------------------------------------------------------------------------------- /pkg/gui/style/color.go: -------------------------------------------------------------------------------- 1 | package style 2 | 3 | import "github.com/gookit/color" 4 | 5 | type Color struct { 6 | rgb *color.RGBColor 7 | basic *color.Color 8 | } 9 | 10 | func NewRGBColor(cl color.RGBColor) Color { 11 | c := Color{} 12 | c.rgb = &cl 13 | return c 14 | } 15 | 16 | func NewBasicColor(cl color.Color) Color { 17 | c := Color{} 18 | c.basic = &cl 19 | return c 20 | } 21 | 22 | func (c Color) IsRGB() bool { 23 | return c.rgb != nil 24 | } 25 | 26 | func (c Color) ToRGB(isBg bool) Color { 27 | if c.IsRGB() { 28 | return c 29 | } 30 | 31 | if isBg { 32 | // We need to convert bg color to fg color 33 | // This is a gookit/color bug, 34 | // https://github.com/gookit/color/issues/39 35 | return NewRGBColor((*c.basic - 10).RGB()) 36 | } 37 | 38 | return NewRGBColor(c.basic.RGB()) 39 | } 40 | -------------------------------------------------------------------------------- /pkg/gui/style/hyperlink.go: -------------------------------------------------------------------------------- 1 | package style 2 | 3 | import "fmt" 4 | 5 | // Render the given text as an OSC 8 hyperlink 6 | func PrintHyperlink(text string, link string) string { 7 | return fmt.Sprintf("\033]8;;%s\033\\%s\033]8;;\033\\", link, text) 8 | } 9 | 10 | // Render a link where the text is the same as a link 11 | func PrintSimpleHyperlink(link string) string { 12 | return fmt.Sprintf("\033]8;;%s\033\\%s\033]8;;\033\\", link, link) 13 | } 14 | -------------------------------------------------------------------------------- /pkg/gui/types/common_commands.go: -------------------------------------------------------------------------------- 1 | package types 2 | 3 | type CheckoutRefOptions struct { 4 | WaitingStatus string 5 | EnvVars []string 6 | OnRefNotFound func(ref string) error 7 | } 8 | -------------------------------------------------------------------------------- /pkg/gui/types/modes.go: -------------------------------------------------------------------------------- 1 | package types 2 | 3 | import ( 4 | "github.com/jesseduffield/lazygit/pkg/gui/modes/cherrypicking" 5 | "github.com/jesseduffield/lazygit/pkg/gui/modes/diffing" 6 | "github.com/jesseduffield/lazygit/pkg/gui/modes/filtering" 7 | "github.com/jesseduffield/lazygit/pkg/gui/modes/marked_base_commit" 8 | ) 9 | 10 | type Modes struct { 11 | Filtering filtering.Filtering 12 | CherryPicking *cherrypicking.CherryPicking 13 | Diffing diffing.Diffing 14 | MarkedBaseCommit marked_base_commit.MarkedBaseCommit 15 | } 16 | -------------------------------------------------------------------------------- /pkg/gui/types/ref.go: -------------------------------------------------------------------------------- 1 | package types 2 | 3 | type Ref interface { 4 | FullRefName() string 5 | RefName() string 6 | ShortRefName() string 7 | ParentRefName() string 8 | Description() string 9 | } 10 | 11 | type RefRange struct { 12 | From Ref 13 | To Ref 14 | } 15 | -------------------------------------------------------------------------------- /pkg/gui/types/suggestion.go: -------------------------------------------------------------------------------- 1 | package types 2 | 3 | type Suggestion struct { 4 | // value is the thing that we're matching on and the thing that will be submitted if you select the suggestion 5 | Value string 6 | // label is what is actually displayed so it can e.g. contain color 7 | Label string 8 | } 9 | 10 | // Conforming to the HasID interface, which is needed for list contexts 11 | func (self *Suggestion) ID() string { 12 | return self.Value 13 | } 14 | -------------------------------------------------------------------------------- /pkg/integration/tests/branch/open_with_cli_arg.go: -------------------------------------------------------------------------------- 1 | package branch 2 | 3 | import ( 4 | "github.com/jesseduffield/lazygit/pkg/config" 5 | . "github.com/jesseduffield/lazygit/pkg/integration/components" 6 | ) 7 | 8 | var OpenWithCliArg = NewIntegrationTest(NewIntegrationTestArgs{ 9 | Description: "Open straight to branches panel using a CLI arg", 10 | ExtraCmdArgs: []string{"branch"}, 11 | Skip: false, 12 | SetupConfig: func(config *config.AppConfig) {}, 13 | SetupRepo: func(shell *Shell) { 14 | }, 15 | Run: func(t *TestDriver, keys config.KeybindingConfig) { 16 | t.Views().Branches().IsFocused() 17 | }, 18 | }) 19 | -------------------------------------------------------------------------------- /pkg/integration/tests/branch/shared.go: -------------------------------------------------------------------------------- 1 | package branch 2 | 3 | import ( 4 | "github.com/jesseduffield/lazygit/pkg/config" 5 | . "github.com/jesseduffield/lazygit/pkg/integration/components" 6 | "github.com/samber/lo" 7 | ) 8 | 9 | func checkRemoteBranches(t *TestDriver, keys config.KeybindingConfig, remoteName string, expectedBranches []string) { 10 | t.Views().Remotes(). 11 | Focus(). 12 | NavigateToLine(Contains(remoteName)). 13 | PressEnter() 14 | 15 | t.Views(). 16 | RemoteBranches(). 17 | Lines( 18 | lo.Map(expectedBranches, func(branch string, _ int) *TextMatcher { return Equals(branch) })..., 19 | ). 20 | Press(keys.Universal.Return) 21 | 22 | t.Views(). 23 | Branches(). 24 | Focus() 25 | } 26 | -------------------------------------------------------------------------------- /pkg/integration/tests/config/remote_named_star.go: -------------------------------------------------------------------------------- 1 | package config 2 | 3 | import ( 4 | "github.com/jesseduffield/lazygit/pkg/config" 5 | . "github.com/jesseduffield/lazygit/pkg/integration/components" 6 | ) 7 | 8 | var RemoteNamedStar = NewIntegrationTest(NewIntegrationTestArgs{ 9 | Description: "Having a config remote.*", 10 | ExtraCmdArgs: []string{}, 11 | Skip: false, 12 | SetupRepo: func(shell *Shell) { 13 | shell. 14 | SetConfig("remote.*.prune", "true"). 15 | CreateNCommits(2) 16 | }, 17 | SetupConfig: func(cfg *config.AppConfig) {}, 18 | Run: func(t *TestDriver, keys config.KeybindingConfig) { 19 | // here we're just asserting that we haven't panicked upon starting lazygit 20 | t.Views().Commits(). 21 | Lines( 22 | AnyString(), 23 | AnyString(), 24 | ) 25 | }, 26 | }) 27 | -------------------------------------------------------------------------------- /pkg/integration/tests/demo/shared.go: -------------------------------------------------------------------------------- 1 | package demo 2 | 3 | import "github.com/jesseduffield/lazygit/pkg/config" 4 | 5 | // Gives us nicer colours when we generate a git repo history with `shell.CreateRepoHistory()` 6 | func setGeneratedAuthorColours(config *config.AppConfig) { 7 | config.GetUserConfig().Gui.AuthorColors = map[string]string{ 8 | "Fredrica Greenhill": "#fb5aa3", 9 | "Oscar Reuenthal": "#86c82f", 10 | "Paul Oberstein": "#ffd500", 11 | "Siegfried Kircheis": "#fe7e11", 12 | "Yang Wen-li": "#8e3ccb", 13 | } 14 | } 15 | 16 | func setDefaultDemoConfig(config *config.AppConfig) { 17 | // demos look much nicer with icons shown 18 | config.GetUserConfig().Gui.NerdFontsVersion = "3" 19 | } 20 | -------------------------------------------------------------------------------- /pkg/integration/tests/filter_by_path/cli_arg.go: -------------------------------------------------------------------------------- 1 | package filter_by_path 2 | 3 | import ( 4 | "github.com/jesseduffield/lazygit/pkg/config" 5 | . "github.com/jesseduffield/lazygit/pkg/integration/components" 6 | ) 7 | 8 | var CliArg = NewIntegrationTest(NewIntegrationTestArgs{ 9 | Description: "Filter commits by file path, using CLI arg", 10 | ExtraCmdArgs: []string{"-f=filterFile"}, 11 | Skip: false, 12 | SetupConfig: func(config *config.AppConfig) { 13 | }, 14 | SetupRepo: func(shell *Shell) { 15 | commonSetup(shell) 16 | }, 17 | Run: func(t *TestDriver, keys config.KeybindingConfig) { 18 | postFilterTest(t) 19 | }, 20 | }) 21 | -------------------------------------------------------------------------------- /pkg/integration/tests/misc/initial_open.go: -------------------------------------------------------------------------------- 1 | package misc 2 | 3 | import ( 4 | "github.com/jesseduffield/lazygit/pkg/config" 5 | . "github.com/jesseduffield/lazygit/pkg/integration/components" 6 | ) 7 | 8 | var InitialOpen = NewIntegrationTest(NewIntegrationTestArgs{ 9 | Description: "Confirms a popup appears on first opening Lazygit", 10 | ExtraCmdArgs: []string{}, 11 | Skip: false, 12 | SetupConfig: func(config *config.AppConfig) { 13 | config.GetUserConfig().DisableStartupPopups = false 14 | }, 15 | SetupRepo: func(shell *Shell) {}, 16 | Run: func(t *TestDriver, keys config.KeybindingConfig) { 17 | t.ExpectPopup().Confirmation(). 18 | Title(Equals("")). 19 | Content(Contains("Thanks for using lazygit!")). 20 | Confirm() 21 | 22 | t.Views().Files().IsFocused() 23 | }, 24 | }) 25 | -------------------------------------------------------------------------------- /pkg/integration/tests/shared/README.md: -------------------------------------------------------------------------------- 1 | This package contains shared helper functions for tests. It is not intended to contain any actual tests itself. 2 | -------------------------------------------------------------------------------- /pkg/integration/tests/status/click_repo_name_to_open_repos_menu.go: -------------------------------------------------------------------------------- 1 | package status 2 | 3 | import ( 4 | "github.com/jesseduffield/lazygit/pkg/config" 5 | . "github.com/jesseduffield/lazygit/pkg/integration/components" 6 | ) 7 | 8 | var ClickRepoNameToOpenReposMenu = NewIntegrationTest(NewIntegrationTestArgs{ 9 | Description: "Click on the repo name in the status side panel to open the recent repositories menu", 10 | ExtraCmdArgs: []string{}, 11 | Skip: false, 12 | SetupConfig: func(config *config.AppConfig) {}, 13 | SetupRepo: func(shell *Shell) {}, 14 | Run: func(t *TestDriver, keys config.KeybindingConfig) { 15 | t.Views().Status().Click(1, 0) 16 | t.ExpectPopup().Menu().Title(Equals("Recent repositories")) 17 | }, 18 | }) 19 | -------------------------------------------------------------------------------- /pkg/integration/tests/ui/switch_tab_from_menu.go: -------------------------------------------------------------------------------- 1 | package ui 2 | 3 | import ( 4 | "github.com/jesseduffield/lazygit/pkg/config" 5 | . "github.com/jesseduffield/lazygit/pkg/integration/components" 6 | ) 7 | 8 | var SwitchTabFromMenu = NewIntegrationTest(NewIntegrationTestArgs{ 9 | Description: "Switch tab via the options menu", 10 | ExtraCmdArgs: []string{}, 11 | Skip: false, 12 | SetupConfig: func(config *config.AppConfig) {}, 13 | SetupRepo: func(shell *Shell) { 14 | }, 15 | Run: func(t *TestDriver, keys config.KeybindingConfig) { 16 | t.Views().Files().IsFocused(). 17 | Press(keys.Universal.OptionMenuAlt1) 18 | 19 | t.ExpectPopup().Menu().Title(Equals("Keybindings")). 20 | Select(Contains("Next tab")). 21 | Confirm() 22 | 23 | t.Views().Worktrees().IsFocused() 24 | }, 25 | }) 26 | -------------------------------------------------------------------------------- /pkg/jsonschema/generator.go: -------------------------------------------------------------------------------- 1 | //go:build ignore 2 | 3 | package main 4 | 5 | import ( 6 | "fmt" 7 | 8 | "github.com/jesseduffield/lazygit/pkg/jsonschema" 9 | ) 10 | 11 | func main() { 12 | fmt.Printf("Generating jsonschema in %s...\n", jsonschema.GetSchemaDir()) 13 | schema := jsonschema.GenerateSchema() 14 | jsonschema.GenerateConfigDocs(schema) 15 | } 16 | -------------------------------------------------------------------------------- /pkg/logs/tail/logs_default.go: -------------------------------------------------------------------------------- 1 | //go:build !windows 2 | // +build !windows 3 | 4 | package tail 5 | 6 | import ( 7 | "log" 8 | "os" 9 | "os/exec" 10 | 11 | "github.com/aybabtme/humanlog" 12 | ) 13 | 14 | func tailLogsForPlatform(logFilePath string, opts *humanlog.HandlerOptions) { 15 | cmd := exec.Command("tail", "-f", logFilePath) 16 | 17 | stdout, _ := cmd.StdoutPipe() 18 | if err := cmd.Start(); err != nil { 19 | log.Fatal(err) 20 | } 21 | 22 | if err := humanlog.Scanner(stdout, os.Stdout, opts); err != nil { 23 | log.Fatal(err) 24 | } 25 | 26 | if err := cmd.Wait(); err != nil { 27 | log.Fatal(err) 28 | } 29 | 30 | os.Exit(0) 31 | } 32 | -------------------------------------------------------------------------------- /pkg/logs/tail/tail.go: -------------------------------------------------------------------------------- 1 | package tail 2 | 3 | import ( 4 | "fmt" 5 | "log" 6 | "os" 7 | 8 | "github.com/aybabtme/humanlog" 9 | ) 10 | 11 | // TailLogs lets us run `lazygit --logs` to print the logs produced by other lazygit processes. 12 | // This makes for easier debugging. 13 | func TailLogs(logFilePath string) { 14 | fmt.Printf("Tailing log file %s\n\n", logFilePath) 15 | 16 | opts := humanlog.DefaultOptions 17 | opts.Truncates = false 18 | 19 | _, err := os.Stat(logFilePath) 20 | if err != nil { 21 | if os.IsNotExist(err) { 22 | log.Fatal("Log file does not exist. Run `lazygit --debug` first to create the log file") 23 | } 24 | log.Fatal(err) 25 | } 26 | 27 | tailLogsForPlatform(logFilePath, opts) 28 | } 29 | -------------------------------------------------------------------------------- /pkg/utils/dummies.go: -------------------------------------------------------------------------------- 1 | package utils 2 | 3 | import ( 4 | "io" 5 | 6 | "github.com/sirupsen/logrus" 7 | ) 8 | 9 | // NewDummyLog creates a new dummy Log for testing 10 | func NewDummyLog() *logrus.Entry { 11 | log := logrus.New() 12 | log.Out = io.Discard 13 | return log.WithField("test", "test") 14 | } 15 | -------------------------------------------------------------------------------- /pkg/utils/errors.go: -------------------------------------------------------------------------------- 1 | package utils 2 | 3 | import "github.com/go-errors/errors" 4 | 5 | // WrapError wraps an error for the sake of showing a stack trace at the top level 6 | // the go-errors package, for some reason, does not return nil when you try to wrap 7 | // a non-error, so we're just doing it here 8 | func WrapError(err error) error { 9 | if err == nil { 10 | return err 11 | } 12 | 13 | return errors.Wrap(err, 0) 14 | } 15 | -------------------------------------------------------------------------------- /pkg/utils/io.go: -------------------------------------------------------------------------------- 1 | package utils 2 | 3 | import ( 4 | "bufio" 5 | "io" 6 | "os" 7 | ) 8 | 9 | func ForEachLineInFile(path string, f func(string, int)) error { 10 | file, err := os.Open(path) 11 | if err != nil { 12 | return err 13 | } 14 | defer file.Close() 15 | 16 | forEachLineInStream(file, f) 17 | 18 | return nil 19 | } 20 | 21 | func forEachLineInStream(reader io.Reader, f func(string, int)) { 22 | bufferedReader := bufio.NewReader(reader) 23 | for i := 0; true; i++ { 24 | line, _ := bufferedReader.ReadString('\n') 25 | if len(line) == 0 { 26 | break 27 | } 28 | f(line, i) 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /pkg/utils/once_writer.go: -------------------------------------------------------------------------------- 1 | package utils 2 | 3 | import ( 4 | "io" 5 | "sync" 6 | ) 7 | 8 | // This wraps a writer and ensures that before we actually write anything we call a given function first 9 | 10 | type OnceWriter struct { 11 | writer io.Writer 12 | once sync.Once 13 | f func() 14 | } 15 | 16 | var _ io.Writer = &OnceWriter{} 17 | 18 | func NewOnceWriter(writer io.Writer, f func()) *OnceWriter { 19 | return &OnceWriter{ 20 | writer: writer, 21 | f: f, 22 | } 23 | } 24 | 25 | func (self *OnceWriter) Write(p []byte) (n int, err error) { 26 | self.once.Do(func() { 27 | self.f() 28 | }) 29 | 30 | return self.writer.Write(p) 31 | } 32 | -------------------------------------------------------------------------------- /pkg/utils/once_writer_test.go: -------------------------------------------------------------------------------- 1 | package utils 2 | 3 | import ( 4 | "bytes" 5 | "testing" 6 | ) 7 | 8 | func TestOnceWriter(t *testing.T) { 9 | innerWriter := bytes.NewBuffer(nil) 10 | counter := 0 11 | onceWriter := NewOnceWriter(innerWriter, func() { 12 | counter += 1 13 | }) 14 | _, _ = onceWriter.Write([]byte("hello")) 15 | _, _ = onceWriter.Write([]byte("hello")) 16 | if counter != 1 { 17 | t.Errorf("expected counter to be 1, got %d", counter) 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /pkg/utils/regexp.go: -------------------------------------------------------------------------------- 1 | package utils 2 | 3 | import "regexp" 4 | 5 | func FindNamedMatches(regex *regexp.Regexp, str string) map[string]string { 6 | match := regex.FindStringSubmatch(str) 7 | 8 | if len(match) == 0 { 9 | return nil 10 | } 11 | 12 | results := map[string]string{} 13 | for i, value := range match[1:] { 14 | results[regex.SubexpNames()[i+1]] = value 15 | } 16 | return results 17 | } 18 | -------------------------------------------------------------------------------- /pkg/utils/string_pool.go: -------------------------------------------------------------------------------- 1 | package utils 2 | 3 | import "sync" 4 | 5 | // A simple string pool implementation that can help reduce memory usage for 6 | // cases where the same string is used multiple times. 7 | type StringPool struct { 8 | sync.Map 9 | } 10 | 11 | func (self *StringPool) Add(s string) *string { 12 | poolEntry, _ := self.LoadOrStore(s, &s) 13 | return poolEntry.(*string) 14 | } 15 | -------------------------------------------------------------------------------- /pkg/utils/string_stack.go: -------------------------------------------------------------------------------- 1 | package utils 2 | 3 | type StringStack struct { 4 | stack []string 5 | } 6 | 7 | func (self *StringStack) Push(s string) { 8 | self.stack = append(self.stack, s) 9 | } 10 | 11 | func (self *StringStack) Pop() string { 12 | if len(self.stack) == 0 { 13 | return "" 14 | } 15 | n := len(self.stack) - 1 16 | last := self.stack[n] 17 | self.stack = self.stack[:n] 18 | return last 19 | } 20 | 21 | func (self *StringStack) IsEmpty() bool { 22 | return len(self.stack) == 0 23 | } 24 | 25 | func (self *StringStack) Clear() { 26 | self.stack = []string{} 27 | } 28 | -------------------------------------------------------------------------------- /scripts/bump_gocui.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # Go's proxy servers are not very up-to-date so that's why we use `GOPROXY=direct` 4 | # We specify the `master` branch to avoid the default behaviour of looking for a semver tag. 5 | GOPROXY=direct go get -u github.com/jesseduffield/gocui@master && go mod vendor && go mod tidy 6 | 7 | # Note to self if you ever want to fork a repo be sure to use this same approach: it's important to use the branch name (e.g. master) 8 | -------------------------------------------------------------------------------- /scripts/bump_lazycore.sh: -------------------------------------------------------------------------------- 1 | # Go's proxy servers are not very up-to-date so that's why we use `GOPROXY=direct` 2 | # We specify the `awesome` branch to avoid the default behaviour of looking for a semver tag. 3 | GOPROXY=direct go get -u github.com/jesseduffield/lazycore@master && go mod vendor && go mod tidy 4 | 5 | # Note to self if you ever want to fork a repo be sure to use this same approach: it's important to use the branch name (e.g. master) 6 | -------------------------------------------------------------------------------- /scripts/bump_modules.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | GO111MODULE=on 4 | mv go.mod /tmp/ 5 | go mod init -------------------------------------------------------------------------------- /scripts/check_filenames.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Find all Go files in the project directory and its subdirectories, except in the vendor directory 4 | for file in $(find . -name "*.go" -not -path "./vendor/*"); do 5 | 6 | # Check if the file name contains uppercase letters 7 | if [[ "$file" =~ [A-Z] ]]; then 8 | echo "Error: $file contains uppercase letters. All Go files in the project (excluding vendor directory) must use snake_case" 9 | exit 1 10 | fi 11 | done 12 | 13 | echo "All Go files in the project (excluding vendor directory) use lowercase letters" 14 | exit 0 15 | -------------------------------------------------------------------------------- /scripts/check_for_fixups.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # We will have only done a shallow clone, so the git log will consist only of 4 | # commits on the current PR 5 | commits=$(git log --grep='^fixup!' --grep='^squash!' --grep='^amend!' --grep='^[^\n]*WIP' --grep='^[^\n]*DROPME' --format="%h %s") 6 | 7 | if [ -z "$commits" ]; then 8 | echo "No fixup commits found." 9 | exit 0 10 | else 11 | echo "Fixup or WIP commits found:" 12 | echo "$commits" 13 | exit 1 14 | fi 15 | -------------------------------------------------------------------------------- /scripts/record_demo.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | demo/record_demo.sh "$@" 4 | -------------------------------------------------------------------------------- /test/.gitconfig: -------------------------------------------------------------------------------- 1 | global_git_config -------------------------------------------------------------------------------- /test/README.md: -------------------------------------------------------------------------------- 1 | This directory contains some files used by out integration tests. The tests themselves live in [/pkg/integration/](/pkg/integration/). See [here](/pkg/integration/README.md) for more info 2 | 3 | -------------------------------------------------------------------------------- /test/files/pre-push: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # test pre-push hook for testing the lazygit credentials view 4 | # 5 | # to enable, use: 6 | # chmod +x .git/hooks/pre-push 7 | # 8 | # this will hang if you're using git from the command line, so only enable this 9 | # when you are testing the credentials view in lazygit 10 | 11 | exec < /dev/tty 12 | 13 | echo -n "Username for 'github': " 14 | read username 15 | 16 | echo -n "Password for 'github': " 17 | # this will print the password to the log view but real git won't do that. 18 | # We could use read -s but that's not POSIX compliant. 19 | read password 20 | 21 | if [ "$username" = "username" -a "$password" = "password" ]; then 22 | echo "success" 23 | exit 0 24 | fi 25 | 26 | >&2 echo "incorrect username/password" 27 | exit 1 28 | -------------------------------------------------------------------------------- /test/global_git_config: -------------------------------------------------------------------------------- 1 | # This is the global git config we use for all our integration tests 2 | 3 | [user] 4 | name = CI 5 | email = CI@example.com 6 | [protocol "file"] 7 | # see https://vielmetti.typepad.com/logbook/2022/10/git-security-fixes-lead-to-fatal-transport-file-not-allowed-error-in-ci-systems-cve-2022-39253.html 8 | allow = always 9 | [commit] 10 | gpgSign = false 11 | -------------------------------------------------------------------------------- /vendor/dario.cat/mergo/.gitignore: -------------------------------------------------------------------------------- 1 | #### joe made this: http://goel.io/joe 2 | 3 | #### go #### 4 | # Binaries for programs and plugins 5 | *.exe 6 | *.dll 7 | *.so 8 | *.dylib 9 | 10 | # Test binary, build with `go test -c` 11 | *.test 12 | 13 | # Output of the go coverage tool, specifically when used with LiteIDE 14 | *.out 15 | 16 | # Golang/Intellij 17 | .idea 18 | 19 | # Project-local glide cache, RE: https://github.com/Masterminds/glide/issues/736 20 | .glide/ 21 | 22 | #### vim #### 23 | # Swap 24 | [._]*.s[a-v][a-z] 25 | [._]*.sw[a-p] 26 | [._]s[a-v][a-z] 27 | [._]sw[a-p] 28 | 29 | # Session 30 | Session.vim 31 | 32 | # Temporary 33 | .netrwhist 34 | *~ 35 | # Auto-generated tag files 36 | tags 37 | -------------------------------------------------------------------------------- /vendor/dario.cat/mergo/SECURITY.md: -------------------------------------------------------------------------------- 1 | # Security Policy 2 | 3 | ## Supported Versions 4 | 5 | | Version | Supported | 6 | | ------- | ------------------ | 7 | | 0.3.x | :white_check_mark: | 8 | | < 0.3 | :x: | 9 | 10 | ## Security contact information 11 | 12 | To report a security vulnerability, please use the 13 | [Tidelift security contact](https://tidelift.com/security). 14 | Tidelift will coordinate the fix and disclosure. 15 | -------------------------------------------------------------------------------- /vendor/github.com/Microsoft/go-winio/.gitattributes: -------------------------------------------------------------------------------- 1 | * text=auto eol=lf -------------------------------------------------------------------------------- /vendor/github.com/Microsoft/go-winio/.gitignore: -------------------------------------------------------------------------------- 1 | .vscode/ 2 | 3 | *.exe 4 | 5 | # testing 6 | testdata 7 | 8 | # go workspaces 9 | go.work 10 | go.work.sum 11 | -------------------------------------------------------------------------------- /vendor/github.com/Microsoft/go-winio/CODEOWNERS: -------------------------------------------------------------------------------- 1 | * @microsoft/containerplat 2 | -------------------------------------------------------------------------------- /vendor/github.com/Microsoft/go-winio/internal/fs/doc.go: -------------------------------------------------------------------------------- 1 | // This package contains Win32 filesystem functionality. 2 | package fs 3 | -------------------------------------------------------------------------------- /vendor/github.com/Microsoft/go-winio/internal/fs/security.go: -------------------------------------------------------------------------------- 1 | package fs 2 | 3 | // https://learn.microsoft.com/en-us/windows/win32/api/winnt/ne-winnt-security_impersonation_level 4 | type SecurityImpersonationLevel int32 // C default enums underlying type is `int`, which is Go `int32` 5 | 6 | // Impersonation levels 7 | const ( 8 | SecurityAnonymous SecurityImpersonationLevel = 0 9 | SecurityIdentification SecurityImpersonationLevel = 1 10 | SecurityImpersonation SecurityImpersonationLevel = 2 11 | SecurityDelegation SecurityImpersonationLevel = 3 12 | ) 13 | -------------------------------------------------------------------------------- /vendor/github.com/Microsoft/go-winio/pkg/guid/guid_nonwindows.go: -------------------------------------------------------------------------------- 1 | //go:build !windows 2 | // +build !windows 3 | 4 | package guid 5 | 6 | // GUID represents a GUID/UUID. It has the same structure as 7 | // golang.org/x/sys/windows.GUID so that it can be used with functions expecting 8 | // that type. It is defined as its own type as that is only available to builds 9 | // targeted at `windows`. The representation matches that used by native Windows 10 | // code. 11 | type GUID struct { 12 | Data1 uint32 13 | Data2 uint16 14 | Data3 uint16 15 | Data4 [8]byte 16 | } 17 | -------------------------------------------------------------------------------- /vendor/github.com/Microsoft/go-winio/pkg/guid/guid_windows.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | // +build windows 3 | 4 | package guid 5 | 6 | import "golang.org/x/sys/windows" 7 | 8 | // GUID represents a GUID/UUID. It has the same structure as 9 | // golang.org/x/sys/windows.GUID so that it can be used with functions expecting 10 | // that type. It is defined as its own type so that stringification and 11 | // marshaling can be supported. The representation matches that used by native 12 | // Windows code. 13 | type GUID windows.GUID 14 | -------------------------------------------------------------------------------- /vendor/github.com/Microsoft/go-winio/syscall.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package winio 4 | 5 | //go:generate go run github.com/Microsoft/go-winio/tools/mkwinsyscall -output zsyscall_windows.go ./*.go 6 | -------------------------------------------------------------------------------- /vendor/github.com/ProtonMail/go-crypto/AUTHORS: -------------------------------------------------------------------------------- 1 | # This source code refers to The Go Authors for copyright purposes. 2 | # The master list of authors is in the main Go distribution, 3 | # visible at https://tip.golang.org/AUTHORS. 4 | -------------------------------------------------------------------------------- /vendor/github.com/ProtonMail/go-crypto/CONTRIBUTORS: -------------------------------------------------------------------------------- 1 | # This source code was written by the Go contributors. 2 | # The master list of contributors is in the main Go distribution, 3 | # visible at https://tip.golang.org/CONTRIBUTORS. 4 | -------------------------------------------------------------------------------- /vendor/github.com/ProtonMail/go-crypto/openpgp/hash.go: -------------------------------------------------------------------------------- 1 | package openpgp 2 | 3 | import ( 4 | "crypto" 5 | 6 | "github.com/ProtonMail/go-crypto/openpgp/internal/algorithm" 7 | ) 8 | 9 | // HashIdToHash returns a crypto.Hash which corresponds to the given OpenPGP 10 | // hash id. 11 | func HashIdToHash(id byte) (h crypto.Hash, ok bool) { 12 | return algorithm.HashIdToHash(id) 13 | } 14 | 15 | // HashIdToString returns the name of the hash function corresponding to the 16 | // given OpenPGP hash id. 17 | func HashIdToString(id byte) (name string, ok bool) { 18 | return algorithm.HashIdToString(id) 19 | } 20 | 21 | // HashToHashId returns an OpenPGP hash id which corresponds the given Hash. 22 | func HashToHashId(h crypto.Hash) (id byte, ok bool) { 23 | return algorithm.HashToHashId(h) 24 | } 25 | -------------------------------------------------------------------------------- /vendor/github.com/ProtonMail/go-crypto/openpgp/packet/config_v5.go: -------------------------------------------------------------------------------- 1 | //go:build !v5 2 | 3 | package packet 4 | 5 | func init() { 6 | V5Disabled = true 7 | } 8 | -------------------------------------------------------------------------------- /vendor/github.com/ProtonMail/go-crypto/openpgp/packet/packet_unsupported.go: -------------------------------------------------------------------------------- 1 | package packet 2 | 3 | import ( 4 | "io" 5 | 6 | "github.com/ProtonMail/go-crypto/openpgp/errors" 7 | ) 8 | 9 | // UnsupportedPackage represents a OpenPGP packet with a known packet type 10 | // but with unsupported content. 11 | type UnsupportedPacket struct { 12 | IncompletePacket Packet 13 | Error errors.UnsupportedError 14 | } 15 | 16 | // Implements the Packet interface 17 | func (up *UnsupportedPacket) parse(read io.Reader) error { 18 | err := up.IncompletePacket.parse(read) 19 | if castedErr, ok := err.(errors.UnsupportedError); ok { 20 | up.Error = castedErr 21 | return nil 22 | } 23 | return err 24 | } 25 | -------------------------------------------------------------------------------- /vendor/github.com/ProtonMail/go-crypto/openpgp/packet/recipient.go: -------------------------------------------------------------------------------- 1 | package packet 2 | 3 | // Recipient type represents a Intended Recipient Fingerprint subpacket 4 | // See https://datatracker.ietf.org/doc/html/draft-ietf-openpgp-crypto-refresh#name-intended-recipient-fingerpr 5 | type Recipient struct { 6 | KeyVersion int 7 | Fingerprint []byte 8 | } 9 | 10 | func (r *Recipient) Serialize() []byte { 11 | packet := make([]byte, len(r.Fingerprint)+1) 12 | packet[0] = byte(r.KeyVersion) 13 | copy(packet[1:], r.Fingerprint) 14 | return packet 15 | } 16 | -------------------------------------------------------------------------------- /vendor/github.com/adrg/xdg/codecov.yml: -------------------------------------------------------------------------------- 1 | coverage: 2 | status: 3 | project: 4 | default: 5 | target: 90% 6 | threshold: 1% 7 | patch: 8 | default: 9 | target: 100% 10 | ignore: 11 | - "paths_plan9.go" 12 | -------------------------------------------------------------------------------- /vendor/github.com/adrg/xdg/internal/pathutil/pathutil_plan9.go: -------------------------------------------------------------------------------- 1 | package pathutil 2 | 3 | import ( 4 | "os" 5 | "path/filepath" 6 | "strings" 7 | ) 8 | 9 | // Exists returns true if the specified path exists. 10 | func Exists(path string) bool { 11 | _, err := os.Stat(path) 12 | return err == nil || os.IsExist(err) 13 | } 14 | 15 | // ExpandHome substitutes `~` and `$home` at the start of the specified 16 | // `path` using the provided `home` location. 17 | func ExpandHome(path, home string) string { 18 | if path == "" || home == "" { 19 | return path 20 | } 21 | if path[0] == '~' { 22 | return filepath.Join(home, path[1:]) 23 | } 24 | if strings.HasPrefix(path, "$home") { 25 | return filepath.Join(home, path[5:]) 26 | } 27 | 28 | return path 29 | } 30 | -------------------------------------------------------------------------------- /vendor/github.com/atotto/clipboard/clipboard.go: -------------------------------------------------------------------------------- 1 | // Copyright 2013 @atotto. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | // Package clipboard read/write on clipboard 6 | package clipboard 7 | 8 | // ReadAll read string from clipboard 9 | func ReadAll() (string, error) { 10 | return readAll() 11 | } 12 | 13 | // WriteAll write string to clipboard 14 | func WriteAll(text string) error { 15 | return writeAll(text) 16 | } 17 | 18 | // Unsupported might be set true during clipboard init, to help callers decide 19 | // whether or not to offer clipboard options. 20 | var Unsupported bool 21 | -------------------------------------------------------------------------------- /vendor/github.com/aybabtme/humanlog/.gitignore: -------------------------------------------------------------------------------- 1 | *.ignore 2 | dist 3 | -------------------------------------------------------------------------------- /vendor/github.com/aybabtme/humanlog/goreleaser.yaml: -------------------------------------------------------------------------------- 1 | build: 2 | main: ./cmd/humanlog/main.go 3 | binary: humanlog 4 | ldflags: 5 | - -s -w -X main.build={{.Version}} 6 | goos: 7 | - windows 8 | - darwin 9 | - linux 10 | goarch: 11 | - amd64 12 | 13 | brews: 14 | - github: 15 | owner: aybabtme 16 | name: homebrew-tap 17 | 18 | nfpms: 19 | - formats: 20 | - deb 21 | -------------------------------------------------------------------------------- /vendor/github.com/bahlo/generic-list-go/README.md: -------------------------------------------------------------------------------- 1 | # generic-list-go [![CI](https://github.com/bahlo/generic-list-go/actions/workflows/ci.yml/badge.svg)](https://github.com/bahlo/generic-list-go/actions/workflows/ci.yml) 2 | 3 | Go [container/list](https://pkg.go.dev/container/list) but with generics. 4 | 5 | The code is based on `container/list` in `go1.18beta2`. 6 | -------------------------------------------------------------------------------- /vendor/github.com/buger/jsonparser/.gitignore: -------------------------------------------------------------------------------- 1 | 2 | *.test 3 | 4 | *.out 5 | 6 | *.mprof 7 | 8 | .idea 9 | 10 | vendor/github.com/buger/goterm/ 11 | prof.cpu 12 | prof.mem 13 | -------------------------------------------------------------------------------- /vendor/github.com/buger/jsonparser/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM golang:1.6 2 | 3 | RUN go get github.com/Jeffail/gabs 4 | RUN go get github.com/bitly/go-simplejson 5 | RUN go get github.com/pquerna/ffjson 6 | RUN go get github.com/antonholmquist/jason 7 | RUN go get github.com/mreiferson/go-ujson 8 | RUN go get -tags=unsafe -u github.com/ugorji/go/codec 9 | RUN go get github.com/mailru/easyjson 10 | 11 | WORKDIR /go/src/github.com/buger/jsonparser 12 | ADD . /go/src/github.com/buger/jsonparser -------------------------------------------------------------------------------- /vendor/github.com/buger/jsonparser/bytes_safe.go: -------------------------------------------------------------------------------- 1 | // +build appengine appenginevm 2 | 3 | package jsonparser 4 | 5 | import ( 6 | "strconv" 7 | ) 8 | 9 | // See fastbytes_unsafe.go for explanation on why *[]byte is used (signatures must be consistent with those in that file) 10 | 11 | func equalStr(b *[]byte, s string) bool { 12 | return string(*b) == s 13 | } 14 | 15 | func parseFloat(b *[]byte) (float64, error) { 16 | return strconv.ParseFloat(string(*b), 64) 17 | } 18 | 19 | func bytesToString(b *[]byte) string { 20 | return string(*b) 21 | } 22 | 23 | func StringToBytes(s string) []byte { 24 | return []byte(s) 25 | } 26 | -------------------------------------------------------------------------------- /vendor/github.com/cloudflare/circl/dh/x25519/curve_noasm.go: -------------------------------------------------------------------------------- 1 | //go:build !amd64 || purego 2 | // +build !amd64 purego 3 | 4 | package x25519 5 | 6 | import fp "github.com/cloudflare/circl/math/fp25519" 7 | 8 | func double(x, z *fp.Elt) { doubleGeneric(x, z) } 9 | func diffAdd(w *[5]fp.Elt, b uint) { diffAddGeneric(w, b) } 10 | func ladderStep(w *[5]fp.Elt, b uint) { ladderStepGeneric(w, b) } 11 | func mulA24(z, x *fp.Elt) { mulA24Generic(z, x) } 12 | -------------------------------------------------------------------------------- /vendor/github.com/cloudflare/circl/dh/x448/curve_noasm.go: -------------------------------------------------------------------------------- 1 | //go:build !amd64 || purego 2 | // +build !amd64 purego 3 | 4 | package x448 5 | 6 | import fp "github.com/cloudflare/circl/math/fp448" 7 | 8 | func double(x, z *fp.Elt) { doubleGeneric(x, z) } 9 | func diffAdd(w *[5]fp.Elt, b uint) { diffAddGeneric(w, b) } 10 | func ladderStep(w *[5]fp.Elt, b uint) { ladderStepGeneric(w, b) } 11 | func mulA24(z, x *fp.Elt) { mulA24Generic(z, x) } 12 | -------------------------------------------------------------------------------- /vendor/github.com/cloudflare/circl/internal/sha3/rc.go: -------------------------------------------------------------------------------- 1 | package sha3 2 | 3 | // RC stores the round constants for use in the ι step. 4 | var RC = [24]uint64{ 5 | 0x0000000000000001, 6 | 0x0000000000008082, 7 | 0x800000000000808A, 8 | 0x8000000080008000, 9 | 0x000000000000808B, 10 | 0x0000000080000001, 11 | 0x8000000080008081, 12 | 0x8000000000008009, 13 | 0x000000000000008A, 14 | 0x0000000000000088, 15 | 0x0000000080008009, 16 | 0x000000008000000A, 17 | 0x000000008000808B, 18 | 0x800000000000008B, 19 | 0x8000000000008089, 20 | 0x8000000000008003, 21 | 0x8000000000008002, 22 | 0x8000000000000080, 23 | 0x000000000000800A, 24 | 0x800000008000000A, 25 | 0x8000000080008081, 26 | 0x8000000000008080, 27 | 0x0000000080000001, 28 | 0x8000000080008008, 29 | } 30 | -------------------------------------------------------------------------------- /vendor/github.com/cloudflare/circl/internal/sha3/xor.go: -------------------------------------------------------------------------------- 1 | // Copyright 2015 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | //go:build (!amd64 && !386 && !ppc64le) || appengine 6 | // +build !amd64,!386,!ppc64le appengine 7 | 8 | package sha3 9 | 10 | // A storageBuf is an aligned array of maxRate bytes. 11 | type storageBuf [maxRate]byte 12 | 13 | func (b *storageBuf) asBytes() *[maxRate]byte { 14 | return (*[maxRate]byte)(b) 15 | } 16 | -------------------------------------------------------------------------------- /vendor/github.com/cloudflare/circl/math/fp25519/fp_noasm.go: -------------------------------------------------------------------------------- 1 | //go:build !amd64 || purego 2 | // +build !amd64 purego 3 | 4 | package fp25519 5 | 6 | func cmov(x, y *Elt, n uint) { cmovGeneric(x, y, n) } 7 | func cswap(x, y *Elt, n uint) { cswapGeneric(x, y, n) } 8 | func add(z, x, y *Elt) { addGeneric(z, x, y) } 9 | func sub(z, x, y *Elt) { subGeneric(z, x, y) } 10 | func addsub(x, y *Elt) { addsubGeneric(x, y) } 11 | func mul(z, x, y *Elt) { mulGeneric(z, x, y) } 12 | func sqr(z, x *Elt) { sqrGeneric(z, x) } 13 | func modp(z *Elt) { modpGeneric(z) } 14 | -------------------------------------------------------------------------------- /vendor/github.com/cloudflare/circl/math/fp448/fp_noasm.go: -------------------------------------------------------------------------------- 1 | //go:build !amd64 || purego 2 | // +build !amd64 purego 3 | 4 | package fp448 5 | 6 | func cmov(x, y *Elt, n uint) { cmovGeneric(x, y, n) } 7 | func cswap(x, y *Elt, n uint) { cswapGeneric(x, y, n) } 8 | func add(z, x, y *Elt) { addGeneric(z, x, y) } 9 | func sub(z, x, y *Elt) { subGeneric(z, x, y) } 10 | func addsub(x, y *Elt) { addsubGeneric(x, y) } 11 | func mul(z, x, y *Elt) { mulGeneric(z, x, y) } 12 | func sqr(z, x *Elt) { sqrGeneric(z, x) } 13 | -------------------------------------------------------------------------------- /vendor/github.com/cloudflare/circl/math/integer.go: -------------------------------------------------------------------------------- 1 | package math 2 | 3 | import "math/bits" 4 | 5 | // NextPow2 finds the next power of two (N=2^k, k>=0) greater than n. 6 | // If n is already a power of two, then this function returns n, and log2(n). 7 | func NextPow2(n uint) (N uint, k uint) { 8 | if bits.OnesCount(n) == 1 { 9 | k = uint(bits.TrailingZeros(n)) 10 | N = n 11 | } else { 12 | k = uint(bits.Len(n)) 13 | N = uint(1) << k 14 | } 15 | return 16 | } 17 | -------------------------------------------------------------------------------- /vendor/github.com/cloudflare/circl/sign/ed25519/pubkey.go: -------------------------------------------------------------------------------- 1 | //go:build go1.13 2 | // +build go1.13 3 | 4 | package ed25519 5 | 6 | import cryptoEd25519 "crypto/ed25519" 7 | 8 | // PublicKey is the type of Ed25519 public keys. 9 | type PublicKey cryptoEd25519.PublicKey 10 | -------------------------------------------------------------------------------- /vendor/github.com/cloudflare/circl/sign/ed25519/pubkey112.go: -------------------------------------------------------------------------------- 1 | //go:build !go1.13 2 | // +build !go1.13 3 | 4 | package ed25519 5 | 6 | // PublicKey is the type of Ed25519 public keys. 7 | type PublicKey []byte 8 | -------------------------------------------------------------------------------- /vendor/github.com/cloudfoundry/jibber_jabber/jibber_jabber.go: -------------------------------------------------------------------------------- 1 | package jibber_jabber 2 | 3 | import ( 4 | "strings" 5 | ) 6 | 7 | const ( 8 | COULD_NOT_DETECT_PACKAGE_ERROR_MESSAGE = "Could not detect Language" 9 | ) 10 | 11 | func splitLocale(locale string) (string, string) { 12 | formattedLocale := strings.Split(locale, ".")[0] 13 | formattedLocale = strings.Replace(formattedLocale, "-", "_", -1) 14 | 15 | pieces := strings.Split(formattedLocale, "_") 16 | language := pieces[0] 17 | territory := "" 18 | if len(pieces) > 1 { 19 | territory = strings.Split(formattedLocale, "_")[1] 20 | } 21 | return language, territory 22 | } 23 | -------------------------------------------------------------------------------- /vendor/github.com/creack/pty/.gitignore: -------------------------------------------------------------------------------- 1 | [568].out 2 | _go* 3 | _test* 4 | _obj 5 | -------------------------------------------------------------------------------- /vendor/github.com/creack/pty/Dockerfile.riscv: -------------------------------------------------------------------------------- 1 | FROM golang:1.13 2 | 3 | # Clone and complie a riscv compatible version of the go compiler. 4 | RUN git clone https://review.gerrithub.io/riscv/riscv-go /riscv-go 5 | # riscvdev branch HEAD as of 2019-06-29. 6 | RUN cd /riscv-go && git checkout 04885fddd096d09d4450726064d06dd107e374bf 7 | ENV PATH=/riscv-go/misc/riscv:/riscv-go/bin:$PATH 8 | RUN cd /riscv-go/src && GOROOT_BOOTSTRAP=$(go env GOROOT) ./make.bash 9 | ENV GOROOT=/riscv-go 10 | 11 | # Make sure we compile. 12 | WORKDIR pty 13 | ADD . . 14 | RUN GOOS=linux GOARCH=riscv go build 15 | -------------------------------------------------------------------------------- /vendor/github.com/creack/pty/doc.go: -------------------------------------------------------------------------------- 1 | // Package pty provides functions for working with Unix terminals. 2 | package pty 3 | 4 | import ( 5 | "errors" 6 | "os" 7 | ) 8 | 9 | // ErrUnsupported is returned if a function is not 10 | // available on the current platform. 11 | var ErrUnsupported = errors.New("unsupported") 12 | 13 | // Opens a pty and its corresponding tty. 14 | func Open() (pty, tty *os.File, err error) { 15 | return open() 16 | } 17 | -------------------------------------------------------------------------------- /vendor/github.com/creack/pty/ioctl.go: -------------------------------------------------------------------------------- 1 | // +build !windows,!solaris 2 | 3 | package pty 4 | 5 | import "syscall" 6 | 7 | func ioctl(fd, cmd, ptr uintptr) error { 8 | _, _, e := syscall.Syscall(syscall.SYS_IOCTL, fd, cmd, ptr) 9 | if e != 0 { 10 | return e 11 | } 12 | return nil 13 | } 14 | -------------------------------------------------------------------------------- /vendor/github.com/creack/pty/ioctl_solaris.go: -------------------------------------------------------------------------------- 1 | package pty 2 | 3 | import ( 4 | "golang.org/x/sys/unix" 5 | "unsafe" 6 | ) 7 | 8 | const ( 9 | // see /usr/include/sys/stropts.h 10 | I_PUSH = uintptr((int32('S')<<8 | 002)) 11 | I_STR = uintptr((int32('S')<<8 | 010)) 12 | I_FIND = uintptr((int32('S')<<8 | 013)) 13 | // see /usr/include/sys/ptms.h 14 | ISPTM = (int32('P') << 8) | 1 15 | UNLKPT = (int32('P') << 8) | 2 16 | PTSSTTY = (int32('P') << 8) | 3 17 | ZONEPT = (int32('P') << 8) | 4 18 | OWNERPT = (int32('P') << 8) | 5 19 | ) 20 | 21 | type strioctl struct { 22 | ic_cmd int32 23 | ic_timout int32 24 | ic_len int32 25 | ic_dp unsafe.Pointer 26 | } 27 | 28 | func ioctl(fd, cmd, ptr uintptr) error { 29 | return unix.IoctlSetInt(int(fd), uint(cmd), int(ptr)) 30 | } 31 | -------------------------------------------------------------------------------- /vendor/github.com/creack/pty/mktypes.bash: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | GOOSARCH="${GOOS}_${GOARCH}" 4 | case "$GOOSARCH" in 5 | _* | *_ | _) 6 | echo 'undefined $GOOS_$GOARCH:' "$GOOSARCH" 1>&2 7 | exit 1 8 | ;; 9 | esac 10 | 11 | GODEFS="go tool cgo -godefs" 12 | 13 | $GODEFS types.go |gofmt > ztypes_$GOARCH.go 14 | 15 | case $GOOS in 16 | freebsd|dragonfly|openbsd) 17 | $GODEFS types_$GOOS.go |gofmt > ztypes_$GOOSARCH.go 18 | ;; 19 | esac 20 | -------------------------------------------------------------------------------- /vendor/github.com/creack/pty/pty_unsupported.go: -------------------------------------------------------------------------------- 1 | // +build !linux,!darwin,!freebsd,!dragonfly,!openbsd,!solaris 2 | 3 | package pty 4 | 5 | import ( 6 | "os" 7 | ) 8 | 9 | func open() (pty, tty *os.File, err error) { 10 | return nil, nil, ErrUnsupported 11 | } 12 | -------------------------------------------------------------------------------- /vendor/github.com/creack/pty/ztypes_386.go: -------------------------------------------------------------------------------- 1 | // Created by cgo -godefs - DO NOT EDIT 2 | // cgo -godefs types.go 3 | 4 | package pty 5 | 6 | type ( 7 | _C_int int32 8 | _C_uint uint32 9 | ) 10 | -------------------------------------------------------------------------------- /vendor/github.com/creack/pty/ztypes_amd64.go: -------------------------------------------------------------------------------- 1 | // Created by cgo -godefs - DO NOT EDIT 2 | // cgo -godefs types.go 3 | 4 | package pty 5 | 6 | type ( 7 | _C_int int32 8 | _C_uint uint32 9 | ) 10 | -------------------------------------------------------------------------------- /vendor/github.com/creack/pty/ztypes_arm.go: -------------------------------------------------------------------------------- 1 | // Created by cgo -godefs - DO NOT EDIT 2 | // cgo -godefs types.go 3 | 4 | package pty 5 | 6 | type ( 7 | _C_int int32 8 | _C_uint uint32 9 | ) 10 | -------------------------------------------------------------------------------- /vendor/github.com/creack/pty/ztypes_arm64.go: -------------------------------------------------------------------------------- 1 | // Created by cgo -godefs - DO NOT EDIT 2 | // cgo -godefs types.go 3 | 4 | // +build arm64 5 | 6 | package pty 7 | 8 | type ( 9 | _C_int int32 10 | _C_uint uint32 11 | ) 12 | -------------------------------------------------------------------------------- /vendor/github.com/creack/pty/ztypes_dragonfly_amd64.go: -------------------------------------------------------------------------------- 1 | // Created by cgo -godefs - DO NOT EDIT 2 | // cgo -godefs types_dragonfly.go 3 | 4 | package pty 5 | 6 | const ( 7 | _C_SPECNAMELEN = 0x3f 8 | ) 9 | 10 | type fiodgnameArg struct { 11 | Name *byte 12 | Len uint32 13 | Pad_cgo_0 [4]byte 14 | } 15 | -------------------------------------------------------------------------------- /vendor/github.com/creack/pty/ztypes_freebsd_386.go: -------------------------------------------------------------------------------- 1 | // Created by cgo -godefs - DO NOT EDIT 2 | // cgo -godefs types_freebsd.go 3 | 4 | package pty 5 | 6 | const ( 7 | _C_SPECNAMELEN = 0x3f 8 | ) 9 | 10 | type fiodgnameArg struct { 11 | Len int32 12 | Buf *byte 13 | } 14 | -------------------------------------------------------------------------------- /vendor/github.com/creack/pty/ztypes_freebsd_amd64.go: -------------------------------------------------------------------------------- 1 | // Created by cgo -godefs - DO NOT EDIT 2 | // cgo -godefs types_freebsd.go 3 | 4 | package pty 5 | 6 | const ( 7 | _C_SPECNAMELEN = 0x3f 8 | ) 9 | 10 | type fiodgnameArg struct { 11 | Len int32 12 | Pad_cgo_0 [4]byte 13 | Buf *byte 14 | } 15 | -------------------------------------------------------------------------------- /vendor/github.com/creack/pty/ztypes_freebsd_arm.go: -------------------------------------------------------------------------------- 1 | // Created by cgo -godefs - DO NOT EDIT 2 | // cgo -godefs types_freebsd.go 3 | 4 | package pty 5 | 6 | const ( 7 | _C_SPECNAMELEN = 0x3f 8 | ) 9 | 10 | type fiodgnameArg struct { 11 | Len int32 12 | Buf *byte 13 | } 14 | -------------------------------------------------------------------------------- /vendor/github.com/creack/pty/ztypes_freebsd_arm64.go: -------------------------------------------------------------------------------- 1 | // Code generated by cmd/cgo -godefs; DO NOT EDIT. 2 | // cgo -godefs types_freebsd.go 3 | 4 | package pty 5 | 6 | const ( 7 | _C_SPECNAMELEN = 0xff 8 | ) 9 | 10 | type fiodgnameArg struct { 11 | Len int32 12 | Buf *byte 13 | } 14 | -------------------------------------------------------------------------------- /vendor/github.com/creack/pty/ztypes_mipsx.go: -------------------------------------------------------------------------------- 1 | // Created by cgo -godefs - DO NOT EDIT 2 | // cgo -godefs types.go 3 | 4 | // +build linux 5 | // +build mips mipsle mips64 mips64le 6 | 7 | package pty 8 | 9 | type ( 10 | _C_int int32 11 | _C_uint uint32 12 | ) 13 | -------------------------------------------------------------------------------- /vendor/github.com/creack/pty/ztypes_openbsd_32bit_int.go: -------------------------------------------------------------------------------- 1 | // +build openbsd 2 | // +build 386 amd64 arm arm64 3 | 4 | package pty 5 | 6 | type ptmget struct { 7 | Cfd int32 8 | Sfd int32 9 | Cn [16]int8 10 | Sn [16]int8 11 | } 12 | 13 | var ioctl_PTMGET = 0x40287401 14 | -------------------------------------------------------------------------------- /vendor/github.com/creack/pty/ztypes_ppc64.go: -------------------------------------------------------------------------------- 1 | // +build ppc64 2 | 3 | // Created by cgo -godefs - DO NOT EDIT 4 | // cgo -godefs types.go 5 | 6 | package pty 7 | 8 | type ( 9 | _C_int int32 10 | _C_uint uint32 11 | ) 12 | -------------------------------------------------------------------------------- /vendor/github.com/creack/pty/ztypes_ppc64le.go: -------------------------------------------------------------------------------- 1 | // +build ppc64le 2 | 3 | // Created by cgo -godefs - DO NOT EDIT 4 | // cgo -godefs types.go 5 | 6 | package pty 7 | 8 | type ( 9 | _C_int int32 10 | _C_uint uint32 11 | ) 12 | -------------------------------------------------------------------------------- /vendor/github.com/creack/pty/ztypes_riscvx.go: -------------------------------------------------------------------------------- 1 | // Code generated by cmd/cgo -godefs; DO NOT EDIT. 2 | // cgo -godefs types.go 3 | 4 | // +build riscv riscv64 5 | 6 | package pty 7 | 8 | type ( 9 | _C_int int32 10 | _C_uint uint32 11 | ) 12 | -------------------------------------------------------------------------------- /vendor/github.com/creack/pty/ztypes_s390x.go: -------------------------------------------------------------------------------- 1 | // +build s390x 2 | 3 | // Created by cgo -godefs - DO NOT EDIT 4 | // cgo -godefs types.go 5 | 6 | package pty 7 | 8 | type ( 9 | _C_int int32 10 | _C_uint uint32 11 | ) 12 | -------------------------------------------------------------------------------- /vendor/github.com/cyphar/filepath-securejoin/VERSION: -------------------------------------------------------------------------------- 1 | 0.4.1 2 | -------------------------------------------------------------------------------- /vendor/github.com/cyphar/filepath-securejoin/gocompat_errors_go120.go: -------------------------------------------------------------------------------- 1 | //go:build linux && go1.20 2 | 3 | // Copyright (C) 2024 SUSE LLC. All rights reserved. 4 | // Use of this source code is governed by a BSD-style 5 | // license that can be found in the LICENSE file. 6 | 7 | package securejoin 8 | 9 | import ( 10 | "fmt" 11 | ) 12 | 13 | // wrapBaseError is a helper that is equivalent to fmt.Errorf("%w: %w"), except 14 | // that on pre-1.20 Go versions only errors.Is() works properly (errors.Unwrap) 15 | // is only guaranteed to give you baseErr. 16 | func wrapBaseError(baseErr, extraErr error) error { 17 | return fmt.Errorf("%w: %w", extraErr, baseErr) 18 | } 19 | -------------------------------------------------------------------------------- /vendor/github.com/gdamore/encoding/SECURITY.md: -------------------------------------------------------------------------------- 1 | # Security Policy 2 | 3 | We take security very seriously in mangos, since you may be using it in 4 | Internet-facing applications. 5 | 6 | ## Reporting a Vulnerability 7 | 8 | To report a vulnerability, please contact us on our discord. 9 | You may also send an email to garrett@damore.org, or info@staysail.tech. 10 | 11 | We will keep the reporter updated on any status updates on a regular basis, 12 | and will respond within two business days for any reported security issue. 13 | -------------------------------------------------------------------------------- /vendor/github.com/gdamore/encoding/doc.go: -------------------------------------------------------------------------------- 1 | // Copyright 2015 Garrett D'Amore 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use file except in compliance with the License. 5 | // You may obtain a copy of the license at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | // Package encoding provides a few of the encoding structures that are 16 | // missing from the Go x/text/encoding tree. 17 | package encoding 18 | -------------------------------------------------------------------------------- /vendor/github.com/gdamore/tcell/v2/.gitignore: -------------------------------------------------------------------------------- 1 | coverage.txt 2 | -------------------------------------------------------------------------------- /vendor/github.com/gdamore/tcell/v2/AUTHORS: -------------------------------------------------------------------------------- 1 | Garrett D'Amore 2 | Zachary Yedidia 3 | Junegunn Choi 4 | Staysail Systems, Inc. 5 | -------------------------------------------------------------------------------- /vendor/github.com/gdamore/tcell/v2/SECURITY.md: -------------------------------------------------------------------------------- 1 | # SECURITY 2 | 3 | It's somewhat unlikely that tcell is in a security sensitive path, 4 | but we do take security seriously. 5 | 6 | ## Vulnerabilityu Response 7 | 8 | If you report a vulnerability, we will respond within 2 business days. 9 | 10 | ## Report a Vulnerability 11 | 12 | If you wish to report a vulnerability found in tcell, simply send a message 13 | to garrett@damore.org. You may also reach us on our discord channel - 14 | https://discord.gg/urTTxDN - a private message to `gdamore` on that channel 15 | may be submitted instead of mail. 16 | -------------------------------------------------------------------------------- /vendor/github.com/gdamore/tcell/v2/charset_stub.go: -------------------------------------------------------------------------------- 1 | //go:build plan9 || nacl 2 | // +build plan9 nacl 3 | 4 | // Copyright 2015 The TCell Authors 5 | // 6 | // Licensed under the Apache License, Version 2.0 (the "License"); 7 | // you may not use file except in compliance with the License. 8 | // You may obtain a copy of the license at 9 | // 10 | // http://www.apache.org/licenses/LICENSE-2.0 11 | // 12 | // Unless required by applicable law or agreed to in writing, software 13 | // distributed under the License is distributed on an "AS IS" BASIS, 14 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | // See the License for the specific language governing permissions and 16 | // limitations under the License. 17 | 18 | package tcell 19 | 20 | func getCharset() string { 21 | return "" 22 | } 23 | -------------------------------------------------------------------------------- /vendor/github.com/gdamore/tcell/v2/charset_windows.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | // +build windows 3 | 4 | // Copyright 2015 The TCell Authors 5 | // 6 | // Licensed under the Apache License, Version 2.0 (the "License"); 7 | // you may not use file except in compliance with the License. 8 | // You may obtain a copy of the license at 9 | // 10 | // http://www.apache.org/licenses/LICENSE-2.0 11 | // 12 | // Unless required by applicable law or agreed to in writing, software 13 | // distributed under the License is distributed on an "AS IS" BASIS, 14 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | // See the License for the specific language governing permissions and 16 | // limitations under the License. 17 | 18 | package tcell 19 | 20 | func getCharset() string { 21 | return "UTF-16" 22 | } 23 | -------------------------------------------------------------------------------- /vendor/github.com/gdamore/tcell/v2/terminfo/.gitignore: -------------------------------------------------------------------------------- 1 | mkinfo 2 | -------------------------------------------------------------------------------- /vendor/github.com/gdamore/tcell/v2/terminfo/TERMINALS.md: -------------------------------------------------------------------------------- 1 | TERMINALS 2 | ========= 3 | 4 | The best way to populate terminals on Debian is to install ncurses, 5 | ncurses-term, screen, tmux, rxvt-unicode, and dvtm. This populates the 6 | the terminfo database so that we can have a reasonable set of starting 7 | terminals. 8 | -------------------------------------------------------------------------------- /vendor/github.com/gdamore/tcell/v2/terminfo/gen.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | while read line 3 | do 4 | case "$line" in 5 | *'|'*) 6 | alias=${line#*|} 7 | line=${line%|*} 8 | ;; 9 | *) 10 | alias=${line%%,*} 11 | ;; 12 | esac 13 | 14 | alias=${alias//-/_} 15 | direc=${alias:0:1} 16 | 17 | mkdir -p ${direc}/${alias} 18 | go run mkinfo.go -P ${alias} -go ${direc}/${alias}/term.go ${line//,/ } 19 | done < models.txt 20 | -------------------------------------------------------------------------------- /vendor/github.com/gdamore/tcell/v2/terminfo/models.txt: -------------------------------------------------------------------------------- 1 | aixterm 2 | alacritty 3 | ansi 4 | beterm 5 | cygwin 6 | dtterm 7 | eterm,eterm-color|emacs 8 | gnome,gnome-256color 9 | hpterm 10 | konsole,konsole-256color 11 | kterm 12 | linux 13 | pcansi 14 | rxvt,rxvt-256color,rxvt-88color,rxvt-unicode,rxvt-unicode-256color 15 | screen,screen-256color 16 | st,st-256color|simpleterm 17 | tmux,tmux-256color 18 | vt52 19 | vt100 20 | vt102 21 | vt220 22 | vt320 23 | vt400 24 | vt420 25 | wy50 26 | wy60 27 | wy99-ansi,wy99a-ansi 28 | xfce 29 | xterm,xterm-88color,xterm-256color 30 | xterm-ghostty 31 | xterm-kitty 32 | -------------------------------------------------------------------------------- /vendor/github.com/go-git/gcfg/.gitignore: -------------------------------------------------------------------------------- 1 | coverage.out 2 | -------------------------------------------------------------------------------- /vendor/github.com/go-git/gcfg/Makefile: -------------------------------------------------------------------------------- 1 | # General 2 | WORKDIR = $(PWD) 3 | 4 | # Go parameters 5 | GOCMD = go 6 | GOTEST = $(GOCMD) test 7 | 8 | # Coverage 9 | COVERAGE_REPORT = coverage.out 10 | COVERAGE_MODE = count 11 | 12 | test: 13 | $(GOTEST) ./... 14 | 15 | test-coverage: 16 | echo "" > $(COVERAGE_REPORT); \ 17 | $(GOTEST) -coverprofile=$(COVERAGE_REPORT) -coverpkg=./... -covermode=$(COVERAGE_MODE) ./... 18 | -------------------------------------------------------------------------------- /vendor/github.com/go-git/gcfg/README: -------------------------------------------------------------------------------- 1 | Gcfg reads INI-style configuration files into Go structs; 2 | supports user-defined types and subsections. 3 | 4 | Package docs: https://godoc.org/gopkg.in/gcfg.v1 5 | -------------------------------------------------------------------------------- /vendor/github.com/go-git/gcfg/types/bool.go: -------------------------------------------------------------------------------- 1 | package types 2 | 3 | // BoolValues defines the name and value mappings for ParseBool. 4 | var BoolValues = map[string]interface{}{ 5 | "true": true, "yes": true, "on": true, "1": true, 6 | "false": false, "no": false, "off": false, "0": false, 7 | } 8 | 9 | var boolParser = func() *EnumParser { 10 | ep := &EnumParser{} 11 | ep.AddVals(BoolValues) 12 | return ep 13 | }() 14 | 15 | // ParseBool parses bool values according to the definitions in BoolValues. 16 | // Parsing is case-insensitive. 17 | func ParseBool(s string) (bool, error) { 18 | v, err := boolParser.Parse(s) 19 | if err != nil { 20 | return false, err 21 | } 22 | return v.(bool), nil 23 | } 24 | -------------------------------------------------------------------------------- /vendor/github.com/go-git/gcfg/types/doc.go: -------------------------------------------------------------------------------- 1 | // Package types defines helpers for type conversions. 2 | // 3 | // The API for this package is not finalized yet. 4 | package types 5 | -------------------------------------------------------------------------------- /vendor/github.com/go-git/gcfg/types/scan.go: -------------------------------------------------------------------------------- 1 | package types 2 | 3 | import ( 4 | "fmt" 5 | "io" 6 | "reflect" 7 | ) 8 | 9 | // ScanFully uses fmt.Sscanf with verb to fully scan val into ptr. 10 | func ScanFully(ptr interface{}, val string, verb byte) error { 11 | t := reflect.ValueOf(ptr).Elem().Type() 12 | // attempt to read extra bytes to make sure the value is consumed 13 | var b []byte 14 | n, err := fmt.Sscanf(val, "%"+string(verb)+"%s", ptr, &b) 15 | switch { 16 | case n < 1 || n == 1 && err != io.EOF: 17 | return fmt.Errorf("failed to parse %q as %v: %v", val, t, err) 18 | case n > 1: 19 | return fmt.Errorf("failed to parse %q as %v: extra characters %q", val, t, string(b)) 20 | } 21 | // n == 1 && err == io.EOF 22 | return nil 23 | } 24 | -------------------------------------------------------------------------------- /vendor/github.com/go-git/go-billy/v5/.gitignore: -------------------------------------------------------------------------------- 1 | /coverage.txt 2 | /vendor 3 | Gopkg.lock 4 | Gopkg.toml 5 | -------------------------------------------------------------------------------- /vendor/github.com/go-git/go-billy/v5/Makefile: -------------------------------------------------------------------------------- 1 | # Go parameters 2 | GOCMD = go 3 | GOTEST = $(GOCMD) test 4 | WASIRUN_WRAPPER := $(CURDIR)/scripts/wasirun-wrapper 5 | 6 | .PHONY: test 7 | test: 8 | $(GOTEST) -race ./... 9 | 10 | test-coverage: 11 | echo "" > $(COVERAGE_REPORT); \ 12 | $(GOTEST) -coverprofile=$(COVERAGE_REPORT) -coverpkg=./... -covermode=$(COVERAGE_MODE) ./... 13 | 14 | .PHONY: wasitest 15 | wasitest: export GOARCH=wasm 16 | wasitest: export GOOS=wasip1 17 | wasitest: 18 | $(GOTEST) -exec $(WASIRUN_WRAPPER) ./... 19 | -------------------------------------------------------------------------------- /vendor/github.com/go-git/go-billy/v5/osfs/os_js.go: -------------------------------------------------------------------------------- 1 | //go:build js 2 | // +build js 3 | 4 | package osfs 5 | 6 | import ( 7 | "github.com/go-git/go-billy/v5" 8 | "github.com/go-git/go-billy/v5/helper/chroot" 9 | "github.com/go-git/go-billy/v5/memfs" 10 | ) 11 | 12 | // globalMemFs is the global memory fs 13 | var globalMemFs = memfs.New() 14 | 15 | // Default Filesystem representing the root of in-memory filesystem for a 16 | // js/wasm environment. 17 | var Default = memfs.New() 18 | 19 | // New returns a new OS filesystem. 20 | func New(baseDir string, _ ...Option) billy.Filesystem { 21 | return chroot.New(Default, Default.Join("/", baseDir)) 22 | } 23 | 24 | type options struct { 25 | } 26 | -------------------------------------------------------------------------------- /vendor/github.com/go-git/go-billy/v5/osfs/os_options.go: -------------------------------------------------------------------------------- 1 | package osfs 2 | 3 | type Option func(*options) 4 | -------------------------------------------------------------------------------- /vendor/github.com/go-git/go-billy/v5/osfs/os_wasip1.go: -------------------------------------------------------------------------------- 1 | //go:build wasip1 2 | // +build wasip1 3 | 4 | package osfs 5 | 6 | import ( 7 | "os" 8 | "syscall" 9 | ) 10 | 11 | func (f *file) Lock() error { 12 | f.m.Lock() 13 | defer f.m.Unlock() 14 | return nil 15 | } 16 | 17 | func (f *file) Unlock() error { 18 | f.m.Lock() 19 | defer f.m.Unlock() 20 | return nil 21 | } 22 | 23 | func rename(from, to string) error { 24 | return os.Rename(from, to) 25 | } 26 | 27 | // umask sets umask to a new value, and returns a func which allows the 28 | // caller to reset it back to what it was originally. 29 | func umask(new int) func() { 30 | old := syscall.Umask(new) 31 | return func() { 32 | syscall.Umask(old) 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /vendor/github.com/go-logfmt/logfmt/.gitignore: -------------------------------------------------------------------------------- 1 | .vscode/ 2 | -------------------------------------------------------------------------------- /vendor/github.com/go-logfmt/logfmt/doc.go: -------------------------------------------------------------------------------- 1 | // Package logfmt implements utilities to marshal and unmarshal data in the 2 | // logfmt format. The logfmt format records key/value pairs in a way that 3 | // balances readability for humans and simplicity of computer parsing. It is 4 | // most commonly used as a more human friendly alternative to JSON for 5 | // structured logging. 6 | package logfmt 7 | -------------------------------------------------------------------------------- /vendor/github.com/gobwas/glob/.gitignore: -------------------------------------------------------------------------------- 1 | glob.iml 2 | .idea 3 | *.cpu 4 | *.mem 5 | *.test 6 | *.dot 7 | *.png 8 | *.svg 9 | -------------------------------------------------------------------------------- /vendor/github.com/gobwas/glob/bench.sh: -------------------------------------------------------------------------------- 1 | #! /bin/bash 2 | 3 | bench() { 4 | filename="/tmp/$1-$2.bench" 5 | if test -e "${filename}"; 6 | then 7 | echo "Already exists ${filename}" 8 | else 9 | backup=`git rev-parse --abbrev-ref HEAD` 10 | git checkout $1 11 | echo -n "Creating ${filename}... " 12 | go test ./... -run=NONE -bench=$2 > "${filename}" -benchmem 13 | echo "OK" 14 | git checkout ${backup} 15 | sleep 5 16 | fi 17 | } 18 | 19 | 20 | to=$1 21 | current=`git rev-parse --abbrev-ref HEAD` 22 | 23 | bench ${to} $2 24 | bench ${current} $2 25 | 26 | benchcmp $3 "/tmp/${to}-$2.bench" "/tmp/${current}-$2.bench" 27 | -------------------------------------------------------------------------------- /vendor/github.com/gobwas/glob/match/nothing.go: -------------------------------------------------------------------------------- 1 | package match 2 | 3 | import ( 4 | "fmt" 5 | ) 6 | 7 | type Nothing struct{} 8 | 9 | func NewNothing() Nothing { 10 | return Nothing{} 11 | } 12 | 13 | func (self Nothing) Match(s string) bool { 14 | return len(s) == 0 15 | } 16 | 17 | func (self Nothing) Index(s string) (int, []int) { 18 | return 0, segments0 19 | } 20 | 21 | func (self Nothing) Len() int { 22 | return lenZero 23 | } 24 | 25 | func (self Nothing) String() string { 26 | return fmt.Sprintf("") 27 | } 28 | -------------------------------------------------------------------------------- /vendor/github.com/gobwas/glob/match/suffix.go: -------------------------------------------------------------------------------- 1 | package match 2 | 3 | import ( 4 | "fmt" 5 | "strings" 6 | ) 7 | 8 | type Suffix struct { 9 | Suffix string 10 | } 11 | 12 | func NewSuffix(s string) Suffix { 13 | return Suffix{s} 14 | } 15 | 16 | func (self Suffix) Len() int { 17 | return lenNo 18 | } 19 | 20 | func (self Suffix) Match(s string) bool { 21 | return strings.HasSuffix(s, self.Suffix) 22 | } 23 | 24 | func (self Suffix) Index(s string) (int, []int) { 25 | idx := strings.Index(s, self.Suffix) 26 | if idx == -1 { 27 | return -1, nil 28 | } 29 | 30 | return 0, []int{idx + len(self.Suffix)} 31 | } 32 | 33 | func (self Suffix) String() string { 34 | return fmt.Sprintf("", self.Suffix) 35 | } 36 | -------------------------------------------------------------------------------- /vendor/github.com/gobwas/glob/match/super.go: -------------------------------------------------------------------------------- 1 | package match 2 | 3 | import ( 4 | "fmt" 5 | ) 6 | 7 | type Super struct{} 8 | 9 | func NewSuper() Super { 10 | return Super{} 11 | } 12 | 13 | func (self Super) Match(s string) bool { 14 | return true 15 | } 16 | 17 | func (self Super) Len() int { 18 | return lenNo 19 | } 20 | 21 | func (self Super) Index(s string) (int, []int) { 22 | segments := acquireSegments(len(s) + 1) 23 | for i := range s { 24 | segments = append(segments, i) 25 | } 26 | segments = append(segments, len(s)) 27 | 28 | return 0, segments 29 | } 30 | 31 | func (self Super) String() string { 32 | return fmt.Sprintf("") 33 | } 34 | -------------------------------------------------------------------------------- /vendor/github.com/gobwas/glob/syntax/syntax.go: -------------------------------------------------------------------------------- 1 | package syntax 2 | 3 | import ( 4 | "github.com/gobwas/glob/syntax/ast" 5 | "github.com/gobwas/glob/syntax/lexer" 6 | ) 7 | 8 | func Parse(s string) (*ast.Node, error) { 9 | return ast.Parse(lexer.NewLexer(s)) 10 | } 11 | 12 | func Special(b byte) bool { 13 | return lexer.Special(b) 14 | } 15 | -------------------------------------------------------------------------------- /vendor/github.com/gobwas/glob/util/strings/strings.go: -------------------------------------------------------------------------------- 1 | package strings 2 | 3 | import ( 4 | "strings" 5 | "unicode/utf8" 6 | ) 7 | 8 | func IndexAnyRunes(s string, rs []rune) int { 9 | for _, r := range rs { 10 | if i := strings.IndexRune(s, r); i != -1 { 11 | return i 12 | } 13 | } 14 | 15 | return -1 16 | } 17 | 18 | func LastIndexAnyRunes(s string, rs []rune) int { 19 | for _, r := range rs { 20 | i := -1 21 | if 0 <= r && r < utf8.RuneSelf { 22 | i = strings.LastIndexByte(s, byte(r)) 23 | } else { 24 | sub := s 25 | for len(sub) > 0 { 26 | j := strings.IndexRune(s, r) 27 | if j == -1 { 28 | break 29 | } 30 | i = j 31 | sub = sub[i+1:] 32 | } 33 | } 34 | if i != -1 { 35 | return i 36 | } 37 | } 38 | return -1 39 | } 40 | -------------------------------------------------------------------------------- /vendor/github.com/gookit/color/.gitignore: -------------------------------------------------------------------------------- 1 | *.log 2 | *.swp 3 | .idea 4 | *.patch 5 | ### Go template 6 | # Binaries for programs and plugins 7 | *.exe 8 | *.exe~ 9 | *.dll 10 | *.so 11 | *.dylib 12 | 13 | # Test binary, build with `go test -c` 14 | *.test 15 | 16 | # Output of the go coverage tool, specifically when used with LiteIDE 17 | *.out 18 | .DS_Store 19 | app 20 | demo 21 | -------------------------------------------------------------------------------- /vendor/github.com/integrii/flaggy/.gitignore: -------------------------------------------------------------------------------- 1 | # Binaries for programs and plugins 2 | *.exe 3 | *.dll 4 | *.so 5 | *.dylib 6 | 7 | # Test binary, build with `go test -c` 8 | *.test 9 | 10 | # Output of the go coverage tool, specifically when used with LiteIDE 11 | *.out 12 | 13 | # Project-local glide cache, RE: https://github.com/Masterminds/glide/issues/736 14 | .glide/ 15 | 16 | .idea/ 17 | -------------------------------------------------------------------------------- /vendor/github.com/integrii/flaggy/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jesseduffield/lazygit/aa331e52b8a0e5da03c59ee6b9bd1d2a9073618c/vendor/github.com/integrii/flaggy/logo.png -------------------------------------------------------------------------------- /vendor/github.com/integrii/flaggy/positionalValue.go: -------------------------------------------------------------------------------- 1 | package flaggy 2 | 3 | // PositionalValue represents a value which is determined by its position 4 | // relative to where a subcommand was detected. 5 | type PositionalValue struct { 6 | Name string // used in documentation only 7 | Description string 8 | AssignmentVar *string // the var that will get this variable 9 | Position int // the position, not including switches, of this variable 10 | Required bool // this subcommand must always be specified 11 | Found bool // was this positional found during parsing? 12 | Hidden bool // indicates this positional value should be hidden from help 13 | defaultValue string // used for help output 14 | } 15 | -------------------------------------------------------------------------------- /vendor/github.com/jesseduffield/go-git/v5/.gitignore: -------------------------------------------------------------------------------- 1 | coverage.out 2 | *~ 3 | coverage.txt 4 | profile.out 5 | .tmp/ 6 | .git-dist/ 7 | .vscode 8 | -------------------------------------------------------------------------------- /vendor/github.com/jesseduffield/go-git/v5/common.go: -------------------------------------------------------------------------------- 1 | package git 2 | 3 | import "strings" 4 | 5 | // countLines returns the number of lines in a string à la git, this is 6 | // The newline character is assumed to be '\n'. The empty string 7 | // contains 0 lines. If the last line of the string doesn't end with a 8 | // newline, it will still be considered a line. 9 | func countLines(s string) int { 10 | if s == "" { 11 | return 0 12 | } 13 | 14 | nEOL := strings.Count(s, "\n") 15 | if strings.HasSuffix(s, "\n") { 16 | return nEOL 17 | } 18 | 19 | return nEOL + 1 20 | } 21 | -------------------------------------------------------------------------------- /vendor/github.com/jesseduffield/go-git/v5/doc.go: -------------------------------------------------------------------------------- 1 | // A highly extensible git implementation in pure Go. 2 | // 3 | // go-git aims to reach the completeness of libgit2 or jgit, nowadays covers the 4 | // majority of the plumbing read operations and some of the main write 5 | // operations, but lacks the main porcelain operations such as merges. 6 | // 7 | // It is highly extensible, we have been following the open/close principle in 8 | // its design to facilitate extensions, mainly focusing the efforts on the 9 | // persistence of the objects. 10 | package git 11 | -------------------------------------------------------------------------------- /vendor/github.com/jesseduffield/go-git/v5/internal/path_util/path_util.go: -------------------------------------------------------------------------------- 1 | package path_util 2 | 3 | import ( 4 | "os" 5 | "os/user" 6 | "strings" 7 | ) 8 | 9 | func ReplaceTildeWithHome(path string) (string, error) { 10 | if strings.HasPrefix(path, "~") { 11 | firstSlash := strings.Index(path, "/") 12 | if firstSlash == 1 { 13 | home, err := os.UserHomeDir() 14 | if err != nil { 15 | return path, err 16 | } 17 | return strings.Replace(path, "~", home, 1), nil 18 | } else if firstSlash > 1 { 19 | username := path[1:firstSlash] 20 | userAccount, err := user.Lookup(username) 21 | if err != nil { 22 | return path, err 23 | } 24 | return strings.Replace(path, path[:firstSlash], userAccount.HomeDir, 1), nil 25 | } 26 | } 27 | 28 | return path, nil 29 | } 30 | -------------------------------------------------------------------------------- /vendor/github.com/jesseduffield/go-git/v5/internal/revision/token.go: -------------------------------------------------------------------------------- 1 | package revision 2 | 3 | // token represents a entity extracted from string parsing 4 | type token int 5 | 6 | const ( 7 | eof token = iota 8 | 9 | aslash 10 | asterisk 11 | at 12 | caret 13 | cbrace 14 | colon 15 | control 16 | dot 17 | emark 18 | minus 19 | number 20 | obrace 21 | obracket 22 | qmark 23 | slash 24 | space 25 | tilde 26 | tokenError 27 | word 28 | ) 29 | -------------------------------------------------------------------------------- /vendor/github.com/jesseduffield/go-git/v5/plumbing/error.go: -------------------------------------------------------------------------------- 1 | package plumbing 2 | 3 | import "fmt" 4 | 5 | type PermanentError struct { 6 | Err error 7 | } 8 | 9 | func NewPermanentError(err error) *PermanentError { 10 | if err == nil { 11 | return nil 12 | } 13 | 14 | return &PermanentError{Err: err} 15 | } 16 | 17 | func (e *PermanentError) Error() string { 18 | return fmt.Sprintf("permanent client error: %s", e.Err.Error()) 19 | } 20 | 21 | type UnexpectedError struct { 22 | Err error 23 | } 24 | 25 | func NewUnexpectedError(err error) *UnexpectedError { 26 | if err == nil { 27 | return nil 28 | } 29 | 30 | return &UnexpectedError{Err: err} 31 | } 32 | 33 | func (e *UnexpectedError) Error() string { 34 | return fmt.Sprintf("unexpected client error: %s", e.Err.Error()) 35 | } 36 | -------------------------------------------------------------------------------- /vendor/github.com/jesseduffield/go-git/v5/plumbing/format/objfile/doc.go: -------------------------------------------------------------------------------- 1 | // Package objfile implements encoding and decoding of object files. 2 | package objfile 3 | -------------------------------------------------------------------------------- /vendor/github.com/jesseduffield/go-git/v5/plumbing/hash/hash_sha1.go: -------------------------------------------------------------------------------- 1 | //go:build !sha256 2 | // +build !sha256 3 | 4 | package hash 5 | 6 | import "crypto" 7 | 8 | const ( 9 | // CryptoType defines what hash algorithm is being used. 10 | CryptoType = crypto.SHA1 11 | // Size defines the amount of bytes the hash yields. 12 | Size = 20 13 | // HexSize defines the strings size of the hash when represented in hexadecimal. 14 | HexSize = 40 15 | ) 16 | -------------------------------------------------------------------------------- /vendor/github.com/jesseduffield/go-git/v5/plumbing/hash/hash_sha256.go: -------------------------------------------------------------------------------- 1 | //go:build sha256 2 | // +build sha256 3 | 4 | package hash 5 | 6 | import "crypto" 7 | 8 | const ( 9 | // CryptoType defines what hash algorithm is being used. 10 | CryptoType = crypto.SHA256 11 | // Size defines the amount of bytes the hash yields. 12 | Size = 32 13 | // HexSize defines the strings size of the hash when represented in hexadecimal. 14 | HexSize = 64 15 | ) 16 | -------------------------------------------------------------------------------- /vendor/github.com/jesseduffield/go-git/v5/plumbing/revision.go: -------------------------------------------------------------------------------- 1 | package plumbing 2 | 3 | // Revision represents a git revision 4 | // to get more details about git revisions 5 | // please check git manual page : 6 | // https://www.kernel.org/pub/software/scm/git/docs/gitrevisions.html 7 | type Revision string 8 | 9 | func (r Revision) String() string { 10 | return string(r) 11 | } 12 | -------------------------------------------------------------------------------- /vendor/github.com/jesseduffield/go-git/v5/plumbing/storer/doc.go: -------------------------------------------------------------------------------- 1 | // Package storer defines the interfaces to store objects, references, etc. 2 | package storer 3 | -------------------------------------------------------------------------------- /vendor/github.com/jesseduffield/go-git/v5/plumbing/storer/index.go: -------------------------------------------------------------------------------- 1 | package storer 2 | 3 | import "github.com/jesseduffield/go-git/v5/plumbing/format/index" 4 | 5 | // IndexStorer generic storage of index.Index 6 | type IndexStorer interface { 7 | SetIndex(*index.Index) error 8 | Index() (*index.Index, error) 9 | } 10 | -------------------------------------------------------------------------------- /vendor/github.com/jesseduffield/go-git/v5/plumbing/storer/shallow.go: -------------------------------------------------------------------------------- 1 | package storer 2 | 3 | import "github.com/jesseduffield/go-git/v5/plumbing" 4 | 5 | // ShallowStorer is a storage of references to shallow commits by hash, 6 | // meaning that these commits have missing parents because of a shallow fetch. 7 | type ShallowStorer interface { 8 | SetShallow([]plumbing.Hash) error 9 | Shallow() ([]plumbing.Hash, error) 10 | } 11 | -------------------------------------------------------------------------------- /vendor/github.com/jesseduffield/go-git/v5/plumbing/storer/storer.go: -------------------------------------------------------------------------------- 1 | package storer 2 | 3 | // Storer is a basic storer for encoded objects and references. 4 | type Storer interface { 5 | EncodedObjectStorer 6 | ReferenceStorer 7 | } 8 | 9 | // Initializer should be implemented by storers that require to perform any 10 | // operation when creating a new repository (i.e. git init). 11 | type Initializer interface { 12 | // Init performs initialization of the storer and returns the error, if 13 | // any. 14 | Init() error 15 | } 16 | -------------------------------------------------------------------------------- /vendor/github.com/jesseduffield/go-git/v5/storage/filesystem/module.go: -------------------------------------------------------------------------------- 1 | package filesystem 2 | 3 | import ( 4 | "github.com/jesseduffield/go-git/v5/plumbing/cache" 5 | "github.com/jesseduffield/go-git/v5/storage" 6 | "github.com/jesseduffield/go-git/v5/storage/filesystem/dotgit" 7 | ) 8 | 9 | type ModuleStorage struct { 10 | dir *dotgit.DotGit 11 | } 12 | 13 | func (s *ModuleStorage) Module(name string) (storage.Storer, error) { 14 | fs, err := s.dir.Module(name) 15 | if err != nil { 16 | return nil, err 17 | } 18 | 19 | return NewStorage(fs, cache.NewObjectLRUDefault()), nil 20 | } 21 | -------------------------------------------------------------------------------- /vendor/github.com/jesseduffield/go-git/v5/utils/sync/bufio.go: -------------------------------------------------------------------------------- 1 | package sync 2 | 3 | import ( 4 | "bufio" 5 | "io" 6 | "sync" 7 | ) 8 | 9 | var bufioReader = sync.Pool{ 10 | New: func() interface{} { 11 | return bufio.NewReader(nil) 12 | }, 13 | } 14 | 15 | // GetBufioReader returns a *bufio.Reader that is managed by a sync.Pool. 16 | // Returns a bufio.Reader that is reset with reader and ready for use. 17 | // 18 | // After use, the *bufio.Reader should be put back into the sync.Pool 19 | // by calling PutBufioReader. 20 | func GetBufioReader(reader io.Reader) *bufio.Reader { 21 | r := bufioReader.Get().(*bufio.Reader) 22 | r.Reset(reader) 23 | return r 24 | } 25 | 26 | // PutBufioReader puts reader back into its sync.Pool. 27 | func PutBufioReader(reader *bufio.Reader) { 28 | bufioReader.Put(reader) 29 | } 30 | -------------------------------------------------------------------------------- /vendor/github.com/jesseduffield/go-git/v5/worktree_bsd.go: -------------------------------------------------------------------------------- 1 | // +build darwin freebsd netbsd 2 | 3 | package git 4 | 5 | import ( 6 | "syscall" 7 | "time" 8 | 9 | "github.com/jesseduffield/go-git/v5/plumbing/format/index" 10 | ) 11 | 12 | func init() { 13 | fillSystemInfo = func(e *index.Entry, sys interface{}) { 14 | if os, ok := sys.(*syscall.Stat_t); ok { 15 | e.CreatedAt = time.Unix(os.Atimespec.Unix()) 16 | e.Dev = uint32(os.Dev) 17 | e.Inode = uint32(os.Ino) 18 | e.GID = os.Gid 19 | e.UID = os.Uid 20 | } 21 | } 22 | } 23 | 24 | func isSymlinkWindowsNonAdmin(err error) bool { 25 | return false 26 | } 27 | -------------------------------------------------------------------------------- /vendor/github.com/jesseduffield/go-git/v5/worktree_js.go: -------------------------------------------------------------------------------- 1 | // +build js 2 | 3 | package git 4 | 5 | import ( 6 | "syscall" 7 | "time" 8 | 9 | "github.com/jesseduffield/go-git/v5/plumbing/format/index" 10 | ) 11 | 12 | func init() { 13 | fillSystemInfo = func(e *index.Entry, sys interface{}) { 14 | if os, ok := sys.(*syscall.Stat_t); ok { 15 | e.CreatedAt = time.Unix(int64(os.Ctime), int64(os.CtimeNsec)) 16 | e.Dev = uint32(os.Dev) 17 | e.Inode = uint32(os.Ino) 18 | e.GID = os.Gid 19 | e.UID = os.Uid 20 | } 21 | } 22 | } 23 | 24 | func isSymlinkWindowsNonAdmin(err error) bool { 25 | return false 26 | } 27 | -------------------------------------------------------------------------------- /vendor/github.com/jesseduffield/go-git/v5/worktree_linux.go: -------------------------------------------------------------------------------- 1 | //go:build linux 2 | // +build linux 3 | 4 | package git 5 | 6 | import ( 7 | "syscall" 8 | "time" 9 | 10 | "github.com/jesseduffield/go-git/v5/plumbing/format/index" 11 | ) 12 | 13 | func init() { 14 | fillSystemInfo = func(e *index.Entry, sys interface{}) { 15 | if os, ok := sys.(*syscall.Stat_t); ok { 16 | e.CreatedAt = time.Unix(os.Ctim.Unix()) 17 | e.Dev = uint32(os.Dev) 18 | e.Inode = uint32(os.Ino) 19 | e.GID = os.Gid 20 | e.UID = os.Uid 21 | } 22 | } 23 | } 24 | 25 | func isSymlinkWindowsNonAdmin(_ error) bool { 26 | return false 27 | } 28 | -------------------------------------------------------------------------------- /vendor/github.com/jesseduffield/go-git/v5/worktree_plan9.go: -------------------------------------------------------------------------------- 1 | package git 2 | 3 | import ( 4 | "syscall" 5 | "time" 6 | 7 | "github.com/jesseduffield/go-git/v5/plumbing/format/index" 8 | ) 9 | 10 | func init() { 11 | fillSystemInfo = func(e *index.Entry, sys interface{}) { 12 | if os, ok := sys.(*syscall.Dir); ok { 13 | // Plan 9 doesn't have a CreatedAt field. 14 | e.CreatedAt = time.Unix(int64(os.Mtime), 0) 15 | 16 | e.Dev = uint32(os.Dev) 17 | 18 | // Plan 9 has no Inode. 19 | // ext2srv(4) appears to store Inode in Qid.Path. 20 | e.Inode = uint32(os.Qid.Path) 21 | 22 | // Plan 9 has string UID/GID 23 | e.GID = 0 24 | e.UID = 0 25 | } 26 | } 27 | } 28 | 29 | func isSymlinkWindowsNonAdmin(err error) bool { 30 | return true 31 | } 32 | -------------------------------------------------------------------------------- /vendor/github.com/jesseduffield/go-git/v5/worktree_unix_other.go: -------------------------------------------------------------------------------- 1 | // +build openbsd dragonfly solaris 2 | 3 | package git 4 | 5 | import ( 6 | "syscall" 7 | "time" 8 | 9 | "github.com/jesseduffield/go-git/v5/plumbing/format/index" 10 | ) 11 | 12 | func init() { 13 | fillSystemInfo = func(e *index.Entry, sys interface{}) { 14 | if os, ok := sys.(*syscall.Stat_t); ok { 15 | e.CreatedAt = time.Unix(os.Atim.Unix()) 16 | e.Dev = uint32(os.Dev) 17 | e.Inode = uint32(os.Ino) 18 | e.GID = os.Gid 19 | e.UID = os.Uid 20 | } 21 | } 22 | } 23 | 24 | func isSymlinkWindowsNonAdmin(err error) bool { 25 | return false 26 | } 27 | -------------------------------------------------------------------------------- /vendor/github.com/jesseduffield/gocui/.gitignore: -------------------------------------------------------------------------------- 1 | *.swp 2 | -------------------------------------------------------------------------------- /vendor/github.com/jesseduffield/kill/README.md: -------------------------------------------------------------------------------- 1 | # Kill 2 | 3 | Go package for killing processes across different platforms. Handles killing children of processes as well as the process itself. 4 | -------------------------------------------------------------------------------- /vendor/github.com/jesseduffield/minimal/gitignore/testgitignore: -------------------------------------------------------------------------------- 1 | testgitignore 2 | *.o 3 | 4 | *.out* 5 | #*.ou 6 | aa 7 | bbb 8 | ccc/ 9 | **/Makefile 10 | /testfs/ignoredfile* 11 | -------------------------------------------------------------------------------- /vendor/github.com/kardianos/osext/osext_go18.go: -------------------------------------------------------------------------------- 1 | //+build go1.8,!openbsd 2 | 3 | package osext 4 | 5 | import "os" 6 | 7 | func executable() (string, error) { 8 | return os.Executable() 9 | } 10 | -------------------------------------------------------------------------------- /vendor/github.com/kardianos/osext/osext_plan9.go: -------------------------------------------------------------------------------- 1 | // Copyright 2012 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | //+build !go1.8 6 | 7 | package osext 8 | 9 | import ( 10 | "os" 11 | "strconv" 12 | "syscall" 13 | ) 14 | 15 | func executable() (string, error) { 16 | f, err := os.Open("/proc/" + strconv.Itoa(os.Getpid()) + "/text") 17 | if err != nil { 18 | return "", err 19 | } 20 | defer f.Close() 21 | return syscall.Fd2path(int(f.Fd())) 22 | } 23 | -------------------------------------------------------------------------------- /vendor/github.com/karimkhaleel/jsonschema/.gitignore: -------------------------------------------------------------------------------- 1 | vendor/ 2 | .idea/ 3 | -------------------------------------------------------------------------------- /vendor/github.com/kevinburke/ssh_config/.gitattributes: -------------------------------------------------------------------------------- 1 | testdata/dos-lines eol=crlf 2 | -------------------------------------------------------------------------------- /vendor/github.com/kevinburke/ssh_config/.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jesseduffield/lazygit/aa331e52b8a0e5da03c59ee6b9bd1d2a9073618c/vendor/github.com/kevinburke/ssh_config/.gitignore -------------------------------------------------------------------------------- /vendor/github.com/kevinburke/ssh_config/AUTHORS.txt: -------------------------------------------------------------------------------- 1 | Carlos A Becker 2 | Dustin Spicuzza 3 | Eugene Terentev 4 | Kevin Burke 5 | Mark Nevill 6 | Scott Lessans 7 | Sergey Lukjanov 8 | Wayne Ashley Berry 9 | santosh653 <70637961+santosh653@users.noreply.github.com> 10 | -------------------------------------------------------------------------------- /vendor/github.com/kevinburke/ssh_config/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Changes 2 | 3 | ## Version 1.2 4 | 5 | Previously, if a Host declaration or a value had trailing whitespace, that 6 | whitespace would have been included as part of the value. This led to unexpected 7 | consequences. For example: 8 | 9 | ``` 10 | Host example # A comment 11 | HostName example.com # Another comment 12 | ``` 13 | 14 | Prior to version 1.2, the value for Host would have been "example " and the 15 | value for HostName would have been "example.com ". Both of these are 16 | unintuitive. 17 | 18 | Instead, we strip the trailing whitespace in the configuration, which leads to 19 | more intuitive behavior. 20 | -------------------------------------------------------------------------------- /vendor/github.com/kr/logfmt/.gitignore: -------------------------------------------------------------------------------- 1 | *.test 2 | *.swp 3 | *.prof 4 | -------------------------------------------------------------------------------- /vendor/github.com/kyokomi/emoji/v2/.gitignore: -------------------------------------------------------------------------------- 1 | .idea 2 | emoji.iml 3 | -------------------------------------------------------------------------------- /vendor/github.com/mattn/go-colorable/go.test.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | set -e 4 | echo "" > coverage.txt 5 | 6 | for d in $(go list ./... | grep -v vendor); do 7 | go test -race -coverprofile=profile.out -covermode=atomic "$d" 8 | if [ -f profile.out ]; then 9 | cat profile.out >> coverage.txt 10 | rm profile.out 11 | fi 12 | done 13 | -------------------------------------------------------------------------------- /vendor/github.com/mattn/go-isatty/doc.go: -------------------------------------------------------------------------------- 1 | // Package isatty implements interface to isatty 2 | package isatty 3 | -------------------------------------------------------------------------------- /vendor/github.com/mattn/go-isatty/go.test.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | set -e 4 | echo "" > coverage.txt 5 | 6 | for d in $(go list ./... | grep -v vendor); do 7 | go test -race -coverprofile=profile.out -covermode=atomic "$d" 8 | if [ -f profile.out ]; then 9 | cat profile.out >> coverage.txt 10 | rm profile.out 11 | fi 12 | done 13 | -------------------------------------------------------------------------------- /vendor/github.com/mattn/go-isatty/isatty_bsd.go: -------------------------------------------------------------------------------- 1 | //go:build (darwin || freebsd || openbsd || netbsd || dragonfly) && !appengine 2 | // +build darwin freebsd openbsd netbsd dragonfly 3 | // +build !appengine 4 | 5 | package isatty 6 | 7 | import "golang.org/x/sys/unix" 8 | 9 | // IsTerminal return true if the file descriptor is terminal. 10 | func IsTerminal(fd uintptr) bool { 11 | _, err := unix.IoctlGetTermios(int(fd), unix.TIOCGETA) 12 | return err == nil 13 | } 14 | 15 | // IsCygwinTerminal return true if the file descriptor is a cygwin or msys2 16 | // terminal. This is also always false on this environment. 17 | func IsCygwinTerminal(fd uintptr) bool { 18 | return false 19 | } 20 | -------------------------------------------------------------------------------- /vendor/github.com/mattn/go-isatty/isatty_others.go: -------------------------------------------------------------------------------- 1 | //go:build appengine || js || nacl || wasm 2 | // +build appengine js nacl wasm 3 | 4 | package isatty 5 | 6 | // IsTerminal returns true if the file descriptor is terminal which 7 | // is always false on js and appengine classic which is a sandboxed PaaS. 8 | func IsTerminal(fd uintptr) bool { 9 | return false 10 | } 11 | 12 | // IsCygwinTerminal() return true if the file descriptor is a cygwin or msys2 13 | // terminal. This is also always false on this environment. 14 | func IsCygwinTerminal(fd uintptr) bool { 15 | return false 16 | } 17 | -------------------------------------------------------------------------------- /vendor/github.com/mattn/go-isatty/isatty_plan9.go: -------------------------------------------------------------------------------- 1 | //go:build plan9 2 | // +build plan9 3 | 4 | package isatty 5 | 6 | import ( 7 | "syscall" 8 | ) 9 | 10 | // IsTerminal returns true if the given file descriptor is a terminal. 11 | func IsTerminal(fd uintptr) bool { 12 | path, err := syscall.Fd2path(int(fd)) 13 | if err != nil { 14 | return false 15 | } 16 | return path == "/dev/cons" || path == "/mnt/term/dev/cons" 17 | } 18 | 19 | // IsCygwinTerminal return true if the file descriptor is a cygwin or msys2 20 | // terminal. This is also always false on this environment. 21 | func IsCygwinTerminal(fd uintptr) bool { 22 | return false 23 | } 24 | -------------------------------------------------------------------------------- /vendor/github.com/mattn/go-isatty/isatty_solaris.go: -------------------------------------------------------------------------------- 1 | //go:build solaris && !appengine 2 | // +build solaris,!appengine 3 | 4 | package isatty 5 | 6 | import ( 7 | "golang.org/x/sys/unix" 8 | ) 9 | 10 | // IsTerminal returns true if the given file descriptor is a terminal. 11 | // see: https://src.illumos.org/source/xref/illumos-gate/usr/src/lib/libc/port/gen/isatty.c 12 | func IsTerminal(fd uintptr) bool { 13 | _, err := unix.IoctlGetTermio(int(fd), unix.TCGETA) 14 | return err == nil 15 | } 16 | 17 | // IsCygwinTerminal return true if the file descriptor is a cygwin or msys2 18 | // terminal. This is also always false on this environment. 19 | func IsCygwinTerminal(fd uintptr) bool { 20 | return false 21 | } 22 | -------------------------------------------------------------------------------- /vendor/github.com/mattn/go-isatty/isatty_tcgets.go: -------------------------------------------------------------------------------- 1 | //go:build (linux || aix || zos) && !appengine 2 | // +build linux aix zos 3 | // +build !appengine 4 | 5 | package isatty 6 | 7 | import "golang.org/x/sys/unix" 8 | 9 | // IsTerminal return true if the file descriptor is terminal. 10 | func IsTerminal(fd uintptr) bool { 11 | _, err := unix.IoctlGetTermios(int(fd), unix.TCGETS) 12 | return err == nil 13 | } 14 | 15 | // IsCygwinTerminal return true if the file descriptor is a cygwin or msys2 16 | // terminal. This is also always false on this environment. 17 | func IsCygwinTerminal(fd uintptr) bool { 18 | return false 19 | } 20 | -------------------------------------------------------------------------------- /vendor/github.com/mattn/go-runewidth/runewidth_appengine.go: -------------------------------------------------------------------------------- 1 | //go:build appengine 2 | // +build appengine 3 | 4 | package runewidth 5 | 6 | // IsEastAsian return true if the current locale is CJK 7 | func IsEastAsian() bool { 8 | return false 9 | } 10 | -------------------------------------------------------------------------------- /vendor/github.com/mattn/go-runewidth/runewidth_js.go: -------------------------------------------------------------------------------- 1 | //go:build js && !appengine 2 | // +build js,!appengine 3 | 4 | package runewidth 5 | 6 | func IsEastAsian() bool { 7 | // TODO: Implement this for the web. Detect east asian in a compatible way, and return true. 8 | return false 9 | } 10 | -------------------------------------------------------------------------------- /vendor/github.com/mattn/go-runewidth/runewidth_windows.go: -------------------------------------------------------------------------------- 1 | //go:build windows && !appengine 2 | // +build windows,!appengine 3 | 4 | package runewidth 5 | 6 | import ( 7 | "syscall" 8 | ) 9 | 10 | var ( 11 | kernel32 = syscall.NewLazyDLL("kernel32") 12 | procGetConsoleOutputCP = kernel32.NewProc("GetConsoleOutputCP") 13 | ) 14 | 15 | // IsEastAsian return true if the current locale is CJK 16 | func IsEastAsian() bool { 17 | r1, _, _ := procGetConsoleOutputCP.Call() 18 | if r1 == 0 { 19 | return false 20 | } 21 | 22 | switch int(r1) { 23 | case 932, 51932, 936, 949, 950: 24 | return true 25 | } 26 | 27 | return false 28 | } 29 | -------------------------------------------------------------------------------- /vendor/github.com/mgutz/str/.gitignore: -------------------------------------------------------------------------------- 1 | tmp/ 2 | *.log 3 | _* 4 | node_modules 5 | example/dist 6 | /Gododir/godobin* 7 | /Gododir/Gododir 8 | -------------------------------------------------------------------------------- /vendor/github.com/mgutz/str/CREDITS: -------------------------------------------------------------------------------- 1 | * [string.js](http://stringjs.com) - I contributed several 2 | functions to this project. 3 | 4 | * [bbgen.net](http://bbgen.net/blog/2011/06/string-to-argc-argv/) 5 | 6 | -------------------------------------------------------------------------------- /vendor/github.com/mgutz/str/VERSION: -------------------------------------------------------------------------------- 1 | 1.1.0 2 | -------------------------------------------------------------------------------- /vendor/github.com/mgutz/str/doc.go: -------------------------------------------------------------------------------- 1 | // Package str is a comprehensive set of string functions to build more 2 | // Go awesomeness. Str complements Go's standard packages and does not duplicate 3 | // functionality found in `strings` or `strconv`. 4 | // 5 | // Str is based on plain functions instead of object-based methods, 6 | // consistent with Go standard string packages. 7 | // 8 | // str.Between("foo", "", "") == "foo" 9 | // 10 | // Str supports pipelining instead of chaining 11 | // 12 | // s := str.Pipe("\nabcdef\n", Clean, BetweenF("a", "f"), ChompLeftF("bc")) 13 | // 14 | // User-defined filters can be added to the pipeline by inserting a function 15 | // or closure that returns a function with this signature 16 | // 17 | // func(string) string 18 | // 19 | package str 20 | -------------------------------------------------------------------------------- /vendor/github.com/mitchellh/go-ps/.gitignore: -------------------------------------------------------------------------------- 1 | .vagrant/ 2 | -------------------------------------------------------------------------------- /vendor/github.com/petermattis/goid/.gitignore: -------------------------------------------------------------------------------- 1 | *~ 2 | *.test 3 | .*.swp 4 | .DS_Store 5 | -------------------------------------------------------------------------------- /vendor/github.com/petermattis/goid/README.md: -------------------------------------------------------------------------------- 1 | # goid ![Build Status](https://github.com/petermattis/goid/actions/workflows/go.yml/badge.svg) 2 | 3 | Programatically retrieve the current goroutine's ID. See [the CI 4 | configuration](.github/workflows/go.yml) for supported Go versions. 5 | -------------------------------------------------------------------------------- /vendor/github.com/petermattis/goid/goid_go1.4.s: -------------------------------------------------------------------------------- 1 | // Copyright 2014 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | // Assembly to get into package runtime without using exported symbols. 6 | // See https://github.com/golang/go/blob/release-branch.go1.4/misc/cgo/test/backdoor/thunk.s 7 | 8 | // +build amd64 amd64p32 arm 386 9 | // +build go1.4,!go1.5 10 | 11 | #include "textflag.h" 12 | 13 | #ifdef GOARCH_arm 14 | #define JMP B 15 | #endif 16 | 17 | TEXT ·getg(SB),NOSPLIT,$0-0 18 | JMP runtime·getg(SB) 19 | -------------------------------------------------------------------------------- /vendor/github.com/petermattis/goid/runtime_gccgo_go1.8.go: -------------------------------------------------------------------------------- 1 | //go:build gccgo && go1.8 2 | // +build gccgo,go1.8 3 | 4 | package goid 5 | 6 | // https://github.com/gcc-mirror/gcc/blob/releases/gcc-7/libgo/go/runtime/runtime2.go#L329-L354 7 | 8 | type g struct { 9 | _panic uintptr 10 | _defer uintptr 11 | m uintptr 12 | syscallsp uintptr 13 | syscallpc uintptr 14 | param uintptr 15 | atomicstatus uint32 16 | goid int64 // Here it is! 17 | } 18 | -------------------------------------------------------------------------------- /vendor/github.com/petermattis/goid/runtime_go1.23.go: -------------------------------------------------------------------------------- 1 | //go:build gc && go1.23 2 | // +build gc,go1.23 3 | 4 | package goid 5 | 6 | type stack struct { 7 | lo uintptr 8 | hi uintptr 9 | } 10 | 11 | type gobuf struct { 12 | sp uintptr 13 | pc uintptr 14 | g uintptr 15 | ctxt uintptr 16 | ret uintptr 17 | lr uintptr 18 | bp uintptr 19 | } 20 | 21 | type g struct { 22 | stack stack 23 | stackguard0 uintptr 24 | stackguard1 uintptr 25 | 26 | _panic uintptr 27 | _defer uintptr 28 | m uintptr 29 | sched gobuf 30 | syscallsp uintptr 31 | syscallpc uintptr 32 | syscallbp uintptr 33 | stktopsp uintptr 34 | param uintptr 35 | atomicstatus uint32 36 | stackLock uint32 37 | goid int64 // Here it is! 38 | } 39 | -------------------------------------------------------------------------------- /vendor/github.com/petermattis/goid/runtime_go1.9.go: -------------------------------------------------------------------------------- 1 | //go:build gc && go1.9 && !go1.23 2 | // +build gc,go1.9,!go1.23 3 | 4 | package goid 5 | 6 | type stack struct { 7 | lo uintptr 8 | hi uintptr 9 | } 10 | 11 | type gobuf struct { 12 | sp uintptr 13 | pc uintptr 14 | g uintptr 15 | ctxt uintptr 16 | ret uintptr 17 | lr uintptr 18 | bp uintptr 19 | } 20 | 21 | type g struct { 22 | stack stack 23 | stackguard0 uintptr 24 | stackguard1 uintptr 25 | 26 | _panic uintptr 27 | _defer uintptr 28 | m uintptr 29 | sched gobuf 30 | syscallsp uintptr 31 | syscallpc uintptr 32 | stktopsp uintptr 33 | param uintptr 34 | atomicstatus uint32 35 | stackLock uint32 36 | goid int64 // Here it is! 37 | } 38 | -------------------------------------------------------------------------------- /vendor/github.com/pjbgf/sha1cd/Dockerfile.arm: -------------------------------------------------------------------------------- 1 | FROM golang:1.23@sha256:51a6466e8dbf3e00e422eb0f7a97ac450b2d57b33617bbe8d2ee0bddcd9d0d37 2 | 3 | ENV GOOS=linux 4 | ENV GOARCH=arm 5 | ENV CGO_ENABLED=1 6 | ENV CC=arm-linux-gnueabihf-gcc 7 | ENV PATH="/go/bin/${GOOS}_${GOARCH}:${PATH}" 8 | ENV PKG_CONFIG_PATH=/usr/lib/arm-linux-gnueabihf/pkgconfig 9 | 10 | RUN dpkg --add-architecture armhf \ 11 | && apt update \ 12 | && apt install -y --no-install-recommends \ 13 | gcc-arm-linux-gnueabihf \ 14 | libc6-dev-armhf-cross \ 15 | pkg-config \ 16 | && rm -rf /var/lib/apt/lists/* 17 | 18 | COPY . /src/workdir 19 | 20 | WORKDIR /src/workdir 21 | 22 | RUN go build ./... 23 | -------------------------------------------------------------------------------- /vendor/github.com/pjbgf/sha1cd/Dockerfile.arm64: -------------------------------------------------------------------------------- 1 | FROM golang:1.23@sha256:51a6466e8dbf3e00e422eb0f7a97ac450b2d57b33617bbe8d2ee0bddcd9d0d37 2 | 3 | ENV GOOS=linux 4 | ENV GOARCH=arm64 5 | ENV CGO_ENABLED=1 6 | ENV CC=aarch64-linux-gnu-gcc 7 | ENV PATH="/go/bin/${GOOS}_${GOARCH}:${PATH}" 8 | ENV PKG_CONFIG_PATH=/usr/lib/aarch64-linux-gnu/pkgconfig 9 | 10 | # install build & runtime dependencies 11 | RUN dpkg --add-architecture arm64 \ 12 | && apt update \ 13 | && apt install -y --no-install-recommends \ 14 | gcc-aarch64-linux-gnu \ 15 | libc6-dev-arm64-cross \ 16 | pkg-config \ 17 | && rm -rf /var/lib/apt/lists/* 18 | 19 | COPY . /src/workdir 20 | 21 | WORKDIR /src/workdir 22 | 23 | RUN go build ./... 24 | -------------------------------------------------------------------------------- /vendor/github.com/pjbgf/sha1cd/detection.go: -------------------------------------------------------------------------------- 1 | package sha1cd 2 | 3 | import "hash" 4 | 5 | type CollisionResistantHash interface { 6 | // CollisionResistantSum extends on Sum by returning an additional boolean 7 | // which indicates whether a collision was found during the hashing process. 8 | CollisionResistantSum(b []byte) ([]byte, bool) 9 | 10 | hash.Hash 11 | } 12 | -------------------------------------------------------------------------------- /vendor/github.com/pjbgf/sha1cd/sha1cdblock_noasm.go: -------------------------------------------------------------------------------- 1 | //go:build !amd64 || noasm || !gc 2 | // +build !amd64 noasm !gc 3 | 4 | package sha1cd 5 | 6 | func block(dig *digest, p []byte) { 7 | blockGeneric(dig, p) 8 | } 9 | -------------------------------------------------------------------------------- /vendor/github.com/pjbgf/sha1cd/ubc/ubc.go: -------------------------------------------------------------------------------- 1 | // ubc package provides ways for SHA1 blocks to be checked for 2 | // Unavoidable Bit Conditions that arise from crypto analysis attacks. 3 | package ubc 4 | 5 | //go:generate go run -C asm . -out ../ubc_amd64.s -pkg $GOPACKAGE 6 | -------------------------------------------------------------------------------- /vendor/github.com/pjbgf/sha1cd/ubc/ubc_amd64.go: -------------------------------------------------------------------------------- 1 | //go:build !noasm && gc && amd64 2 | // +build !noasm,gc,amd64 3 | 4 | package ubc 5 | 6 | func CalculateDvMaskAMD64(W [80]uint32) uint32 7 | 8 | // Check takes as input an expanded message block and verifies the unavoidable bitconditions 9 | // for all listed DVs. It returns a dvmask where each bit belonging to a DV is set if all 10 | // unavoidable bitconditions for that DV have been met. 11 | // Thus, one needs to do the recompression check for each DV that has its bit set. 12 | func CalculateDvMask(W [80]uint32) uint32 { 13 | return CalculateDvMaskAMD64(W) 14 | } 15 | -------------------------------------------------------------------------------- /vendor/github.com/pjbgf/sha1cd/ubc/ubc_noasm.go: -------------------------------------------------------------------------------- 1 | //go:build !amd64 || noasm || !gc 2 | // +build !amd64 noasm !gc 3 | 4 | package ubc 5 | 6 | // Check takes as input an expanded message block and verifies the unavoidable bitconditions 7 | // for all listed DVs. It returns a dvmask where each bit belonging to a DV is set if all 8 | // unavoidable bitconditions for that DV have been met. 9 | // Thus, one needs to do the recompression check for each DV that has its bit set. 10 | func CalculateDvMask(W [80]uint32) uint32 { 11 | return CalculateDvMaskGeneric(W) 12 | } 13 | -------------------------------------------------------------------------------- /vendor/github.com/sahilm/fuzzy/.gitignore: -------------------------------------------------------------------------------- 1 | vendor/ 2 | coverage/ 3 | -------------------------------------------------------------------------------- /vendor/github.com/sahilm/fuzzy/CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | Everyone is welcome to contribute. Please send me a pull request or file an issue. I promise to respond promptly. 2 | -------------------------------------------------------------------------------- /vendor/github.com/sahilm/fuzzy/Gopkg.lock: -------------------------------------------------------------------------------- 1 | # This file is autogenerated, do not edit; changes may be undone by the next 'dep ensure'. 2 | 3 | 4 | [[projects]] 5 | branch = "master" 6 | digest = "1:ee97ec8a00b2424570c1ce53d7b410e96fbd4c241b29df134276ff6aa3750335" 7 | name = "github.com/kylelemons/godebug" 8 | packages = [ 9 | "diff", 10 | "pretty", 11 | ] 12 | pruneopts = "" 13 | revision = "d65d576e9348f5982d7f6d83682b694e731a45c6" 14 | 15 | [solve-meta] 16 | analyzer-name = "dep" 17 | analyzer-version = 1 18 | input-imports = ["github.com/kylelemons/godebug/pretty"] 19 | solver-name = "gps-cdcl" 20 | solver-version = 1 21 | -------------------------------------------------------------------------------- /vendor/github.com/sahilm/fuzzy/Gopkg.toml: -------------------------------------------------------------------------------- 1 | # Test dependency 2 | [[constraint]] 3 | branch = "master" 4 | name = "github.com/kylelemons/godebug" 5 | -------------------------------------------------------------------------------- /vendor/github.com/samber/lo/Dockerfile: -------------------------------------------------------------------------------- 1 | 2 | FROM golang:1.18 3 | 4 | WORKDIR /go/src/github.com/samber/lo 5 | 6 | COPY Makefile go.* ./ 7 | 8 | RUN make tools 9 | -------------------------------------------------------------------------------- /vendor/github.com/samber/lo/constraints.go: -------------------------------------------------------------------------------- 1 | package lo 2 | 3 | // Clonable defines a constraint of types having Clone() T method. 4 | type Clonable[T any] interface { 5 | Clone() T 6 | } 7 | -------------------------------------------------------------------------------- /vendor/github.com/samber/lo/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '3' 2 | 3 | services: 4 | dev: 5 | image: golang:1.18-bullseye 6 | volumes: 7 | - ./:/go/src/github.com/samber/lo 8 | working_dir: /go/src/github.com/samber/lo 9 | command: make watch-test 10 | -------------------------------------------------------------------------------- /vendor/github.com/samber/lo/func.go: -------------------------------------------------------------------------------- 1 | package lo 2 | 3 | // Partial returns new function that, when called, has its first argument set to the provided value. 4 | func Partial[T1, T2, R any](f func(T1, T2) R, arg1 T1) func(T2) R { 5 | return func(t2 T2) R { 6 | return f(arg1, t2) 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /vendor/github.com/samber/lo/test.go: -------------------------------------------------------------------------------- 1 | package lo 2 | 3 | import ( 4 | "os" 5 | "testing" 6 | "time" 7 | ) 8 | 9 | // https://github.com/stretchr/testify/issues/1101 10 | func testWithTimeout(t *testing.T, timeout time.Duration) { 11 | t.Helper() 12 | 13 | testFinished := make(chan struct{}) 14 | t.Cleanup(func() { close(testFinished) }) 15 | 16 | go func() { 17 | select { 18 | case <-testFinished: 19 | case <-time.After(timeout): 20 | t.Errorf("test timed out after %s", timeout) 21 | os.Exit(1) 22 | } 23 | }() 24 | } 25 | 26 | type foo struct { 27 | bar string 28 | } 29 | 30 | func (f foo) Clone() foo { 31 | return foo{f.bar} 32 | } 33 | -------------------------------------------------------------------------------- /vendor/github.com/sanity-io/litter/.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | -------------------------------------------------------------------------------- /vendor/github.com/sanity-io/litter/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # 1.1.0 (2017-11-1) 2 | 3 | A slight breaking change. The dump-method of the `Dumper` interface has changed from `Dump` to `LitterDump` to mitigate potential collisions. 4 | 5 | # 1.0.0 (2017-10-29) 6 | 7 | Tagged 1.0.0. 8 | -------------------------------------------------------------------------------- /vendor/github.com/sasha-s/go-deadlock/deadlock_map.go: -------------------------------------------------------------------------------- 1 | // +build go1.9 2 | 3 | package deadlock 4 | 5 | import "sync" 6 | 7 | // Map is sync.Map wrapper 8 | type Map struct { 9 | sync.Map 10 | } 11 | -------------------------------------------------------------------------------- /vendor/github.com/sasha-s/go-deadlock/test.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | set -e 4 | echo "" > coverage.txt 5 | 6 | for d in $(go list ./...); do 7 | go test -bench=. -coverprofile=profile.out -covermode=atomic "$d" 8 | if [ -f profile.out ]; then 9 | cat profile.out >> coverage.txt 10 | rm profile.out 11 | fi 12 | done 13 | -------------------------------------------------------------------------------- /vendor/github.com/sergi/go-diff/diffmatchpatch/mathutil.go: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2012-2016 The go-diff authors. All rights reserved. 2 | // https://github.com/sergi/go-diff 3 | // See the included LICENSE file for license details. 4 | // 5 | // go-diff is a Go implementation of Google's Diff, Match, and Patch library 6 | // Original library is Copyright (c) 2006 Google Inc. 7 | // http://code.google.com/p/google-diff-match-patch/ 8 | 9 | package diffmatchpatch 10 | 11 | func min(x, y int) int { 12 | if x < y { 13 | return x 14 | } 15 | return y 16 | } 17 | 18 | func max(x, y int) int { 19 | if x > y { 20 | return x 21 | } 22 | return y 23 | } 24 | -------------------------------------------------------------------------------- /vendor/github.com/sergi/go-diff/diffmatchpatch/operation_string.go: -------------------------------------------------------------------------------- 1 | // Code generated by "stringer -type=Operation -trimprefix=Diff"; DO NOT EDIT. 2 | 3 | package diffmatchpatch 4 | 5 | import "fmt" 6 | 7 | const _Operation_name = "DeleteEqualInsert" 8 | 9 | var _Operation_index = [...]uint8{0, 6, 11, 17} 10 | 11 | func (i Operation) String() string { 12 | i -= -1 13 | if i < 0 || i >= Operation(len(_Operation_index)-1) { 14 | return fmt.Sprintf("Operation(%d)", i+-1) 15 | } 16 | return _Operation_name[_Operation_index[i]:_Operation_index[i+1]] 17 | } 18 | -------------------------------------------------------------------------------- /vendor/github.com/sirupsen/logrus/.gitignore: -------------------------------------------------------------------------------- 1 | logrus 2 | vendor 3 | 4 | .idea/ 5 | -------------------------------------------------------------------------------- /vendor/github.com/sirupsen/logrus/appveyor.yml: -------------------------------------------------------------------------------- 1 | version: "{build}" 2 | platform: x64 3 | clone_folder: c:\gopath\src\github.com\sirupsen\logrus 4 | environment: 5 | GOPATH: c:\gopath 6 | branches: 7 | only: 8 | - master 9 | install: 10 | - set PATH=%GOPATH%\bin;c:\go\bin;%PATH% 11 | - go version 12 | build_script: 13 | - go get -t 14 | - go test 15 | -------------------------------------------------------------------------------- /vendor/github.com/sirupsen/logrus/doc.go: -------------------------------------------------------------------------------- 1 | /* 2 | Package logrus is a structured logger for Go, completely API compatible with the standard library logger. 3 | 4 | 5 | The simplest way to use Logrus is simply the package-level exported logger: 6 | 7 | package main 8 | 9 | import ( 10 | log "github.com/sirupsen/logrus" 11 | ) 12 | 13 | func main() { 14 | log.WithFields(log.Fields{ 15 | "animal": "walrus", 16 | "number": 1, 17 | "size": 10, 18 | }).Info("A walrus appears") 19 | } 20 | 21 | Output: 22 | time="2015-09-07T08:48:33Z" level=info msg="A walrus appears" animal=walrus number=1 size=10 23 | 24 | For a full guide visit https://github.com/sirupsen/logrus 25 | */ 26 | package logrus 27 | -------------------------------------------------------------------------------- /vendor/github.com/sirupsen/logrus/terminal_check_appengine.go: -------------------------------------------------------------------------------- 1 | // +build appengine 2 | 3 | package logrus 4 | 5 | import ( 6 | "io" 7 | ) 8 | 9 | func checkIfTerminal(w io.Writer) bool { 10 | return true 11 | } 12 | -------------------------------------------------------------------------------- /vendor/github.com/sirupsen/logrus/terminal_check_bsd.go: -------------------------------------------------------------------------------- 1 | // +build darwin dragonfly freebsd netbsd openbsd 2 | // +build !js 3 | 4 | package logrus 5 | 6 | import "golang.org/x/sys/unix" 7 | 8 | const ioctlReadTermios = unix.TIOCGETA 9 | 10 | func isTerminal(fd int) bool { 11 | _, err := unix.IoctlGetTermios(fd, ioctlReadTermios) 12 | return err == nil 13 | } 14 | -------------------------------------------------------------------------------- /vendor/github.com/sirupsen/logrus/terminal_check_js.go: -------------------------------------------------------------------------------- 1 | // +build js 2 | 3 | package logrus 4 | 5 | func isTerminal(fd int) bool { 6 | return false 7 | } 8 | -------------------------------------------------------------------------------- /vendor/github.com/sirupsen/logrus/terminal_check_no_terminal.go: -------------------------------------------------------------------------------- 1 | // +build js nacl plan9 2 | 3 | package logrus 4 | 5 | import ( 6 | "io" 7 | ) 8 | 9 | func checkIfTerminal(w io.Writer) bool { 10 | return false 11 | } 12 | -------------------------------------------------------------------------------- /vendor/github.com/sirupsen/logrus/terminal_check_notappengine.go: -------------------------------------------------------------------------------- 1 | // +build !appengine,!js,!windows,!nacl,!plan9 2 | 3 | package logrus 4 | 5 | import ( 6 | "io" 7 | "os" 8 | ) 9 | 10 | func checkIfTerminal(w io.Writer) bool { 11 | switch v := w.(type) { 12 | case *os.File: 13 | return isTerminal(int(v.Fd())) 14 | default: 15 | return false 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /vendor/github.com/sirupsen/logrus/terminal_check_solaris.go: -------------------------------------------------------------------------------- 1 | package logrus 2 | 3 | import ( 4 | "golang.org/x/sys/unix" 5 | ) 6 | 7 | // IsTerminal returns true if the given file descriptor is a terminal. 8 | func isTerminal(fd int) bool { 9 | _, err := unix.IoctlGetTermio(fd, unix.TCGETA) 10 | return err == nil 11 | } 12 | -------------------------------------------------------------------------------- /vendor/github.com/sirupsen/logrus/terminal_check_unix.go: -------------------------------------------------------------------------------- 1 | // +build linux aix zos 2 | // +build !js 3 | 4 | package logrus 5 | 6 | import "golang.org/x/sys/unix" 7 | 8 | const ioctlReadTermios = unix.TCGETS 9 | 10 | func isTerminal(fd int) bool { 11 | _, err := unix.IoctlGetTermios(fd, ioctlReadTermios) 12 | return err == nil 13 | } 14 | -------------------------------------------------------------------------------- /vendor/github.com/sirupsen/logrus/terminal_check_windows.go: -------------------------------------------------------------------------------- 1 | // +build !appengine,!js,windows 2 | 3 | package logrus 4 | 5 | import ( 6 | "io" 7 | "os" 8 | 9 | "golang.org/x/sys/windows" 10 | ) 11 | 12 | func checkIfTerminal(w io.Writer) bool { 13 | switch v := w.(type) { 14 | case *os.File: 15 | handle := windows.Handle(v.Fd()) 16 | var mode uint32 17 | if err := windows.GetConsoleMode(handle, &mode); err != nil { 18 | return false 19 | } 20 | mode |= windows.ENABLE_VIRTUAL_TERMINAL_PROCESSING 21 | if err := windows.SetConsoleMode(handle, mode); err != nil { 22 | return false 23 | } 24 | return true 25 | } 26 | return false 27 | } 28 | -------------------------------------------------------------------------------- /vendor/github.com/skeema/knownhosts/NOTICE: -------------------------------------------------------------------------------- 1 | Copyright 2025 Skeema LLC and the Skeema Knownhosts authors 2 | 3 | Licensed under the Apache License, Version 2.0 (the "License"); 4 | you may not use this file except in compliance with the License. 5 | You may obtain a copy of the License at 6 | 7 | http://www.apache.org/licenses/LICENSE-2.0 8 | 9 | Unless required by applicable law or agreed to in writing, software 10 | distributed under the License is distributed on an "AS IS" BASIS, 11 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | See the License for the specific language governing permissions and 13 | limitations under the License. 14 | -------------------------------------------------------------------------------- /vendor/github.com/spf13/afero/.gitignore: -------------------------------------------------------------------------------- 1 | sftpfs/file1 2 | sftpfs/test/ 3 | -------------------------------------------------------------------------------- /vendor/github.com/spf13/afero/appveyor.yml: -------------------------------------------------------------------------------- 1 | # This currently does nothing. We have moved to GitHub action, but this is kept 2 | # until spf13 has disabled this project in AppVeyor. 3 | version: '{build}' 4 | clone_folder: C:\gopath\src\github.com\spf13\afero 5 | environment: 6 | GOPATH: C:\gopath 7 | build_script: 8 | - cmd: >- 9 | go version 10 | 11 | -------------------------------------------------------------------------------- /vendor/github.com/spkg/bom/.gitignore: -------------------------------------------------------------------------------- 1 | coverage.out 2 | -------------------------------------------------------------------------------- /vendor/github.com/spkg/bom/discard_go14.go: -------------------------------------------------------------------------------- 1 | // +build !go1.5 2 | 3 | package bom 4 | 5 | import "bufio" 6 | 7 | func discardBytes(buf *bufio.Reader, n int) { 8 | // cannot use the buf.Discard method as it was introduced in Go 1.5 9 | for i := 0; i < n; i++ { 10 | buf.ReadByte() 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /vendor/github.com/spkg/bom/discard_go15.go: -------------------------------------------------------------------------------- 1 | // +build go1.5 2 | 3 | package bom 4 | 5 | import "bufio" 6 | 7 | func discardBytes(buf *bufio.Reader, n int) { 8 | // the Discard method was introduced in Go 1.5 9 | buf.Discard(n) 10 | } 11 | -------------------------------------------------------------------------------- /vendor/github.com/stretchr/testify/assert/assertion_format.go.tmpl: -------------------------------------------------------------------------------- 1 | {{.CommentFormat}} 2 | func {{.DocInfo.Name}}f(t TestingT, {{.ParamsFormat}}) bool { 3 | if h, ok := t.(tHelper); ok { h.Helper() } 4 | return {{.DocInfo.Name}}(t, {{.ForwardedParamsFormat}}) 5 | } 6 | -------------------------------------------------------------------------------- /vendor/github.com/stretchr/testify/assert/assertion_forward.go.tmpl: -------------------------------------------------------------------------------- 1 | {{.CommentWithoutT "a"}} 2 | func (a *Assertions) {{.DocInfo.Name}}({{.Params}}) bool { 3 | if h, ok := a.t.(tHelper); ok { h.Helper() } 4 | return {{.DocInfo.Name}}(a.t, {{.ForwardedParams}}) 5 | } 6 | -------------------------------------------------------------------------------- /vendor/github.com/stretchr/testify/assert/errors.go: -------------------------------------------------------------------------------- 1 | package assert 2 | 3 | import ( 4 | "errors" 5 | ) 6 | 7 | // AnError is an error instance useful for testing. If the code does not care 8 | // about error specifics, and only needs to return the error for example, this 9 | // error should be used to make the test code more readable. 10 | var AnError = errors.New("assert.AnError general error for testing") 11 | -------------------------------------------------------------------------------- /vendor/github.com/stretchr/testify/assert/forward_assertions.go: -------------------------------------------------------------------------------- 1 | package assert 2 | 3 | // Assertions provides assertion methods around the 4 | // TestingT interface. 5 | type Assertions struct { 6 | t TestingT 7 | } 8 | 9 | // New makes a new Assertions object for the specified TestingT. 10 | func New(t TestingT) *Assertions { 11 | return &Assertions{ 12 | t: t, 13 | } 14 | } 15 | 16 | //go:generate sh -c "cd ../_codegen && go build && cd - && ../_codegen/_codegen -output-package=assert -template=assertion_forward.go.tmpl -include-format-funcs" 17 | -------------------------------------------------------------------------------- /vendor/github.com/stretchr/testify/assert/yaml/yaml_fail.go: -------------------------------------------------------------------------------- 1 | //go:build testify_yaml_fail && !testify_yaml_custom && !testify_yaml_default 2 | // +build testify_yaml_fail,!testify_yaml_custom,!testify_yaml_default 3 | 4 | // Package yaml is an implementation of YAML functions that always fail. 5 | // 6 | // This implementation can be used at build time to replace the default implementation 7 | // to avoid linking with [gopkg.in/yaml.v3]: 8 | // 9 | // go test -tags testify_yaml_fail 10 | package yaml 11 | 12 | import "errors" 13 | 14 | var errNotImplemented = errors.New("YAML functions are not available (see https://pkg.go.dev/github.com/stretchr/testify/assert/yaml)") 15 | 16 | func Unmarshal([]byte, interface{}) error { 17 | return errNotImplemented 18 | } 19 | -------------------------------------------------------------------------------- /vendor/github.com/wk8/go-ordered-map/v2/.gitignore: -------------------------------------------------------------------------------- 1 | /vendor/ 2 | -------------------------------------------------------------------------------- /vendor/github.com/xanzy/ssh-agent/.gitignore: -------------------------------------------------------------------------------- 1 | # Compiled Object files, Static and Dynamic libs (Shared Objects) 2 | *.o 3 | *.a 4 | *.so 5 | 6 | # Folders 7 | _obj 8 | _test 9 | 10 | # Architecture specific extensions/prefixes 11 | *.[568vq] 12 | [568vq].out 13 | 14 | *.cgo1.go 15 | *.cgo2.c 16 | _cgo_defun.c 17 | _cgo_gotypes.go 18 | _cgo_export.* 19 | 20 | _testmain.go 21 | 22 | *.exe 23 | *.test 24 | *.prof 25 | -------------------------------------------------------------------------------- /vendor/github.com/xo/terminfo/.gitignore: -------------------------------------------------------------------------------- 1 | /.cache/ 2 | 3 | /cmd/infocmp/infocmp 4 | /cmd/infocmp/.out/ 5 | 6 | /infocmp 7 | /.out/ 8 | 9 | *.txt 10 | -------------------------------------------------------------------------------- /vendor/golang.org/x/crypto/argon2/blamka_ref.go: -------------------------------------------------------------------------------- 1 | // Copyright 2017 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | //go:build !amd64 || purego || !gc 6 | 7 | package argon2 8 | 9 | func processBlock(out, in1, in2 *block) { 10 | processBlockGeneric(out, in1, in2, false) 11 | } 12 | 13 | func processBlockXOR(out, in1, in2 *block) { 14 | processBlockGeneric(out, in1, in2, true) 15 | } 16 | -------------------------------------------------------------------------------- /vendor/golang.org/x/crypto/blake2b/blake2b_ref.go: -------------------------------------------------------------------------------- 1 | // Copyright 2016 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | //go:build !amd64 || purego || !gc 6 | 7 | package blake2b 8 | 9 | func hashBlocks(h *[8]uint64, c *[2]uint64, flag uint64, blocks []byte) { 10 | hashBlocksGeneric(h, c, flag, blocks) 11 | } 12 | -------------------------------------------------------------------------------- /vendor/golang.org/x/crypto/blake2b/register.go: -------------------------------------------------------------------------------- 1 | // Copyright 2017 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | package blake2b 6 | 7 | import ( 8 | "crypto" 9 | "hash" 10 | ) 11 | 12 | func init() { 13 | newHash256 := func() hash.Hash { 14 | h, _ := New256(nil) 15 | return h 16 | } 17 | newHash384 := func() hash.Hash { 18 | h, _ := New384(nil) 19 | return h 20 | } 21 | 22 | newHash512 := func() hash.Hash { 23 | h, _ := New512(nil) 24 | return h 25 | } 26 | 27 | crypto.RegisterHash(crypto.BLAKE2b_256, newHash256) 28 | crypto.RegisterHash(crypto.BLAKE2b_384, newHash384) 29 | crypto.RegisterHash(crypto.BLAKE2b_512, newHash512) 30 | } 31 | -------------------------------------------------------------------------------- /vendor/golang.org/x/crypto/chacha20/chacha_arm64.go: -------------------------------------------------------------------------------- 1 | // Copyright 2018 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | //go:build gc && !purego 6 | 7 | package chacha20 8 | 9 | const bufSize = 256 10 | 11 | //go:noescape 12 | func xorKeyStreamVX(dst, src []byte, key *[8]uint32, nonce *[3]uint32, counter *uint32) 13 | 14 | func (c *Cipher) xorKeyStreamBlocks(dst, src []byte) { 15 | xorKeyStreamVX(dst, src, &c.key, &c.nonce, &c.counter) 16 | } 17 | -------------------------------------------------------------------------------- /vendor/golang.org/x/crypto/chacha20/chacha_noasm.go: -------------------------------------------------------------------------------- 1 | // Copyright 2018 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | //go:build (!arm64 && !s390x && !ppc64 && !ppc64le) || !gc || purego 6 | 7 | package chacha20 8 | 9 | const bufSize = blockSize 10 | 11 | func (s *Cipher) xorKeyStreamBlocks(dst, src []byte) { 12 | s.xorKeyStreamBlocksGeneric(dst, src) 13 | } 14 | -------------------------------------------------------------------------------- /vendor/golang.org/x/crypto/chacha20/chacha_ppc64x.go: -------------------------------------------------------------------------------- 1 | // Copyright 2019 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | //go:build gc && !purego && (ppc64 || ppc64le) 6 | 7 | package chacha20 8 | 9 | const bufSize = 256 10 | 11 | //go:noescape 12 | func chaCha20_ctr32_vsx(out, inp *byte, len int, key *[8]uint32, counter *uint32) 13 | 14 | func (c *Cipher) xorKeyStreamBlocks(dst, src []byte) { 15 | chaCha20_ctr32_vsx(&dst[0], &src[0], len(src), &c.key, &c.counter) 16 | } 17 | -------------------------------------------------------------------------------- /vendor/golang.org/x/crypto/internal/poly1305/mac_noasm.go: -------------------------------------------------------------------------------- 1 | // Copyright 2018 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | //go:build (!amd64 && !loong64 && !ppc64le && !ppc64 && !s390x) || !gc || purego 6 | 7 | package poly1305 8 | 9 | type mac struct{ macGeneric } 10 | -------------------------------------------------------------------------------- /vendor/golang.org/x/crypto/sha3/hashes_noasm.go: -------------------------------------------------------------------------------- 1 | // Copyright 2023 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | //go:build !gc || purego || !s390x 6 | 7 | package sha3 8 | 9 | func new224() *state { 10 | return new224Generic() 11 | } 12 | 13 | func new256() *state { 14 | return new256Generic() 15 | } 16 | 17 | func new384() *state { 18 | return new384Generic() 19 | } 20 | 21 | func new512() *state { 22 | return new512Generic() 23 | } 24 | -------------------------------------------------------------------------------- /vendor/golang.org/x/crypto/sha3/keccakf_amd64.go: -------------------------------------------------------------------------------- 1 | // Copyright 2015 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | //go:build amd64 && !purego && gc 6 | 7 | package sha3 8 | 9 | // This function is implemented in keccakf_amd64.s. 10 | 11 | //go:noescape 12 | 13 | func keccakF1600(a *[25]uint64) 14 | -------------------------------------------------------------------------------- /vendor/golang.org/x/crypto/sha3/shake_noasm.go: -------------------------------------------------------------------------------- 1 | // Copyright 2023 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | //go:build !gc || purego || !s390x 6 | 7 | package sha3 8 | 9 | func newShake128() *state { 10 | return newShake128Generic() 11 | } 12 | 13 | func newShake256() *state { 14 | return newShake256Generic() 15 | } 16 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/cpu/asm_aix_ppc64.s: -------------------------------------------------------------------------------- 1 | // Copyright 2018 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | //go:build gc 6 | 7 | #include "textflag.h" 8 | 9 | // 10 | // System calls for ppc64, AIX are implemented in runtime/syscall_aix.go 11 | // 12 | 13 | TEXT ·syscall6(SB),NOSPLIT,$0-88 14 | JMP syscall·syscall6(SB) 15 | 16 | TEXT ·rawSyscall6(SB),NOSPLIT,$0-88 17 | JMP syscall·rawSyscall6(SB) 18 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/cpu/asm_darwin_x86_gc.s: -------------------------------------------------------------------------------- 1 | // Copyright 2024 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | //go:build darwin && amd64 && gc 6 | 7 | #include "textflag.h" 8 | 9 | TEXT libc_sysctl_trampoline<>(SB),NOSPLIT,$0-0 10 | JMP libc_sysctl(SB) 11 | GLOBL ·libc_sysctl_trampoline_addr(SB), RODATA, $8 12 | DATA ·libc_sysctl_trampoline_addr(SB)/8, $libc_sysctl_trampoline<>(SB) 13 | 14 | TEXT libc_sysctlbyname_trampoline<>(SB),NOSPLIT,$0-0 15 | JMP libc_sysctlbyname(SB) 16 | GLOBL ·libc_sysctlbyname_trampoline_addr(SB), RODATA, $8 17 | DATA ·libc_sysctlbyname_trampoline_addr(SB)/8, $libc_sysctlbyname_trampoline<>(SB) 18 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/cpu/cpu_aix.go: -------------------------------------------------------------------------------- 1 | // Copyright 2019 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | //go:build aix 6 | 7 | package cpu 8 | 9 | const ( 10 | // getsystemcfg constants 11 | _SC_IMPL = 2 12 | _IMPL_POWER8 = 0x10000 13 | _IMPL_POWER9 = 0x20000 14 | ) 15 | 16 | func archInit() { 17 | impl := getsystemcfg(_SC_IMPL) 18 | if impl&_IMPL_POWER8 != 0 { 19 | PPC64.IsPOWER8 = true 20 | } 21 | if impl&_IMPL_POWER9 != 0 { 22 | PPC64.IsPOWER8 = true 23 | PPC64.IsPOWER9 = true 24 | } 25 | 26 | Initialized = true 27 | } 28 | 29 | func getsystemcfg(label int) (n uint64) { 30 | r0, _ := callgetsystemcfg(label) 31 | n = uint64(r0) 32 | return 33 | } 34 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/cpu/cpu_gc_arm64.go: -------------------------------------------------------------------------------- 1 | // Copyright 2019 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | //go:build gc 6 | 7 | package cpu 8 | 9 | func getisar0() uint64 10 | func getisar1() uint64 11 | func getpfr0() uint64 12 | func getzfr0() uint64 13 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/cpu/cpu_gc_s390x.go: -------------------------------------------------------------------------------- 1 | // Copyright 2019 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | //go:build gc 6 | 7 | package cpu 8 | 9 | // haveAsmFunctions reports whether the other functions in this file can 10 | // be safely called. 11 | func haveAsmFunctions() bool { return true } 12 | 13 | // The following feature detection functions are defined in cpu_s390x.s. 14 | // They are likely to be expensive to call so the results should be cached. 15 | func stfle() facilityList 16 | func kmQuery() queryResult 17 | func kmcQuery() queryResult 18 | func kmctrQuery() queryResult 19 | func kmaQuery() queryResult 20 | func kimdQuery() queryResult 21 | func klmdQuery() queryResult 22 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/cpu/cpu_gc_x86.go: -------------------------------------------------------------------------------- 1 | // Copyright 2018 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | //go:build (386 || amd64 || amd64p32) && gc 6 | 7 | package cpu 8 | 9 | // cpuid is implemented in cpu_gc_x86.s for gc compiler 10 | // and in cpu_gccgo.c for gccgo. 11 | func cpuid(eaxArg, ecxArg uint32) (eax, ebx, ecx, edx uint32) 12 | 13 | // xgetbv with ecx = 0 is implemented in cpu_gc_x86.s for gc compiler 14 | // and in cpu_gccgo.c for gccgo. 15 | func xgetbv() (eax, edx uint32) 16 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/cpu/cpu_gc_x86.s: -------------------------------------------------------------------------------- 1 | // Copyright 2018 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | //go:build (386 || amd64 || amd64p32) && gc 6 | 7 | #include "textflag.h" 8 | 9 | // func cpuid(eaxArg, ecxArg uint32) (eax, ebx, ecx, edx uint32) 10 | TEXT ·cpuid(SB), NOSPLIT, $0-24 11 | MOVL eaxArg+0(FP), AX 12 | MOVL ecxArg+4(FP), CX 13 | CPUID 14 | MOVL AX, eax+8(FP) 15 | MOVL BX, ebx+12(FP) 16 | MOVL CX, ecx+16(FP) 17 | MOVL DX, edx+20(FP) 18 | RET 19 | 20 | // func xgetbv() (eax, edx uint32) 21 | TEXT ·xgetbv(SB), NOSPLIT, $0-8 22 | MOVL $0, CX 23 | XGETBV 24 | MOVL AX, eax+0(FP) 25 | MOVL DX, edx+4(FP) 26 | RET 27 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/cpu/cpu_gccgo_arm64.go: -------------------------------------------------------------------------------- 1 | // Copyright 2019 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | //go:build gccgo 6 | 7 | package cpu 8 | 9 | func getisar0() uint64 { return 0 } 10 | func getisar1() uint64 { return 0 } 11 | func getpfr0() uint64 { return 0 } 12 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/cpu/cpu_gccgo_x86.go: -------------------------------------------------------------------------------- 1 | // Copyright 2018 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | //go:build (386 || amd64 || amd64p32) && gccgo 6 | 7 | package cpu 8 | 9 | //extern gccgoGetCpuidCount 10 | func gccgoGetCpuidCount(eaxArg, ecxArg uint32, eax, ebx, ecx, edx *uint32) 11 | 12 | func cpuid(eaxArg, ecxArg uint32) (eax, ebx, ecx, edx uint32) { 13 | var a, b, c, d uint32 14 | gccgoGetCpuidCount(eaxArg, ecxArg, &a, &b, &c, &d) 15 | return a, b, c, d 16 | } 17 | 18 | //extern gccgoXgetbv 19 | func gccgoXgetbv(eax, edx *uint32) 20 | 21 | func xgetbv() (eax, edx uint32) { 22 | var a, d uint32 23 | gccgoXgetbv(&a, &d) 24 | return a, d 25 | } 26 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/cpu/cpu_linux.go: -------------------------------------------------------------------------------- 1 | // Copyright 2018 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | //go:build !386 && !amd64 && !amd64p32 && !arm64 6 | 7 | package cpu 8 | 9 | func archInit() { 10 | if err := readHWCAP(); err != nil { 11 | return 12 | } 13 | doinit() 14 | Initialized = true 15 | } 16 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/cpu/cpu_linux_loong64.go: -------------------------------------------------------------------------------- 1 | // Copyright 2025 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | package cpu 6 | 7 | // HWCAP bits. These are exposed by the Linux kernel. 8 | const ( 9 | hwcap_LOONGARCH_LSX = 1 << 4 10 | hwcap_LOONGARCH_LASX = 1 << 5 11 | ) 12 | 13 | func doinit() { 14 | // TODO: Features that require kernel support like LSX and LASX can 15 | // be detected here once needed in std library or by the compiler. 16 | Loong64.HasLSX = hwcIsSet(hwCap, hwcap_LOONGARCH_LSX) 17 | Loong64.HasLASX = hwcIsSet(hwCap, hwcap_LOONGARCH_LASX) 18 | } 19 | 20 | func hwcIsSet(hwc uint, val uint) bool { 21 | return hwc&val != 0 22 | } 23 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/cpu/cpu_linux_mips64x.go: -------------------------------------------------------------------------------- 1 | // Copyright 2020 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | //go:build linux && (mips64 || mips64le) 6 | 7 | package cpu 8 | 9 | // HWCAP bits. These are exposed by the Linux kernel 5.4. 10 | const ( 11 | // CPU features 12 | hwcap_MIPS_MSA = 1 << 1 13 | ) 14 | 15 | func doinit() { 16 | // HWCAP feature bits 17 | MIPS64X.HasMSA = isSet(hwCap, hwcap_MIPS_MSA) 18 | } 19 | 20 | func isSet(hwc uint, value uint) bool { 21 | return hwc&value != 0 22 | } 23 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/cpu/cpu_linux_noinit.go: -------------------------------------------------------------------------------- 1 | // Copyright 2019 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | //go:build linux && !arm && !arm64 && !loong64 && !mips64 && !mips64le && !ppc64 && !ppc64le && !s390x && !riscv64 6 | 7 | package cpu 8 | 9 | func doinit() {} 10 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/cpu/cpu_loong64.s: -------------------------------------------------------------------------------- 1 | // Copyright 2025 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | #include "textflag.h" 6 | 7 | // func get_cpucfg(reg uint32) uint32 8 | TEXT ·get_cpucfg(SB), NOSPLIT|NOFRAME, $0 9 | MOVW reg+0(FP), R5 10 | // CPUCFG R5, R4 = 0x00006ca4 11 | WORD $0x00006ca4 12 | MOVW R4, ret+8(FP) 13 | RET 14 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/cpu/cpu_mips64x.go: -------------------------------------------------------------------------------- 1 | // Copyright 2018 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | //go:build mips64 || mips64le 6 | 7 | package cpu 8 | 9 | const cacheLineSize = 32 10 | 11 | func initOptions() { 12 | options = []option{ 13 | {Name: "msa", Feature: &MIPS64X.HasMSA}, 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/cpu/cpu_mipsx.go: -------------------------------------------------------------------------------- 1 | // Copyright 2018 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | //go:build mips || mipsle 6 | 7 | package cpu 8 | 9 | const cacheLineSize = 32 10 | 11 | func initOptions() {} 12 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/cpu/cpu_openbsd_arm64.s: -------------------------------------------------------------------------------- 1 | // Copyright 2022 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | #include "textflag.h" 6 | 7 | TEXT libc_sysctl_trampoline<>(SB),NOSPLIT,$0-0 8 | JMP libc_sysctl(SB) 9 | 10 | GLOBL ·libc_sysctl_trampoline_addr(SB), RODATA, $8 11 | DATA ·libc_sysctl_trampoline_addr(SB)/8, $libc_sysctl_trampoline<>(SB) 12 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/cpu/cpu_other_arm.go: -------------------------------------------------------------------------------- 1 | // Copyright 2020 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | //go:build !linux && arm 6 | 7 | package cpu 8 | 9 | func archInit() {} 10 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/cpu/cpu_other_arm64.go: -------------------------------------------------------------------------------- 1 | // Copyright 2019 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | //go:build !linux && !netbsd && !openbsd && arm64 6 | 7 | package cpu 8 | 9 | func doinit() {} 10 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/cpu/cpu_other_mips64x.go: -------------------------------------------------------------------------------- 1 | // Copyright 2020 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | //go:build !linux && (mips64 || mips64le) 6 | 7 | package cpu 8 | 9 | func archInit() { 10 | Initialized = true 11 | } 12 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/cpu/cpu_other_ppc64x.go: -------------------------------------------------------------------------------- 1 | // Copyright 2022 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | //go:build !aix && !linux && (ppc64 || ppc64le) 6 | 7 | package cpu 8 | 9 | func archInit() { 10 | PPC64.IsPOWER8 = true 11 | Initialized = true 12 | } 13 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/cpu/cpu_other_riscv64.go: -------------------------------------------------------------------------------- 1 | // Copyright 2022 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | //go:build !linux && riscv64 6 | 7 | package cpu 8 | 9 | func archInit() { 10 | Initialized = true 11 | } 12 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/cpu/cpu_other_x86.go: -------------------------------------------------------------------------------- 1 | // Copyright 2024 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | //go:build 386 || amd64p32 || (amd64 && (!darwin || !gc)) 6 | 7 | package cpu 8 | 9 | func darwinSupportsAVX512() bool { 10 | panic("only implemented for gc && amd64 && darwin") 11 | } 12 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/cpu/cpu_ppc64x.go: -------------------------------------------------------------------------------- 1 | // Copyright 2020 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | //go:build ppc64 || ppc64le 6 | 7 | package cpu 8 | 9 | const cacheLineSize = 128 10 | 11 | func initOptions() { 12 | options = []option{ 13 | {Name: "darn", Feature: &PPC64.HasDARN}, 14 | {Name: "scv", Feature: &PPC64.HasSCV}, 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/cpu/cpu_wasm.go: -------------------------------------------------------------------------------- 1 | // Copyright 2019 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | //go:build wasm 6 | 7 | package cpu 8 | 9 | // We're compiling the cpu package for an unknown (software-abstracted) CPU. 10 | // Make CacheLinePad an empty struct and hope that the usual struct alignment 11 | // rules are good enough. 12 | 13 | const cacheLineSize = 0 14 | 15 | func initOptions() {} 16 | 17 | func archInit() {} 18 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/cpu/cpu_zos.go: -------------------------------------------------------------------------------- 1 | // Copyright 2020 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | package cpu 6 | 7 | func archInit() { 8 | doinit() 9 | Initialized = true 10 | } 11 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/cpu/cpu_zos_s390x.go: -------------------------------------------------------------------------------- 1 | // Copyright 2020 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | package cpu 6 | 7 | func initS390Xbase() { 8 | // get the facilities list 9 | facilities := stfle() 10 | 11 | // mandatory 12 | S390X.HasZARCH = facilities.Has(zarch) 13 | S390X.HasSTFLE = facilities.Has(stflef) 14 | S390X.HasLDISP = facilities.Has(ldisp) 15 | S390X.HasEIMM = facilities.Has(eimm) 16 | 17 | // optional 18 | S390X.HasETF3EH = facilities.Has(etf3eh) 19 | S390X.HasDFP = facilities.Has(dfp) 20 | S390X.HasMSA = facilities.Has(msa) 21 | S390X.HasVX = facilities.Has(vx) 22 | if S390X.HasVX { 23 | S390X.HasVXE = facilities.Has(vxe) 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/cpu/endian_big.go: -------------------------------------------------------------------------------- 1 | // Copyright 2023 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | //go:build armbe || arm64be || m68k || mips || mips64 || mips64p32 || ppc || ppc64 || s390 || s390x || shbe || sparc || sparc64 6 | 7 | package cpu 8 | 9 | // IsBigEndian records whether the GOARCH's byte order is big endian. 10 | const IsBigEndian = true 11 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/cpu/endian_little.go: -------------------------------------------------------------------------------- 1 | // Copyright 2023 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | //go:build 386 || amd64 || amd64p32 || alpha || arm || arm64 || loong64 || mipsle || mips64le || mips64p32le || nios2 || ppc64le || riscv || riscv64 || sh || wasm 6 | 7 | package cpu 8 | 9 | // IsBigEndian records whether the GOARCH's byte order is big endian. 10 | const IsBigEndian = false 11 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/cpu/runtime_auxv.go: -------------------------------------------------------------------------------- 1 | // Copyright 2023 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | package cpu 6 | 7 | // getAuxvFn is non-nil on Go 1.21+ (via runtime_auxv_go121.go init) 8 | // on platforms that use auxv. 9 | var getAuxvFn func() []uintptr 10 | 11 | func getAuxv() []uintptr { 12 | if getAuxvFn == nil { 13 | return nil 14 | } 15 | return getAuxvFn() 16 | } 17 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/cpu/runtime_auxv_go121.go: -------------------------------------------------------------------------------- 1 | // Copyright 2023 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | //go:build go1.21 6 | 7 | package cpu 8 | 9 | import ( 10 | _ "unsafe" // for linkname 11 | ) 12 | 13 | //go:linkname runtime_getAuxv runtime.getAuxv 14 | func runtime_getAuxv() []uintptr 15 | 16 | func init() { 17 | getAuxvFn = runtime_getAuxv 18 | } 19 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/execabs/execabs_go118.go: -------------------------------------------------------------------------------- 1 | // Copyright 2022 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | //go:build !go1.19 6 | 7 | package execabs 8 | 9 | import "os/exec" 10 | 11 | func isGo119ErrDot(err error) bool { 12 | return false 13 | } 14 | 15 | func isGo119ErrFieldSet(cmd *exec.Cmd) bool { 16 | return false 17 | } 18 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/execabs/execabs_go119.go: -------------------------------------------------------------------------------- 1 | // Copyright 2022 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | //go:build go1.19 6 | 7 | package execabs 8 | 9 | import ( 10 | "errors" 11 | "os/exec" 12 | ) 13 | 14 | func isGo119ErrDot(err error) bool { 15 | return errors.Is(err, exec.ErrDot) 16 | } 17 | 18 | func isGo119ErrFieldSet(cmd *exec.Cmd) bool { 19 | return cmd.Err != nil 20 | } 21 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/plan9/asm.s: -------------------------------------------------------------------------------- 1 | // Copyright 2014 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | #include "textflag.h" 6 | 7 | TEXT ·use(SB),NOSPLIT,$0 8 | RET 9 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/plan9/asm_plan9_arm.s: -------------------------------------------------------------------------------- 1 | // Copyright 2009 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | #include "textflag.h" 6 | 7 | // System call support for plan9 on arm 8 | 9 | // Just jump to package syscall's implementation for all these functions. 10 | // The runtime may know about them. 11 | 12 | TEXT ·Syscall(SB),NOSPLIT,$0-32 13 | JMP syscall·Syscall(SB) 14 | 15 | TEXT ·Syscall6(SB),NOSPLIT,$0-44 16 | JMP syscall·Syscall6(SB) 17 | 18 | TEXT ·RawSyscall(SB),NOSPLIT,$0-28 19 | JMP syscall·RawSyscall(SB) 20 | 21 | TEXT ·RawSyscall6(SB),NOSPLIT,$0-40 22 | JMP syscall·RawSyscall6(SB) 23 | 24 | TEXT ·seek(SB),NOSPLIT,$0-36 25 | JMP syscall·exit(SB) 26 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/plan9/env_plan9.go: -------------------------------------------------------------------------------- 1 | // Copyright 2011 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | // Plan 9 environment variables. 6 | 7 | package plan9 8 | 9 | import ( 10 | "syscall" 11 | ) 12 | 13 | func Getenv(key string) (value string, found bool) { 14 | return syscall.Getenv(key) 15 | } 16 | 17 | func Setenv(key, value string) error { 18 | return syscall.Setenv(key, value) 19 | } 20 | 21 | func Clearenv() { 22 | syscall.Clearenv() 23 | } 24 | 25 | func Environ() []string { 26 | return syscall.Environ() 27 | } 28 | 29 | func Unsetenv(key string) error { 30 | return syscall.Unsetenv(key) 31 | } 32 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/plan9/mksysnum_plan9.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # Copyright 2009 The Go Authors. All rights reserved. 3 | # Use of this source code is governed by a BSD-style 4 | # license that can be found in the LICENSE file. 5 | 6 | COMMAND="mksysnum_plan9.sh $@" 7 | 8 | cat <= 10 { 16 | buf[i] = byte(val%10 + '0') 17 | i-- 18 | val /= 10 19 | } 20 | buf[i] = byte(val + '0') 21 | return string(buf[i:]) 22 | } 23 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/unix/.gitignore: -------------------------------------------------------------------------------- 1 | _obj/ 2 | unix.test 3 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/unix/aliases.go: -------------------------------------------------------------------------------- 1 | // Copyright 2018 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | //go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris || zos 6 | 7 | package unix 8 | 9 | import "syscall" 10 | 11 | type Signal = syscall.Signal 12 | type Errno = syscall.Errno 13 | type SysProcAttr = syscall.SysProcAttr 14 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/unix/asm_aix_ppc64.s: -------------------------------------------------------------------------------- 1 | // Copyright 2018 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | //go:build gc 6 | 7 | #include "textflag.h" 8 | 9 | // 10 | // System calls for ppc64, AIX are implemented in runtime/syscall_aix.go 11 | // 12 | 13 | TEXT ·syscall6(SB),NOSPLIT,$0-88 14 | JMP syscall·syscall6(SB) 15 | 16 | TEXT ·rawSyscall6(SB),NOSPLIT,$0-88 17 | JMP syscall·rawSyscall6(SB) 18 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/unix/asm_bsd_arm.s: -------------------------------------------------------------------------------- 1 | // Copyright 2021 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | //go:build (freebsd || netbsd || openbsd) && gc 6 | 7 | #include "textflag.h" 8 | 9 | // System call support for ARM BSD 10 | 11 | // Just jump to package syscall's implementation for all these functions. 12 | // The runtime may know about them. 13 | 14 | TEXT ·Syscall(SB),NOSPLIT,$0-28 15 | B syscall·Syscall(SB) 16 | 17 | TEXT ·Syscall6(SB),NOSPLIT,$0-40 18 | B syscall·Syscall6(SB) 19 | 20 | TEXT ·Syscall9(SB),NOSPLIT,$0-52 21 | B syscall·Syscall9(SB) 22 | 23 | TEXT ·RawSyscall(SB),NOSPLIT,$0-28 24 | B syscall·RawSyscall(SB) 25 | 26 | TEXT ·RawSyscall6(SB),NOSPLIT,$0-40 27 | B syscall·RawSyscall6(SB) 28 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/unix/asm_openbsd_mips64.s: -------------------------------------------------------------------------------- 1 | // Copyright 2019 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | //go:build gc 6 | 7 | #include "textflag.h" 8 | 9 | // 10 | // System call support for mips64, OpenBSD 11 | // 12 | 13 | // Just jump to package syscall's implementation for all these functions. 14 | // The runtime may know about them. 15 | 16 | TEXT ·Syscall(SB),NOSPLIT,$0-56 17 | JMP syscall·Syscall(SB) 18 | 19 | TEXT ·Syscall6(SB),NOSPLIT,$0-80 20 | JMP syscall·Syscall6(SB) 21 | 22 | TEXT ·Syscall9(SB),NOSPLIT,$0-104 23 | JMP syscall·Syscall9(SB) 24 | 25 | TEXT ·RawSyscall(SB),NOSPLIT,$0-56 26 | JMP syscall·RawSyscall(SB) 27 | 28 | TEXT ·RawSyscall6(SB),NOSPLIT,$0-80 29 | JMP syscall·RawSyscall6(SB) 30 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/unix/asm_solaris_amd64.s: -------------------------------------------------------------------------------- 1 | // Copyright 2014 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | //go:build gc 6 | 7 | #include "textflag.h" 8 | 9 | // 10 | // System calls for amd64, Solaris are implemented in runtime/syscall_solaris.go 11 | // 12 | 13 | TEXT ·sysvicall6(SB),NOSPLIT,$0-88 14 | JMP syscall·sysvicall6(SB) 15 | 16 | TEXT ·rawSysvicall6(SB),NOSPLIT,$0-88 17 | JMP syscall·rawSysvicall6(SB) 18 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/unix/auxv_unsupported.go: -------------------------------------------------------------------------------- 1 | // Copyright 2025 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | //go:build !go1.21 && (aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris || zos) 6 | 7 | package unix 8 | 9 | import "syscall" 10 | 11 | func Auxv() ([][2]uintptr, error) { 12 | return nil, syscall.ENOTSUP 13 | } 14 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/unix/constants.go: -------------------------------------------------------------------------------- 1 | // Copyright 2015 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | //go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris || zos 6 | 7 | package unix 8 | 9 | const ( 10 | R_OK = 0x4 11 | W_OK = 0x2 12 | X_OK = 0x1 13 | ) 14 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/unix/endian_big.go: -------------------------------------------------------------------------------- 1 | // Copyright 2016 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | // 5 | //go:build armbe || arm64be || m68k || mips || mips64 || mips64p32 || ppc || ppc64 || s390 || s390x || shbe || sparc || sparc64 6 | 7 | package unix 8 | 9 | const isBigEndian = true 10 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/unix/endian_little.go: -------------------------------------------------------------------------------- 1 | // Copyright 2016 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | // 5 | //go:build 386 || amd64 || amd64p32 || alpha || arm || arm64 || loong64 || mipsle || mips64le || mips64p32le || nios2 || ppc64le || riscv || riscv64 || sh 6 | 7 | package unix 8 | 9 | const isBigEndian = false 10 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/unix/env_unix.go: -------------------------------------------------------------------------------- 1 | // Copyright 2010 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | //go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris || zos 6 | 7 | // Unix environment variables. 8 | 9 | package unix 10 | 11 | import "syscall" 12 | 13 | func Getenv(key string) (value string, found bool) { 14 | return syscall.Getenv(key) 15 | } 16 | 17 | func Setenv(key, value string) error { 18 | return syscall.Setenv(key, value) 19 | } 20 | 21 | func Clearenv() { 22 | syscall.Clearenv() 23 | } 24 | 25 | func Environ() []string { 26 | return syscall.Environ() 27 | } 28 | 29 | func Unsetenv(key string) error { 30 | return syscall.Unsetenv(key) 31 | } 32 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/unix/fcntl_linux_32bit.go: -------------------------------------------------------------------------------- 1 | // Copyright 2014 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | //go:build (linux && 386) || (linux && arm) || (linux && mips) || (linux && mipsle) || (linux && ppc) 6 | 7 | package unix 8 | 9 | func init() { 10 | // On 32-bit Linux systems, the fcntl syscall that matches Go's 11 | // Flock_t type is SYS_FCNTL64, not SYS_FCNTL. 12 | fcntl64Syscall = SYS_FCNTL64 13 | } 14 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/unix/gccgo_linux_amd64.go: -------------------------------------------------------------------------------- 1 | // Copyright 2015 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | //go:build gccgo && linux && amd64 6 | 7 | package unix 8 | 9 | import "syscall" 10 | 11 | //extern gettimeofday 12 | func realGettimeofday(*Timeval, *byte) int32 13 | 14 | func gettimeofday(tv *Timeval) (err syscall.Errno) { 15 | r := realGettimeofday(tv, nil) 16 | if r < 0 { 17 | return syscall.GetErrno() 18 | } 19 | return 0 20 | } 21 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/unix/mmap_nomremap.go: -------------------------------------------------------------------------------- 1 | // Copyright 2023 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | //go:build aix || darwin || dragonfly || freebsd || openbsd || solaris || zos 6 | 7 | package unix 8 | 9 | var mapper = &mmapper{ 10 | active: make(map[*byte][]byte), 11 | mmap: mmap, 12 | munmap: munmap, 13 | } 14 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/unix/pagesize_unix.go: -------------------------------------------------------------------------------- 1 | // Copyright 2017 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | //go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris || zos 6 | 7 | // For Unix, get the pagesize from the runtime. 8 | 9 | package unix 10 | 11 | import "syscall" 12 | 13 | func Getpagesize() int { 14 | return syscall.Getpagesize() 15 | } 16 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/unix/ptrace_darwin.go: -------------------------------------------------------------------------------- 1 | // Copyright 2020 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | //go:build darwin && !ios 6 | 7 | package unix 8 | 9 | func ptrace(request int, pid int, addr uintptr, data uintptr) error { 10 | return ptrace1(request, pid, addr, data) 11 | } 12 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/unix/ptrace_ios.go: -------------------------------------------------------------------------------- 1 | // Copyright 2020 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | //go:build ios 6 | 7 | package unix 8 | 9 | func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { 10 | return ENOTSUP 11 | } 12 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/unix/race.go: -------------------------------------------------------------------------------- 1 | // Copyright 2012 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | //go:build (darwin && race) || (linux && race) || (freebsd && race) 6 | 7 | package unix 8 | 9 | import ( 10 | "runtime" 11 | "unsafe" 12 | ) 13 | 14 | const raceenabled = true 15 | 16 | func raceAcquire(addr unsafe.Pointer) { 17 | runtime.RaceAcquire(addr) 18 | } 19 | 20 | func raceReleaseMerge(addr unsafe.Pointer) { 21 | runtime.RaceReleaseMerge(addr) 22 | } 23 | 24 | func raceReadRange(addr unsafe.Pointer, len int) { 25 | runtime.RaceReadRange(addr, len) 26 | } 27 | 28 | func raceWriteRange(addr unsafe.Pointer, len int) { 29 | runtime.RaceWriteRange(addr, len) 30 | } 31 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/unix/race0.go: -------------------------------------------------------------------------------- 1 | // Copyright 2012 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | //go:build aix || (darwin && !race) || (linux && !race) || (freebsd && !race) || netbsd || openbsd || solaris || dragonfly || zos 6 | 7 | package unix 8 | 9 | import ( 10 | "unsafe" 11 | ) 12 | 13 | const raceenabled = false 14 | 15 | func raceAcquire(addr unsafe.Pointer) { 16 | } 17 | 18 | func raceReleaseMerge(addr unsafe.Pointer) { 19 | } 20 | 21 | func raceReadRange(addr unsafe.Pointer, len int) { 22 | } 23 | 24 | func raceWriteRange(addr unsafe.Pointer, len int) { 25 | } 26 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/unix/readdirent_getdents.go: -------------------------------------------------------------------------------- 1 | // Copyright 2019 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | //go:build aix || dragonfly || freebsd || linux || netbsd || openbsd 6 | 7 | package unix 8 | 9 | // ReadDirent reads directory entries from fd and writes them into buf. 10 | func ReadDirent(fd int, buf []byte) (n int, err error) { 11 | return Getdents(fd, buf) 12 | } 13 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/unix/readdirent_getdirentries.go: -------------------------------------------------------------------------------- 1 | // Copyright 2019 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | //go:build darwin || zos 6 | 7 | package unix 8 | 9 | import "unsafe" 10 | 11 | // ReadDirent reads directory entries from fd and writes them into buf. 12 | func ReadDirent(fd int, buf []byte) (n int, err error) { 13 | // Final argument is (basep *uintptr) and the syscall doesn't take nil. 14 | // 64 bits should be enough. (32 bits isn't even on 386). Since the 15 | // actual system call is getdirentries64, 64 is a good guess. 16 | // TODO(rsc): Can we use a single global basep for all calls? 17 | var base = (*uintptr)(unsafe.Pointer(new(uint64))) 18 | return Getdirentries(fd, buf, base) 19 | } 20 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/unix/sockcmsg_dragonfly.go: -------------------------------------------------------------------------------- 1 | // Copyright 2019 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | package unix 6 | 7 | // Round the length of a raw sockaddr up to align it properly. 8 | func cmsgAlignOf(salen int) int { 9 | salign := SizeofPtr 10 | if SizeofPtr == 8 && !supportsABI(_dragonflyABIChangeVersion) { 11 | // 64-bit Dragonfly before the September 2019 ABI changes still requires 12 | // 32-bit aligned access to network subsystem. 13 | salign = 4 14 | } 15 | return (salen + salign - 1) & ^(salign - 1) 16 | } 17 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/unix/syscall_hurd.go: -------------------------------------------------------------------------------- 1 | // Copyright 2022 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | //go:build hurd 6 | 7 | package unix 8 | 9 | /* 10 | #include 11 | int ioctl(int, unsigned long int, uintptr_t); 12 | */ 13 | import "C" 14 | import "unsafe" 15 | 16 | func ioctl(fd int, req uint, arg uintptr) (err error) { 17 | r0, er := C.ioctl(C.int(fd), C.ulong(req), C.uintptr_t(arg)) 18 | if r0 == -1 && er != nil { 19 | err = er 20 | } 21 | return 22 | } 23 | 24 | func ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) { 25 | r0, er := C.ioctl(C.int(fd), C.ulong(req), C.uintptr_t(uintptr(arg))) 26 | if r0 == -1 && er != nil { 27 | err = er 28 | } 29 | return 30 | } 31 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/unix/syscall_hurd_386.go: -------------------------------------------------------------------------------- 1 | // Copyright 2022 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | //go:build 386 && hurd 6 | 7 | package unix 8 | 9 | const ( 10 | TIOCGETA = 0x62251713 11 | ) 12 | 13 | type Winsize struct { 14 | Row uint16 15 | Col uint16 16 | Xpixel uint16 17 | Ypixel uint16 18 | } 19 | 20 | type Termios struct { 21 | Iflag uint32 22 | Oflag uint32 23 | Cflag uint32 24 | Lflag uint32 25 | Cc [20]uint8 26 | Ispeed int32 27 | Ospeed int32 28 | } 29 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/unix/syscall_linux_alarm.go: -------------------------------------------------------------------------------- 1 | // Copyright 2022 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | //go:build linux && (386 || amd64 || mips || mipsle || mips64 || mipsle || ppc64 || ppc64le || ppc || s390x || sparc64) 6 | 7 | package unix 8 | 9 | // SYS_ALARM is not defined on arm or riscv, but is available for other GOARCH 10 | // values. 11 | 12 | //sys Alarm(seconds uint) (remaining uint, err error) 13 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/unix/syscall_linux_amd64_gc.go: -------------------------------------------------------------------------------- 1 | // Copyright 2016 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | //go:build amd64 && linux && gc 6 | 7 | package unix 8 | 9 | import "syscall" 10 | 11 | //go:noescape 12 | func gettimeofday(tv *Timeval) (err syscall.Errno) 13 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/unix/syscall_linux_gc.go: -------------------------------------------------------------------------------- 1 | // Copyright 2018 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | //go:build linux && gc 6 | 7 | package unix 8 | 9 | // SyscallNoError may be used instead of Syscall for syscalls that don't fail. 10 | func SyscallNoError(trap, a1, a2, a3 uintptr) (r1, r2 uintptr) 11 | 12 | // RawSyscallNoError may be used instead of RawSyscall for syscalls that don't 13 | // fail. 14 | func RawSyscallNoError(trap, a1, a2, a3 uintptr) (r1, r2 uintptr) 15 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/unix/syscall_linux_gc_386.go: -------------------------------------------------------------------------------- 1 | // Copyright 2018 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | //go:build linux && gc && 386 6 | 7 | package unix 8 | 9 | import "syscall" 10 | 11 | // Underlying system call writes to newoffset via pointer. 12 | // Implemented in assembly to avoid allocation. 13 | func seek(fd int, offset int64, whence int) (newoffset int64, err syscall.Errno) 14 | 15 | func socketcall(call int, a0, a1, a2, a3, a4, a5 uintptr) (n int, err syscall.Errno) 16 | func rawsocketcall(call int, a0, a1, a2, a3, a4, a5 uintptr) (n int, err syscall.Errno) 17 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/unix/syscall_linux_gc_arm.go: -------------------------------------------------------------------------------- 1 | // Copyright 2009 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | //go:build arm && gc && linux 6 | 7 | package unix 8 | 9 | import "syscall" 10 | 11 | // Underlying system call writes to newoffset via pointer. 12 | // Implemented in assembly to avoid allocation. 13 | func seek(fd int, offset int64, whence int) (newoffset int64, err syscall.Errno) 14 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/unix/syscall_linux_gccgo_arm.go: -------------------------------------------------------------------------------- 1 | // Copyright 2018 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | //go:build linux && gccgo && arm 6 | 7 | package unix 8 | 9 | import ( 10 | "syscall" 11 | "unsafe" 12 | ) 13 | 14 | func seek(fd int, offset int64, whence int) (int64, syscall.Errno) { 15 | var newoffset int64 16 | offsetLow := uint32(offset & 0xffffffff) 17 | offsetHigh := uint32((offset >> 32) & 0xffffffff) 18 | _, _, err := Syscall6(SYS__LLSEEK, uintptr(fd), uintptr(offsetHigh), uintptr(offsetLow), uintptr(unsafe.Pointer(&newoffset)), uintptr(whence), 0) 19 | return newoffset, err 20 | } 21 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/unix/syscall_solaris_amd64.go: -------------------------------------------------------------------------------- 1 | // Copyright 2009 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | //go:build amd64 && solaris 6 | 7 | package unix 8 | 9 | func setTimespec(sec, nsec int64) Timespec { 10 | return Timespec{Sec: sec, Nsec: nsec} 11 | } 12 | 13 | func setTimeval(sec, usec int64) Timeval { 14 | return Timeval{Sec: sec, Usec: usec} 15 | } 16 | 17 | func (iov *Iovec) SetLen(length int) { 18 | iov.Len = uint64(length) 19 | } 20 | 21 | func (msghdr *Msghdr) SetIovlen(length int) { 22 | msghdr.Iovlen = int32(length) 23 | } 24 | 25 | func (cmsg *Cmsghdr) SetLen(length int) { 26 | cmsg.Len = uint32(length) 27 | } 28 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/unix/syscall_unix_gc.go: -------------------------------------------------------------------------------- 1 | // Copyright 2016 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | //go:build (darwin || dragonfly || freebsd || (linux && !ppc64 && !ppc64le) || netbsd || openbsd || solaris) && gc 6 | 7 | package unix 8 | 9 | import "syscall" 10 | 11 | func Syscall(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err syscall.Errno) 12 | func Syscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno) 13 | func RawSyscall(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err syscall.Errno) 14 | func RawSyscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno) 15 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/unix/sysvshm_linux.go: -------------------------------------------------------------------------------- 1 | // Copyright 2021 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | //go:build linux 6 | 7 | package unix 8 | 9 | import "runtime" 10 | 11 | // SysvShmCtl performs control operations on the shared memory segment 12 | // specified by id. 13 | func SysvShmCtl(id, cmd int, desc *SysvShmDesc) (result int, err error) { 14 | if runtime.GOARCH == "arm" || 15 | runtime.GOARCH == "mips64" || runtime.GOARCH == "mips64le" { 16 | cmd |= ipc_64 17 | } 18 | 19 | return shmctl(id, cmd, desc) 20 | } 21 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/unix/sysvshm_unix_other.go: -------------------------------------------------------------------------------- 1 | // Copyright 2021 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | //go:build (darwin && !ios) || zos 6 | 7 | package unix 8 | 9 | // SysvShmCtl performs control operations on the shared memory segment 10 | // specified by id. 11 | func SysvShmCtl(id, cmd int, desc *SysvShmDesc) (result int, err error) { 12 | return shmctl(id, cmd, desc) 13 | } 14 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/unix/vgetrandom_linux.go: -------------------------------------------------------------------------------- 1 | // Copyright 2024 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | //go:build linux && go1.24 6 | 7 | package unix 8 | 9 | import _ "unsafe" 10 | 11 | //go:linkname vgetrandom runtime.vgetrandom 12 | //go:noescape 13 | func vgetrandom(p []byte, flags uint32) (ret int, supported bool) 14 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/unix/vgetrandom_unsupported.go: -------------------------------------------------------------------------------- 1 | // Copyright 2024 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | //go:build !linux || !go1.24 6 | 7 | package unix 8 | 9 | func vgetrandom(p []byte, flags uint32) (ret int, supported bool) { 10 | return -1, false 11 | } 12 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/unix/zptrace_linux_arm64.go: -------------------------------------------------------------------------------- 1 | // Code generated by linux/mkall.go generatePtraceRegSet("arm64"). DO NOT EDIT. 2 | 3 | package unix 4 | 5 | import "unsafe" 6 | 7 | // PtraceGetRegSetArm64 fetches the registers used by arm64 binaries. 8 | func PtraceGetRegSetArm64(pid, addr int, regsout *PtraceRegsArm64) error { 9 | iovec := Iovec{(*byte)(unsafe.Pointer(regsout)), uint64(unsafe.Sizeof(*regsout))} 10 | return ptracePtr(PTRACE_GETREGSET, pid, uintptr(addr), unsafe.Pointer(&iovec)) 11 | } 12 | 13 | // PtraceSetRegSetArm64 sets the registers used by arm64 binaries. 14 | func PtraceSetRegSetArm64(pid, addr int, regs *PtraceRegsArm64) error { 15 | iovec := Iovec{(*byte)(unsafe.Pointer(regs)), uint64(unsafe.Sizeof(*regs))} 16 | return ptracePtr(PTRACE_SETREGSET, pid, uintptr(addr), unsafe.Pointer(&iovec)) 17 | } 18 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/windows/aliases.go: -------------------------------------------------------------------------------- 1 | // Copyright 2018 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | //go:build windows 6 | 7 | package windows 8 | 9 | import "syscall" 10 | 11 | type Errno = syscall.Errno 12 | type SysProcAttr = syscall.SysProcAttr 13 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/windows/mksyscall.go: -------------------------------------------------------------------------------- 1 | // Copyright 2009 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | //go:build generate 6 | 7 | package windows 8 | 9 | //go:generate go run golang.org/x/sys/windows/mkwinsyscall -output zsyscall_windows.go eventlog.go service.go syscall_windows.go security_windows.go setupapi_windows.go 10 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/windows/race.go: -------------------------------------------------------------------------------- 1 | // Copyright 2012 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | //go:build windows && race 6 | 7 | package windows 8 | 9 | import ( 10 | "runtime" 11 | "unsafe" 12 | ) 13 | 14 | const raceenabled = true 15 | 16 | func raceAcquire(addr unsafe.Pointer) { 17 | runtime.RaceAcquire(addr) 18 | } 19 | 20 | func raceReleaseMerge(addr unsafe.Pointer) { 21 | runtime.RaceReleaseMerge(addr) 22 | } 23 | 24 | func raceReadRange(addr unsafe.Pointer, len int) { 25 | runtime.RaceReadRange(addr, len) 26 | } 27 | 28 | func raceWriteRange(addr unsafe.Pointer, len int) { 29 | runtime.RaceWriteRange(addr, len) 30 | } 31 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/windows/race0.go: -------------------------------------------------------------------------------- 1 | // Copyright 2012 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | //go:build windows && !race 6 | 7 | package windows 8 | 9 | import ( 10 | "unsafe" 11 | ) 12 | 13 | const raceenabled = false 14 | 15 | func raceAcquire(addr unsafe.Pointer) { 16 | } 17 | 18 | func raceReleaseMerge(addr unsafe.Pointer) { 19 | } 20 | 21 | func raceReadRange(addr unsafe.Pointer, len int) { 22 | } 23 | 24 | func raceWriteRange(addr unsafe.Pointer, len int) { 25 | } 26 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/windows/str.go: -------------------------------------------------------------------------------- 1 | // Copyright 2009 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | //go:build windows 6 | 7 | package windows 8 | 9 | func itoa(val int) string { // do it here rather than with fmt to avoid dependency 10 | if val < 0 { 11 | return "-" + itoa(-val) 12 | } 13 | var buf [32]byte // big enough for int64 14 | i := len(buf) - 1 15 | for val >= 10 { 16 | buf[i] = byte(val%10 + '0') 17 | i-- 18 | val /= 10 19 | } 20 | buf[i] = byte(val + '0') 21 | return string(buf[i:]) 22 | } 23 | -------------------------------------------------------------------------------- /vendor/golang.org/x/term/README.md: -------------------------------------------------------------------------------- 1 | # Go terminal/console support 2 | 3 | [![Go Reference](https://pkg.go.dev/badge/golang.org/x/term.svg)](https://pkg.go.dev/golang.org/x/term) 4 | 5 | This repository provides Go terminal and console support packages. 6 | 7 | ## Report Issues / Send Patches 8 | 9 | This repository uses Gerrit for code changes. To learn how to submit changes to 10 | this repository, see https://go.dev/doc/contribute. 11 | 12 | The git repository is https://go.googlesource.com/term. 13 | 14 | The main issue tracker for the term repository is located at 15 | https://go.dev/issues. Prefix your issue with "x/term:" in the 16 | subject line, so it is easy to find. 17 | -------------------------------------------------------------------------------- /vendor/golang.org/x/term/codereview.cfg: -------------------------------------------------------------------------------- 1 | issuerepo: golang/go 2 | -------------------------------------------------------------------------------- /vendor/golang.org/x/term/term_unix_bsd.go: -------------------------------------------------------------------------------- 1 | // Copyright 2013 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | //go:build darwin || dragonfly || freebsd || netbsd || openbsd 6 | 7 | package term 8 | 9 | import "golang.org/x/sys/unix" 10 | 11 | const ioctlReadTermios = unix.TIOCGETA 12 | const ioctlWriteTermios = unix.TIOCSETA 13 | -------------------------------------------------------------------------------- /vendor/golang.org/x/term/term_unix_other.go: -------------------------------------------------------------------------------- 1 | // Copyright 2021 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | //go:build aix || linux || solaris || zos 6 | 7 | package term 8 | 9 | import "golang.org/x/sys/unix" 10 | 11 | const ioctlReadTermios = unix.TCGETS 12 | const ioctlWriteTermios = unix.TCSETS 13 | -------------------------------------------------------------------------------- /vendor/gopkg.in/ozeidan/fuzzy-patricia.v3/AUTHORS: -------------------------------------------------------------------------------- 1 | This is the complete list of go-patricia copyright holders: 2 | 3 | Ondřej Kupka 4 | -------------------------------------------------------------------------------- /vendor/gopkg.in/yaml.v3/NOTICE: -------------------------------------------------------------------------------- 1 | Copyright 2011-2016 Canonical Ltd. 2 | 3 | Licensed under the Apache License, Version 2.0 (the "License"); 4 | you may not use this file except in compliance with the License. 5 | You may obtain a copy of the License at 6 | 7 | http://www.apache.org/licenses/LICENSE-2.0 8 | 9 | Unless required by applicable law or agreed to in writing, software 10 | distributed under the License is distributed on an "AS IS" BASIS, 11 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | See the License for the specific language governing permissions and 13 | limitations under the License. 14 | --------------------------------------------------------------------------------