@@ -30,26 +30,32 @@ function platform_cache_default() {
3030 }
3131}
3232
33+ function platform_data_home_default ( ) {
34+ switch ( host ( ) . platform ) {
35+ case 'darwin' :
36+ return Path . home ( ) . join ( "Library/Application Support" )
37+ case 'windows' : {
38+ const LOCALAPPDATA = Deno . env . get ( 'LOCALAPPDATA' )
39+ if ( LOCALAPPDATA ) {
40+ return new Path ( LOCALAPPDATA ) . join ( "pkgx" )
41+ } else {
42+ return Path . home ( ) . join ( "AppData/Local/pkgx" )
43+ } }
44+ default :
45+ return Path . home ( ) . join ( ".local/share" )
46+ }
47+ }
48+
3349const SEP = Deno . build . os == 'windows' ? ';' : ':'
3450
3551export function ConfigDefault ( env = Deno . env . toObject ( ) ) : Config {
3652 const prefix = flatmap ( env [ 'PKGX_DIR' ] ?. trim ( ) , x => new Path ( x ) ) ?? Path . home ( ) . join ( '.pkgx' )
3753 const pantries = env [ 'PKGX_PANTRY_PATH' ] ?. split ( SEP ) . compact ( x => flatmap ( x . trim ( ) , x => Path . abs ( x ) ?? Path . cwd ( ) . join ( x ) ) ) ?? [ ]
38- const cache = ( flatmap ( env [ "XDG_CACHE_HOME" ] , x => new Path ( x ) ) ?? platform_cache_default ( ) ) . join ( "pkgx" )
54+ const cache = ( flatmap ( env [ "XDG_CACHE_HOME" ] , Path . abs ) ?? platform_cache_default ( ) ) . join ( "pkgx" )
55+ const data = ( flatmap ( env [ "XDG_DATA_HOME" ] , Path . abs ) ?? platform_data_home_default ( ) ) . join ( "pkgx" )
3956 const isCI = boolize ( env [ 'CI' ] ) ?? false
4057 const UserAgent = flatmap ( getv ( ) , v => `libpkgx/${ v } ` ) ?? 'libpkgx'
4158
42- const data = ( ( ) => {
43- const xdg = env [ "XDG_DATA_HOME" ]
44- if ( xdg ) {
45- return new Path ( xdg )
46- } else if ( host ( ) . platform == "darwin" ) {
47- return Path . home ( ) . join ( "Library/Application Support" )
48- } else {
49- return Path . home ( ) . join ( ".local/share" )
50- }
51- } ) ( ) . join ( "pkgx" )
52-
5359 //TODO prefer 'xz' on Linux (as well) if supported
5460 const compression = ! isCI && host ( ) . platform == 'darwin' ? 'xz' : 'gz'
5561
0 commit comments