B0_initGenerate files from templates.
Exposes, functions initially used by b0 init.
Likely needs a few design rounds. Some of the project lookup stuff could be migrated elsewhere. Eventually add something than can be easily extended via install dir lookups like carcass did.
val find_project_meta : unit -> B0_meta.t optionfind_project_meta () finds default metadata for the project. For now this the meta of B0_pack.find_default if there is a b0 file linked (see B0_driver.has_b0_file).
val get_project_meta : unit -> B0_meta.tget_project_meta () is like find_project_meta but defaults to B0_meta.empty.
default_root_marker filenames that could denote the root of a project's source tree.
val find_project_name : 
  ?root_markers:string list ->
  cwd:B0_std.Fpath.t ->
  unit ->
  (string option, string) Stdlib.resultfind_project_name ~cwd () tries to determine a name for the project. This is either the basename of the VCS work directory or it loops up from the current working directory cwd trying to find a file a directory which has a file whose name is in root_markers which defaults to default_root_markers.
get_copyright_years years defaults the option to the current year, as determined by Unix.gettimeofday in UTC.
CHANGES filesval find_changes_generator : B0_std.Fpath.t -> (changes, string) Stdlib.resultfind_changes_generator f is a changes generator for a file file (ignored for now).
LICENSE filesval find_project_license : B0_meta.t -> B0_meta.spdxid optionfind_project_license m looks the first B0_meta.licenses in meta.
val get_license : B0_meta.t -> B0_meta.spdxid option -> B0_meta.spdxidget_project_license meta license defaults license with find_project_license or "ISC" if that didn't yield anything (author bias, open to a better scheme).
val download_license_template : 
  ?httpc:B0_http.Http_client.t ->
  strip_meta:bool ->
  B0_meta.spdxid ->
  (string, string) Stdlib.resultdownload_license_template spdxid tries to download a licence template for spdxid. The SPDX project doesn't seem to provide this. We rely on the data from choosealicense.com. strip_meta inidicates whether the YAML preamble should be stripped. httpc is the client to use, it default to B0_http.Http_client.get.
Note. These templates should have "[year]" and "[fullname]" variables to substitute. Except for licenses that do not, like the GPL which attributes copyrights to the FSF.
val license : 
  ?var_years:string ->
  ?var_holder:string ->
  years:string ->
  holder:string ->
  string ->
  string * string listlicense text ~years ~holder generates a license from text in which it substitutes the var_years (defaults to "[year]") by years and var_holder (defaults to "[fullname]") by holder. The tupled list has warning messages for variables that could not be subsituted.
The defaults of var_years and var_holder match those needed by download_license_template do not rely on them otherwise.
README filestype readme =
  project_name:string ->
  synopsis:string option ->
  B0_meta.t ->
  stringThe type for README generators.
val find_readme_generator : B0_std.Fpath.t -> (readme, string) Stdlib.resultfind_readme_generator file is a README generator for a file file (ignored for now).
val get_src_license : 
  B0_meta.t ->
  example:bool ->
  B0_meta.spdxid option ->
  B0_meta.spdxidget_src_license is like get_license except if example is true it defaults to "CC0-1.0" (TODO define a key for that).
The type for supported source language files.
val pp_lang_id : lang B0_std.Fmt.tpp_lang is a formatter for source language identifiers.
val lang_to_id : lang -> stringlang_to_id lang is a lowercased identifier for lang.
val lang_of_id : string -> (lang, string) Stdlib.resultlang_of_id s is a language frmo the given identifier.
val lang_of_file_ext : B0_std.Fpath.ext -> lang optionlang_of_file_ext tries to guess a language from the given file extension.
type src = years:string -> holder:string -> license:B0_meta.spdxid -> stringThe type for source generators.