init
This commit is contained in:
54
examples/getlicense.v
Normal file
54
examples/getlicense.v
Normal file
@ -0,0 +1,54 @@
|
||||
import os
|
||||
import os.cmdline
|
||||
import licenseid
|
||||
|
||||
const help_text = 'download license text from internet and apply width (80 by default)'
|
||||
const usage_text = 'usage: getlicense [-help] [-w <width>] <license_id>'
|
||||
|
||||
fn main() {
|
||||
argv := os.args[1..]
|
||||
opts := cmdline.only_options(argv)
|
||||
mut args := cmdline.only_non_options(argv)
|
||||
mut width := 80
|
||||
for opt in opts {
|
||||
match true {
|
||||
opt in ['-h', '-help', '--help'] {
|
||||
println(help_text)
|
||||
println(usage_text)
|
||||
exit(0)
|
||||
}
|
||||
opt == '-w' {
|
||||
arg := cmdline.option(argv, '-w', '')
|
||||
if arg.int() <= 0 {
|
||||
eprintln('invalid width ${opt}')
|
||||
exit(2)
|
||||
}
|
||||
width = arg.int()
|
||||
args.delete(args.index(arg))
|
||||
}
|
||||
else {
|
||||
eprintln('unrecognized option ${opt}')
|
||||
exit(2)
|
||||
}
|
||||
}
|
||||
}
|
||||
if args.len != 1 {
|
||||
eprintln(usage_text)
|
||||
exit(2)
|
||||
}
|
||||
license := licenseid.query(args[0]) or {
|
||||
eprintln(err)
|
||||
exit(1)
|
||||
}
|
||||
details := license.details() or {
|
||||
eprintln(err)
|
||||
exit(1)
|
||||
}
|
||||
for line in details.license_text.split_into_lines() {
|
||||
if line == '' {
|
||||
println('')
|
||||
} else {
|
||||
println(line.wrap(width: width))
|
||||
}
|
||||
}
|
||||
}
|
84
examples/mkvmod.v
Normal file
84
examples/mkvmod.v
Normal file
@ -0,0 +1,84 @@
|
||||
import os
|
||||
import term
|
||||
import strings
|
||||
import semver
|
||||
import licenseid
|
||||
|
||||
struct Module {
|
||||
pub mut:
|
||||
name string
|
||||
description string
|
||||
version string = '0.0.0'
|
||||
license string = 'MIT'
|
||||
author string
|
||||
}
|
||||
|
||||
fn make() string {
|
||||
eprintln('Create new v.mod, press ^C to quit')
|
||||
mut manifest := Module{}
|
||||
for {
|
||||
name := os.input(term.bold('Name: '))
|
||||
if !name.is_blank() {
|
||||
manifest.name = name
|
||||
break
|
||||
}
|
||||
eprintln(term.bright_red('Name cannot be blank'))
|
||||
}
|
||||
manifest.description = os.input(term.bold('Description: '))
|
||||
for {
|
||||
version := os.input(term.bold('Version: '))
|
||||
if version.is_blank() {
|
||||
break
|
||||
}
|
||||
if semver.is_valid(version) {
|
||||
manifest.version = version
|
||||
break
|
||||
}
|
||||
eprintln(term.bright_red('${version} violates semantic versioning rules, see https://semver.org/ for info'))
|
||||
}
|
||||
manifest.author = os.input(term.bold('Author: '))
|
||||
for {
|
||||
license := os.input(term.bold('License: '))
|
||||
if license.is_blank() {
|
||||
break
|
||||
}
|
||||
if _ := licenseid.query(license) {
|
||||
manifest.license = license
|
||||
break
|
||||
}
|
||||
eprintln(term.bright_red('${license} is not valid SPDX license identifier, see https://spdx.org/licenses/ for info'))
|
||||
}
|
||||
vmod := gen_vmod(manifest)
|
||||
eprintln(term.bright_blue(vmod))
|
||||
if os.input(term.bold('This is correct? ')).to_lower() in ['y', 'yes'] {
|
||||
return vmod
|
||||
}
|
||||
eprintln(term.bold(term.bright_red('Aborted')))
|
||||
exit(1)
|
||||
}
|
||||
|
||||
fn gen_vmod(m Module) string {
|
||||
mut b := strings.new_builder(200)
|
||||
b.writeln('Module {')
|
||||
b.writeln("\tname: '${m.name}'")
|
||||
b.writeln("\tdescription: '${m.description}'")
|
||||
b.writeln("\tversion: '${m.version}'")
|
||||
b.writeln("\tauthor: '${m.author}'")
|
||||
b.writeln("\tlicense: '${m.license}'")
|
||||
b.writeln('\tdependencies: []')
|
||||
b.writeln('}')
|
||||
return b.str()
|
||||
}
|
||||
|
||||
fn main() {
|
||||
if !os.exists('v.mod') {
|
||||
vmod := make()
|
||||
os.write_file('v.mod', vmod) or {
|
||||
eprintln(err)
|
||||
exit(1)
|
||||
}
|
||||
eprintln(term.bright_green('v.mod is done'))
|
||||
return
|
||||
}
|
||||
eprintln(term.bright_yellow('v.mod is already done'))
|
||||
}
|
Reference in New Issue
Block a user