1- #!/usr/bin/env python3
2- """
3- Creates a new project from a template.
4- Uses several global dependencies (including zig, reuse, and nvchecker).
5- """
6-
7- import argparse
81import json
92import logging
103import os
11- import sys
124from pathlib import Path
135
14- from plumbum .cmd import cat , sed , zig , git , reuse , nvchecker
6+ from plumbum .cmd import cat , sed , git , reuse , nvchecker
157
168from rich .console import Console
17- from rich .logging import RichHandler
9+
10+ console = Console ()
1811
1912GITHUB_ORG = "zig-devel"
2013GITHUB_REPO = f"{ GITHUB_ORG } /.github"
2114INTERNAL_LICENSE = "0BSD"
2215
23- console = Console ()
24-
2516
2617def cmd (command ):
2718 (returncode , stdout , stderr ) = command .run (retcode = None )
@@ -198,6 +189,8 @@ def _SetupLicenses(project_licenses: list[str]):
198189
199190
200191def _SetupZigPackage (name : str , version : str , git : str , revision : str ):
192+ from plumbum .cmd import zig # zig is not installed by default
193+
201194 logging .info ("Init zig package" )
202195 cmd (zig ["init" , "--minimal" ])
203196
@@ -336,26 +329,7 @@ def _SetupDocs(name: str, desc: str, url: str, version: str, licenses: list[str]
336329 )
337330
338331
339- def main (argv ):
340- parser = argparse .ArgumentParser ()
341- parser .add_argument ("--name" , help = "Library name" , required = True )
342- parser .add_argument ("--description" , help = "Library description" , required = True )
343- parser .add_argument ("--url" , help = "Project url" , required = True )
344- parser .add_argument ("--git" , help = "Project gitrepo" , required = True )
345- parser .add_argument ("--license" , help = "Library license SPDX identifier" , nargs = "+" )
346- parser .add_argument ("--verbose" , help = "Verbose logging" , action = "store_true" )
347-
348- args = parser .parse_args (argv )
349-
350- logging .basicConfig (
351- level = logging .INFO ,
352- format = "%(message)s" ,
353- datefmt = "[%X]" ,
354- handlers = [RichHandler ()],
355- )
356- if args .verbose :
357- logging .basicConfig (level = logging .DEBUG )
358-
332+ def run (args ):
359333 console .print ("[bold]Init git repository...[/bold]" )
360334 cmd (git ["init" , args .name ])
361335 os .chdir (args .name )
@@ -379,5 +353,15 @@ def main(argv):
379353 _SetupDocs (args .name , args .description , args .url , version , licenses )
380354
381355
382- if __name__ == "__main__" :
383- sys .exit (main (sys .argv [1 :]))
356+ def cli (subparsers ):
357+ parser = subparsers .add_parser (
358+ "init" ,
359+ help = "Initializes a new library from a template" ,
360+ )
361+ parser .add_argument ("--name" , help = "Library name" , required = True )
362+ parser .add_argument ("--description" , help = "Library description" , required = True )
363+ parser .add_argument ("--url" , help = "Project url" , required = True )
364+ parser .add_argument ("--git" , help = "Project gitrepo" , required = True )
365+ parser .add_argument ("--license" , help = "Library license SPDX identifier" , nargs = "+" )
366+
367+ parser .set_defaults (func = run )
0 commit comments