mirror of
https://github.com/github/awesome-copilot.git
synced 2026-04-30 12:15:56 +00:00
new skill batch-files (#1435)
* new skill batch-files * batch-files: codespell, re-run start, suggestions, txt assets codespellrc: add FO for tasklist option validate-readme: re-run npm start apply suggestions from code review batch-files: change asset templates to text files * codespellrc: resolve spelling in comment
This commit is contained in:
171
skills/batch-files/assets/executable.txt
Normal file
171
skills/batch-files/assets/executable.txt
Normal file
@@ -0,0 +1,171 @@
|
||||
@echo off
|
||||
REM myTool
|
||||
:: A standalone command-line tool template with argument parsing.
|
||||
::
|
||||
:: usage: myTool [options] [1] [2]
|
||||
:: [1] = input file path or value
|
||||
:: [2] = output file path (optional)
|
||||
::
|
||||
:: options:
|
||||
:: /? Show this help message
|
||||
:: -h Show this help message
|
||||
:: --help Show this help message
|
||||
:: -v Show version information
|
||||
:: --verbose Enable verbose output
|
||||
::
|
||||
:: examples:
|
||||
:: > myTool "C:\data\input.txt"
|
||||
:: > myTool "C:\data\input.txt" "C:\data\output.txt"
|
||||
:: > myTool --verbose "C:\data\input.txt"
|
||||
::
|
||||
set "_helpLinesMyTool=19"
|
||||
|
||||
:: ========================================================================
|
||||
:: TEMPLATE INSTRUCTIONS
|
||||
:: 1. Find/Replace "myTool" with your executable name (camelCase).
|
||||
:: 2. Find/Replace "MyTool" with your executable name (PascalCase).
|
||||
:: 3. Update the help block above (lines 2-19) for your tool.
|
||||
:: 4. Implement your logic in :_runMyTool.
|
||||
:: 5. Add any new variables to :_removeBatchVariablesMyTool.
|
||||
:: ========================================================================
|
||||
|
||||
:: Config variables.
|
||||
set "_versionMyTool=1.0.0"
|
||||
set "_verboseMyTool=0"
|
||||
|
||||
:: Define paths.
|
||||
set "_scriptDirMyTool=%~dp0"
|
||||
set "_scriptNameMyTool=%~n0"
|
||||
|
||||
:: Parse arguments into variables.
|
||||
set "_parOneMyTool=%~1"
|
||||
set "_checkParOneMyTool=-%_parOneMyTool%-"
|
||||
set "_parTwoMyTool=%~2"
|
||||
set "_checkParTwoMyTool=-%_parTwoMyTool%-"
|
||||
set "_parThreeMyTool=%~3"
|
||||
set "_checkParThreeMyTool=-%_parThreeMyTool%-"
|
||||
|
||||
:: -----------------------------------------------------------------------
|
||||
:: Handle help and version flags.
|
||||
:: -----------------------------------------------------------------------
|
||||
if "%_parOneMyTool%"=="/?" call :_showHelpMyTool & goto _removeBatchVariablesMyTool
|
||||
if /i "%_parOneMyTool%"=="-h" call :_showHelpMyTool & goto _removeBatchVariablesMyTool
|
||||
if /i "%_parOneMyTool%"=="--help" call :_showHelpMyTool & goto _removeBatchVariablesMyTool
|
||||
if /i "%_parOneMyTool%"=="-v" (
|
||||
echo %_scriptNameMyTool% version %_versionMyTool%
|
||||
goto _removeBatchVariablesMyTool
|
||||
)
|
||||
|
||||
:: -----------------------------------------------------------------------
|
||||
:: Handle --verbose flag (shift arguments if present).
|
||||
:: -----------------------------------------------------------------------
|
||||
if /i "%_parOneMyTool%"=="--verbose" (
|
||||
set "_verboseMyTool=1"
|
||||
set "_parOneMyTool=%~2"
|
||||
set "_checkParOneMyTool=-%~2-"
|
||||
set "_parTwoMyTool=%~3"
|
||||
set "_checkParTwoMyTool=-%~3-"
|
||||
)
|
||||
|
||||
:: Create temp directory for intermediate files.
|
||||
call :_makeTempDirMyTool
|
||||
|
||||
:: -----------------------------------------------------------------------
|
||||
:: Validate required input and start execution.
|
||||
:: -----------------------------------------------------------------------
|
||||
if "%_checkParOneMyTool%"=="--" (
|
||||
echo ERROR: No input specified. Run "%_scriptNameMyTool% /?" for usage. 1>&2
|
||||
goto _removeBatchVariablesMyTool
|
||||
)
|
||||
|
||||
call :_startMyTool
|
||||
goto _removeBatchVariablesMyTool
|
||||
|
||||
:: ========================================================================
|
||||
:: MAIN LOGIC
|
||||
:: ========================================================================
|
||||
|
||||
:_startMyTool
|
||||
if "%_verboseMyTool%"=="1" (
|
||||
echo [VERBOSE] Input: %_parOneMyTool%
|
||||
echo [VERBOSE] Output: %_parTwoMyTool%
|
||||
)
|
||||
|
||||
REM Validate input file exists.
|
||||
if NOT EXIST "%_parOneMyTool%" (
|
||||
echo ERROR: Input file not found: %_parOneMyTool% 1>&2
|
||||
goto :eof
|
||||
)
|
||||
|
||||
call :_runMyTool
|
||||
goto :eof
|
||||
|
||||
:_runMyTool
|
||||
REM ===================================================================
|
||||
REM TODO: Replace this section with your tool's logic.
|
||||
REM ===================================================================
|
||||
echo Processing: %_parOneMyTool%
|
||||
|
||||
if NOT "%_checkParTwoMyTool%"=="--" (
|
||||
echo Output to: %_parTwoMyTool%
|
||||
REM Example: copy input to output.
|
||||
REM copy /Y "%_parOneMyTool%" "%_parTwoMyTool%" >nul
|
||||
)
|
||||
|
||||
echo Done.
|
||||
goto :eof
|
||||
|
||||
:: ========================================================================
|
||||
:: SUPPORT FUNCTIONS
|
||||
:: ========================================================================
|
||||
|
||||
:_showHelpMyTool
|
||||
echo:
|
||||
for /f "skip=1 delims=" %%a in ('findstr /n "^" "%~f0"') do (
|
||||
set "_line=%%a"
|
||||
setlocal EnableDelayedExpansion
|
||||
for /f "delims=:" %%n in ("!_line!") do set "_lineNum=%%n"
|
||||
if !_lineNum! GTR %_helpLinesMyTool% (
|
||||
endlocal
|
||||
goto :eof
|
||||
)
|
||||
set "_text=!_line:*:=!"
|
||||
if defined _text (
|
||||
echo !_text:~4!
|
||||
) else (
|
||||
echo:
|
||||
)
|
||||
endlocal
|
||||
)
|
||||
goto :eof
|
||||
|
||||
:_makeTempDirMyTool
|
||||
set "_tmpDirMyTool=%TEMP%\%~n0_%RANDOM%%RANDOM%"
|
||||
set "_tmpDirCreatedMyTool=0"
|
||||
if NOT EXIST "%_tmpDirMyTool%" (
|
||||
mkdir "%_tmpDirMyTool%" >nul 2>nul
|
||||
set "_tmpDirCreatedMyTool=1"
|
||||
)
|
||||
goto :eof
|
||||
|
||||
:: ========================================================================
|
||||
:: CLEANUP — Remove all batch variables.
|
||||
:: ========================================================================
|
||||
:_removeBatchVariablesMyTool
|
||||
set _helpLinesMyTool=
|
||||
set _versionMyTool=
|
||||
set _verboseMyTool=
|
||||
set _scriptDirMyTool=
|
||||
set _scriptNameMyTool=
|
||||
set _parOneMyTool=
|
||||
set _checkParOneMyTool=
|
||||
set _parTwoMyTool=
|
||||
set _checkParTwoMyTool=
|
||||
set _parThreeMyTool=
|
||||
set _checkParThreeMyTool=
|
||||
REM Append new variables above this line.
|
||||
|
||||
if "%_tmpDirCreatedMyTool%"=="1" if EXIST "%_tmpDirMyTool%" rmdir /S /Q "%_tmpDirMyTool%" >nul 2>nul
|
||||
set _tmpDirMyTool=
|
||||
set _tmpDirCreatedMyTool=
|
||||
exit /b
|
||||
Reference in New Issue
Block a user