chiark / gitweb /
README: document trouble with tricky packages, and submodules
[nailing-cargo.git] / nailing-cargo
index ce03c83241232a345593f99122ff83ae09c17424..c9ee071e3f578305207da6ba4440408434ff54cf 100755 (executable)
@@ -108,13 +108,14 @@ our $linkfarm_depth;
 #
 our %subcmd_props = (
 # build (default)  =>[qw(                                                )],
-'generate-lockfile'=>[qw( lock-update !target          !target-dir       )],
- update            =>[qw( lock-update !target online                     )],
  fetch             =>[qw(                     online   !target-dir       )],
  fmt               =>[qw( !locked     !target !offline !target-dir edits )],
+'generate-lockfile'=>[qw( lock-update !target          !target-dir       )],
  init              =>[qw(                                        creates )],
+ metadata          =>[qw(                              !target-dir       )],
  miri              =>[qw( !locked             !offline  linkfarm-shallow )],
  publish           =>[qw(                     !offline  linkfarm-gitclean )],
+ update            =>[qw( lock-update !target online                     )],
  upgrades          =>[qw( !locked                      !target-dir       )],
                    );
 
@@ -541,11 +542,12 @@ sub calculate () {
     my ($toml, $mf_org_subdir) = @{ $manifests{$mf} };
     foreach my $deps (get_dependency_tables $toml) {
       next unless $deps;
-      foreach my $p (keys %packagemap) {
-       my $info = $deps->{$p};
-       next unless defined $info;
+      foreach my $dep_key (keys %$deps) {
+       my $info = $deps->{$dep_key};
+       my $p = (ref $info ? $info->{package} : undef) // $dep_key;
+       next unless defined $packagemap{$p};
        next if $packagemap{$p}[1] eq $mf_org_subdir;
-       $deps->{$p} = $info = { } unless ref $info;
+       $deps->{$dep_key} = $info = { } unless ref $info; # was just version
        my $oldpath = $info->{path};
        delete $info->{version};
        my $newpath = $worksphere.'/'.$packagemap{$p}[0];