ghdl 0.4.3__tar.gz → 0.4.5__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,7 +1,7 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ghdl
3
- Version: 0.4.3
4
- Summary: Package manager for Github Release binaries
3
+ Version: 0.4.5
4
+ Summary: Binary Manager for Github Releases
5
5
  License: AGPL-3.0-or-later
6
6
  Author: Imran Khan
7
7
  Author-email: imran@khan.ovh
@@ -1,3 +1,3 @@
1
- (setv __version__ "0.4.3")
1
+ (setv __version__ "0.4.5")
2
2
 
3
3
  (import ghdl.main [main set-dry set-single])
@@ -36,6 +36,8 @@
36
36
  (-> record.repo (.split "/") (get 1)))
37
37
  (setv record.name (get info "name")))
38
38
 
39
+ (setv record.release-filter (.get info "release_filter" None))
40
+
39
41
  (when (in "archive" info)
40
42
  (setv record.isArchive? (get info "archive")))
41
43
 
@@ -39,15 +39,17 @@
39
39
 
40
40
 
41
41
  (defn/a add-remote-metadata [record client]
42
- (setv remote-metadata
43
- (await (remote.metadata record.repo record.pre-release? client Config.token)))
42
+ (setv record.url None)
44
43
 
45
- ;; Network error
46
- (when (not remote-metadata)
47
- (do
48
- (setv record.toUpdate? False)
49
- (.append Config.failures #(record.repo "Network"))
50
- (return)))
44
+ (setv remote-metadata
45
+ (try
46
+ (await (remote.metadata record client Config.token))
47
+ (except [e []]
48
+ (print f"Failed to fetch remote data from Github API for {record.repo}")
49
+ (print (traceback.format_exc))
50
+ (setv record.toUpdate? False)
51
+ (.append Config.failures #(record.repo "Network"))
52
+ (return))))
51
53
 
52
54
  (setv record.tag remote-metadata.tag)
53
55
  (setv record.timestamp remote-metadata.timestamp)
@@ -56,7 +58,6 @@
56
58
  (if (not dl-url)
57
59
  (do
58
60
  (setv record.toUpdate? False)
59
- (setv record.url "N/A")
60
61
  (.append Config.failures #(record.repo "No Matching URL"))
61
62
  (return))
62
63
  (setv record.url dl-url)))
@@ -109,6 +110,8 @@
109
110
 
110
111
 
111
112
  (defn process [record]
113
+ (unless record.toUpdate? (return))
114
+
112
115
  (with [(utils.Tempdir)]
113
116
  (setv filename (-> record.url (.split "/") (get -1)))
114
117
  (utils.download_file record.url filename)
@@ -0,0 +1,53 @@
1
+ (import json re dateutil.parser collections [namedtuple])
2
+
3
+ (require hyrule [-> assoc])
4
+
5
+
6
+ (defclass NoMatchingReleaseException [Exception])
7
+
8
+
9
+ (setv Remote (namedtuple "Record" '("tag" "timestamp" "url_data")))
10
+
11
+
12
+ (defn get-api [record]
13
+ (if (or record.pre-release? record.release-filter)
14
+ f"{record.repo}/releases"
15
+ f"{record.repo}/releases/latest"))
16
+
17
+
18
+ (defn to-unix [timestring]
19
+ (-> timestring (dateutil.parser.parse) (.strftime "%s") (int)))
20
+
21
+
22
+ (defn find-matching-release [resp release-filter]
23
+ (for [release resp]
24
+ (setv name (get release "name"))
25
+ (setv pattern (re.compile release-filter))
26
+ (when (bool (re.search pattern name))
27
+ (return release)))
28
+ (print f"No matching release found for: {release-filter}")
29
+ (raise NoMatchingReleaseException))
30
+
31
+
32
+ (defn/a get-remote [record client [token None]]
33
+ (setv headers {"Accept" "application/vnd.github.v3+json"})
34
+ (setv api (get-api record))
35
+ (when token (assoc headers "Authorization" f"token {token}"))
36
+ (setv resp (.json (await (client.get api :headers headers))))
37
+ (cond
38
+ record.pre-release? (get resp 0)
39
+ record.release-filter (find-matching-release resp record.release-filter)
40
+ True resp))
41
+
42
+
43
+ (defn get-metadata [resp]
44
+ (setv urls
45
+ (lfor asset (get resp "assets")
46
+ #((get asset "name") (get asset "browser_download_url"))))
47
+ (Remote (get resp "tag_name")
48
+ (to-unix (get resp "published_at"))
49
+ urls))
50
+
51
+
52
+ (defn/a metadata [record client [token None]]
53
+ (get-metadata (await (get-remote record client token))))
@@ -24,6 +24,5 @@
24
24
  (print f"Name: {self.name}")
25
25
  (print f"Exists?: {self.exists?}")
26
26
  (print f"Update?: {self.toUpdate?}")
27
- ;(print f"Archive?: {self.isArchive?}")
28
27
  (print f"URL: {self.url}")
29
28
  (print "---------------")))
@@ -1,7 +1,7 @@
1
1
  [tool.poetry]
2
2
  name = "ghdl"
3
- version = "0.4.3"
4
- description = "Package manager for Github Release binaries"
3
+ version = "0.4.5"
4
+ description = "Binary Manager for Github Releases"
5
5
  authors = ["Imran Khan <imran@khan.ovh>"]
6
6
  license = "AGPL-3.0-or-later"
7
7
 
ghdl-0.4.3/ghdl/remote.hy DELETED
@@ -1,41 +0,0 @@
1
- (import json dateutil.parser collections [namedtuple])
2
-
3
- (require hyrule [-> assoc])
4
-
5
-
6
- (setv Remote (namedtuple "Record" '("tag" "timestamp" "url_data")))
7
-
8
-
9
- (defn get-api [repo pre-release?]
10
- (if pre-release?
11
- f"{repo}/releases"
12
- f"{repo}/releases/latest"))
13
-
14
-
15
- (defn to-unix [timestring]
16
- (-> timestring (dateutil.parser.parse) (.strftime "%s") (int)))
17
-
18
-
19
- (defn/a get-remote [repo pre-release? client [token None]]
20
- (setv headers {"Accept" "application/vnd.github.v3+json"})
21
- (setv api (get-api repo pre-release?))
22
- (when token (assoc headers "Authorization" f"token {token}"))
23
- (setv resp (.json (await (client.get api :headers headers))))
24
- (return (if pre-release? (get resp 0) resp)))
25
-
26
-
27
- (defn get-metadata [resp]
28
- (setv urls
29
- (lfor asset (get resp "assets")
30
- #((get asset "name") (get asset "browser_download_url"))))
31
- (Remote (get resp "tag_name")
32
- (to-unix (get resp "published_at"))
33
- urls))
34
-
35
-
36
- (defn/a metadata [repo pre-release? client [token None]]
37
- (try
38
- (get-metadata (await (get-remote repo pre-release? client token)))
39
- (except []
40
- (print f"Error fetching metadata from Github API for {repo}")
41
- None)))
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes