1+ import _ from "lodash" ;
12import Prefix from "./prefix" ;
23import FileSystem from "./file-system" ;
34import Network from "./network" ;
@@ -55,12 +56,35 @@ export default class Kron4ek {
5556
5657 if ( null === this . data ) {
5758 promise = this . network . getJSON ( this . url ) . then ( ( data ) => {
58- let items = [ ] ;
59+ let items = { } ;
60+ let keys = [ ] ;
5961
6062 data . forEach ( ( release ) => {
6163 release . assets . forEach ( ( item ) => {
62- items . push ( {
63- name : item . name . replace ( 'wine-' , '' ) . replace ( '.tar.xz' , '' ) ,
64+ let name = item . name . replace ( 'wine-' , '' ) . replace ( '.tar.xz' , '' ) ;
65+ let arch = item . name . includes ( 'amd64' ) ? 'amd64' : 'x86' ;
66+ let version = name . match ( / ^ ( [ 0 - 9 ] + \. [ 0 - 9 ] + - ( [ 0 - 9 ] + - | ) ) / gm) [ 0 ] ;
67+ name = _ . trimEnd ( name . replace ( version , '' ) . replace ( / a m d 6 4 $ / , '' ) . replace ( / x 8 6 $ / , '' ) , '-' ) ;
68+ version = _ . trimEnd ( version , '-' ) ;
69+
70+ if ( ! name ) {
71+ name = 'wine' ;
72+ }
73+
74+ if ( undefined === items [ name ] ) {
75+ items [ name ] = { } ;
76+ }
77+
78+ if ( undefined === items [ name ] [ version ] ) {
79+ items [ name ] [ version ] = [ ] ;
80+ }
81+
82+ if ( ! keys . includes ( name ) ) {
83+ keys . push ( name ) ;
84+ }
85+
86+ items [ name ] [ version ] . push ( {
87+ name : arch ,
6488 type : 'file' ,
6589 download : ( ) => {
6690 return this . download ( item . browser_download_url ) ;
@@ -69,7 +93,18 @@ export default class Kron4ek {
6993 } ) ;
7094 } ) ;
7195
72- this . data = items ;
96+ this . data = keys . map ( name => {
97+ let versions = items [ name ] ;
98+ return {
99+ name : name ,
100+ type : 'dir' ,
101+ nested : Object . keys ( versions ) . map ( version => ( {
102+ name : version ,
103+ type : 'dir' ,
104+ nested : items [ name ] [ version ] ,
105+ } ) ) ,
106+ } ;
107+ } ) ;
73108 } ) ;
74109 }
75110
0 commit comments