SmartCode.CLI 2.0.5

There is a newer version of this package available.
See the version list below for details.
dotnet tool install --global SmartCode.CLI --version 2.0.5
                    
This package contains a .NET tool you can call from the shell/command line.
dotnet new tool-manifest
                    
if you are setting up this repo
dotnet tool install --local SmartCode.CLI --version 2.0.5
                    
This package contains a .NET tool you can call from the shell/command line.
#tool dotnet:?package=SmartCode.CLI&version=2.0.5
                    
nuke :add-package SmartCode.CLI --version 2.0.5
                    

SmartCode

SmartCode = IDataSource → IBuildTask → IOutput ⇒ Build Everything

Introduction

SmartCode

SmartCode.Db (Code generator)

Demo

SmartCode

Getting Started

  1. Install from .NET Core Global Tool
dotnet tool install --global SmartCode.CLI
  1. edit build configuration file (default: SmartCode.yml)
  2. the command line executes the SmartCode command.
    • SmartCode
    • wait for prompt to enter the configuration file path (optional: SmartCode.yml file in the default program root directory)
    • carriage return execution command
  3. wait for the end of the task execution.
  4. View output directory results

Building configuration files

Module: SmartSql.Starter
Author: Ahoo Wang
DataSource:
  Name: Db
  Paramters:
    DbName: SmartSqlStarterDB
    DbProvider: SqlServer
    ConnectionString: Data Source=.;Initial Catalog=SmartSqlStarterDB;Integrated Security=True
Language: CSharp
TemplateEngine: Razor 
Output: 
  Type: File
  Path: 'E://SmartSql-Starter'

Build:
  ClearDir:
    Type: Clear
    Paramters:
      Dirs: '.'
  Solution:
    Type: Project
    Template: Sln.cshtml
    Output:
      Path: '.'
      Name: '{{Project.Module}}'
      Extension: '.sln'
  SmartSqlConfig:
    Type: Project
    Template: SqlMapConfig.cshtml
    Output:
      Path: '{{Project.Module}}.API'
      Name: 'SmartSqlMapConfig'
      Extension: '.xml'
  Entity_Project:
    Type: Project
    Template: Proj.cshtml
    Output:
      Path: '{{Project.Module}}.Entity'
      Name: '{{Project.Module}}.Entity'
      Extension: '.csproj'
  Entity:
    Type: Table
    Module: Entity
    Template: Entity.cshtml
    Output:
      Path: '{{Project.Module}}.{{Build.Module}}'
      Extension: '.cs'
    NamingConverter:
      Table:
        Tokenizer:
          Type: Default
          Paramters:
            IgnorePrefix: 'T_'
            Delimiter: '_'
        Converter:
          Type: Default
          Paramters: { }
      View:
        Tokenizer:
          Type: Default
          Paramters:
            IgnorePrefix: 'V_'
            Delimiter: '_'
        Converter:
          Type: Pascal
      Column:
        Tokenizer:
          Type: Default
          Paramters: 
            Delimiter: '_'
        Converter:
          Type: Pascal
  Repository_Project:
    Type: Project
    Template: Proj-Repository.cshtml
    Output:
      Path: '{{Project.Module}}.Repository'
      Name: '{{Project.Module}}.Repository'
      Extension: '.csproj'
  Repository:
    Type: Table
    Module: Repository
    Template: Repository.cshtml
    Output:
      Path: '{{Project.Module}}.{{Build.Module}}'
      Name: 'I{{OutputName}}Repository'
      Extension: .cs
    NamingConverter:
      Table:
        Tokenizer:
          Type: Default
          Paramters:
            IgnorePrefix: 'T_'
            Delimiter: '_'
        Converter:
          Type: Default
      View:
        Tokenizer:
          Type: Default
          Paramters: 
            IgnorePrefix: 'V_'
            Delimiter: '_'
        Converter:
          Type: Default

  SqlMap:
    Type: Table
    Template: SqlMap-SqlServer.cshtml
    Output:
      Path: '{{Project.Module}}.API/Maps'
      Extension: .xml
    IgnoreTables: null
    NamingConverter:
      Table:
        Tokenizer:
          Type: Default
          Paramters: 
            IgnorePrefix: 'T_'
            Delimiter: '_'
        Converter:
          Type: Default
      View:
        Tokenizer:
          Type: Default
          Paramters: 
            IgnorePrefix: 'V_'
            Delimiter: '_'
        Converter:
          Type: Default
      Column:
        Tokenizer:
          Type: Default
          Paramters: 
            IgnorePrefix: 'T_'
            Delimiter: '_'
        Converter:
          Type: Default
Parameter Name Description
Module Root Module Name
Author Author
DataSource Data Source
Language Language: CSharp/Java/....
TemplateEngine Template Engine: Currently Built: Razor/Handlebars
Output Output
Build Task Build
DataSource Data Source, Name: Db

Property Name: Db, using the DbSource plugin as a data source

DbSource.Paramters accepts the following three parameters:

Parameter Name Description
DbName Database Name
DbProvider Data Drivers: MySql, MariaDB, PostgreSql, SqlServer, Oracle, SQLite
ConnectionString Connection String
Build Task Build
Parameter Name Description
Type Build type, Clear: used to clean up the directory s / file s, Project: used to build a single file, such as: solution file / project file, Table: used to build a data table-based file, such as: Entity , Repository file
Module Building Module Name
TemplateEngine Template Engine, optional, default to root module engine
Template Template File
Output Output
IncludeTables Include table name s
IgnoreTables Ignore table name s
NamingConverter Named Converter
Paramters Custom Build Parameters
NamingConverter Name Conversion
Attribute Description
Type Table/View/Column
Tokenizer Word Segmenter
Converter Converter: Camel/Pascal/None
NamingConverter.Tokenizer Word Segmenter
Attribute Description
Type Default
Paramters.IgnorePrefix Ignore prefix characters
Paramters.Delimiter Separator

How to contribute a template

In order to allow more people to participate in the construction of SmartCode templates, there are the following template specifications:

  1. The template author creates a new directory in src/SmartCode.Generator/RazorTemplates and names it in the author's English name.
  2. Place the template in the author directory
  3. The README.md file must be included in the author directory to illustrate the purpose of the template and how it is used.
  4. Submit PR

SmartCode.ETL(Extract-Transform-Load)

ETL Building configuration files

Author: Ahoo Wang
DataSource:
  Name: Extract
  Paramters:
    DbProvider: SqlServer
    ConnectionString: Data Source=.;Initial Catalog=SmartSqlDB;Integrated Security=True
    Query: SELECT [Id],[UserName],[Pwd],[Status],[LastLoginTime],[CreationTime],[Deleted] FROM [T_User] Where Id>@LastMaxId And CreationTime>@LastQueryTime
    PKColumn: Id

Paramters:
  ETLCode: SmartCode.ETL.Test
  ETLRepository: PG
  
Build:

  Transform:
    Type: Transform
    Paramters:
      Script: Load2PostgreSql.cshtml

  Load2PostgreSql: 
    Type: Load
    Paramters:
      DbProvider: PostgreSql
      ConnectionString: Server=localhost;Port=5432;User Id=postgres;Password=SmartSql; Database=smartsql_db;
      Table: t_user
      ColumnMapping: [{Column: UserName,Mapping: user_name}
      ,{Column: Pwd,Mapping: pwd}
      ,{Column: Status,Mapping: status}
      ,{Column: LastLoginTime,Mapping: lastlogintime}
      ,{Column: CreationTime,Mapping: creationtime}
      ,{Column: Deleted,Mapping: deleted}]
      PreCommand: 
      PostCommand: 
Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 was computed.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
.NET Core netcoreapp2.2 is compatible.  netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

This package has no dependencies.

Version Downloads Last Updated
3.0.1 2,740 6/16/2022
3.0.0 2,064 3/3/2022
2.4.0-preview.1 238 6/15/2022
2.4.0-preview.0 281 5/7/2022
2.3.7 2,043 3/3/2022
2.3.6 2,811 6/10/2020
2.3.5 2,180 4/29/2020
2.3.4 2,112 3/27/2020
2.3.3 1,841 3/27/2020
2.3.2 2,042 3/11/2020
2.3.1 2,216 3/11/2020
2.3.0 2,100 3/11/2020
2.2.95 2,003 2/17/2020
2.2.94 1,991 2/14/2020
2.2.93 2,112 2/14/2020
2.2.92 2,054 11/18/2019
2.2.90 2,181 11/12/2019
2.2.88 2,198 10/30/2019
2.2.86 2,060 10/23/2019
2.2.85 2,140 10/22/2019
2.2.84 1,948 10/22/2019
2.2.83 2,239 10/22/2019
2.2.82 2,049 10/21/2019
2.2.81 1,962 10/21/2019
2.2.80 1,829 10/21/2019
2.2.70 2,143 8/21/2019
2.2.68 2,142 8/5/2019
2.2.66 2,004 7/29/2019
2.2.65 2,030 7/22/2019
2.2.62 1,912 7/19/2019
2.2.60 2,292 7/19/2019
2.2.58 2,166 7/10/2019
2.2.57 2,216 7/8/2019
2.2.56 2,009 6/28/2019
2.2.55 2,172 6/11/2019
2.2.53 2,182 6/10/2019
2.2.52 2,299 6/4/2019
2.2.50 2,162 6/3/2019
2.2.48 2,080 5/23/2019
2.2.46 1,956 5/23/2019
2.2.45 3,069 5/7/2019
2.2.44 2,182 5/6/2019
2.2.42 2,309 4/30/2019
2.2.40 2,206 4/30/2019
2.2.38 2,396 4/30/2019
2.2.36 1,877 4/29/2019
2.2.30 2,167 4/26/2019
2.2.25 2,268 4/26/2019
2.2.22 2,054 4/25/2019
2.2.20 2,124 4/24/2019
2.2.10 2,164 4/23/2019
2.2.8 2,136 4/23/2019
2.2.2 2,226 4/18/2019
2.2.0 1,878 4/16/2019
2.1.10 1,861 4/16/2019
2.1.9 2,222 4/11/2019
2.1.8 1,999 4/10/2019
2.1.6 1,960 4/10/2019
2.1.5 2,352 4/1/2019
2.1.3 2,049 3/29/2019
2.1.2 1,905 3/25/2019
2.1.1 2,169 3/22/2019
2.1.0 2,039 3/22/2019
2.0.5 2,257 2/27/2019
2.0.4 2,518 12/17/2018
2.0.2 2,318 12/14/2018
2.0.0 102,930 12/14/2018
1.18.2 115,295 11/22/2018
1.18.1 15,644 11/16/2018
1.16.20 12,891 11/16/2018
1.16.19 12,428 11/16/2018
1.16.18 6,942 11/14/2018
1.16.16 3,777 11/7/2018
1.16.15 2,315 11/4/2018
1.16.13 9,175 11/4/2018
1.16.12 4,396 11/1/2018
1.16.6 10,580 10/31/2018
1.16.2 11,193 10/31/2018
1.16.1 46,836 10/31/2018
1.16.0 2,427 10/30/2018
1.12.0 2,243 10/30/2018
1.9.0 2,432 10/27/2018
1.8.1 2,880 10/26/2018
1.8.0 3,104 10/25/2018
1.7.6 3,380 10/24/2018
1.7.5 3,259 10/24/2018
1.7.2 3,628 10/22/2018
1.7.1 2,985 10/21/2018
1.6.9 2,551 10/20/2018
1.6.8.1 2,976 10/20/2018
1.6.8 3,511 10/20/2018
1.6.2 2,439 10/19/2018
1.5.0 2,482 10/18/2018
1.4.6 2,556 10/18/2018
1.3.9 2,493 10/17/2018
1.3.8 2,554 10/17/2018
1.3.6 2,314 10/15/2018
1.3.4 2,684 10/11/2018
1.3.0 2,390 10/9/2018
1.2.0 2,267 10/8/2018
1.1.0 2,680 10/7/2018
1.0.0 2,581 10/7/2018

1. fix CamelCaseConverter not work