Переглянути джерело

Align with changes to Invercargill API

Billy Barrow 1 місяць тому
батько
коміт
6b4dae4bc3

+ 2 - 2
src/cli/meson.build

@@ -4,7 +4,7 @@ sources += files('Manifest.vala')
 sources += files('Repository.vala')
 sources += files('Install.vala')
 
-deps = dependencies
-deps += usm_dep
+ deps = dependencies
+ deps += usm_dep
 
 executable('usm', sources, dependencies: deps, install: true)

+ 3 - 2
src/lib/Configuration.vala

@@ -10,7 +10,7 @@ namespace Usm {
         public static PropertyMapper<Configuration> get_mapper() {
             return PropertyMapper.build_for<Configuration>(cfg => {
                 cfg.map<bool>("is_managed", o => o.is_managed, (o, v) => o.is_managed = v);
-                cfg.map_with<ManagedConfiguration>("managed", o => o.managed_config, (o, v) => o.managed_config = v, ManagedConfiguration.get_mapper(), false);
+                cfg.map_properties_with<ManagedConfiguration>("managed", o => o.managed_config, (o, v) => o.managed_config = v, ManagedConfiguration.get_mapper(), false);
                 cfg.set_constructor(() => new Configuration());
             });
         }
@@ -47,7 +47,8 @@ namespace Usm {
                 cfg.set_constructor(() => new ManagedConfiguration());
             });
         }     
-
     }
 
+    
+
 }

+ 4 - 4
src/lib/Dependencies.vala

@@ -9,10 +9,10 @@ namespace Usm {
 
         public static PropertyMapper<Dependencies> get_mapper() {
             return PropertyMapper.build_for<Dependencies>(cfg => {
-                cfg.map_many<string>("runtime", o => o.runtime.select<string>(i => i.to_string()), (o, v) => o.runtime = v.convert<ResourceRef>(i => new ResourceRef(i)).to_set());
-                cfg.map_many<string>("build", o => o.build.select<string>(i => i.to_string()), (o, v) => o.build = v.convert<ResourceRef>(i => new ResourceRef(i)).to_set());
-                cfg.map_many<string>("manage", o => o.manage.select<string>(i => i.to_string()), (o, v) => o.manage = v.convert<ResourceRef>(i => new ResourceRef(i)).to_set());
-                cfg.map_many<string>("acquire", o => o.manage.select<string>(i => i.to_string()), (o, v) => o.manage = v.convert<ResourceRef>(i => new ResourceRef(i)).to_set(), false);
+                cfg.map_many<string>("runtime", o => o.runtime.select<string>(i => i.to_string()), (o, v) => o.runtime = v.try_select<ResourceRef>(i => new ResourceRef(i)).to_set());
+                cfg.map_many<string>("build", o => o.build.select<string>(i => i.to_string()), (o, v) => o.build = v.try_select<ResourceRef>(i => new ResourceRef(i)).to_set());
+                cfg.map_many<string>("manage", o => o.manage.select<string>(i => i.to_string()), (o, v) => o.manage = v.try_select<ResourceRef>(i => new ResourceRef(i)).to_set());
+                cfg.map_many<string>("acquire", o => o.manage.select<string>(i => i.to_string()), (o, v) => o.manage = v.try_select<ResourceRef>(i => new ResourceRef(i)).to_set(), false);
                 cfg.set_constructor(() => new Dependencies());
             });
         }

+ 2 - 2
src/lib/File.vala

@@ -17,8 +17,8 @@ namespace Usm {
                 cfg.map<string>("pathBase", o => o.path_base.to_string(), (o, v) => o.path_base = ManifestFilePathBase.from_string(v));
                 cfg.map<string>("type", o => o.file_type.to_string(), (o, v) => o.file_type = ManifestFileType.from_string(v));
                 cfg.map<string>("dest", o => o.destination, (o, v) => o.destination = v, false);
-                cfg.map_many<string>("keepOn", o => o.keep_on.select<string>(i => i.to_string()), (o, v) => o.keep_on = v.convert<RemoveType>(i => RemoveType.from_string(i)).to_vector(), false);
-                cfg.map_many<string>("skipFor", o => o.skip_for.select<string>(i => i.to_string()), (o, v) => o.skip_for = v.convert<InstallType>(i => InstallType.from_string(i)).to_vector(), false);
+                cfg.map_many<string>("keepOn", o => o.keep_on.select<string>(i => i.to_string()), (o, v) => o.keep_on = v.try_select<RemoveType>(i => RemoveType.from_string(i)).to_vector(), false);
+                cfg.map_many<string>("skipFor", o => o.skip_for.select<string>(i => i.to_string()), (o, v) => o.skip_for = v.try_select<InstallType>(i => InstallType.from_string(i)).to_vector(), false);
                 cfg.set_constructor(() => new ManifestFile());
             });
         }

+ 4 - 4
src/lib/Manifest.vala

@@ -39,11 +39,11 @@ namespace Usm {
                 cfg.map<string>("name", o => o.name, (o, v) => o.name = v);
                 cfg.map<string>("version", o => o.version.to_string(), (o, v) => o.version = new Version.from_string(v));
                 cfg.map<string>("summary", o => o.summary, (o, v) => o.summary = v);
-                cfg.map_many_with<Licence>("licences", o => o.licences, (o, v) => o.licences = v.to_vector(), Licence.get_mapper());
+                cfg.map_property_groups_with<Licence>("licences", o => o.licences, (o, v) => o.licences = v.to_vector(), Licence.get_mapper());
                 cfg.map<Properties>("provides", o => o.map_from_provides_dict(), (o, v) => o.build_provides_dict(v));
-                cfg.map_with<Dependencies>("depends", o => o.dependencies, (o, v) => o.dependencies = v, Dependencies.get_mapper());
-                cfg.map_with<Executables>("execs", o => o.executables, (o, v) => o.executables = v, Executables.get_mapper());
-                cfg.map_many<string>("flags", o => o.flags.select<string>(f => f.to_string()), (o, v) => o.flags = v.try_select<ManifestFlag>(f => ManifestFlag.from_string(f)).unwrap_to_set());
+                cfg.map_properties_with<Dependencies>("depends", o => o.dependencies, (o, v) => o.dependencies = v, Dependencies.get_mapper());
+                cfg.map_properties_with<Executables>("execs", o => o.executables, (o, v) => o.executables = v, Executables.get_mapper());
+                cfg.map_many<string>("flags", o => o.flags.select<string>(f => f.to_string()), (o, v) => o.flags = v.try_select<ManifestFlag>(f => ManifestFlag.from_string(f)).to_set());
                 cfg.map<string>("md", o => o.markdown_path, (o, v) => o.markdown_path = v, false);
                 cfg.map<string>("url", o => o.url, (o, v) => o.url = v, false);
                 cfg.map_many<string>("screenshots", o => o.screenshot_paths, (o, v) => o.screenshot_paths = v.to_vector(), false);

+ 2 - 2
src/lib/Repository/RepositoryListing.vala

@@ -30,7 +30,7 @@ namespace Usm {
                         .get_array("signatures")
                         .as_objects()
                         .try_select<RepositoryListingSignature>(j => mapper.materialise(j))
-                        .unwrap_to_vector();
+                        .to_vector();
 
                     var buffer = new uint8[ChecksumType.SHA512.get_length()];
                     size_t buffer_length = buffer.length;
@@ -74,7 +74,7 @@ namespace Usm {
         public static PropertyMapper<RepositoryListingEntry> get_mapper() {
             return PropertyMapper.build_for<RepositoryListingEntry>(cfg => {
                 cfg.map<string>("path", o => o.path, (o, v) => o.path = v);
-                cfg.map_with<Manifest>("manifest", o => o.manifest, (o, v) => o.manifest = v, Manifest.get_mapper());
+                cfg.map_properties_with<Manifest>("manifest", o => o.manifest, (o, v) => o.manifest = v, Manifest.get_mapper());
                 cfg.map<string>("sha512", o => o.sha512sum.to_base64(), (o, v) => o.sha512sum = new BinaryData.from_base64(v));
                 cfg.set_constructor(() => new RepositoryListingEntry());
             });

+ 1 - 1
src/lib/State/State.vala

@@ -36,7 +36,7 @@ namespace Usm {
         public Enumerable<Repository> get_repositories() throws Error {
             return directory(Path.build_filename(config_path, "repos.d"))
                 .try_select<Repository>(d => new Repository.from_file(Path.build_filename(config_path, "repos.d", d)))
-                .unwrap_to_series();
+                .to_series();
         }
 
         public RepositoryListing? get_latest_list(Repository repository) throws Error {

+ 1 - 1
src/lib/Transaction.vala

@@ -119,7 +119,7 @@ namespace Usm {
             try {
                 remaining_to_remove = to_remove
                     .try_select<CachedPackageManifest>(p => new CachedPackageManifest(p))
-                    .unwrap_to_set();
+                    .to_set();
 
             }
             catch(Error e) {

+ 74 - 0
src/lib/TransactionSummary.vala

@@ -0,0 +1,74 @@
+using Invercargill;
+using InvercargillJson;
+
+namespace Usm {
+
+    public class TransactionRecord {
+
+        public Vector<PackageState> state_changes { get; set; }
+        public DateTime transaction_start { get; set; }
+        public DateTime transaction_end { get; set; }
+
+        public static PropertyMapper<TransactionRecord> get_mapper() {
+            return PropertyMapper.build_for<TransactionRecord>(cfg => {
+                cfg.map<string>("transaction_start", r => r.transaction_start.format_iso8601(), (r, v) => r.transaction_start = new DateTime.from_iso8601(v, null));
+                cfg.map<string>("transaction_end", r => r.transaction_end.format_iso8601(), (r, v) => r.transaction_end = new DateTime.from_iso8601(v, null));
+            });
+        }
+
+        public void stream_out(OutputStream stream) throws Error {
+            var jsonl_stream = new JsonlOutputStream(stream);
+            var mapper = PackageState.get_mapper();
+            foreach (var state in state_changes) {
+                jsonl_stream.write_object(mapper.map_from(state));
+            }
+            jsonl_stream.flush();
+        }
+
+    }
+
+    public class PackageState {
+
+        public PackageStateType state { get; set; }
+        public PackageDeliveryType delivery { get; set; }
+        public Manifest manifest { get; set; }
+        public string package_path { get; set; }
+
+        public static PropertyMapper<PackageState> get_mapper() {
+            return PropertyMapper.build_for<PackageState>(cfg => cfg
+                .map<string>("package_path", o => o.package_path, (o, v) => o.package_path = v)
+                .map_properties_with<Manifest>("manifest", o => o.manifest, (o, v) => o.manifest = v, Manifest.get_mapper())
+                .map_with<PackageStateType, string>("state", o => o.state, (o, v) => o.state = v, PackageStateType.get_mapper())
+                .map_with<PackageDeliveryType, string>("state", o => o.delivery, (o, v) => o.delivery = v, PackageDeliveryType.get_mapper())
+            );
+        }
+
+    }
+
+    public enum PackageStateType {
+        INSTALLED,
+        REMOVED;
+
+        public static ValueMapper<PackageStateType, string> get_mapper() {
+            return ValueMapper.build_for<PackageStateType, string>(cfg => cfg
+                .map(PackageStateType.INSTALLED, "installed")
+                .map(PackageStateType.REMOVED, "removed")
+            );
+        }
+    }
+
+    public enum PackageDeliveryType {
+        REPOSITORY,
+        BUNDLE,
+        MANIFEST;
+
+        public static ValueMapper<PackageDeliveryType, string> get_mapper() {
+            return ValueMapper.build_for<PackageDeliveryType, string>(cfg => cfg
+                .map(PackageDeliveryType.REPOSITORY, "repository")
+                .map(PackageDeliveryType.BUNDLE, "bundle")
+                .map(PackageDeliveryType.MANIFEST, "manifest")
+            );
+        }
+    }
+
+}

+ 1 - 0
src/lib/meson.build

@@ -14,6 +14,7 @@ sources += files('Resolver.vala')
 sources += files('Util.vala')
 sources += files('Transaction.vala')
 sources += files('Configuration.vala')
+sources += files('TransactionSummary.vala')
 sources += files('Repository/Repository.vala')
 sources += files('Repository/RepositoryListing.vala')
 sources += files('Repository/RepositoryClient.vala')