Config cleanup, create_mrshughes refactoring
This commit is contained in:
@@ -40,26 +40,35 @@ writable_roots = [ "/Users/jetpac/.codex/skills" ]
|
||||
|
||||
[analytics]
|
||||
enabled = false
|
||||
|
||||
|
||||
[model_providers.oca-responses]
|
||||
base_url = "https://code-internal.aiservice.us-chicago-1.oci.oraclecloud.com/20250206/app/litellm"
|
||||
http_headers = { "client" = "codex-cli", "client-version" = "0" }
|
||||
model = "gpt5"
|
||||
name = "Oracle Code Assist Responses"
|
||||
wire_api = "responses"
|
||||
stream_max_retries = 20
|
||||
request_max_retries = 20
|
||||
|
||||
|
||||
[model_providers.oca-chat]
|
||||
base_url = "https://code-internal.aiservice.us-chicago-1.oci.oraclecloud.com/20250206/app/litellm"
|
||||
http_headers = { "client" = "codex-cli", "client-version" = "0" }
|
||||
model = "gpt5"
|
||||
name = "Oracle Code Assist Chat"
|
||||
wire_api = "responses"
|
||||
|
||||
[profiles.grok-4]
|
||||
model = "grok4"
|
||||
model_provider = "oca-chat"
|
||||
review_model = "grok4"
|
||||
|
||||
[profiles.grok-4-fast-reasoning]
|
||||
model = "grok4-fast-reasoning"
|
||||
model_provider = "oca-chat"
|
||||
review_model = "grok4-fast-reasoning"
|
||||
|
||||
[profiles.grok-code-fast-1]
|
||||
model = "grok-code-fast-1"
|
||||
model_provider = "oca-chat"
|
||||
@@ -157,6 +166,9 @@ PLAYWRIGHT_BROWSERS_PATH = "0"
|
||||
[mcp_servers.playwright.tools.browser_navigate]
|
||||
approval_mode = "approve"
|
||||
|
||||
[mcp_servers.playwright.tools.browser_resize]
|
||||
approval_mode = "approve"
|
||||
|
||||
|
||||
[mcp_servers.oci-kb]
|
||||
command = "/Users/jetpac/.local/bin/ocikb-mcp-server"
|
||||
@@ -178,6 +190,52 @@ command = "/Users/jetpac/bin/devops-mcp-wrapper.sh"
|
||||
env_vars = ["OP_TOKEN", "OPERATOR_ACCESS_TOKEN"]
|
||||
startup_timeout_sec = 180.0
|
||||
|
||||
[mcp_servers.mcp_shepherd]
|
||||
command = "uvx"
|
||||
args = [
|
||||
"--default-index",
|
||||
"https://artifactory.oci.oraclecorp.com/api/pypi/global-release-pypi/simple/",
|
||||
"--from",
|
||||
"mcp-shepherd-server",
|
||||
"mcp-shepherd",
|
||||
"--transport",
|
||||
"stdio",
|
||||
]
|
||||
env_vars = ["OP_TOKEN", "OPERATOR_ACCESS_TOKEN", "SSH_AUTH_SOCK"]
|
||||
startup_timeout_sec = 60.0
|
||||
|
||||
[mcp_servers.mcp_shepherd.env]
|
||||
MCP_SHEPHERD_AUTH_PROVIDER = "OP_TOKEN"
|
||||
MCP_SHEPHERD_TOOL_PROFILE = "core"
|
||||
MCP_SHEPHERD_MAX_REGISTERED_TOOLS = "128"
|
||||
MCP_SHEPHERD_ENABLE_WRITES = "1"
|
||||
MCP_SHEPHERD_TIMEOUT_SECONDS = "25"
|
||||
UV_SKIP_WHEEL_FILENAME_CHECK = "1"
|
||||
|
||||
[mcp_servers.mcp_shepherd.tools.shepherd_list_releases]
|
||||
approval_mode = "approve"
|
||||
|
||||
[mcp_servers.mcp_shepherd.tools.shepherd_get_release]
|
||||
approval_mode = "approve"
|
||||
|
||||
[mcp_servers.mcp_shepherd.tools.shepherd_list_release_phases]
|
||||
approval_mode = "approve"
|
||||
|
||||
[mcp_servers.mcp_shepherd.tools.shepherd_list_flocks]
|
||||
approval_mode = "approve"
|
||||
|
||||
[mcp_servers.mcp_shepherd.tools.shepherd_list_execution_targets_for_flock]
|
||||
approval_mode = "approve"
|
||||
|
||||
[mcp_servers.mcp_shepherd.tools.shepherd_get_flock]
|
||||
approval_mode = "approve"
|
||||
|
||||
[mcp_servers.mcp_shepherd.tools.shepherd_list_flock_configs]
|
||||
approval_mode = "approve"
|
||||
|
||||
[mcp_servers.mcp_shepherd.tools.shepherd_get_flock_config]
|
||||
approval_mode = "approve"
|
||||
|
||||
[mcp_servers.devops_mcp.tools.get_regions]
|
||||
approval_mode = "approve"
|
||||
|
||||
@@ -199,6 +257,15 @@ approval_mode = "approve"
|
||||
[mcp_servers.devops_mcp.tools.get_tenancy_by_name]
|
||||
approval_mode = "approve"
|
||||
|
||||
[mcp_servers.devops_mcp.tools.get_shepherd_projects]
|
||||
approval_mode = "approve"
|
||||
|
||||
[mcp_servers.devops_mcp.tools.get_shepherd_phase_execution_targets]
|
||||
approval_mode = "approve"
|
||||
|
||||
[mcp_servers.devops_mcp.tools.get_release_details]
|
||||
approval_mode = "approve"
|
||||
|
||||
[projects."/Users/jetpac/bin"]
|
||||
trust_level = "trusted"
|
||||
|
||||
@@ -352,6 +419,30 @@ trust_level = "trusted"
|
||||
[projects."/Users/jetpac/Documents/OSD/oc21-mfo/oci-desktop-service-shepherd"]
|
||||
trust_level = "trusted"
|
||||
|
||||
[projects."/Users/jetpac/Documents/vlad_mutt_notmuch"]
|
||||
trust_level = "trusted"
|
||||
|
||||
[projects."/private/var/tmp/deleteme/oci-desktop-service-shepherd"]
|
||||
trust_level = "trusted"
|
||||
|
||||
[projects."/Users/jetpac/PycharmProjects/kucharka"]
|
||||
trust_level = "trusted"
|
||||
|
||||
[projects."/private/tmp/review"]
|
||||
trust_level = "trusted"
|
||||
|
||||
[projects."/private/tmp/kube"]
|
||||
trust_level = "trusted"
|
||||
|
||||
[projects."/Users/jetpac/Documents/OSD/tartan-alarms"]
|
||||
trust_level = "trusted"
|
||||
|
||||
[projects."/private/tmp/qqq"]
|
||||
trust_level = "trusted"
|
||||
|
||||
[projects."/private/tmp/conf"]
|
||||
trust_level = "trusted"
|
||||
|
||||
[mcp_servers.grt]
|
||||
command = "/Users/jetpac/.codex/bin/grt-mcp"
|
||||
startup_timeout_sec = 30
|
||||
@@ -372,6 +463,12 @@ startup_timeout_sec = 30
|
||||
[mcp_servers.webrti.tools."webrti.get_entry"]
|
||||
approval_mode = "approve"
|
||||
|
||||
[mcp_servers.webrti.tools."webrti.list_by_date"]
|
||||
approval_mode = "approve"
|
||||
|
||||
[mcp_servers.webrti.tools."webrti.get_repo_list"]
|
||||
approval_mode = "approve"
|
||||
|
||||
[mcp_servers.bugdb]
|
||||
command = "/Users/jetpac/.codex/bin/bugdb-mcp"
|
||||
startup_timeout_sec = 30
|
||||
@@ -397,6 +494,9 @@ approval_mode = "approve"
|
||||
[mcp_servers.bugdb.tools."bugdb.search_bugs"]
|
||||
approval_mode = "approve"
|
||||
|
||||
[mcp_servers.bugdb.tools."bugdb.get_children"]
|
||||
approval_mode = "approve"
|
||||
|
||||
[mcp_servers.central_confluence]
|
||||
command = "uvx"
|
||||
args = [
|
||||
@@ -415,6 +515,9 @@ approval_mode = "approve"
|
||||
[mcp_servers.central_confluence.tools.confluence_get_page]
|
||||
approval_mode = "approve"
|
||||
|
||||
[mcp_servers.central_confluence.tools.confluence_search]
|
||||
approval_mode = "approve"
|
||||
|
||||
[mcp_servers.notmuch]
|
||||
command = "node"
|
||||
args = ["/Users/jetpac/Documents/codex-tools/MCPs/notmuch/dist/index.js"]
|
||||
@@ -429,11 +532,26 @@ approval_mode = "approve"
|
||||
[mcp_servers.notmuch.tools.notmuch_get_message]
|
||||
approval_mode = "approve"
|
||||
|
||||
[mcp_servers.notmuch.tools.notmuch_count_messages]
|
||||
approval_mode = "approve"
|
||||
|
||||
[mcp_servers.notmuch.tools.notmuch_list_tags]
|
||||
approval_mode = "approve"
|
||||
|
||||
[mcp_servers.vm]
|
||||
command = "node"
|
||||
args = ["/Users/jetpac/Documents/codex-tools/MCPs/vm/dist/index.js"]
|
||||
startup_timeout_sec = 30
|
||||
|
||||
[mcp_servers.vm.tools.vm_list_machines]
|
||||
approval_mode = "approve"
|
||||
|
||||
[mcp_servers.vm.tools.vm_get_machine_info]
|
||||
approval_mode = "approve"
|
||||
|
||||
[mcp_servers.vm.tools.vm_guest_exec]
|
||||
approval_mode = "approve"
|
||||
|
||||
[mcp_servers.oracle-bitbucket]
|
||||
command = "node"
|
||||
args = ["/Users/jetpac/Documents/codex-tools/MCPs/bitbucket-mcp/build/index.js"]
|
||||
|
||||
@@ -57,31 +57,31 @@ history = 20000
|
||||
|
||||
[keyboard]
|
||||
bindings = [
|
||||
# tmux bindings
|
||||
# alt + <number> switches to window <number>
|
||||
{ key = "1" , mods = "Option", chars = "\u0001\u0031" }, # C-a 1
|
||||
{ key = "2" , mods = "Option", chars = "\u0001\u0032" }, # C-a 2
|
||||
{ key = "3" , mods = "Option", chars = "\u0001\u0033" }, # C-a 3
|
||||
{ key = "4" , mods = "Option", chars = "\u0001\u0034" }, # C-a 4
|
||||
{ key = "5" , mods = "Option", chars = "\u0001\u0035" }, # C-a 5
|
||||
{ key = "6" , mods = "Option", chars = "\u0001\u0036" }, # C-a 6
|
||||
{ key = "7" , mods = "Option", chars = "\u0001\u0037" }, # C-a 7
|
||||
{ key = "8" , mods = "Option", chars = "\u0001\u0038" }, # C-a 8
|
||||
{ key = "9" , mods = "Option", chars = "\u0001\u0039" }, # C-a 9
|
||||
{ key = "h" , mods = "Option", chars = "\u0001\u0068" }, # C-a left
|
||||
{ key = "j" , mods = "Option", chars = "\u0001\u006a" }, # C-a down
|
||||
{ key = "k" , mods = "Option", chars = "\u0001\u006b" }, # C-a up
|
||||
{ key = "l" , mods = "Option", chars = "\u0001\u006c" }, # C-a right
|
||||
# # tmux bindings
|
||||
# # alt + <number> switches to window <number>
|
||||
# { key = "1" , mods = "Option", chars = "\u0001\u0031" }, # C-a 1
|
||||
# { key = "2" , mods = "Option", chars = "\u0001\u0032" }, # C-a 2
|
||||
# { key = "3" , mods = "Option", chars = "\u0001\u0033" }, # C-a 3
|
||||
# { key = "4" , mods = "Option", chars = "\u0001\u0034" }, # C-a 4
|
||||
# { key = "5" , mods = "Option", chars = "\u0001\u0035" }, # C-a 5
|
||||
# { key = "6" , mods = "Option", chars = "\u0001\u0036" }, # C-a 6
|
||||
# { key = "7" , mods = "Option", chars = "\u0001\u0037" }, # C-a 7
|
||||
# { key = "8" , mods = "Option", chars = "\u0001\u0038" }, # C-a 8
|
||||
# { key = "9" , mods = "Option", chars = "\u0001\u0039" }, # C-a 9
|
||||
# { key = "h" , mods = "Option", chars = "\u0001\u0068" }, # C-a left
|
||||
# { key = "j" , mods = "Option", chars = "\u0001\u006a" }, # C-a down
|
||||
# { key = "k" , mods = "Option", chars = "\u0001\u006b" }, # C-a up
|
||||
# { key = "l" , mods = "Option", chars = "\u0001\u006c" }, # C-a right
|
||||
|
||||
# for tmux resizing
|
||||
# option + command + <hjkl> for resizing
|
||||
{ key = "k" , mods = "Option|command", chars = "\u0001\u001b\u005b\u0031\u003b\u0035\u0041" }, # C-a C-up
|
||||
{ key = "j" , mods = "Option|command", chars = "\u0001\u001b\u005b\u0031\u003b\u0035\u0042" }, # C-a C-down
|
||||
{ key = "l" , mods = "Option|command", chars = "\u0001\u001b\u005b\u0031\u003b\u0035\u0043" }, # C-a C-right
|
||||
{ key = "h" , mods = "Option|command", chars = "\u0001\u001b\u005b\u0031\u003b\u0035\u0044" }, # C-a C-left
|
||||
# # for tmux resizing
|
||||
# # option + command + <hjkl> for resizing
|
||||
# { key = "k" , mods = "Option|command", chars = "\u0001\u001b\u005b\u0031\u003b\u0035\u0041" }, # C-a C-up
|
||||
# { key = "j" , mods = "Option|command", chars = "\u0001\u001b\u005b\u0031\u003b\u0035\u0042" }, # C-a C-down
|
||||
# { key = "l" , mods = "Option|command", chars = "\u0001\u001b\u005b\u0031\u003b\u0035\u0043" }, # C-a C-right
|
||||
# { key = "h" , mods = "Option|command", chars = "\u0001\u001b\u005b\u0031\u003b\u0035\u0044" }, # C-a C-left
|
||||
|
||||
{ key = "n" , mods = "Alt", chars = "\u0001\u006e" }, # alt+n -> C-a n
|
||||
{ key = "p" , mods = "Alt", chars = "\u0001\u0070" }, # alt+p -> C-a p
|
||||
# { key = "n" , mods = "Alt", chars = "\u0001\u006e" }, # alt+n -> C-a n
|
||||
# { key = "p" , mods = "Alt", chars = "\u0001\u0070" }, # alt+p -> C-a p
|
||||
|
||||
{ key = "ArrowLeft", mods = "Command|Shift", action = "SelectPreviousTab" },
|
||||
{ key = "ArrowRight", mods = "Command|Shift", action = "SelectNextTab" },
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
keybinds clear-defaults=true {
|
||||
locked {
|
||||
bind "Ctrl g" { SwitchToMode "normal"; }
|
||||
bind "Ctrl Alt g" { SwitchToMode "normal"; }
|
||||
}
|
||||
pane {
|
||||
bind "left" { MoveFocus "left"; }
|
||||
@@ -71,10 +71,10 @@ keybinds clear-defaults=true {
|
||||
bind "Ctrl n" { SwitchToMode "normal"; }
|
||||
}
|
||||
move {
|
||||
bind "left" { MovePane "left"; }
|
||||
bind "down" { MovePane "down"; }
|
||||
bind "up" { MovePane "up"; }
|
||||
bind "right" { MovePane "right"; }
|
||||
bind "Alt left" { MovePane "left"; }
|
||||
bind "Alt down" { MovePane "down"; }
|
||||
bind "Alt up" { MovePane "up"; }
|
||||
bind "Alt right" { MovePane "right"; }
|
||||
bind "h" { MovePane "left"; }
|
||||
bind "Ctrl h" { SwitchToMode "normal"; }
|
||||
bind "j" { MovePane "down"; }
|
||||
@@ -134,17 +134,17 @@ keybinds clear-defaults=true {
|
||||
}
|
||||
}
|
||||
shared_except "locked" {
|
||||
bind "Alt left" { MoveFocusOrTab "left"; }
|
||||
// bind "Alt left" { MoveFocusOrTab "left"; }
|
||||
bind "Alt down" { MoveFocus "down"; }
|
||||
bind "Alt up" { MoveFocus "up"; }
|
||||
bind "Alt right" { MoveFocusOrTab "right"; }
|
||||
// bind "Alt right" { MoveFocusOrTab "right"; }
|
||||
bind "Alt +" { Resize "Increase"; }
|
||||
bind "Alt -" { Resize "Decrease"; }
|
||||
bind "Alt =" { Resize "Increase"; }
|
||||
bind "Alt [" { PreviousSwapLayout; }
|
||||
bind "Alt ]" { NextSwapLayout; }
|
||||
bind "Alt f" { ToggleFloatingPanes; }
|
||||
bind "Ctrl g" { SwitchToMode "locked"; }
|
||||
bind "Ctrl Alt g" { SwitchToMode "locked"; }
|
||||
bind "Alt h" { MoveFocusOrTab "left"; }
|
||||
bind "Alt i" { MoveTab "left"; }
|
||||
bind "Alt j" { MoveFocus "down"; }
|
||||
@@ -163,7 +163,7 @@ keybinds clear-defaults=true {
|
||||
bind "Ctrl o" { SwitchToMode "session"; }
|
||||
}
|
||||
shared_except "locked" "scroll" "search" "tmux" {
|
||||
bind "Ctrl b" { SwitchToMode "tmux"; }
|
||||
bind "Ctrl a" { SwitchToMode "tmux"; }
|
||||
}
|
||||
shared_except "locked" "scroll" "search" {
|
||||
bind "Ctrl s" { SwitchToMode "scroll"; }
|
||||
@@ -241,6 +241,16 @@ keybinds clear-defaults=true {
|
||||
bind "o" { FocusNextPane; }
|
||||
bind "p" { GoToPreviousTab; SwitchToMode "normal"; }
|
||||
bind "z" { ToggleFocusFullscreen; SwitchToMode "normal"; }
|
||||
bind "1" { GoToTab 1; SwitchToMode "normal"; }
|
||||
bind "2" { GoToTab 2; SwitchToMode "normal"; }
|
||||
bind "3" { GoToTab 3; SwitchToMode "normal"; }
|
||||
bind "4" { GoToTab 4; SwitchToMode "normal"; }
|
||||
bind "5" { GoToTab 5; SwitchToMode "normal"; }
|
||||
bind "6" { GoToTab 6; SwitchToMode "normal"; }
|
||||
bind "7" { GoToTab 7; SwitchToMode "normal"; }
|
||||
bind "8" { GoToTab 8; SwitchToMode "normal"; }
|
||||
bind "9" { GoToTab 9; SwitchToMode "normal"; }
|
||||
bind "-" { NewPane "down"; SwitchToMode "normal"; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -283,7 +293,8 @@ web_client {
|
||||
// Default: default
|
||||
//
|
||||
// theme "dracula"
|
||||
theme "solarized-dark"
|
||||
// theme "solarized-dark"
|
||||
theme "nord"
|
||||
|
||||
// Choose the base input mode of zellij.
|
||||
// Default: normal
|
||||
@@ -321,14 +332,14 @@ web_client {
|
||||
// - true (default)
|
||||
// - false
|
||||
//
|
||||
// mouse_mode false
|
||||
mouse_mode true
|
||||
|
||||
// Toggle having pane frames around the panes
|
||||
// Options:
|
||||
// - true (default, enabled)
|
||||
// - false
|
||||
//
|
||||
// pane_frames false
|
||||
pane_frames false
|
||||
|
||||
// When attaching to an existing session with other users,
|
||||
// should the session be mirrored (true)
|
||||
@@ -366,7 +377,7 @@ web_client {
|
||||
// copy_command "wl-copy" // wayland
|
||||
// copy_command "pbcopy" // osx
|
||||
//
|
||||
// copy_command "pbcopy"
|
||||
copy_command "pbcopy"
|
||||
|
||||
// Choose the destination for copied text
|
||||
// Allows using the primary selection buffer (on x11/wayland) instead of the system clipboard.
|
||||
@@ -384,7 +395,7 @@ web_client {
|
||||
|
||||
// Path to the default editor to use to edit pane scrollbuffer
|
||||
// Default: $EDITOR or $VISUAL
|
||||
// scrollback_editor "/usr/bin/vim"
|
||||
scrollback_editor "/usr/bin/vim"
|
||||
|
||||
// A fixed name to always give the Zellij session.
|
||||
// Consider also setting `attach_to_session true,`
|
||||
|
||||
2
.hgrc
2
.hgrc
@@ -4,7 +4,7 @@
|
||||
|
||||
[ui]
|
||||
username =Petr Nyc <petr.nyc@oracle.com>
|
||||
merge =
|
||||
merge = vimdiff
|
||||
|
||||
[extensions]
|
||||
|
||||
|
||||
70
.spacemacs
70
.spacemacs
@@ -32,7 +32,8 @@ This function should only modify configuration layer settings."
|
||||
|
||||
;; List of configuration layers to load.
|
||||
dotspacemacs-configuration-layers
|
||||
'(windows-scripts
|
||||
'(typescript
|
||||
windows-scripts
|
||||
swift
|
||||
multiple-cursors ;; https://www.spacemacs.org/layers/+misc/multiple-cursors/README.html#key-bindings
|
||||
(aider :variables
|
||||
@@ -672,7 +673,7 @@ before packages are loaded."
|
||||
notmuch-search-oldest-first nil ;; new email on top
|
||||
notmuch-column-control 1.0 ;; just one columnt for searches
|
||||
notmuch-hello-insert-recent-searches nil ;; don't display recent searches in notmuch-helo
|
||||
;; notmuch-address-command "/Users/jetpac/bin/notmuch-address"
|
||||
notmuch-address-command "/Users/jetpac/bin/notmuch-address"
|
||||
|
||||
;; these are default
|
||||
;; notmuch-hello-sections '(notmuch-hello-insert-header notmuch-hello-insert-saved-searches
|
||||
@@ -1345,7 +1346,6 @@ This function is called at the very end of Spacemacs initialization."
|
||||
;; If you edit it by hand, you could mess it up, so be careful.
|
||||
;; Your init file should contain only one such instance.
|
||||
;; If there is more than one, they won't work right.
|
||||
;; '(custom-enabled-themes '(doom-solarized-dark))
|
||||
'(custom-safe-themes
|
||||
'("d97ac0baa0b67be4f7523795621ea5096939a47e8b46378f79e78846e0e4ad3d"
|
||||
"21d2bf8d4d1df4859ff94422b5e41f6f2eeff14dd12f01428fa3cb4cb50ea0fb"
|
||||
@@ -1500,11 +1500,11 @@ This function is called at the very end of Spacemacs initialization."
|
||||
'(notmuch-search-oldest-first nil)
|
||||
'(org-hide-leading-stars t)
|
||||
'(package-selected-packages
|
||||
'(a ace-jump-helm-line ace-link afternoon-theme aggressive-indent ai-code
|
||||
aidermacs aio alect-themes alert all-the-icons ample-theme
|
||||
ample-zen-theme anaconda-mode anti-zenburn-theme apropospriate-theme
|
||||
auto-compile auto-highlight-symbol auto-yasnippet autothemer
|
||||
badwolf-theme birds-of-paradise-plus-theme blacken bmx-mode
|
||||
'(a ace-jump-helm-line ace-link add-node-modules-path afternoon-theme
|
||||
aggressive-indent ai-code aidermacs aio alect-themes alert all-the-icons
|
||||
ample-theme ample-zen-theme anaconda-mode anti-zenburn-theme
|
||||
apropospriate-theme auto-compile auto-highlight-symbol auto-yasnippet
|
||||
autothemer badwolf-theme birds-of-paradise-plus-theme blacken bmx-mode
|
||||
bubbleberry-theme bui busybee-theme centered-cursor-mode
|
||||
cherry-blossom-theme chocolate-theme clean-aindent-mode closql
|
||||
clues-theme code-cells code-review color-theme-sanityinc-solarized
|
||||
@@ -1527,31 +1527,31 @@ This function is called at the very end of Spacemacs initialization."
|
||||
farmhouse-themes fish-mode flatland-theme flatui-theme flx-ido flycheck
|
||||
forge frame-local gandalf-theme ggtags gh-md ghub git-link git-messenger
|
||||
git-modes git-timemachine gitignore-templates gntp gnuplot golden-ratio
|
||||
google-translate gotham-theme grandshell-theme groovy-imports groovy-mode
|
||||
gruber-darker-theme gruvbox-theme haml-mode hc-zenburn-theme hcl-mode
|
||||
helm helm-ag helm-c-yasnippet helm-comint helm-company helm-css-scss
|
||||
helm-descbinds helm-git-grep helm-ls-git helm-lsp helm-make
|
||||
google-translate gotham-theme grandshell-theme grizzl groovy-imports
|
||||
groovy-mode gruber-darker-theme gruvbox-theme haml-mode hc-zenburn-theme
|
||||
hcl-mode helm helm-ag helm-c-yasnippet helm-comint helm-company
|
||||
helm-css-scss helm-descbinds helm-git-grep helm-ls-git helm-lsp helm-make
|
||||
helm-mode-manager helm-notmuch helm-org helm-org-rifle helm-projectile
|
||||
helm-purpose helm-pydoc helm-swoop helm-themes helm-xref hemisu-theme
|
||||
heroku-theme hide-comnt hierarchy highlight-indentation highlight-numbers
|
||||
highlight-parentheses hl-todo holy-mode htmlize hungry-delete hybrid-mode
|
||||
impatient-mode importmagic indent-guide info+ inkpot-theme insert-shebang
|
||||
inspector ir-black-theme jazz-theme jbeans-theme js-doc js2-mode
|
||||
js2-refactor json-mode json-navigator json-reformat json-snatcher
|
||||
kaolin-themes light-soap-theme link-hint live-py-mode livid-mode
|
||||
load-env-vars log4e lorem-ipsum lsp-docker lsp-mode lsp-origami
|
||||
lsp-pyright lsp-treemacs lsp-ui lush-theme macrostep madhat2r-theme magit
|
||||
magit-section markdown-mode markdown-toc material-theme minimal-theme
|
||||
modus-themes moe-theme molokai-theme monochrome-theme monokai-theme
|
||||
multi-line multi-term multi-vterm multiple-cursors mustang-theme nameless
|
||||
naquadah-theme nginx-mode noctilux-theme nodejs-repl nose notmuch
|
||||
npm-mode obsidian-theme occidental-theme ol-notmuch oldlace-theme
|
||||
omtose-phellack-themes open-junk-file org-alert org-caldav
|
||||
org-category-capture org-cliplink org-contrib org-download org-jira
|
||||
org-mac-link org-mime org-msg org-pomodoro org-present
|
||||
org-project-capture org-projectile org-rich-yank org-superstar
|
||||
organic-green-theme orgit orgit-forge origami overseer ox-jira ox-twbs
|
||||
pandoc-mode paradox password-generator pcache pcre2el
|
||||
impatient-mode import-js importmagic indent-guide info+ inkpot-theme
|
||||
insert-shebang inspector ir-black-theme jazz-theme jbeans-theme js-doc
|
||||
js2-mode js2-refactor json-mode json-navigator json-reformat
|
||||
json-snatcher kaolin-themes light-soap-theme link-hint live-py-mode
|
||||
livid-mode load-env-vars log4e lorem-ipsum lsp-docker lsp-mode
|
||||
lsp-origami lsp-pyright lsp-treemacs lsp-ui lush-theme macrostep
|
||||
madhat2r-theme magit magit-section markdown-mode markdown-toc
|
||||
material-theme minimal-theme modus-themes moe-theme molokai-theme
|
||||
monochrome-theme monokai-theme multi-line multi-term multi-vterm
|
||||
multiple-cursors mustang-theme nameless naquadah-theme nginx-mode
|
||||
noctilux-theme nodejs-repl nose notmuch npm-mode obsidian-theme
|
||||
occidental-theme ol-notmuch oldlace-theme omtose-phellack-themes
|
||||
open-junk-file org-alert org-caldav org-category-capture org-cliplink
|
||||
org-contrib org-download org-jira org-mac-link org-mime org-msg
|
||||
org-pomodoro org-present org-project-capture org-projectile org-rich-yank
|
||||
org-superstar organic-green-theme orgit orgit-forge origami overseer
|
||||
ox-jira ox-twbs pandoc-mode paradox password-generator pcache pcre2el
|
||||
phoenix-dark-mono-theme phoenix-dark-pink-theme pip-requirements pipenv
|
||||
pippel planet-theme poetry popwin pos-tip powershell prettier-js
|
||||
professional-theme pug-mode purple-haze-theme py-isort pydoc pyenv-mode
|
||||
@@ -1567,12 +1567,12 @@ This function is called at the very end of Spacemacs initialization."
|
||||
term-cursor terminal-here tern terraform-mode toc-org toml-mode
|
||||
toxi-theme transient treemacs-evil treemacs-icons-dired treemacs-magit
|
||||
treemacs-persp treemacs-projectile treepy twilight-anti-bright-theme
|
||||
twilight-bright-theme twilight-theme ujelly-theme underwater-theme
|
||||
undo-fu undo-fu-session vi-tilde-fringe volatile-highlights vterm vundo
|
||||
web-beautify web-completion-data web-mode which-key white-sand-theme
|
||||
winum with-editor writeroom-mode ws-butler yaml yaml-mode yapfify
|
||||
yasnippet yasnippet-snippets zen-and-art-theme zenburn-theme
|
||||
zonokai-emacs)))
|
||||
twilight-bright-theme twilight-theme typescript-mode ujelly-theme
|
||||
underwater-theme undo-fu undo-fu-session vi-tilde-fringe
|
||||
volatile-highlights vterm vundo web-beautify web-completion-data web-mode
|
||||
which-key white-sand-theme winum with-editor writeroom-mode ws-butler
|
||||
yaml yaml-mode yapfify yasnippet yasnippet-snippets zen-and-art-theme
|
||||
zenburn-theme zonokai-emacs)))
|
||||
(custom-set-faces
|
||||
;; custom-set-faces was added by Custom.
|
||||
;; If you edit it by hand, you could mess it up, so be careful.
|
||||
|
||||
@@ -13,7 +13,7 @@ Host dabel dabel.us.oracle.com andel andel.us.oracle.com gates gates.us.oracle.c
|
||||
IdentityFile ~/.ssh/dabel.key
|
||||
RequestTTY yes
|
||||
|
||||
|
||||
Host oci.private.devops.scmservice.us-phoenix-1.oci.oracleiaas.com
|
||||
PKCS11Provider /Library/OpenSC/lib/opensc-pkcs11.so
|
||||
User pnyc@bmc_operator_access
|
||||
Host codex.webad1phx.solarisx86phx.oraclevcn.com
|
||||
User pnyc
|
||||
IdentityFile ~/.ssh/id_rsa
|
||||
IdentitiesOnly yes
|
||||
|
||||
@@ -23,6 +23,10 @@ Host osd-fra
|
||||
HostName 100.109.60.126
|
||||
IdentityFile ~/.ssh/id_ed25519
|
||||
|
||||
Host codex.webad1phx.solarisx86phx.oraclevcn.com
|
||||
User pnyc
|
||||
IdentitiesOnly ~/.ssh/id_rsa
|
||||
|
||||
Host gitlab.com
|
||||
User git
|
||||
IdentityFile ~/.ssh/gitlab
|
||||
|
||||
@@ -13,8 +13,12 @@ bind J tabnext
|
||||
bind K tabprev
|
||||
|
||||
blacklistadd https://www.youtube.com/
|
||||
blacklistadd https://127.0.0.1
|
||||
blacklistadd http://127.0.0.1
|
||||
blacklistadd https://login.us-phoenix-1.idp.mc1.oracleiaas.com/
|
||||
blacklistadd https://jellyfin.cloud.jetpac.org
|
||||
blacklistadd https://freshrss.cloud.jetpac.org
|
||||
blacklistadd https://firefox.cloud.jetpac.org
|
||||
" blacklistadd https://grt.us.oracle.com
|
||||
" auto-contain
|
||||
|
||||
|
||||
2
.zshrc
2
.zshrc
@@ -320,5 +320,5 @@ fi
|
||||
unset _zellij_comp_src _zellij_comp_safe
|
||||
|
||||
### MANAGED BY RANCHER DESKTOP START (DO NOT EDIT)
|
||||
# export PATH="/Users/jetpac/.rd/bin:$PATH"
|
||||
export PATH="/Users/jetpac/.rd/bin:$PATH"
|
||||
### MANAGED BY RANCHER DESKTOP END (DO NOT EDIT)
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
"Name": "Solarized Dark",
|
||||
"Guid": "EAAE4823-98F2-4CF1-909C-E2C37013889C",
|
||||
"Dynamic Profile Parent Name": "tmux keys",
|
||||
"Window Type": 12,
|
||||
"Badge Color" : {
|
||||
"Red Component" : 1,
|
||||
"Color Space" : "sRGB",
|
||||
|
||||
@@ -8,6 +8,7 @@ SSH_CONFIG_FILE="${SSH_CONFIG_FILE:-$HOME/.ssh/config.oci}"
|
||||
OCI_BIN="${OCI_BIN:-/opt/homebrew/bin/oci}"
|
||||
OCI_SESSION_REGION="${OCI_SESSION_REGION:-us-chicago-1}"
|
||||
OCI_PROFILE_NAME="${OCI_PROFILE_NAME:-DEFAULT}"
|
||||
OCI_SESSION_VALIDATE_TIMEOUT_SECONDS="${OCI_SESSION_VALIDATE_TIMEOUT_SECONDS:-2}"
|
||||
RESET_AGENT="${RESET_AGENT:-0}"
|
||||
DEDICATED_AGENT_PID=""
|
||||
DEDICATED_AGENT_SOCK=""
|
||||
@@ -26,14 +27,64 @@ run_oci() {
|
||||
"${OCI_BIN}" --profile "${OCI_PROFILE_NAME}" "$@"
|
||||
}
|
||||
|
||||
resolve_timeout_bin() {
|
||||
local candidate
|
||||
|
||||
for candidate in timeout gtimeout /opt/homebrew/bin/timeout /opt/homebrew/bin/gtimeout; do
|
||||
if [[ "${candidate}" == /* ]]; then
|
||||
if [[ -x "${candidate}" ]]; then
|
||||
print -r -- "${candidate}"
|
||||
return 0
|
||||
fi
|
||||
continue
|
||||
fi
|
||||
|
||||
if command -v "${candidate}" >/dev/null 2>&1; then
|
||||
command -v "${candidate}"
|
||||
return 0
|
||||
fi
|
||||
done
|
||||
|
||||
return 1
|
||||
}
|
||||
|
||||
get_validate_timeout_seconds() {
|
||||
local timeout_seconds="${OCI_SESSION_VALIDATE_TIMEOUT_SECONDS}"
|
||||
|
||||
if [[ ! "${timeout_seconds}" =~ '^[0-9]+([.][0-9]+)?$' ]]; then
|
||||
log "Warning: invalid OCI_SESSION_VALIDATE_TIMEOUT_SECONDS=${timeout_seconds}; using 2 seconds."
|
||||
print -r -- "2"
|
||||
return 0
|
||||
fi
|
||||
|
||||
print -r -- "${timeout_seconds}"
|
||||
}
|
||||
|
||||
run_oci_with_timeout() {
|
||||
local timeout_seconds="$1"
|
||||
shift
|
||||
|
||||
local timeout_bin
|
||||
if ! timeout_bin="$(resolve_timeout_bin)"; then
|
||||
log "Warning: no timeout binary found; running OCI command without a timeout."
|
||||
run_oci "$@"
|
||||
return $?
|
||||
fi
|
||||
|
||||
"${timeout_bin}" "${timeout_seconds}" "${OCI_BIN}" --profile "${OCI_PROFILE_NAME}" "$@"
|
||||
}
|
||||
|
||||
ensure_oci_session() {
|
||||
if [[ ! -x "${OCI_BIN}" ]]; then
|
||||
print -u2 "OCI CLI not found or not executable: ${OCI_BIN}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
local validate_timeout_seconds
|
||||
validate_timeout_seconds="$(get_validate_timeout_seconds)"
|
||||
|
||||
set +e
|
||||
run_oci session validate >/dev/null 2>&1
|
||||
run_oci_with_timeout "${validate_timeout_seconds}" session validate >/dev/null 2>&1
|
||||
local validate_rc=$?
|
||||
set -e
|
||||
|
||||
@@ -42,6 +93,10 @@ ensure_oci_session() {
|
||||
return 0
|
||||
fi
|
||||
|
||||
if [[ ${validate_rc} -eq 124 ]]; then
|
||||
log "OCI CLI session validation timed out after ${validate_timeout_seconds} seconds; treating session as invalid."
|
||||
fi
|
||||
|
||||
log "OCI CLI session is not valid; attempting refresh."
|
||||
set +e
|
||||
run_oci session refresh >/dev/null 2>&1
|
||||
|
||||
@@ -1,197 +1,334 @@
|
||||
#!/bin/zsh
|
||||
|
||||
set -e
|
||||
set -x
|
||||
set -eu
|
||||
|
||||
SCRIPT_NAME=${0:t}
|
||||
SCRIPT_DIR=${0:A:h}
|
||||
|
||||
DEFAULT_PARENT_WS='ssh://pnyc@dabel.us.oracle.com//workspace/pnyc/solaris-reviews/on-sru'
|
||||
DEFAULT_DEST_ROOT="${HOME}/PycharmProjects"
|
||||
DEFAULT_FOLDER_PREFIX='PetrN/'
|
||||
DEFAULT_POINT_OF_CONTACT='petr.nyc@oracle.com'
|
||||
DEFAULT_SLACK_CHANNEL='@pnyc'
|
||||
DEFAULT_PYTHON='/opt/homebrew/bin/python3.11'
|
||||
OS_NAME="$(uname -s)"
|
||||
|
||||
export PATH="/opt/homebrew/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin${PATH:+:$PATH}"
|
||||
|
||||
usage() {
|
||||
print "Usage: ${0:t} [-r repo_url] [-d dest_dir] [-h]"
|
||||
print ""
|
||||
print " -r repo_url Mercurial repo URL to clone."
|
||||
print " Default: ssh://pnyc@dabel.us.oracle.com//workspace/pnyc/solaris-reviews/on-sru"
|
||||
print " -d dest_dir Local directory to clone into."
|
||||
print " Default: ~/PycharmProjects/<repo_name>"
|
||||
print " -h Show this help text."
|
||||
print ""
|
||||
print "The script exits if dest_dir already exists."
|
||||
cat <<EOF
|
||||
Usage: ${SCRIPT_NAME} [-r repo_url] [-d dest_dir] [-f folder_prefix] [-c point_of_contact] [-s slack_channel] [-p python_exe] [-j python_jenkins_path] [-h]
|
||||
|
||||
-r repo_url Mercurial repo URL to clone.
|
||||
Default: ${DEFAULT_PARENT_WS}
|
||||
-d dest_dir Local directory to clone into.
|
||||
Default: ~/PycharmProjects/<repo_name>
|
||||
-f folder_prefix Jenkins folder prefix.
|
||||
Default: ${DEFAULT_FOLDER_PREFIX}
|
||||
-c point_of_contact Contact email for generated config.
|
||||
Default: ${DEFAULT_POINT_OF_CONTACT}
|
||||
-s slack_channel Slack handle/channel for generated config.
|
||||
Default: ${DEFAULT_SLACK_CHANNEL}
|
||||
-p python_exe Python executable for virtualenv creation.
|
||||
Default: ${DEFAULT_PYTHON}
|
||||
-j python_jenkins_path Optional local checkout to inject into requirements.txt.
|
||||
Default: disabled
|
||||
-h Show this help text.
|
||||
|
||||
Environment overrides:
|
||||
MRSHUGHES_PARENT_WS
|
||||
MRSHUGHES_DEST_DIR
|
||||
MRSHUGHES_FOLDER_PREFIX
|
||||
MRSHUGHES_POINT_OF_CONTACT
|
||||
MRSHUGHES_SLACK_CHANNEL
|
||||
MRSHUGHES_PYTHON
|
||||
MRSHUGHES_PYTHON_JENKINS_PATH
|
||||
|
||||
The script exits if dest_dir already exists.
|
||||
EOF
|
||||
}
|
||||
|
||||
die() {
|
||||
print -u2 -- "$@"
|
||||
exit 1
|
||||
}
|
||||
|
||||
require_command() {
|
||||
command -v "$1" >/dev/null 2>&1 || die "Missing required command: $1"
|
||||
}
|
||||
|
||||
resolve_executable() {
|
||||
local executable=${~1}
|
||||
|
||||
if [[ "$executable" == */* ]]; then
|
||||
[[ -x "$executable" ]] || die "Executable not found or not executable: $executable"
|
||||
print -r -- "$executable"
|
||||
return
|
||||
fi
|
||||
|
||||
command -v "$executable" >/dev/null 2>&1 || die "Command not found in PATH: $executable"
|
||||
command -v "$executable"
|
||||
}
|
||||
|
||||
disable_proxy() {
|
||||
local proxy_script="${SCRIPT_DIR}/proxy"
|
||||
|
||||
if [[ -f "$proxy_script" ]]; then
|
||||
source "$proxy_script" off >/dev/null
|
||||
fi
|
||||
}
|
||||
|
||||
ensure_clone_identity_loaded() {
|
||||
local ssh_host="$1"
|
||||
local identity_file=""
|
||||
local identity_pub=""
|
||||
|
||||
ssh_host="${ssh_host%%:*}"
|
||||
local ssh_host=$1
|
||||
local identity_file
|
||||
local identity_pub
|
||||
|
||||
identity_file=$(ssh -G "$ssh_host" 2>/dev/null | awk '/^identityfile / {print $2; exit}')
|
||||
if [[ -z "$identity_file" ]]; then
|
||||
return 0
|
||||
fi
|
||||
[[ -n "$identity_file" ]] || return
|
||||
|
||||
identity_file=${~identity_file}
|
||||
identity_pub="${identity_file}.pub"
|
||||
|
||||
if [[ ! -f "$identity_file" || ! -f "$identity_pub" ]]; then
|
||||
return 0
|
||||
fi
|
||||
[[ -f "$identity_file" && -f "$identity_pub" ]] || return
|
||||
|
||||
if ssh-add -T "$identity_pub" >/dev/null 2>&1; then
|
||||
return 0
|
||||
return
|
||||
fi
|
||||
|
||||
print "Loading SSH identity for ${ssh_host}: ${identity_file}"
|
||||
ssh-add --apple-use-keychain "$identity_file" >/dev/null 2>&1 || ssh-add "$identity_file"
|
||||
print -- "Loading SSH identity for ${ssh_host}: ${identity_file}"
|
||||
if [[ "$OS_NAME" == "Darwin" ]]; then
|
||||
ssh-add --apple-use-keychain "$identity_file" >/dev/null
|
||||
else
|
||||
ssh-add "$identity_file" >/dev/null
|
||||
fi
|
||||
}
|
||||
|
||||
DEFAULT_PARENT_WS='ssh://pnyc@dabel.us.oracle.com//workspace/pnyc/solaris-reviews/on-sru'
|
||||
# Example repo URLs:
|
||||
# ssh://pnyc@andel.us.oracle.com//workspace/pnyc/solaris-reviews/secure-integrate/userland11.4
|
||||
# ssh://pnyc@andel.us.oracle.com//workspace/pnyc/solaris-reviews/userland-pipeline
|
||||
# ssh://pnyc@andel.us.oracle.com//workspace/pnyc/solaris-reviews/akidr-text
|
||||
# ssh://pnyc@andel.us.oracle.com//workspace/pnyc/solaris-reviews/akidr
|
||||
PARENT_WS="$DEFAULT_PARENT_WS"
|
||||
DEST_DIR=''
|
||||
apply_python_jenkins_override() {
|
||||
local checkout_path=$1
|
||||
local tmp_requirements
|
||||
|
||||
while getopts ":r:d:h" opt; do
|
||||
tmp_requirements=$(mktemp)
|
||||
sed -E "s|^git.*$|git+file://${checkout_path}|" requirements.txt > "$tmp_requirements"
|
||||
/bin/mv "$tmp_requirements" requirements.txt
|
||||
}
|
||||
|
||||
yaml_escape() {
|
||||
local value=$1
|
||||
|
||||
value=${value//\\/\\\\}
|
||||
value=${value//\"/\\\"}
|
||||
print -r -- "$value"
|
||||
}
|
||||
|
||||
set_yaml_key() {
|
||||
local file=$1
|
||||
local key=$2
|
||||
local value
|
||||
local tmp_file
|
||||
|
||||
value=$(yaml_escape "$3")
|
||||
tmp_file=$(mktemp)
|
||||
|
||||
if ! awk -v key="$key" -v value="$value" '
|
||||
$0 ~ "^[[:space:]]*" key ":[[:space:]]*" {
|
||||
match($0, /^[[:space:]]*/)
|
||||
print substr($0, 1, RLENGTH) key ": \"" value "\""
|
||||
changed = 1
|
||||
next
|
||||
}
|
||||
{ print }
|
||||
END { exit changed ? 0 : 1 }
|
||||
' "$file" > "$tmp_file"; then
|
||||
/bin/rm -f "$tmp_file"
|
||||
die "Expected key not found in ${file}: ${key}"
|
||||
fi
|
||||
|
||||
/bin/mv "$tmp_file" "$file"
|
||||
}
|
||||
|
||||
insert_yaml_key_after() {
|
||||
local file=$1
|
||||
local anchor=$2
|
||||
local key=$3
|
||||
local value
|
||||
local tmp_file
|
||||
|
||||
value=$(yaml_escape "$4")
|
||||
tmp_file=$(mktemp)
|
||||
|
||||
if ! awk -v anchor="$anchor" -v key="$key" -v value="$value" '
|
||||
{
|
||||
print
|
||||
if (!inserted && $0 ~ "^[[:space:]]*" anchor ":[[:space:]]*") {
|
||||
match($0, /^[[:space:]]*/)
|
||||
print substr($0, 1, RLENGTH) key ": \"" value "\""
|
||||
inserted = 1
|
||||
}
|
||||
}
|
||||
END { exit inserted ? 0 : 1 }
|
||||
' "$file" > "$tmp_file"; then
|
||||
/bin/rm -f "$tmp_file"
|
||||
die "Expected anchor not found in ${file}: ${anchor}"
|
||||
fi
|
||||
|
||||
/bin/mv "$tmp_file" "$file"
|
||||
}
|
||||
|
||||
configure_defaults_devel() {
|
||||
local file=$1
|
||||
|
||||
set_yaml_key "$file" script_dir_base "$SCRIPT_DIR_BASE"
|
||||
if grep -Eq '^[[:space:]]*pipeline_workspace:[[:space:]]*' "$file"; then
|
||||
set_yaml_key "$file" pipeline_workspace "$JENKINS_CLONE_FROM"
|
||||
else
|
||||
insert_yaml_key_after "$file" script_dir_base pipeline_workspace "$JENKINS_CLONE_FROM"
|
||||
fi
|
||||
set_yaml_key "$file" folder_prefix "$FOLDER_PREFIX"
|
||||
set_yaml_key "$file" point_of_contact "$POINT_OF_CONTACT"
|
||||
set_yaml_key "$file" slack_channel "$SLACK_CHANNEL"
|
||||
}
|
||||
|
||||
find_lint_dir() {
|
||||
if [[ -d "${DEST_DIR}/solaris/on/production" ]]; then
|
||||
print -r -- "${DEST_DIR}/solaris/on/production"
|
||||
return
|
||||
fi
|
||||
|
||||
if [[ -d "${DEST_DIR}/solaris/userland/sru" ]]; then
|
||||
print -r -- "${DEST_DIR}/solaris/userland/sru"
|
||||
return
|
||||
fi
|
||||
|
||||
die "Unable to determine lint directory under ${DEST_DIR}/solaris"
|
||||
}
|
||||
|
||||
print_config() {
|
||||
print -- "Parent workspace: ${PARENT_WS}"
|
||||
print -- "Destination directory: ${DEST_DIR}"
|
||||
print -- "Folder prefix: ${FOLDER_PREFIX}"
|
||||
print -- "Point of contact: ${POINT_OF_CONTACT}"
|
||||
print -- "Slack channel: ${SLACK_CHANNEL}"
|
||||
print -- "Python executable: ${PYTHON_EXE}"
|
||||
if [[ -n "$PYTHON_JENKINS_PATH" ]]; then
|
||||
print -- "python-jenkins override: ${PYTHON_JENKINS_PATH}"
|
||||
else
|
||||
print -- "python-jenkins override: disabled"
|
||||
fi
|
||||
}
|
||||
|
||||
PARENT_WS="${MRSHUGHES_PARENT_WS:-$DEFAULT_PARENT_WS}"
|
||||
DEST_DIR="${MRSHUGHES_DEST_DIR:-}"
|
||||
FOLDER_PREFIX="${MRSHUGHES_FOLDER_PREFIX:-$DEFAULT_FOLDER_PREFIX}"
|
||||
POINT_OF_CONTACT="${MRSHUGHES_POINT_OF_CONTACT:-$DEFAULT_POINT_OF_CONTACT}"
|
||||
SLACK_CHANNEL="${MRSHUGHES_SLACK_CHANNEL:-$DEFAULT_SLACK_CHANNEL}"
|
||||
PYTHON_EXE="${MRSHUGHES_PYTHON:-$DEFAULT_PYTHON}"
|
||||
PYTHON_JENKINS_PATH="${MRSHUGHES_PYTHON_JENKINS_PATH:-}"
|
||||
|
||||
while getopts ":r:d:f:c:s:p:j:h" opt; do
|
||||
case "$opt" in
|
||||
r)
|
||||
PARENT_WS="$OPTARG"
|
||||
;;
|
||||
d)
|
||||
DEST_DIR="$OPTARG"
|
||||
;;
|
||||
r) PARENT_WS="$OPTARG" ;;
|
||||
d) DEST_DIR="$OPTARG" ;;
|
||||
f) FOLDER_PREFIX="$OPTARG" ;;
|
||||
c) POINT_OF_CONTACT="$OPTARG" ;;
|
||||
s) SLACK_CHANNEL="$OPTARG" ;;
|
||||
p) PYTHON_EXE="$OPTARG" ;;
|
||||
j) PYTHON_JENKINS_PATH="$OPTARG" ;;
|
||||
h)
|
||||
usage
|
||||
exit 0
|
||||
;;
|
||||
:)
|
||||
print -u2 "Missing argument for -$OPTARG"
|
||||
usage >&2
|
||||
exit 1
|
||||
die "Missing argument for -$OPTARG"
|
||||
;;
|
||||
\?)
|
||||
print -u2 "Unknown option: -$OPTARG"
|
||||
usage >&2
|
||||
exit 1
|
||||
die "Unknown option: -$OPTARG"
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
shift $((OPTIND - 1))
|
||||
[[ $# -eq 0 ]] || die "Unexpected positional arguments: $*"
|
||||
|
||||
if [[ $# -ne 0 ]]; then
|
||||
print -u2 "Unexpected positional arguments: $*"
|
||||
usage >&2
|
||||
exit 1
|
||||
fi
|
||||
for command_name in hg awk sed mktemp grep make; do
|
||||
require_command "$command_name"
|
||||
done
|
||||
|
||||
# remove trailing slash
|
||||
PARENT_WS="${PARENT_WS%/}"
|
||||
REPO=${PARENT_WS##*/}
|
||||
[[ -n "$DEST_DIR" ]] || DEST_DIR="${DEFAULT_DEST_ROOT}/${REPO}"
|
||||
|
||||
REPO=${PARENT_WS##*/} # userland11.4
|
||||
DEST_DIR=${~DEST_DIR:A}
|
||||
PYTHON_EXE=$(resolve_executable "$PYTHON_EXE")
|
||||
|
||||
if [[ -z "$DEST_DIR" ]]; then
|
||||
DEST_DIR=~/PycharmProjects/${REPO}
|
||||
if [[ -n "$PYTHON_JENKINS_PATH" ]]; then
|
||||
PYTHON_JENKINS_PATH=${~PYTHON_JENKINS_PATH:A}
|
||||
[[ -d "$PYTHON_JENKINS_PATH" ]] || die "Required directory not found: ${PYTHON_JENKINS_PATH}"
|
||||
fi
|
||||
|
||||
DEST_DIR=${~DEST_DIR}
|
||||
DEST_DIR=${DEST_DIR:A}
|
||||
[[ ! -e "$DEST_DIR" ]] || die "Destination already exists: ${DEST_DIR}"
|
||||
|
||||
if [[ -e "$DEST_DIR" ]]; then
|
||||
print -u2 "Destination already exists: $DEST_DIR"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
HG_CLONE_ARGS=()
|
||||
JENKINS_CLONE_FROM=$PARENT_WS
|
||||
if [[ "$PARENT_WS" == ssh://* ]]; then
|
||||
SSH_CLONE_HOST=${${PARENT_WS#ssh://}%%/*}
|
||||
SSH_CLONE_HOST=${SSH_CLONE_HOST#*@}
|
||||
ensure_clone_identity_loaded "$SSH_CLONE_HOST"
|
||||
|
||||
# Avoid exhausting ssh-agent identities before ssh reaches the host-specific
|
||||
# IdentityFile from ~/.ssh/config (for example ~/.ssh/dabel.key).
|
||||
HG_CLONE_ARGS+=(--config "ui.ssh=ssh -o BatchMode=yes -o IdentitiesOnly=yes")
|
||||
JENKINS_CLONE_FROM="ssh://${${PARENT_WS#ssh://}#*@}"
|
||||
ensure_clone_identity_loaded "${${PARENT_WS#ssh://}%%/*}"
|
||||
fi
|
||||
|
||||
JENKINS_CLONE_FROM="ssh://${${PARENT_WS#ssh://}#*@}"
|
||||
FOLDER_PREFIX='PetrN/'
|
||||
POINT_OF_CONTACT='petr.nyc@oracle.com'
|
||||
SLACK_CHANNEL='@pnyc'
|
||||
SCRIPT_DIR_BASE=$PARENT_WS
|
||||
if [[ "$PARENT_WS" == *'//'* ]]; then
|
||||
SCRIPT_DIR_BASE="/${PARENT_WS##*//}"
|
||||
fi
|
||||
|
||||
# /workspace/pnyc/solaris-reviews/secure-integrate/userland11.4
|
||||
SCRIPT_DIR_BASE=$(echo "$PARENT_WS" | awk '{sub(/^.*\/\//,"/"); print}')
|
||||
MV=/bin/mv
|
||||
RM=/bin/rm
|
||||
CP=/bin/cp
|
||||
CAT=/bin/cat
|
||||
print_config
|
||||
|
||||
pwd
|
||||
print -- "Validating Mercurial access to ${PARENT_WS}"
|
||||
hg identify "$PARENT_WS" >/dev/null
|
||||
|
||||
print -- "Cloning ${PARENT_WS} into ${DEST_DIR}"
|
||||
mkdir -p "${DEST_DIR:h}"
|
||||
hg "${HG_CLONE_ARGS[@]}" clone "$PARENT_WS" "$DEST_DIR"
|
||||
pwd
|
||||
hg clone "$PARENT_WS" "$DEST_DIR"
|
||||
|
||||
cd "$DEST_DIR"
|
||||
pwd
|
||||
|
||||
source proxy off
|
||||
$RM -rf venv
|
||||
for required_path in \
|
||||
requirements.txt \
|
||||
Makefile.inc \
|
||||
common/tools/create_virtualenv \
|
||||
common/etc/passwd.template \
|
||||
common/jobs/defaults.devel.tmpl \
|
||||
common/jobs/defaults.stage.tmpl
|
||||
do
|
||||
[[ -e "$required_path" ]] || die "Required path not found: ${DEST_DIR}/${required_path}"
|
||||
done
|
||||
|
||||
# this holds upgraded python-jenkins - will it work?
|
||||
sed -E 's/^git.*$/git+file:\/\/\/Users\/jetpac\/PycharmProjects\/python-jenkins/' requirements.txt > /tmp/r
|
||||
mv /tmp/r requirements.txt
|
||||
[[ -x common/tools/create_virtualenv ]] || die "Required executable not found: ${DEST_DIR}/common/tools/create_virtualenv"
|
||||
|
||||
common/tools/create_virtualenv /opt/homebrew/bin/python3.11 requirements.txt venv
|
||||
disable_proxy
|
||||
/bin/rm -rf venv
|
||||
|
||||
echo '[alias]' >> .hg/hgrc
|
||||
echo 'ci = ci -X Makefile.inc' >> .hg/hgrc
|
||||
echo 'st = st -X Makefile.inc' >> .hg/hgrc
|
||||
|
||||
tmpmake=$(mktemp)
|
||||
sed 's:PYTHON3=python3.7:PYTHON3=python3.11:g' < Makefile.inc > "$tmpmake"
|
||||
$MV "$tmpmake" Makefile.inc
|
||||
|
||||
|
||||
# set up pwd
|
||||
cd "$DEST_DIR/common/etc"
|
||||
$CP passwd.template passwd
|
||||
|
||||
# set up dev defaults
|
||||
cd "$DEST_DIR/common/jobs/"
|
||||
cp defaults.devel.tmpl defaults.devel.yml
|
||||
cp defaults.stage.tmpl defaults.stage.yml
|
||||
|
||||
$CAT > defaults_devel_patch <<- CATT
|
||||
9c9
|
||||
< script_dir_base: "/workspace/pzahradn/jenkins/mrspatmore"
|
||||
---
|
||||
> script_dir_base: "${SCRIPT_DIR_BASE=}"
|
||||
11a12
|
||||
> pipeline_workspace: "${JENKINS_CLONE_FROM}"
|
||||
14c15
|
||||
< folder_prefix: "pez-" # Could be used to deploy the devel jobs to different jenkins folder
|
||||
---
|
||||
> folder_prefix: "${FOLDER_PREFIX}" # Could be used to deploy the devel jobs to different jenkins folder
|
||||
16c17
|
||||
< point_of_contact: "petr.zahradnik@oracle.com"
|
||||
---
|
||||
> point_of_contact: "${POINT_OF_CONTACT}"
|
||||
21c22
|
||||
< slack_channel: "@pzahradn"
|
||||
---
|
||||
> slack_channel: "${SLACK_CHANNEL}"
|
||||
CATT
|
||||
|
||||
|
||||
|
||||
patch -p0 defaults.devel.yml < defaults_devel_patch
|
||||
|
||||
if [[ -d "$DEST_DIR/solaris/on/production" ]]; then
|
||||
LINT_DIR="$DEST_DIR/solaris/on/production"
|
||||
elif [[ -d "$DEST_DIR/solaris/userland/sru" ]]; then
|
||||
LINT_DIR="$DEST_DIR/solaris/userland/sru"
|
||||
else
|
||||
print -u2 "Unable to determine lint directory under $DEST_DIR/solaris"
|
||||
exit 1
|
||||
if [[ -n "$PYTHON_JENKINS_PATH" ]]; then
|
||||
print -- "Applying local python-jenkins override from ${PYTHON_JENKINS_PATH}"
|
||||
apply_python_jenkins_override "$PYTHON_JENKINS_PATH"
|
||||
fi
|
||||
|
||||
source proxy off
|
||||
/usr/bin/env PATH="$PATH" /bin/bash -lc 'common/tools/create_virtualenv "$@"' bash "$PYTHON_EXE" requirements.txt venv
|
||||
|
||||
{
|
||||
print -- '[alias]'
|
||||
print -- 'ci = ci -X Makefile.inc'
|
||||
print -- 'st = st -X Makefile.inc'
|
||||
} >> .hg/hgrc
|
||||
|
||||
tmp_makefile=$(mktemp)
|
||||
sed 's:PYTHON3=python3.7:PYTHON3=python3.11:g' Makefile.inc > "$tmp_makefile"
|
||||
/bin/mv "$tmp_makefile" Makefile.inc
|
||||
|
||||
/bin/cp common/etc/passwd.template common/etc/passwd
|
||||
/bin/cp common/jobs/defaults.devel.tmpl common/jobs/defaults.devel.yml
|
||||
/bin/cp common/jobs/defaults.stage.tmpl common/jobs/defaults.stage.yml
|
||||
|
||||
configure_defaults_devel common/jobs/defaults.devel.yml
|
||||
|
||||
LINT_DIR=$(find_lint_dir)
|
||||
disable_proxy
|
||||
cd "$LINT_DIR"
|
||||
make FAKE_DEVEL_ENV=yes lint
|
||||
|
||||
Reference in New Issue
Block a user