11import type { ExtensionContext , Memento } from "vscode" ;
2- import type { GithubReleaseResponse , GithubRepository } from "./githubREST.mjs" ;
2+ import { type GithubReleaseResponse , GithubRepository } from "./githubREST.mjs" ;
33import Logger from "../logger.mjs" ;
44
55/**
@@ -25,6 +25,167 @@ export interface GithubApiCacheEntry {
2525 etag : string ;
2626}
2727
28+
29+ function defaultCacheOfRepository (
30+ repository : GithubRepository ,
31+ dataType : GithubApiCacheEntryDataType
32+ ) : GithubApiCacheEntry {
33+ let ret : GithubApiCacheEntry = {
34+ repository : repository ,
35+ dataType : dataType ,
36+ data : [ ] ,
37+ etag : "" ,
38+ }
39+ switch ( repository ) {
40+ case GithubRepository . picoSDK :
41+ if ( dataType === GithubApiCacheEntryDataType . releases ) {
42+ ret . data = [ "1.5.1" ] ;
43+ }
44+ break ;
45+ case GithubRepository . cmake :
46+ if ( dataType === GithubApiCacheEntryDataType . releases ) {
47+ ret . data = [ "v3.28.0-rc6" ] ;
48+ } else {
49+ ret . data = {
50+ assets : [
51+ {
52+ id : 138286891 ,
53+ name : 'cmake-3.28.0-rc6-linux-aarch64.tar.gz' ,
54+ browser_download_url : 'https://github.com/Kitware/CMake/releases/download/v3.28.0-rc6/cmake-3.28.0-rc6-linux-aarch64.tar.gz'
55+ } ,
56+ {
57+ id : 138286897 ,
58+ name : 'cmake-3.28.0-rc6-linux-x86_64.tar.gz' ,
59+ browser_download_url : 'https://github.com/Kitware/CMake/releases/download/v3.28.0-rc6/cmake-3.28.0-rc6-linux-x86_64.tar.gz'
60+ } ,
61+ {
62+ id : 138286905 ,
63+ name : 'cmake-3.28.0-rc6-macos-universal.tar.gz' ,
64+ browser_download_url : 'https://github.com/Kitware/CMake/releases/download/v3.28.0-rc6/cmake-3.28.0-rc6-macos-universal.tar.gz'
65+ } ,
66+ {
67+ id : 138286932 ,
68+ name : 'cmake-3.28.0-rc6-windows-arm64.zip' ,
69+ browser_download_url : 'https://github.com/Kitware/CMake/releases/download/v3.28.0-rc6/cmake-3.28.0-rc6-windows-arm64.zip'
70+ } ,
71+ {
72+ id : 138286937 ,
73+ name : 'cmake-3.28.0-rc6-windows-x86_64.zip' ,
74+ browser_download_url : 'https://github.com/Kitware/CMake/releases/download/v3.28.0-rc6/cmake-3.28.0-rc6-windows-x86_64.zip'
75+ } ,
76+ ] ,
77+ assetsUrl : 'https://api.github.com/repos/Kitware/CMake/releases/132188415/assets' ,
78+ } as GithubReleaseResponse
79+ }
80+ break ;
81+ case GithubRepository . ninja :
82+ if ( dataType === GithubApiCacheEntryDataType . releases ) {
83+ ret . data = [ "v1.12.1" ] ;
84+ } else {
85+ ret . data = {
86+ assets : [
87+ {
88+ id : 167333823 ,
89+ name : 'ninja-linux-aarch64.zip' ,
90+ browser_download_url : 'https://github.com/ninja-build/ninja/releases/download/v1.12.1/ninja-linux-aarch64.zip'
91+ } ,
92+ {
93+ id : 167333509 ,
94+ name : 'ninja-linux.zip' ,
95+ browser_download_url : 'https://github.com/ninja-build/ninja/releases/download/v1.12.1/ninja-linux.zip'
96+ } ,
97+ {
98+ id : 167333196 ,
99+ name : 'ninja-mac.zip' ,
100+ browser_download_url : 'https://github.com/ninja-build/ninja/releases/download/v1.12.1/ninja-mac.zip'
101+ } ,
102+ {
103+ id : 167333379 ,
104+ name : 'ninja-win.zip' ,
105+ browser_download_url : 'https://github.com/ninja-build/ninja/releases/download/v1.12.1/ninja-win.zip'
106+ } ,
107+ {
108+ id : 167333478 ,
109+ name : 'ninja-winarm64.zip' ,
110+ browser_download_url : 'https://github.com/ninja-build/ninja/releases/download/v1.12.1/ninja-winarm64.zip'
111+ }
112+ ] ,
113+ assetsUrl : 'https://api.github.com/repos/ninja-build/ninja/releases/155357494/assets'
114+ } as GithubReleaseResponse
115+ }
116+ break ;
117+ case GithubRepository . tools :
118+ if ( dataType === GithubApiCacheEntryDataType . releases ) {
119+ ret . data = [ ] ;
120+ } else {
121+ ret . data = {
122+ assets : [
123+ {
124+ id : 141973997 ,
125+ name : 'openocd-0.12.0-x64-win.zip' ,
126+ browser_download_url : 'https://github.com/will-v-pi/pico-sdk-tools/releases/download/v1.5.1-alpha-1/openocd-0.12.0-x64-win.zip'
127+ } ,
128+ {
129+ id : 141974002 ,
130+ name : 'pico-sdk-tools-1.5.1-x64-win.zip' ,
131+ browser_download_url : 'https://github.com/will-v-pi/pico-sdk-tools/releases/download/v1.5.1-alpha-1/pico-sdk-tools-1.5.1-x64-win.zip'
132+ } ,
133+ {
134+ id : 141974003 ,
135+ name : 'picotool-1.1.2-x64-win.zip' ,
136+ browser_download_url : 'https://github.com/will-v-pi/pico-sdk-tools/releases/download/v1.5.1-alpha-1/picotool-1.1.2-x64-win.zip'
137+ }
138+ ] ,
139+ assetsUrl : 'https://api.github.com/repos/will-v-pi/pico-sdk-tools/releases/134896110/assets'
140+ } as GithubReleaseResponse
141+ }
142+ break ;
143+ case GithubRepository . openocd :
144+ if ( dataType === GithubApiCacheEntryDataType . releases ) {
145+ ret . data = [ ] ;
146+ } else {
147+ ret . data = {
148+ assets : [
149+ {
150+ id : 124558743 ,
151+ name : 'xpack-openocd-0.12.0-2-darwin-arm64.tar.gz' ,
152+ browser_download_url : 'https://github.com/xpack-dev-tools/openocd-xpack/releases/download/v0.12.0-2/xpack-openocd-0.12.0-2-darwin-arm64.tar.gz'
153+ } ,
154+ {
155+ id : 124558736 ,
156+ name : 'xpack-openocd-0.12.0-2-darwin-x64.tar.gz' ,
157+ browser_download_url : 'https://github.com/xpack-dev-tools/openocd-xpack/releases/download/v0.12.0-2/xpack-openocd-0.12.0-2-darwin-x64.tar.gz'
158+ } ,
159+ {
160+ id : 124558733 ,
161+ name : 'xpack-openocd-0.12.0-2-linux-arm.tar.gz' ,
162+ browser_download_url : 'https://github.com/xpack-dev-tools/openocd-xpack/releases/download/v0.12.0-2/xpack-openocd-0.12.0-2-linux-arm.tar.gz'
163+ } ,
164+ {
165+ id : 124558729 ,
166+ name : 'xpack-openocd-0.12.0-2-linux-arm64.tar.gz' ,
167+ browser_download_url : 'https://github.com/xpack-dev-tools/openocd-xpack/releases/download/v0.12.0-2/xpack-openocd-0.12.0-2-linux-arm64.tar.gz'
168+ } ,
169+ {
170+ id : 124558723 ,
171+ name : 'xpack-openocd-0.12.0-2-linux-x64.tar.gz' ,
172+ browser_download_url : 'https://github.com/xpack-dev-tools/openocd-xpack/releases/download/v0.12.0-2/xpack-openocd-0.12.0-2-linux-x64.tar.gz'
173+ } ,
174+ {
175+ id : 124558714 ,
176+ name : 'xpack-openocd-0.12.0-2-win32-x64.zip' ,
177+ browser_download_url : 'https://github.com/xpack-dev-tools/openocd-xpack/releases/download/v0.12.0-2/xpack-openocd-0.12.0-2-win32-x64.zip'
178+ }
179+ ] ,
180+ assetsUrl : 'https://api.github.com/repos/xpack-dev-tools/openocd-xpack/releases/119866462/assets'
181+ } as GithubReleaseResponse
182+ }
183+ break ;
184+ }
185+
186+ return ret ;
187+ }
188+
28189/**
29190 * A simple cache for Github API responses to avoid hittign the rate limit,
30191 * and to avoid putting unnecessary load on the Github servers.
@@ -118,6 +279,21 @@ export default class GithubApiCache {
118279 return response ?. etag ;
119280 }
120281
282+ public async getDefaultResponse (
283+ repository : GithubRepository ,
284+ dataType : GithubApiCacheEntryDataType
285+ ) : Promise < GithubApiCacheEntry | undefined > {
286+ const lastEtag = await GithubApiCache . getInstance ( ) . getLastEtag (
287+ repository ,
288+ dataType
289+ ) ;
290+ if ( lastEtag ) {
291+ return this . globalState . get ( `githubApiCache-${ repository } -${ dataType } ` ) ;
292+ } else {
293+ return defaultCacheOfRepository ( repository , dataType ) ;
294+ }
295+ }
296+
121297 /**
122298 * Clears the github api cache.
123299 */
0 commit comments