nitc :: AppProject :: defaultinit
# Metadata associated to an `app.nit` project
class AppProject
# Pretty name of the resulting application
var name: String = mainmodule.first_real_mmodule.name is lazy
# Short project name used in `namespace` and configuration files
var short_name: String = mainmodule.name.replace("-", "_") is lazy
# Namespace/package used to identify the application
var namespace = "org.nitlanguage.{short_name}" is lazy
# Version of the application
var version = "0.1"
# Numerical version code of the application
var version_code: Int is lazy do
# Get the date and time (down to the minute) as string
var gmtime = new Tm.gmtime
var local_time_s = gmtime.strftime("%y%m%d%H%M")
return local_time_s.to_i
end
# Extra folders where to find platform specific resource files
var files = new Array[String]
private var modelbuilder: ModelBuilder
private var mainmodule: MModule
init
do
var annot = modelbuilder.lookup_annotation_on_modules("app_name", mainmodule)
if annot != null then
var val = annot.arg_as_string(modelbuilder)
if val != null then name = val
end
annot = modelbuilder.lookup_annotation_on_modules("app_version", mainmodule)
if annot != null then version = annot.as_version(modelbuilder)
annot = modelbuilder.lookup_annotation_on_modules("app_namespace", mainmodule)
if annot != null then
var val = annot.arg_as_string(modelbuilder)
if val != null then namespace = val
end
var annots = modelbuilder.collect_annotations_on_modules("app_files", mainmodule)
for a in annots do files.add_all a.as_relative_paths(modelbuilder)
modelbuilder.toolcontext.check_errors
end
redef fun to_s do return """
name: {{{name}}}
namespace: {{{namespace}}}
version: {{{version}}}"""
end
src/platform/app_annotations.nit:24,1--80,3