1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192(*****************************************************************************)(* *)(* Copyright (C) 2026 Yves Ndiaye *)(* *)(* This Source Code Form is subject to the terms of the Mozilla Public *)(* License, v. 2.0. If a copy of the MPL was not distributed with this *)(* file, You can obtain one at https://mozilla.org/MPL/2.0/. *)(* *)(*****************************************************************************)(** Operations for plugin. *)(** Signature of a shakuhachi plugin. *)moduletypeS=sigvalname:string(** Plugin's name. This name should match the one inside the configuration
file. *)valon_loaded:(Skhclibs.Collection.t->SkhcConfig.Plugin.Config.t->bool)option(** [on_loaded collection plg_conf] is called when the module is successfully
loaded.*)valon_scan_file:(Skhclibs.Collection.t->string->string)option(** [on_scan_file collection path] is called when a file at [path] will be
treated for importing. [on_scan_file] returns the path to the file that
have to being imported. Useful if your want to transcode audiofile before
importing. *)valon_scan_metadata:(Skhclibs.Collection.t->string->SkhcMetadata.Metadata.t->SkhcMetadata.Metadata.t)option(** [on_metadata collection path metadata] is called right after the medadata
being extracted from the audio file at [path] when importing. *)valon_file_moved:(Skhclibs.Collection.t->string->string->unit)option(** [on_file_moved collection src dst] is called when a file within a
collection is moved from [src] to [dst] *)valon_music_modified:(Skhclibs.Collection.t->SkhcDb.MusicFile.t->SkhcDb.MusicFile.t->unit)option(** [on_music_modified collection old new'] is called when [old] is modified.
At least a field, other than {i id} and {i updated_at} is different
between [old] and [new']. *)valon_artist_modified:(Skhclibs.Collection.t->SkhcDb.Artist.t->SkhcDb.Artist.t->unit)option(** [on_artist_modified collection old new'] is called when [old] is modified.
At least a field, other than {i id} and {i updated_at} is different
between [old] and [new']. *)valon_album_modified:(Skhclibs.Collection.t->SkhcDb.Album.t->SkhcDb.Album.t->unit)option(** [on_album_modified collection old new'] is called when [old] is modified.
At least a field, other than {i id} and {i updated_at} is different
between [old] and [new']. *)valon_playlist_modified:(Skhclibs.Collection.t->SkhcDb.Playlist.t->SkhcDb.Playlist.t->unit)option(** [on_playlist_modified collection old new'] is called when [old] is
modified. At least a field, other than {i id} and {i updated_at} is
different between [old] and [new']. *)valon_playlist_tracks_updated:(Skhclibs.Collection.t->SkhcDb.Playlist.t->(SkhcDb.MusicFile.t*SkhcDb.Album.t*(string*SkhcDb.Roles.t)SkhcDb.Ids.Map.t*SkhcMetadata.Metadata.Values.tSkhcMetadata.Metadata.Properties.t)list->unit)option(** [on_playlist_tracks_updated collection playlist musics] is called when the
musics inside of [playlist] has been updated. *)endletplugins:(moduleS)listref=ref[](** [register plugin] registers [plugin] to be loaded by [skhc]. *)letregisterplugin=plugins:=plugin::!plugins(** [plugins ()] returns all the plugins currently registered. *)letplugins()=!plugins