Skip to content

Commit c3fa7c1

Browse files
Allow --pat to continue to be used
1 parent 2bbcbbd commit c3fa7c1

File tree

2 files changed

+30
-16
lines changed

2 files changed

+30
-16
lines changed

src/docker.clj

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,8 @@
77
[clojure.pprint :refer [pprint]]
88
[clojure.spec.alpha :as spec]
99
[clojure.string :as string]
10-
[creds])
10+
[creds]
11+
logging)
1112
(:import
1213
[java.net UnixDomainSocketAddress]
1314
[java.nio ByteBuffer]
@@ -231,9 +232,9 @@
231232
(pull (merge m
232233
{:serveraddress "https://index.docker.io/v1/"}
233234
(when (and (:user m)
234-
(:jwt m))
235+
(or (:jwt m) (:pat m)))
235236
{:creds {:username (:user m)
236-
:password (:jwt m)}}))))
237+
:password (or (:jwt m) (:pat m))}}))))
237238

238239
(defn run-function [{:keys [timeout] :or {timeout 600000} :as m}]
239240
(-pull m)
@@ -348,7 +349,12 @@
348349
[]
349350
(try
350351
(when (is-logged-in? {})
351-
(get-login-info {}))
352+
(merge
353+
{:is-logged-in? true}
354+
(try
355+
(get-login-info {})
356+
(catch Throwable ex
357+
(logging/warn "Unable to extract login info: {{ex}}" {:ex ex})))))
352358
(catch Throwable _)))
353359

354360
(comment

src/prompts.clj

Lines changed: 20 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -366,7 +366,8 @@
366366
[nil "--url OPENAI_COMPATIBLE_ENDPOINT" "OpenAI compatible endpoint url"]
367367
;; required if not using positional args
368368
[nil "--user USER" "The hub user"]
369-
;; required if not using positional args
369+
;; optional
370+
[nil "--pat PAT" "personal access token"]
370371
;; can not validate this without a host helper
371372
[nil "--host-dir DIR" "Project directory (on host filesystem)"]
372373
;; required if not using positional args
@@ -426,14 +427,15 @@
426427
(s/def ::platform (fn [s] (#{:darwin :linux :windows} (keyword (string/lower-case s)))))
427428
(s/def ::user string?)
428429
(s/def ::jwt string?)
430+
(s/def ::pat string?)
429431
(s/def ::prompts #(fs/exists? %))
430432
(s/def ::host-dir string?)
431433
(s/def ::offline boolean?)
432434
(s/def ::thread-id string?)
433435
(s/def ::save-thread-volume boolean?)
434436
(s/def ::url string?)
435437
(s/def ::run-args (s/keys :req-un [::platform ::prompts ::host-dir]
436-
:opt-un [::offline ::thread-id ::save-thread-volume ::user ::jwt ::url]))
438+
:opt-un [::offline ::thread-id ::save-thread-volume ::user ::pat ::jwt ::url]))
437439

438440
(defn validate [k]
439441
(fn [opts]
@@ -454,10 +456,16 @@
454456
(git/prompt-file dir-or-ref))}))))
455457

456458
(defn login-info []
457-
(if-let [{:keys [token id]} (docker/get-login-info-from-desktop-backend)]
458-
{:jwt token
459-
:user id}
460-
(warn "Docker Desktop not logged in" {})))
459+
(if-let [{:keys [token id is-logged-in?]} (docker/get-login-info-from-desktop-backend)]
460+
(cond
461+
(and is-logged-in? token id)
462+
{:jwt token
463+
:user id}
464+
is-logged-in?
465+
(warn "Docker Desktop logged in but creds not available" {})
466+
:else
467+
(warn "Docker Desktop not logged in" {}))
468+
(warn "unable to check Docker Desktop for login" {})))
461469

462470
(defn command [opts & [c :as args]]
463471
(case c
@@ -486,15 +494,15 @@
486494
(async/<!! ((comp conversation-loop (validate ::run-args))
487495
(-> opts
488496
(assoc :thread-id thread-id)
489-
((fn [opts] (merge
490-
(apply merge-deprecated opts (rest args))
491-
(login-info))))))))
497+
((fn [opts] (merge
498+
(apply merge-deprecated opts (rest args))
499+
(login-info))))))))
492500

493501
opts))
494502
(fn []
495-
((comp get-prompts (validate ::run-args)) (merge
496-
(apply merge-deprecated opts args)
497-
(login-info))))))
503+
((comp get-prompts (validate ::run-args)) (merge
504+
(apply merge-deprecated opts args)
505+
(login-info))))))
498506

499507
(defn -main [& args]
500508
(try

0 commit comments

Comments
 (0)