@@ -30,21 +30,16 @@ type package = {
30
30
name: str ,
31
31
uuid: str,
32
32
url: str,
33
- method: str,
34
- tags: [ str]
33
+ method: str
35
34
} ;
36
35
37
36
type source = {
38
37
name : str ,
39
38
url : str ,
40
- sig : option:: t < str > ,
41
- key : option:: t < str > ,
42
- keyfp : option:: t < str > ,
43
39
mutable packages: [ package ]
44
40
} ;
45
41
46
42
type cargo = {
47
- pgp : bool ,
48
43
root : str ,
49
44
bindir : str ,
50
45
libdir : str ,
@@ -163,32 +158,12 @@ fn need_dir(s: str) {
163
158
fn parse_source ( name : str , j : json:: json ) -> source {
164
159
alt j {
165
160
json : : dict ( _j) {
166
- let url = alt _j. find ( "url" ) {
161
+ alt _j. find ( "url" ) {
167
162
some ( json:: string ( u) ) {
168
- u
163
+ ret { name : name , url : u , mutable packages : [ ] } ;
169
164
}
170
165
_ { fail "Needed 'url' field in source." ; }
171
166
} ;
172
- let sig = alt _j. find ( "sig" ) {
173
- some ( json:: string ( u) ) {
174
- some ( u)
175
- }
176
- _ { none }
177
- } ;
178
- let key = alt _j. find ( "key" ) {
179
- some ( json:: string ( u) ) {
180
- some ( u)
181
- }
182
- _ { none }
183
- } ;
184
- let keyfp = alt _j. find ( "keyfp" ) {
185
- some ( json:: string ( u) ) {
186
- some ( u)
187
- }
188
- _ { none }
189
- } ;
190
- ret { name : name, url : url, sig : sig, key : key, keyfp : keyfp,
191
- mutable packages : [ ] } ;
192
167
}
193
168
_ { fail "Needed dict value in source." ; }
194
169
} ;
@@ -242,31 +217,18 @@ fn load_one_source_package(&src: source, p: map::hashmap<str, json::json>) {
242
217
}
243
218
} ;
244
219
245
- let tags = [ ] ;
246
- alt p. find ( "tags" ) {
247
- some ( json:: list ( js) ) {
248
- for j in * js {
249
- alt j {
250
- json : : string ( _j) { vec:: grow ( tags, 1 u, _j) ; }
251
- _ { }
252
- }
253
- }
254
- }
255
- _ { }
256
- }
257
220
vec:: grow ( src. packages , 1 u, {
258
221
// source: _source(src),
259
222
name: name,
260
223
uuid: uuid,
261
224
url: url,
262
- method: method,
263
- tags: tags
225
+ method: method
264
226
} ) ;
265
- log " Loaded package: " + src. name + "/" + name;
227
+ info ( " Loaded package: " + src. name + "/" + name) ;
266
228
}
267
229
268
230
fn load_source_packages ( & c: cargo , & src: source ) {
269
- log "Loading source: " + src. name ;
231
+ info ( "Loading source: " + src. name ) ;
270
232
let dir = fs:: connect ( c. sourcedir , src. name ) ;
271
233
let pkgfile = fs:: connect ( dir, "packages.json" ) ;
272
234
if !fs:: path_exists ( pkgfile) { ret; }
@@ -307,7 +269,6 @@ fn configure() -> cargo {
307
269
try_parse_sources ( fs:: connect ( p, "sources.json" ) , sources) ;
308
270
try_parse_sources ( fs:: connect ( p, "local-sources.json" ) , sources) ;
309
271
let c = {
310
- pgp: pgp:: supported ( ) ,
311
272
root: p,
312
273
bindir: fs:: connect ( p, "bin" ) ,
313
274
libdir: fs:: connect ( p, "lib" ) ,
@@ -328,10 +289,6 @@ fn configure() -> cargo {
328
289
sources. insert ( k, s) ;
329
290
} ;
330
291
331
- if c. pgp {
332
- pgp:: init ( c. root ) ;
333
- }
334
-
335
292
c
336
293
}
337
294
@@ -544,10 +501,7 @@ fn cmd_install(c: cargo, argv: [str]) {
544
501
545
502
fn sync_one ( c : cargo , name : str , src : source ) {
546
503
let dir = fs:: connect ( c. sourcedir , name) ;
547
- let pkgfile = fs:: connect ( dir, "packages.json.new" ) ;
548
- let destpkgfile = fs:: connect ( dir, "packages.json" ) ;
549
- let sigfile = fs:: connect ( dir, "packages.json.sig" ) ;
550
- let keyfile = fs:: connect ( dir, "key.gpg" ) ;
504
+ let pkgfile = fs:: connect ( dir, "packages.json" ) ;
551
505
let url = src. url ;
552
506
need_dir ( dir) ;
553
507
info ( #fmt[ "fetching source %s..." , name] ) ;
@@ -557,40 +511,6 @@ fn sync_one(c: cargo, name: str, src: source) {
557
511
} else {
558
512
info ( #fmt[ "fetched source: %s" , name] ) ;
559
513
}
560
- alt src. sig {
561
- some ( u) {
562
- let p = run:: program_output ( "curl" , [ "-f" , "-s" , "-o" , sigfile, u] ) ;
563
- if p. status != 0 {
564
- warn ( #fmt[ "fetch for source %s (sig %s) failed" , name, u] ) ;
565
- }
566
- }
567
- _ { }
568
- }
569
- alt src. key {
570
- some ( u) {
571
- let p = run:: program_output ( "curl" , [ "-f" , "-s" , "-o" , keyfile, u] ) ;
572
- if p. status != 0 {
573
- warn ( #fmt[ "fetch for source %s (key %s) failed" , name, u] ) ;
574
- }
575
- pgp:: add ( c. root , keyfile) ;
576
- }
577
- _ { }
578
- }
579
- alt ( src. sig , src. key , src. keyfp ) {
580
- ( some ( _) , some ( _) , some ( f) ) {
581
- let r = pgp:: verify ( c. root , pkgfile, sigfile, f) ;
582
- if !r {
583
- warn ( #fmt[ "signature verification failed for source %s" , name] ) ;
584
- ret;
585
- } else {
586
- info ( #fmt[ "signature ok for source %s" , name] ) ;
587
- }
588
- }
589
- _ {
590
- info( #fmt[ "no signature for source %s" , name] ) ;
591
- }
592
- }
593
- run:: run_program ( "cp" , [ pkgfile, destpkgfile] ) ;
594
514
}
595
515
596
516
fn cmd_sync ( c : cargo , argv : [ str ] ) {
@@ -603,75 +523,10 @@ fn cmd_sync(c: cargo, argv: [str]) {
603
523
}
604
524
}
605
525
606
- fn cmd_init ( c : cargo , argv : [ str ] ) {
607
- let srcurl = "http://www.rust-lang.org/cargo/sources.json" ;
608
- let sigurl = "http://www.rust-lang.org/cargo/sources.json.sig" ;
609
-
610
- let srcfile = fs:: connect ( c. root , "sources.json.new" ) ;
611
- let sigfile = fs:: connect ( c. root , "sources.json.sig" ) ;
612
- let destsrcfile = fs:: connect ( c. root , "sources.json" ) ;
613
-
614
- let p = run:: program_output ( "curl" , [ "-f" , "-s" , "-o" , srcfile, srcurl] ) ;
615
- if p. status != 0 {
616
- warn ( #fmt[ "fetch of sources.json failed: %s" , p. out ] ) ;
617
- ret;
618
- }
619
-
620
- let p = run:: program_output ( "curl" , [ "-f" , "-s" , "-o" , sigfile, sigurl] ) ;
621
- if p. status != 0 {
622
- warn ( #fmt[ "fetch of sources.json.sig failed: %s" , p. out ] ) ;
623
- ret;
624
- }
625
-
626
- let r = pgp:: verify ( c. root , srcfile, sigfile, pgp:: signing_key_fp ( ) ) ;
627
- if !r {
628
- warn ( #fmt[ "signature verification failed for sources.json" ] ) ;
629
- ret;
630
- }
631
- info ( #fmt[ "signature ok for sources.json" ] ) ;
632
- run:: run_program ( "cp" , [ srcfile, destsrcfile] ) ;
633
- }
634
-
635
- fn print_pkg ( s : source , p : package ) {
636
- let m = s. name + "/" + p. name + " (" + p. uuid + ")" ;
637
- if vec:: len ( p. tags ) > 0 u {
638
- m = m + " [" + str:: connect ( p. tags , ", " ) + "]" ;
639
- }
640
- info ( m) ;
641
- }
642
- fn cmd_list ( c : cargo , argv : [ str ] ) {
643
- for_each_package ( c, { |s, p|
644
- if vec:: len ( argv) <= 2 u || argv[ 2 ] == s. name {
645
- print_pkg ( s, p) ;
646
- }
647
- } ) ;
648
- }
649
-
650
- fn cmd_search ( c : cargo , argv : [ str ] ) {
651
- if vec:: len ( argv) < 3 u {
652
- cmd_usage ( ) ;
653
- ret;
654
- }
655
- let n = 0 ;
656
- let name = argv[ 2 ] ;
657
- let tags = vec:: slice ( argv, 3 u, vec:: len ( argv) ) ;
658
- for_each_package ( c, { |s, p|
659
- if ( str:: contains ( p. name , name) || name == "*" ) &&
660
- vec:: all ( tags, { |t| vec:: member ( t, p. tags ) } ) {
661
- print_pkg ( s, p) ;
662
- n += 1 ;
663
- }
664
- } ) ;
665
- info ( #fmt[ "Found %d packages." , n] ) ;
666
- }
667
-
668
526
fn cmd_usage ( ) {
669
527
print ( "Usage: cargo <verb> [args...]" ) ;
670
- print ( " init Fetch default sources.json" ) ;
671
528
print ( " install [source/]package-name Install by name" ) ;
672
529
print ( " install uuid:[source/]package-uuid Install by uuid" ) ;
673
- print ( " list [source] List packages" ) ;
674
- print ( " search <name | '*'> [tags...] Search packages" ) ;
675
530
print ( " sync Sync all sources" ) ;
676
531
print ( " usage This" ) ;
677
532
}
@@ -683,10 +538,7 @@ fn main(argv: [str]) {
683
538
}
684
539
let c = configure ( ) ;
685
540
alt argv[ 1 ] {
686
- "init" { cmd_init ( c, argv) ; }
687
541
"install" { cmd_install ( c, argv) ; }
688
- "list" { cmd_list ( c, argv) ; }
689
- "search" { cmd_search ( c, argv) ; }
690
542
"sync" { cmd_sync ( c, argv) ; }
691
543
"usage" { cmd_usage ( ) ; }
692
544
_ { cmd_usage( ) ; }
0 commit comments