// Copyright (c) 2019 Alexander Medvednikov. All rights reserved.
// Use of this source code is governed by an MIT license
// that can be found in the LICENSE file.

module main

import (
	os
)

struct Create {
mut:
	name string
	description string
}

fn cerror(e string){
	eprintln('\nerror: $e')
}

fn (c Create)write_vmod() {
	mut vmod := os.create('${c.name}/v.mod') or { cerror(err) exit(1) }
	mut vmod_content := []string
	vmod_content << '#V Project#\n'
	vmod_content << 'Module {'
	vmod_content << '	name: \'${c.name}\','
	vmod_content << '	description: \'${c.description}\','
	vmod_content << '	dependencies: []'
	vmod_content << '}'
	vmod.write(vmod_content.join('\n'))
}

fn (c Create)write_main() {
	mut main := os.create('${c.name}/${c.name}.v') or {	cerror(err) exit(2)	}
	mut main_content := []string
	main_content << 'module main\n'
	main_content << 'fn main() {'
	main_content << '	println(\'Hello World !\')'
	main_content << '}'
	main.write(main_content.join('\n'))
}

fn main() {
	mut c := Create{}
	print('Choose your project name: ')
	c.name = os.get_line()
	print('Choose your project description: ')
	c.description = os.get_line()
	println('Initialising ...')
	if (os.is_dir(c.name)) { cerror('folder already exists') exit(3) }
	os.mkdir(c.name) or { panic(err) }
	c.write_vmod()
	c.write_main()
	println('Complete !')
}