0.0.31 • Published 3 years ago
kural v0.0.31
Kural
- Name Kural is inspired from- Tirukkuṟaḷ for its universality and secular nature
- curl for its usefulness
 
 
 
Utils for everyone!
Topics
Install
# linux and mac
sudo npm i -g kural
# windows
npm i -g kuralChrome Driver
- Download the Chrome Driver file and put this in your PATH
Commands and Demos
sf:login
kural sf:login -r sandbox|prod
# this depends on SFDX install, uses SFDX to login into the Salesforce org
# creates the auth json file, which can be used for other commands to login into the Salesforce orgLighthouse
- Run Lighthouse on a given site
# run lighthouse on a website
kural browser:lh -s https://www.apple.com
# run lighthouse on a salesforce org with given un/pwd
kural browser:sflh -r 508_sfdc.json
# run lighthouse on a salesforce org with authFile
kural browser:sflhp -r 508.json -a mohan.chinnappan.n.sel_at_gmail.com.json 
# run optimizer with authfile
kural browser:auto -r optimizer.json -a auth.jsonPerf test
kural browser:perfTest -r perf_cfg.json cat perf_cfg.json {
  "label": "Performance Testing",
  "maxConcurrency": 4,
  "sites": [
    { "url": "https://www.google.com"},
    { "url": "https://www.apple.com"},
    { "url": "https://www.salesforce.com"},
    { "url": "https:///mohan-chinnappan-n.github.io"},
    { "url": "https://www.wikipedia.org"}
   ]
}Perf test demo
$ cat 508_sfdc.json{
            "testName": "508 - sfdc",
            "name": "login",
            "url": "https://login.salesforce.com",
            "port": 8041,
            "soMo": 50,
            "headless": false,
            "reportFilename": "sfdc_lh.html",
           "viewport": { "width": 1516, "height": 699 } ,
           "onlyCategories": ["accessibility", "best-practices", "performance", "pwa", "seo" ],
           "form": [
                {
                    "locator": "#username",
                    "value": "mohan.chinnappan.n.sel@gmail.com",
                    "action": "sendKeys"
                },
                {
                    "locator": "#password",
                    "value": "PWD",
                    "action": "sendKeys"
                },
                {
                    "locator": "#Login"
                }
           ]
}$ cat 508.json{
  "description": "Running 508 checks on Salesforce org page",
  "retURL" : "lightning/o/Account/list",
  "headless": false,
  "port": 8041,
  "slowMo": 50,
  "closeBrowser": true,
 "reportFilename": "sfdc_lh.html",
  "viewPort": { "width": 2040, "height": 699 },
  "onlyCategories": ["accessibility"]
}Run 508 Demo
Run 508 Demo-2
$ cat  optimizer.json {
  "description": "Running Optimizer report",
  "retURL" : "lightning/o/OrgMetric/home",
  "headless": false,
  "closeBrowser": true,
  "viewPort": { "width": 2040, "height": 699 },
  "steps": [
    {  "label" : "Click Run Optimizer button",
      "xpath": "/html/body/div[4]/div[1]/section/div[1]/div[2]/div[2]/div[1]/div/div/div/div/div/runtime_platform_optimizer-org-metric-list-header/div/div[1]/div[2]/lightning-button/button",
       "op": "click"
    }
  ]
}Run Optimizer Demo
Mobile test
kural browser:mobile -r mobile_cfg.jsoncat mobile_cfg.json {
  "label": "Mobile Testing",
  "site": "https://mohan-chinnappan-n2.github.io/2021/wp/design/design.md.html#1",
  "outputFilename" : "design.png",
  "headless": false,
  "slowMo": 250,
  "device": "iPhone X"
}dot2svg
- Generates SVG for a given dot file
kural viz:graphviz:dot2svg -i erd-1.dot -r dot -e y
# dot is default
# flag e opens up the editorcat erd-1.dotgraph ER {
	node [shape=box]; course; institute; student;
	node [shape=ellipse]; {node [label="name"] name0; name1; name2;}
		code; grade; number;
	node [shape=diamond,style=filled,color=lightgrey]; "C-I"; "S-C"; "S-I";
	name0 -- course;
	code -- course;
	course -- "C-I" [label="n",len=1.00];
	"C-I" -- institute [label="1",len=1.00];
	institute -- name1;
	institute -- "S-I" [label="1",len=1.00];
	"S-I" -- student [label="n",len=1.00];
	student -- grade;
	student -- name2;
	student -- number;
	student -- "S-C" [label="m",len=1.00];
	"S-C" -- course [label="n",len=1.00];
	label = "\n\nEntity Relation Diagram";
	fontsize=20;
}Mermaid Drawing Editor
- Opens up the Mermaid Drawing Editor with given input file content
viz:dwg:mermaid -i gantt-1.dwg   -e y
# flag e opens up the editorcat gantt-1.dwg gantt
    title Deployment Plan
    dateFormat  YYYY-MM-DD
    section ReleaseCalender
    Recieve   :a1, 2022-06-04, 2d
    Finalize     :a2, after a1  , 1d
    section Prepare For Release
    Prepare ORGs      :b1, after a2, 1d
    Run health checks :b2, after b1, 1d
    section  Pre-deployment steps
    Perform : c1, after b1, 2d
    section Communications
    Via DL and Slack:e1, after c1, 4d
    section  Pipeline
    Create Package: d1, after c1, 1d
    Validate Package: d2, after d1, 1d
    Deploy Package:d3, after d2,1d
    section  Post-deployment steps
    Perform : f3, after d3, 1dUML Seq diagram editor
- Opens up the UML Seq Drawing Editor with given input file content
viz:uml:seq -i farmer.seq.txt  -e y
# flag e opens up the editorcat farmer.seq.txtTitle: Farmer and Nature
Nature->Rain:Rains
Rain->Land: Falls
Note right of Land: Thank you!
Land->Farmer:Start farming!
Farmer->Nature: Thanks you Lovely Nature!
Farmer->Nature: I am planting more trees!sf:data:query
- SOQL query with auth file
kural sf:data:query -q accounts.soql -a mohan.chinnappan.n.sel_at_gmail.com.jsonRun data query
sf:tooling:query
kural sf:tooling:query -q EntityParticle_s.sql -a mohan.chinnappan.n_ea2_at_gmail.com.jsonExample usage
cat EntityParticle_s.sqlSELECT
 Id
 ,DurableId
 ,QualifiedApiName
 ,EntityDefinitionId
 ,FieldDefinitionId
 ,NamespacePrefix
 ,DeveloperName
 ,InlineHelpText
 ,MasterLabel
 ,Label
 ,Length
 ,DataType
  FROM EntityParticle
 WHERE EntityDefinition.QualifiedApiName ='Account'Demo of tooling query

kural sf:tooling:audit
kural sf:tooling:audit -s Account -a mohan.chinnappan.n_ea2_at_gmail.com.json Demo of tooling audit

kural browser:auto
# Run optimizer report with auth file
 kural browser:auto -r optimizer.json -a mohan.chinnappan.n.sel_at_gmail.com.json Run PMD scan
- Retrieve ApexClass or ApexTrigger 
sfdx mohanc:mdapi:retrieve -u mohan.chinnappan.n_ea2@gmail.com -t "ApexClass"
sfdx mohanc:mdapi:checkRetrieveStatus -u mohan.chinnappan.n_ea2@gmail.com -i "09S3h0000073Hw7EAE"
unzip 09S3h0000073HzeEAE.zipcat pmd-conf.json {
   "label": "PMD Scan of Apex Classes",
   "pmdBinPath" :"/Users/mchinnappan/node-pmd/pmd-bin-6.47.0/bin/pmd-run.sh",
   "ruleSetFile": "/Users/mchinnappan/.pmd/apex_ruleset.xml",
   "sourcePath" :"/Users/mchinnappan/kural-demos/unpackaged/classes/",
   "outputFormat": "html",
   "outputFile" : "./pmd_results.html"
}kural scanner:pmd:scan -r pmd-conf.json === Command: /Users/mchinnappan/node-pmd/pmd-bin-6.47.0/bin/pmd-run.sh pmd -R /Users/mchinnappan/.pmd/apex_ruleset.xml -d /Users/mchinnappan/kural-demos/unpackaged/classes/ -f html > ./pmd_results.html  ===
=== Output will be written in ./pmd_results.html ===
=== Opening ./pmd_results.html ===PMD Scan with new HTML report with charts
kural scanner:pmd:scan -r pmd-conf.jsoncat pmd-conf.json {
   "label": "PMD Scan of Apex Classes",
   "pmdBinPath" :"/Users/mchinnappan/node-pmd/pmd-bin-6.47.0/bin/pmd-run.sh",
   "ruleSetFile": "/Users/mchinnappan/.pmd/apex_ruleset.xml",
   "sourcePath" :"/Users/mchinnappan/kural-demos/unpackaged/classes/",
   "outputFormat": "xml",
   "outputFile" : "./pmd-results.xml"
}kural data:transform:xslt -i pmd-results.xml -t pmd-report-v2.xslt > pmd-results.htmlkural i18n:translate
- Translates a given sentence into various languages and provides verification Google Translate URL (optionally) to verify the translation work
- Uses Google Translate
# Translate to French
 kural i18n:translate -i 'Good Morning, Friends!' -f 'en' -t fr
 Bonjour les amis!
# Translate to Tamil
kural i18n:translate -i 'Good Morning, Friends!' -f 'en' -t ta        
காலை வணக்கம் நண்பர்களே!
# Translate to Telugu
kural i18n:translate -i 'Good Morning, Friends!' -f 'en' -t te      
శుభోదయం మిత్రులారా!
# Translate to Marathi
kural i18n:translate -i 'Good Morning, Friends!' -f 'en' -t mr -g true
सुप्रभात, मित्रांनो!
# Translate to Japanese and launch google translate to verify the translation work
kural i18n:translate -i 'Good Morning, Friends!' -f 'en' -t ja -g true     
おはようございます、友達!- Translation verification  
kural i18n:prepare
- Prepares xml file for processing and optionally translate
cat input.txt  Good Morning, Friends!
Today is a Wonderful day!- Prepare without translation
kural i18n:prepare -i input.txt -f en -t  fr -x n<Media type="AEP" stringCount="2">
	<String source="Good Morning, Friends!">Good Morning, Friends!</String>
	<String source="Today is a Wonderful day!">Today is a Wonderful day!</String>
</Media>- Prepare with translation en-fr
kural i18n:prepare -i input.txt -f en -t  fr -x y<Media type="AEP" stringCount="2">
	<String source="Good Morning, Friends!">Bonjour les amis!</String>
	<String source="Today is a Wonderful day!">Aujourd'hui est une merveilleuse journée!</String>
</Media>- Prepare with translation en-ja
kural i18n:prepare -i input.txt -f en -t  ja  -x y<Media type="AEP" stringCount="2">
	<String source="Good Morning, Friends!">おはようございます、友達!</String>
	<String source="Today is a Wonderful day!">今日は素晴らしい日です!</String>
</Media>kural i18n:stf
- Process Salesforce Translation File (STF) to xml
kural i18n:stf -i Bilingual_fr_2022-09-14\ 0105.stf  > Bilingual_fr_2022-09-14\ 0105.stf.xml
kural data:viz:vega
- VegaLite chart for the given data
kural data:viz:vega -i field-usage.jsonkural data:viz:chartjs
- Chartjs chart for the given data
kural data:viz:chartjs -i barchart.jsoncat barchart.json{
  "title": "Charts with Chartjs",
   "width": 400, "height":400,  
"type": "pie",
  "data": {
    "labels": [
      "Apples",
      "Mangos",
      "Pear",
      "Peach"
    ],
    "datasets": [
      {
        "label": "# of Friuts",
        "data": [
          12,
          19,
          3,
          5
        ],
    "backgroundColor": ["cyan", "skyblue", "steelblue", "#99ccff"]
      }
    ]
  },
  "options": {
    "scales": {
      "y": {
        "beginAtZero": false
      }
    }
  }
}# English page ocr 
kural ida:ocr -i  eng_bw.png -l eng
# Tamil page ocr
kural ida:ocr -i  tam.png -l tam
cat eng_bw.png.txt Mild Splendour of the various-vested Night!
Mother of wildly-working visions! haill
I watch thy gliding, while with watery light
Thy weak eye glimmers through a fleecy veil;
And when thou lovest thy pale orb to shroud
Behind the gather’d blackness lost on high;
And when thou dartest from the wind-rent cloud
Thy placid lightning o’er the awaken’d sky.
cat tam.png.txt
அகர முதல எழுத்தெல்லாம் ஆதி
பகவன் முதற்றே உலகு.codegen:lwc
# generates lwc code for accounts.soql
kural codegen:lwc -i accounts.soqlcat accounts.soqlSELECT Id, Name, Industry 
FROM Account- Built by Mohan Chinnappan with ♥
0.0.30
3 years ago
0.0.31
3 years ago
0.0.29
3 years ago
0.0.28
3 years ago
0.0.27
3 years ago
0.0.26
3 years ago
0.0.24
3 years ago
0.0.23
3 years ago
0.0.22
3 years ago
0.0.21
3 years ago
0.0.20
3 years ago
0.0.19
3 years ago
0.0.18
3 years ago
0.0.17
3 years ago
0.0.16
3 years ago
0.0.15
3 years ago
0.0.14
3 years ago
0.0.13
3 years ago
0.0.12
3 years ago
0.0.11
3 years ago
0.0.10
3 years ago
0.0.9
3 years ago
0.0.8
3 years ago
0.0.7
3 years ago
0.0.6
3 years ago
0.0.5
3 years ago
0.0.4
3 years ago
0.0.3
3 years ago
0.0.2
3 years ago
0.0.1
3 years ago
0.0.0
3 years ago







