diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
new file mode 100644
index 0000000..3a7dfe5
--- /dev/null
+++ b/.github/workflows/ci.yml
@@ -0,0 +1,48 @@
+name: CI checks
+on:
+ push:
+ pull_request:
+
+jobs:
+ lint:
+ name: Run ESLint
+ runs-on: ubuntu-20.04
+
+ steps:
+ - uses: actions/checkout@v2
+ - run: npm ci
+ - run: npm run lint
+
+ check-dist:
+ name: Check Distribution
+ runs-on: ubuntu-20.04
+ env:
+ BUNDLE_FILE: "dist/index.js"
+ BUNDLE_COMMAND: "npm run bundle"
+ steps:
+ - uses: actions/checkout@v2
+
+ - name: Install
+ run: npm ci
+
+ - name: Verify Latest Bundle
+ uses: redhat-actions/common/bundle-verifier@v1
+ with:
+ bundle_file: ${{ env.BUNDLE_FILE }}
+ bundle_command: ${{ env.BUNDLE_COMMAND }}
+
+ check-inputs-outputs:
+ name: Check Input and Output enums
+ runs-on: ubuntu-20.04
+ env:
+ IO_FILE: ./src/generated/inputs-outputs.ts
+ steps:
+ - uses: actions/checkout@v2
+
+ - name: Install dependencies
+ run: npm ci
+
+ - name: Verify Input and Output enums
+ uses: redhat-actions/common/action-io-generator@v1
+ with:
+ io_file: ${{ env.IO_FILE }}
diff --git a/.github/workflows/verify-bundle.yml b/.github/workflows/verify-bundle.yml
deleted file mode 100644
index 0b2156c..0000000
--- a/.github/workflows/verify-bundle.yml
+++ /dev/null
@@ -1,18 +0,0 @@
-name: Verify Bundle
-on: [ push, pull_request ]
-
-jobs:
- verify-bundle:
- name: Verify Distribution Bundle
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v2
-
- - name: Install dependencies
- run: npm ci
-
- - name: Check Distribution
- uses: tetchel/bundle-verifier-action@v0.0.2
- with:
- bundle_file: dist/index.js
- bundle_command: "npm run bundle"
diff --git a/README.md b/README.md
index f514b94..4e3d9b7 100644
--- a/README.md
+++ b/README.md
@@ -1,6 +1,6 @@
# buildah-build
+[](https://github.com/redhat-actions/buildah-build/actions?query=workflow%3A%22CI+checks%22)
[](https://github.com/redhat-actions/buildah-build/actions?query=workflow%3A%22Test+Build%22)
-[](https://github.com/redhat-actions/buildah-build/actions?query=workflow%3A%22Verify+Bundle%22)
[](https://github.com/redhat-actions/buildah-build/tags)
diff --git a/dist/index.js b/dist/index.js
index 2484a19..7cab359 100644
--- a/dist/index.js
+++ b/dist/index.js
@@ -1,2 +1,2 @@
-require('./sourcemap-register.js');module.exports=(()=>{"use strict";var e={351:function(e,t,i){var n=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var i in e)if(Object.hasOwnProperty.call(e,i))t[i]=e[i];t["default"]=e;return t};Object.defineProperty(t,"__esModule",{value:true});const r=n(i(87));const s=i(278);function issueCommand(e,t,i){const n=new Command(e,t,i);process.stdout.write(n.toString()+r.EOL)}t.issueCommand=issueCommand;function issue(e,t=""){issueCommand(e,{},t)}t.issue=issue;const o="::";class Command{constructor(e,t,i){if(!e){e="missing.command"}this.command=e;this.properties=t;this.message=i}toString(){let e=o+this.command;if(this.properties&&Object.keys(this.properties).length>0){e+=" ";let t=true;for(const i in this.properties){if(this.properties.hasOwnProperty(i)){const n=this.properties[i];if(n){if(t){t=false}else{e+=","}e+=`${i}=${escapeProperty(n)}`}}}}e+=`${o}${escapeData(this.message)}`;return e}}function escapeData(e){return s.toCommandValue(e).replace(/%/g,"%25").replace(/\r/g,"%0D").replace(/\n/g,"%0A")}function escapeProperty(e){return s.toCommandValue(e).replace(/%/g,"%25").replace(/\r/g,"%0D").replace(/\n/g,"%0A").replace(/:/g,"%3A").replace(/,/g,"%2C")}},186:function(e,t,i){var n=this&&this.__awaiter||function(e,t,i,n){function adopt(e){return e instanceof i?e:new i(function(t){t(e)})}return new(i||(i=Promise))(function(i,r){function fulfilled(e){try{step(n.next(e))}catch(e){r(e)}}function rejected(e){try{step(n["throw"](e))}catch(e){r(e)}}function step(e){e.done?i(e.value):adopt(e.value).then(fulfilled,rejected)}step((n=n.apply(e,t||[])).next())})};var r=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var i in e)if(Object.hasOwnProperty.call(e,i))t[i]=e[i];t["default"]=e;return t};Object.defineProperty(t,"__esModule",{value:true});const s=i(351);const o=i(717);const u=i(278);const c=r(i(87));const l=r(i(622));var a;(function(e){e[e["Success"]=0]="Success";e[e["Failure"]=1]="Failure"})(a=t.ExitCode||(t.ExitCode={}));function exportVariable(e,t){const i=u.toCommandValue(t);process.env[e]=i;const n=process.env["GITHUB_ENV"]||"";if(n){const t="_GitHubActionsFileCommandDelimeter_";const n=`${e}<<${t}${c.EOL}${i}${c.EOL}${t}`;o.issueCommand("ENV",n)}else{s.issueCommand("set-env",{name:e},i)}}t.exportVariable=exportVariable;function setSecret(e){s.issueCommand("add-mask",{},e)}t.setSecret=setSecret;function addPath(e){const t=process.env["GITHUB_PATH"]||"";if(t){o.issueCommand("PATH",e)}else{s.issueCommand("add-path",{},e)}process.env["PATH"]=`${e}${l.delimiter}${process.env["PATH"]}`}t.addPath=addPath;function getInput(e,t){const i=process.env[`INPUT_${e.replace(/ /g,"_").toUpperCase()}`]||"";if(t&&t.required&&!i){throw new Error(`Input required and not supplied: ${e}`)}return i.trim()}t.getInput=getInput;function setOutput(e,t){s.issueCommand("set-output",{name:e},t)}t.setOutput=setOutput;function setCommandEcho(e){s.issue("echo",e?"on":"off")}t.setCommandEcho=setCommandEcho;function setFailed(e){process.exitCode=a.Failure;error(e)}t.setFailed=setFailed;function isDebug(){return process.env["RUNNER_DEBUG"]==="1"}t.isDebug=isDebug;function debug(e){s.issueCommand("debug",{},e)}t.debug=debug;function error(e){s.issue("error",e instanceof Error?e.toString():e)}t.error=error;function warning(e){s.issue("warning",e instanceof Error?e.toString():e)}t.warning=warning;function info(e){process.stdout.write(e+c.EOL)}t.info=info;function startGroup(e){s.issue("group",e)}t.startGroup=startGroup;function endGroup(){s.issue("endgroup")}t.endGroup=endGroup;function group(e,t){return n(this,void 0,void 0,function*(){startGroup(e);let i;try{i=yield t()}finally{endGroup()}return i})}t.group=group;function saveState(e,t){s.issueCommand("save-state",{name:e},t)}t.saveState=saveState;function getState(e){return process.env[`STATE_${e}`]||""}t.getState=getState},717:function(e,t,i){var n=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var i in e)if(Object.hasOwnProperty.call(e,i))t[i]=e[i];t["default"]=e;return t};Object.defineProperty(t,"__esModule",{value:true});const r=n(i(747));const s=n(i(87));const o=i(278);function issueCommand(e,t){const i=process.env[`GITHUB_${e}`];if(!i){throw new Error(`Unable to find environment variable for file command ${e}`)}if(!r.existsSync(i)){throw new Error(`Missing file at path: ${i}`)}r.appendFileSync(i,`${o.toCommandValue(t)}${s.EOL}`,{encoding:"utf8"})}t.issueCommand=issueCommand},278:(e,t)=>{Object.defineProperty(t,"__esModule",{value:true});function toCommandValue(e){if(e===null||e===undefined){return""}else if(typeof e==="string"||e instanceof String){return e}return JSON.stringify(e)}t.toCommandValue=toCommandValue},514:function(e,t,i){var n=this&&this.__awaiter||function(e,t,i,n){function adopt(e){return e instanceof i?e:new i(function(t){t(e)})}return new(i||(i=Promise))(function(i,r){function fulfilled(e){try{step(n.next(e))}catch(e){r(e)}}function rejected(e){try{step(n["throw"](e))}catch(e){r(e)}}function step(e){e.done?i(e.value):adopt(e.value).then(fulfilled,rejected)}step((n=n.apply(e,t||[])).next())})};var r=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var i in e)if(Object.hasOwnProperty.call(e,i))t[i]=e[i];t["default"]=e;return t};Object.defineProperty(t,"__esModule",{value:true});const s=r(i(159));function exec(e,t,i){return n(this,void 0,void 0,function*(){const n=s.argStringToArray(e);if(n.length===0){throw new Error(`Parameter 'commandLine' cannot be null or empty.`)}const r=n[0];t=n.slice(1).concat(t||[]);const o=new s.ToolRunner(r,t,i);return o.exec()})}t.exec=exec},159:function(e,t,i){var n=this&&this.__awaiter||function(e,t,i,n){function adopt(e){return e instanceof i?e:new i(function(t){t(e)})}return new(i||(i=Promise))(function(i,r){function fulfilled(e){try{step(n.next(e))}catch(e){r(e)}}function rejected(e){try{step(n["throw"](e))}catch(e){r(e)}}function step(e){e.done?i(e.value):adopt(e.value).then(fulfilled,rejected)}step((n=n.apply(e,t||[])).next())})};var r=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var i in e)if(Object.hasOwnProperty.call(e,i))t[i]=e[i];t["default"]=e;return t};Object.defineProperty(t,"__esModule",{value:true});const s=r(i(87));const o=r(i(614));const u=r(i(129));const c=r(i(622));const l=r(i(436));const a=r(i(962));const d=process.platform==="win32";class ToolRunner extends o.EventEmitter{constructor(e,t,i){super();if(!e){throw new Error("Parameter 'toolPath' cannot be null or empty.")}this.toolPath=e;this.args=t||[];this.options=i||{}}_debug(e){if(this.options.listeners&&this.options.listeners.debug){this.options.listeners.debug(e)}}_getCommandString(e,t){const i=this._getSpawnFileName();const n=this._getSpawnArgs(e);let r=t?"":"[command]";if(d){if(this._isCmdFile()){r+=i;for(const e of n){r+=` ${e}`}}else if(e.windowsVerbatimArguments){r+=`"${i}"`;for(const e of n){r+=` ${e}`}}else{r+=this._windowsQuoteCmdArg(i);for(const e of n){r+=` ${this._windowsQuoteCmdArg(e)}`}}}else{r+=i;for(const e of n){r+=` ${e}`}}return r}_processLineBuffer(e,t,i){try{let n=t+e.toString();let r=n.indexOf(s.EOL);while(r>-1){const e=n.substring(0,r);i(e);n=n.substring(r+s.EOL.length);r=n.indexOf(s.EOL)}t=n}catch(e){this._debug(`error processing line. Failed with error ${e}`)}}_getSpawnFileName(){if(d){if(this._isCmdFile()){return process.env["COMSPEC"]||"cmd.exe"}}return this.toolPath}_getSpawnArgs(e){if(d){if(this._isCmdFile()){let t=`/D /S /C "${this._windowsQuoteCmdArg(this.toolPath)}`;for(const i of this.args){t+=" ";t+=e.windowsVerbatimArguments?i:this._windowsQuoteCmdArg(i)}t+='"';return[t]}}return this.args}_endsWith(e,t){return e.endsWith(t)}_isCmdFile(){const e=this.toolPath.toUpperCase();return this._endsWith(e,".CMD")||this._endsWith(e,".BAT")}_windowsQuoteCmdArg(e){if(!this._isCmdFile()){return this._uvQuoteCmdArg(e)}if(!e){return'""'}const t=[" ","\t","&","(",")","[","]","{","}","^","=",";","!","'","+",",","`","~","|","<",">",'"'];let i=false;for(const n of e){if(t.some(e=>e===n)){i=true;break}}if(!i){return e}let n='"';let r=true;for(let t=e.length;t>0;t--){n+=e[t-1];if(r&&e[t-1]==="\\"){n+="\\"}else if(e[t-1]==='"'){r=true;n+='"'}else{r=false}}n+='"';return n.split("").reverse().join("")}_uvQuoteCmdArg(e){if(!e){return'""'}if(!e.includes(" ")&&!e.includes("\t")&&!e.includes('"')){return e}if(!e.includes('"')&&!e.includes("\\")){return`"${e}"`}let t='"';let i=true;for(let n=e.length;n>0;n--){t+=e[n-1];if(i&&e[n-1]==="\\"){t+="\\"}else if(e[n-1]==='"'){i=true;t+="\\"}else{i=false}}t+='"';return t.split("").reverse().join("")}_cloneExecOptions(e){e=e||{};const t={cwd:e.cwd||process.cwd(),env:e.env||process.env,silent:e.silent||false,windowsVerbatimArguments:e.windowsVerbatimArguments||false,failOnStdErr:e.failOnStdErr||false,ignoreReturnCode:e.ignoreReturnCode||false,delay:e.delay||1e4};t.outStream=e.outStream||process.stdout;t.errStream=e.errStream||process.stderr;return t}_getSpawnOptions(e,t){e=e||{};const i={};i.cwd=e.cwd;i.env=e.env;i["windowsVerbatimArguments"]=e.windowsVerbatimArguments||this._isCmdFile();if(e.windowsVerbatimArguments){i.argv0=`"${t}"`}return i}exec(){return n(this,void 0,void 0,function*(){if(!a.isRooted(this.toolPath)&&(this.toolPath.includes("/")||d&&this.toolPath.includes("\\"))){this.toolPath=c.resolve(process.cwd(),this.options.cwd||process.cwd(),this.toolPath)}this.toolPath=yield l.which(this.toolPath,true);return new Promise((e,t)=>{this._debug(`exec tool: ${this.toolPath}`);this._debug("arguments:");for(const e of this.args){this._debug(` ${e}`)}const i=this._cloneExecOptions(this.options);if(!i.silent&&i.outStream){i.outStream.write(this._getCommandString(i)+s.EOL)}const n=new ExecState(i,this.toolPath);n.on("debug",e=>{this._debug(e)});const r=this._getSpawnFileName();const o=u.spawn(r,this._getSpawnArgs(i),this._getSpawnOptions(this.options,r));const c="";if(o.stdout){o.stdout.on("data",e=>{if(this.options.listeners&&this.options.listeners.stdout){this.options.listeners.stdout(e)}if(!i.silent&&i.outStream){i.outStream.write(e)}this._processLineBuffer(e,c,e=>{if(this.options.listeners&&this.options.listeners.stdline){this.options.listeners.stdline(e)}})})}const l="";if(o.stderr){o.stderr.on("data",e=>{n.processStderr=true;if(this.options.listeners&&this.options.listeners.stderr){this.options.listeners.stderr(e)}if(!i.silent&&i.errStream&&i.outStream){const t=i.failOnStdErr?i.errStream:i.outStream;t.write(e)}this._processLineBuffer(e,l,e=>{if(this.options.listeners&&this.options.listeners.errline){this.options.listeners.errline(e)}})})}o.on("error",e=>{n.processError=e.message;n.processExited=true;n.processClosed=true;n.CheckComplete()});o.on("exit",e=>{n.processExitCode=e;n.processExited=true;this._debug(`Exit code ${e} received from tool '${this.toolPath}'`);n.CheckComplete()});o.on("close",e=>{n.processExitCode=e;n.processExited=true;n.processClosed=true;this._debug(`STDIO streams have closed for tool '${this.toolPath}'`);n.CheckComplete()});n.on("done",(i,n)=>{if(c.length>0){this.emit("stdline",c)}if(l.length>0){this.emit("errline",l)}o.removeAllListeners();if(i){t(i)}else{e(n)}});if(this.options.input){if(!o.stdin){throw new Error("child process missing stdin")}o.stdin.end(this.options.input)}})})}}t.ToolRunner=ToolRunner;function argStringToArray(e){const t=[];let i=false;let n=false;let r="";function append(e){if(n&&e!=='"'){r+="\\"}r+=e;n=false}for(let s=0;s0){t.push(r);r=""}continue}append(o)}if(r.length>0){t.push(r.trim())}return t}t.argStringToArray=argStringToArray;class ExecState extends o.EventEmitter{constructor(e,t){super();this.processClosed=false;this.processError="";this.processExitCode=0;this.processExited=false;this.processStderr=false;this.delay=1e4;this.done=false;this.timeout=null;if(!t){throw new Error("toolPath must not be empty")}this.options=e;this.toolPath=t;if(e.delay){this.delay=e.delay}}CheckComplete(){if(this.done){return}if(this.processClosed){this._setResult()}else if(this.processExited){this.timeout=setTimeout(ExecState.HandleTimeout,this.delay,this)}}_debug(e){this.emit("debug",e)}_setResult(){let e;if(this.processExited){if(this.processError){e=new Error(`There was an error when attempting to execute the process '${this.toolPath}'. This may indicate the process failed to start. Error: ${this.processError}`)}else if(this.processExitCode!==0&&!this.options.ignoreReturnCode){e=new Error(`The process '${this.toolPath}' failed with exit code ${this.processExitCode}`)}else if(this.processStderr&&this.options.failOnStdErr){e=new Error(`The process '${this.toolPath}' failed because one or more lines were written to the STDERR stream`)}}if(this.timeout){clearTimeout(this.timeout);this.timeout=null}this.done=true;this.emit("done",e,this.processExitCode)}static HandleTimeout(e){if(e.done){return}if(!e.processClosed&&e.processExited){const t=`The STDIO streams did not close within ${e.delay/1e3} seconds of the exit event from process '${e.toolPath}'. This may indicate a child process inherited the STDIO streams and has not yet exited.`;e._debug(t)}e._setResult()}}},962:function(e,t,i){var n=this&&this.__awaiter||function(e,t,i,n){function adopt(e){return e instanceof i?e:new i(function(t){t(e)})}return new(i||(i=Promise))(function(i,r){function fulfilled(e){try{step(n.next(e))}catch(e){r(e)}}function rejected(e){try{step(n["throw"](e))}catch(e){r(e)}}function step(e){e.done?i(e.value):adopt(e.value).then(fulfilled,rejected)}step((n=n.apply(e,t||[])).next())})};var r;Object.defineProperty(t,"__esModule",{value:true});const s=i(357);const o=i(747);const u=i(622);r=o.promises,t.chmod=r.chmod,t.copyFile=r.copyFile,t.lstat=r.lstat,t.mkdir=r.mkdir,t.readdir=r.readdir,t.readlink=r.readlink,t.rename=r.rename,t.rmdir=r.rmdir,t.stat=r.stat,t.symlink=r.symlink,t.unlink=r.unlink;t.IS_WINDOWS=process.platform==="win32";function exists(e){return n(this,void 0,void 0,function*(){try{yield t.stat(e)}catch(e){if(e.code==="ENOENT"){return false}throw e}return true})}t.exists=exists;function isDirectory(e,i=false){return n(this,void 0,void 0,function*(){const n=i?yield t.stat(e):yield t.lstat(e);return n.isDirectory()})}t.isDirectory=isDirectory;function isRooted(e){e=normalizeSeparators(e);if(!e){throw new Error('isRooted() parameter "p" cannot be empty')}if(t.IS_WINDOWS){return e.startsWith("\\")||/^[A-Z]:/i.test(e)}return e.startsWith("/")}t.isRooted=isRooted;function mkdirP(e,i=1e3,r=1){return n(this,void 0,void 0,function*(){s.ok(e,"a path argument must be provided");e=u.resolve(e);if(r>=i)return t.mkdir(e);try{yield t.mkdir(e);return}catch(n){switch(n.code){case"ENOENT":{yield mkdirP(u.dirname(e),i,r+1);yield t.mkdir(e);return}default:{let i;try{i=yield t.stat(e)}catch(e){throw n}if(!i.isDirectory())throw n}}}})}t.mkdirP=mkdirP;function tryGetExecutablePath(e,i){return n(this,void 0,void 0,function*(){let n=undefined;try{n=yield t.stat(e)}catch(t){if(t.code!=="ENOENT"){console.log(`Unexpected error attempting to determine if executable file exists '${e}': ${t}`)}}if(n&&n.isFile()){if(t.IS_WINDOWS){const t=u.extname(e).toUpperCase();if(i.some(e=>e.toUpperCase()===t)){return e}}else{if(isUnixExecutable(n)){return e}}}const r=e;for(const s of i){e=r+s;n=undefined;try{n=yield t.stat(e)}catch(t){if(t.code!=="ENOENT"){console.log(`Unexpected error attempting to determine if executable file exists '${e}': ${t}`)}}if(n&&n.isFile()){if(t.IS_WINDOWS){try{const i=u.dirname(e);const n=u.basename(e).toUpperCase();for(const r of yield t.readdir(i)){if(n===r.toUpperCase()){e=u.join(i,r);break}}}catch(t){console.log(`Unexpected error attempting to determine the actual case of the file '${e}': ${t}`)}return e}else{if(isUnixExecutable(n)){return e}}}}return""})}t.tryGetExecutablePath=tryGetExecutablePath;function normalizeSeparators(e){e=e||"";if(t.IS_WINDOWS){e=e.replace(/\//g,"\\");return e.replace(/\\\\+/g,"\\")}return e.replace(/\/\/+/g,"/")}function isUnixExecutable(e){return(e.mode&1)>0||(e.mode&8)>0&&e.gid===process.getgid()||(e.mode&64)>0&&e.uid===process.getuid()}},436:function(e,t,i){var n=this&&this.__awaiter||function(e,t,i,n){function adopt(e){return e instanceof i?e:new i(function(t){t(e)})}return new(i||(i=Promise))(function(i,r){function fulfilled(e){try{step(n.next(e))}catch(e){r(e)}}function rejected(e){try{step(n["throw"](e))}catch(e){r(e)}}function step(e){e.done?i(e.value):adopt(e.value).then(fulfilled,rejected)}step((n=n.apply(e,t||[])).next())})};Object.defineProperty(t,"__esModule",{value:true});const r=i(129);const s=i(622);const o=i(669);const u=i(962);const c=o.promisify(r.exec);function cp(e,t,i={}){return n(this,void 0,void 0,function*(){const{force:n,recursive:r}=readCopyOptions(i);const o=(yield u.exists(t))?yield u.stat(t):null;if(o&&o.isFile()&&!n){return}const c=o&&o.isDirectory()?s.join(t,s.basename(e)):t;if(!(yield u.exists(e))){throw new Error(`no such file or directory: ${e}`)}const l=yield u.stat(e);if(l.isDirectory()){if(!r){throw new Error(`Failed to copy. ${e} is a directory, but tried to copy without recursive flag.`)}else{yield cpDirRecursive(e,c,0,n)}}else{if(s.relative(e,c)===""){throw new Error(`'${c}' and '${e}' are the same file`)}yield copyFile(e,c,n)}})}t.cp=cp;function mv(e,t,i={}){return n(this,void 0,void 0,function*(){if(yield u.exists(t)){let n=true;if(yield u.isDirectory(t)){t=s.join(t,s.basename(e));n=yield u.exists(t)}if(n){if(i.force==null||i.force){yield rmRF(t)}else{throw new Error("Destination already exists")}}}yield mkdirP(s.dirname(t));yield u.rename(e,t)})}t.mv=mv;function rmRF(e){return n(this,void 0,void 0,function*(){if(u.IS_WINDOWS){try{if(yield u.isDirectory(e,true)){yield c(`rd /s /q "${e}"`)}else{yield c(`del /f /a "${e}"`)}}catch(e){if(e.code!=="ENOENT")throw e}try{yield u.unlink(e)}catch(e){if(e.code!=="ENOENT")throw e}}else{let t=false;try{t=yield u.isDirectory(e)}catch(e){if(e.code!=="ENOENT")throw e;return}if(t){yield c(`rm -rf "${e}"`)}else{yield u.unlink(e)}}})}t.rmRF=rmRF;function mkdirP(e){return n(this,void 0,void 0,function*(){yield u.mkdirP(e)})}t.mkdirP=mkdirP;function which(e,t){return n(this,void 0,void 0,function*(){if(!e){throw new Error("parameter 'tool' is required")}if(t){const t=yield which(e,false);if(!t){if(u.IS_WINDOWS){throw new Error(`Unable to locate executable file: ${e}. Please verify either the file path exists or the file can be found within a directory specified by the PATH environment variable. Also verify the file has a valid extension for an executable file.`)}else{throw new Error(`Unable to locate executable file: ${e}. Please verify either the file path exists or the file can be found within a directory specified by the PATH environment variable. Also check the file mode to verify the file is executable.`)}}}try{const t=[];if(u.IS_WINDOWS&&process.env.PATHEXT){for(const e of process.env.PATHEXT.split(s.delimiter)){if(e){t.push(e)}}}if(u.isRooted(e)){const i=yield u.tryGetExecutablePath(e,t);if(i){return i}return""}if(e.includes("/")||u.IS_WINDOWS&&e.includes("\\")){return""}const i=[];if(process.env.PATH){for(const e of process.env.PATH.split(s.delimiter)){if(e){i.push(e)}}}for(const n of i){const i=yield u.tryGetExecutablePath(n+s.sep+e,t);if(i){return i}}return""}catch(e){throw new Error(`which failed with message ${e.message}`)}})}t.which=which;function readCopyOptions(e){const t=e.force==null?true:e.force;const i=Boolean(e.recursive);return{force:t,recursive:i}}function cpDirRecursive(e,t,i,r){return n(this,void 0,void 0,function*(){if(i>=255)return;i++;yield mkdirP(t);const n=yield u.readdir(e);for(const s of n){const n=`${e}/${s}`;const o=`${t}/${s}`;const c=yield u.lstat(n);if(c.isDirectory()){yield cpDirRecursive(n,o,i,r)}else{yield copyFile(n,o,r)}}yield u.chmod(t,(yield u.stat(e)).mode)})}function copyFile(e,t,i){return n(this,void 0,void 0,function*(){if((yield u.lstat(e)).isSymbolicLink()){try{yield u.lstat(t);yield u.unlink(t)}catch(e){if(e.code==="EPERM"){yield u.chmod(t,"0666");yield u.unlink(t)}}const i=yield u.readlink(e);yield u.symlink(i,t,u.IS_WINDOWS?"junction":null)}else if(!(yield u.exists(t))||i){yield u.copyFile(e,t)}})}},987:(e,t,i)=>{Object.defineProperty(t,"__esModule",{value:true});t.BuildahCli=void 0;const n=i(186);const r=i(514);const s=i(622);class BuildahCli{constructor(e){this.executable=e}static getImageFormatOption(e){return["--format",e?"oci":"docker"]}async buildUsingDocker(e,t,i,n,r){const s=["bud"];i.forEach(e=>{s.push("-f");s.push(e)});n.forEach(e=>{s.push("--build-arg");s.push(e)});s.push(...BuildahCli.getImageFormatOption(r));s.push("-t");s.push(e);s.push(t);return this.execute(s)}async from(e){return this.execute(["from",e])}async copy(e,t,i){if(t.length===0){return undefined}n.debug("copy");n.debug(e);for(const n of t){const t=["copy",e,n];if(i){t.push(i)}return this.execute(t)}return undefined}async config(e,t){n.debug("config");n.debug(e);const i=["config"];if(t.entrypoint){i.push("--entrypoint");i.push(BuildahCli.convertArrayToStringArg(t.entrypoint))}if(t.port){i.push("--port");i.push(t.port)}if(t.envs){t.envs.forEach(e=>{i.push("--env");i.push(e)})}i.push(e);return this.execute(i)}async commit(e,t,i){n.debug("commit");n.debug(e);n.debug(t);const r=["commit",...BuildahCli.getImageFormatOption(i),"--squash",e,t];return this.execute(r)}async tag(e,t){const i=["tag"];for(const n of t){i.push(`${e}:${n}`)}n.info(`Tagging the built image with tags ${t.toString()}`);return this.execute(i)}static convertArrayToStringArg(e){let t="[";e.forEach(e=>{t+=`"${e}",`});return`${t.slice(0,-1)}]`}async execute(e,t={}){let i="";let n="";const o={...t};o.ignoreReturnCode=true;o.listeners={stdline:e=>{i+=e+"\n"},errline:e=>{n+=e+"\n"}};const u=await r.exec(this.executable,e,o);if(t.ignoreReturnCode!==true&&u!==0){let e=`${s.basename(this.executable)} exited with code ${u}`;if(n){e+=`\n${n}`}throw new Error(e)}return{exitCode:u,output:i,error:n}}}t.BuildahCli=BuildahCli},144:(e,t,i)=>{Object.defineProperty(t,"__esModule",{value:true});t.run=void 0;const n=i(186);const r=i(436);const s=i(622);const o=i(987);async function run(){if(process.env.RUNNER_OS!=="Linux"){throw new Error("buildah, and therefore this action, only works on Linux. Please use a Linux runner.")}const e=await r.which("buildah",true);const t=new o.BuildahCli(e);const i=process.env.GITHUB_WORKSPACE||process.cwd();const s=getInputList("dockerfiles");const u=n.getInput("image",{required:true});const c=n.getInput("tags")||"latest";const l=c.split(" ");const a=`${u}:${l[0]}`;const d=n.getInput("oci")==="true";if(s.length!==0){await doBuildUsingDockerFiles(t,a,i,s,d)}else{await doBuildFromScratch(t,a,d)}if(l.length>1){await t.tag(u,l)}n.setOutput("image",u);n.setOutput("tags",c)}t.run=run;async function doBuildUsingDockerFiles(e,t,i,r,o){if(r.length===1){n.info(`Performing build from Dockerfile`)}else{n.info(`Performing build from ${r.length} Dockerfiles`)}const u=s.join(i,n.getInput("context"));const c=getInputList("build-args");const l=r.map(e=>s.join(i,e));await e.buildUsingDocker(t,u,l,c,o)}async function doBuildFromScratch(e,t,i){n.info(`Performing build from scratch`);const r=n.getInput("base-image",{required:true});const s=getInputList("content");const o=getInputList("entrypoint");const u=n.getInput("port");const c=n.getInput("workdir");const l=getInputList("envs");const a=await e.from(r);const d=a.output.replace("\n","");await e.copy(d,s);const f={entrypoint:o,port:u,workingdir:c,envs:l};await e.config(d,f);await e.commit(d,t,i)}function getInputList(e){const t=n.getInput(e);if(!t){return[]}return t.split(/\r?\n/).filter(e=>e).reduce((e,t)=>e.concat(t).map(e=>e.trim()),[])}run().catch(n.setFailed)},357:e=>{e.exports=require("assert")},129:e=>{e.exports=require("child_process")},614:e=>{e.exports=require("events")},747:e=>{e.exports=require("fs")},87:e=>{e.exports=require("os")},622:e=>{e.exports=require("path")},669:e=>{e.exports=require("util")}};var t={};function __webpack_require__(i){if(t[i]){return t[i].exports}var n=t[i]={exports:{}};var r=true;try{e[i].call(n.exports,n,n.exports,__webpack_require__);r=false}finally{if(r)delete t[i]}return n.exports}__webpack_require__.ab=__dirname+"/";return __webpack_require__(144)})();
+require('./sourcemap-register.js');module.exports=(()=>{"use strict";var e={351:function(e,t,i){var n=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var i in e)if(Object.hasOwnProperty.call(e,i))t[i]=e[i];t["default"]=e;return t};Object.defineProperty(t,"__esModule",{value:true});const r=n(i(87));const s=i(278);function issueCommand(e,t,i){const n=new Command(e,t,i);process.stdout.write(n.toString()+r.EOL)}t.issueCommand=issueCommand;function issue(e,t=""){issueCommand(e,{},t)}t.issue=issue;const o="::";class Command{constructor(e,t,i){if(!e){e="missing.command"}this.command=e;this.properties=t;this.message=i}toString(){let e=o+this.command;if(this.properties&&Object.keys(this.properties).length>0){e+=" ";let t=true;for(const i in this.properties){if(this.properties.hasOwnProperty(i)){const n=this.properties[i];if(n){if(t){t=false}else{e+=","}e+=`${i}=${escapeProperty(n)}`}}}}e+=`${o}${escapeData(this.message)}`;return e}}function escapeData(e){return s.toCommandValue(e).replace(/%/g,"%25").replace(/\r/g,"%0D").replace(/\n/g,"%0A")}function escapeProperty(e){return s.toCommandValue(e).replace(/%/g,"%25").replace(/\r/g,"%0D").replace(/\n/g,"%0A").replace(/:/g,"%3A").replace(/,/g,"%2C")}},186:function(e,t,i){var n=this&&this.__awaiter||function(e,t,i,n){function adopt(e){return e instanceof i?e:new i(function(t){t(e)})}return new(i||(i=Promise))(function(i,r){function fulfilled(e){try{step(n.next(e))}catch(e){r(e)}}function rejected(e){try{step(n["throw"](e))}catch(e){r(e)}}function step(e){e.done?i(e.value):adopt(e.value).then(fulfilled,rejected)}step((n=n.apply(e,t||[])).next())})};var r=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var i in e)if(Object.hasOwnProperty.call(e,i))t[i]=e[i];t["default"]=e;return t};Object.defineProperty(t,"__esModule",{value:true});const s=i(351);const o=i(717);const u=i(278);const c=r(i(87));const l=r(i(622));var a;(function(e){e[e["Success"]=0]="Success";e[e["Failure"]=1]="Failure"})(a=t.ExitCode||(t.ExitCode={}));function exportVariable(e,t){const i=u.toCommandValue(t);process.env[e]=i;const n=process.env["GITHUB_ENV"]||"";if(n){const t="_GitHubActionsFileCommandDelimeter_";const n=`${e}<<${t}${c.EOL}${i}${c.EOL}${t}`;o.issueCommand("ENV",n)}else{s.issueCommand("set-env",{name:e},i)}}t.exportVariable=exportVariable;function setSecret(e){s.issueCommand("add-mask",{},e)}t.setSecret=setSecret;function addPath(e){const t=process.env["GITHUB_PATH"]||"";if(t){o.issueCommand("PATH",e)}else{s.issueCommand("add-path",{},e)}process.env["PATH"]=`${e}${l.delimiter}${process.env["PATH"]}`}t.addPath=addPath;function getInput(e,t){const i=process.env[`INPUT_${e.replace(/ /g,"_").toUpperCase()}`]||"";if(t&&t.required&&!i){throw new Error(`Input required and not supplied: ${e}`)}return i.trim()}t.getInput=getInput;function setOutput(e,t){s.issueCommand("set-output",{name:e},t)}t.setOutput=setOutput;function setCommandEcho(e){s.issue("echo",e?"on":"off")}t.setCommandEcho=setCommandEcho;function setFailed(e){process.exitCode=a.Failure;error(e)}t.setFailed=setFailed;function isDebug(){return process.env["RUNNER_DEBUG"]==="1"}t.isDebug=isDebug;function debug(e){s.issueCommand("debug",{},e)}t.debug=debug;function error(e){s.issue("error",e instanceof Error?e.toString():e)}t.error=error;function warning(e){s.issue("warning",e instanceof Error?e.toString():e)}t.warning=warning;function info(e){process.stdout.write(e+c.EOL)}t.info=info;function startGroup(e){s.issue("group",e)}t.startGroup=startGroup;function endGroup(){s.issue("endgroup")}t.endGroup=endGroup;function group(e,t){return n(this,void 0,void 0,function*(){startGroup(e);let i;try{i=yield t()}finally{endGroup()}return i})}t.group=group;function saveState(e,t){s.issueCommand("save-state",{name:e},t)}t.saveState=saveState;function getState(e){return process.env[`STATE_${e}`]||""}t.getState=getState},717:function(e,t,i){var n=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var i in e)if(Object.hasOwnProperty.call(e,i))t[i]=e[i];t["default"]=e;return t};Object.defineProperty(t,"__esModule",{value:true});const r=n(i(747));const s=n(i(87));const o=i(278);function issueCommand(e,t){const i=process.env[`GITHUB_${e}`];if(!i){throw new Error(`Unable to find environment variable for file command ${e}`)}if(!r.existsSync(i)){throw new Error(`Missing file at path: ${i}`)}r.appendFileSync(i,`${o.toCommandValue(t)}${s.EOL}`,{encoding:"utf8"})}t.issueCommand=issueCommand},278:(e,t)=>{Object.defineProperty(t,"__esModule",{value:true});function toCommandValue(e){if(e===null||e===undefined){return""}else if(typeof e==="string"||e instanceof String){return e}return JSON.stringify(e)}t.toCommandValue=toCommandValue},514:function(e,t,i){var n=this&&this.__awaiter||function(e,t,i,n){function adopt(e){return e instanceof i?e:new i(function(t){t(e)})}return new(i||(i=Promise))(function(i,r){function fulfilled(e){try{step(n.next(e))}catch(e){r(e)}}function rejected(e){try{step(n["throw"](e))}catch(e){r(e)}}function step(e){e.done?i(e.value):adopt(e.value).then(fulfilled,rejected)}step((n=n.apply(e,t||[])).next())})};var r=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var i in e)if(Object.hasOwnProperty.call(e,i))t[i]=e[i];t["default"]=e;return t};Object.defineProperty(t,"__esModule",{value:true});const s=r(i(159));function exec(e,t,i){return n(this,void 0,void 0,function*(){const n=s.argStringToArray(e);if(n.length===0){throw new Error(`Parameter 'commandLine' cannot be null or empty.`)}const r=n[0];t=n.slice(1).concat(t||[]);const o=new s.ToolRunner(r,t,i);return o.exec()})}t.exec=exec},159:function(e,t,i){var n=this&&this.__awaiter||function(e,t,i,n){function adopt(e){return e instanceof i?e:new i(function(t){t(e)})}return new(i||(i=Promise))(function(i,r){function fulfilled(e){try{step(n.next(e))}catch(e){r(e)}}function rejected(e){try{step(n["throw"](e))}catch(e){r(e)}}function step(e){e.done?i(e.value):adopt(e.value).then(fulfilled,rejected)}step((n=n.apply(e,t||[])).next())})};var r=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var i in e)if(Object.hasOwnProperty.call(e,i))t[i]=e[i];t["default"]=e;return t};Object.defineProperty(t,"__esModule",{value:true});const s=r(i(87));const o=r(i(614));const u=r(i(129));const c=r(i(622));const l=r(i(436));const a=r(i(962));const d=process.platform==="win32";class ToolRunner extends o.EventEmitter{constructor(e,t,i){super();if(!e){throw new Error("Parameter 'toolPath' cannot be null or empty.")}this.toolPath=e;this.args=t||[];this.options=i||{}}_debug(e){if(this.options.listeners&&this.options.listeners.debug){this.options.listeners.debug(e)}}_getCommandString(e,t){const i=this._getSpawnFileName();const n=this._getSpawnArgs(e);let r=t?"":"[command]";if(d){if(this._isCmdFile()){r+=i;for(const e of n){r+=` ${e}`}}else if(e.windowsVerbatimArguments){r+=`"${i}"`;for(const e of n){r+=` ${e}`}}else{r+=this._windowsQuoteCmdArg(i);for(const e of n){r+=` ${this._windowsQuoteCmdArg(e)}`}}}else{r+=i;for(const e of n){r+=` ${e}`}}return r}_processLineBuffer(e,t,i){try{let n=t+e.toString();let r=n.indexOf(s.EOL);while(r>-1){const e=n.substring(0,r);i(e);n=n.substring(r+s.EOL.length);r=n.indexOf(s.EOL)}t=n}catch(e){this._debug(`error processing line. Failed with error ${e}`)}}_getSpawnFileName(){if(d){if(this._isCmdFile()){return process.env["COMSPEC"]||"cmd.exe"}}return this.toolPath}_getSpawnArgs(e){if(d){if(this._isCmdFile()){let t=`/D /S /C "${this._windowsQuoteCmdArg(this.toolPath)}`;for(const i of this.args){t+=" ";t+=e.windowsVerbatimArguments?i:this._windowsQuoteCmdArg(i)}t+='"';return[t]}}return this.args}_endsWith(e,t){return e.endsWith(t)}_isCmdFile(){const e=this.toolPath.toUpperCase();return this._endsWith(e,".CMD")||this._endsWith(e,".BAT")}_windowsQuoteCmdArg(e){if(!this._isCmdFile()){return this._uvQuoteCmdArg(e)}if(!e){return'""'}const t=[" ","\t","&","(",")","[","]","{","}","^","=",";","!","'","+",",","`","~","|","<",">",'"'];let i=false;for(const n of e){if(t.some(e=>e===n)){i=true;break}}if(!i){return e}let n='"';let r=true;for(let t=e.length;t>0;t--){n+=e[t-1];if(r&&e[t-1]==="\\"){n+="\\"}else if(e[t-1]==='"'){r=true;n+='"'}else{r=false}}n+='"';return n.split("").reverse().join("")}_uvQuoteCmdArg(e){if(!e){return'""'}if(!e.includes(" ")&&!e.includes("\t")&&!e.includes('"')){return e}if(!e.includes('"')&&!e.includes("\\")){return`"${e}"`}let t='"';let i=true;for(let n=e.length;n>0;n--){t+=e[n-1];if(i&&e[n-1]==="\\"){t+="\\"}else if(e[n-1]==='"'){i=true;t+="\\"}else{i=false}}t+='"';return t.split("").reverse().join("")}_cloneExecOptions(e){e=e||{};const t={cwd:e.cwd||process.cwd(),env:e.env||process.env,silent:e.silent||false,windowsVerbatimArguments:e.windowsVerbatimArguments||false,failOnStdErr:e.failOnStdErr||false,ignoreReturnCode:e.ignoreReturnCode||false,delay:e.delay||1e4};t.outStream=e.outStream||process.stdout;t.errStream=e.errStream||process.stderr;return t}_getSpawnOptions(e,t){e=e||{};const i={};i.cwd=e.cwd;i.env=e.env;i["windowsVerbatimArguments"]=e.windowsVerbatimArguments||this._isCmdFile();if(e.windowsVerbatimArguments){i.argv0=`"${t}"`}return i}exec(){return n(this,void 0,void 0,function*(){if(!a.isRooted(this.toolPath)&&(this.toolPath.includes("/")||d&&this.toolPath.includes("\\"))){this.toolPath=c.resolve(process.cwd(),this.options.cwd||process.cwd(),this.toolPath)}this.toolPath=yield l.which(this.toolPath,true);return new Promise((e,t)=>{this._debug(`exec tool: ${this.toolPath}`);this._debug("arguments:");for(const e of this.args){this._debug(` ${e}`)}const i=this._cloneExecOptions(this.options);if(!i.silent&&i.outStream){i.outStream.write(this._getCommandString(i)+s.EOL)}const n=new ExecState(i,this.toolPath);n.on("debug",e=>{this._debug(e)});const r=this._getSpawnFileName();const o=u.spawn(r,this._getSpawnArgs(i),this._getSpawnOptions(this.options,r));const c="";if(o.stdout){o.stdout.on("data",e=>{if(this.options.listeners&&this.options.listeners.stdout){this.options.listeners.stdout(e)}if(!i.silent&&i.outStream){i.outStream.write(e)}this._processLineBuffer(e,c,e=>{if(this.options.listeners&&this.options.listeners.stdline){this.options.listeners.stdline(e)}})})}const l="";if(o.stderr){o.stderr.on("data",e=>{n.processStderr=true;if(this.options.listeners&&this.options.listeners.stderr){this.options.listeners.stderr(e)}if(!i.silent&&i.errStream&&i.outStream){const t=i.failOnStdErr?i.errStream:i.outStream;t.write(e)}this._processLineBuffer(e,l,e=>{if(this.options.listeners&&this.options.listeners.errline){this.options.listeners.errline(e)}})})}o.on("error",e=>{n.processError=e.message;n.processExited=true;n.processClosed=true;n.CheckComplete()});o.on("exit",e=>{n.processExitCode=e;n.processExited=true;this._debug(`Exit code ${e} received from tool '${this.toolPath}'`);n.CheckComplete()});o.on("close",e=>{n.processExitCode=e;n.processExited=true;n.processClosed=true;this._debug(`STDIO streams have closed for tool '${this.toolPath}'`);n.CheckComplete()});n.on("done",(i,n)=>{if(c.length>0){this.emit("stdline",c)}if(l.length>0){this.emit("errline",l)}o.removeAllListeners();if(i){t(i)}else{e(n)}});if(this.options.input){if(!o.stdin){throw new Error("child process missing stdin")}o.stdin.end(this.options.input)}})})}}t.ToolRunner=ToolRunner;function argStringToArray(e){const t=[];let i=false;let n=false;let r="";function append(e){if(n&&e!=='"'){r+="\\"}r+=e;n=false}for(let s=0;s0){t.push(r);r=""}continue}append(o)}if(r.length>0){t.push(r.trim())}return t}t.argStringToArray=argStringToArray;class ExecState extends o.EventEmitter{constructor(e,t){super();this.processClosed=false;this.processError="";this.processExitCode=0;this.processExited=false;this.processStderr=false;this.delay=1e4;this.done=false;this.timeout=null;if(!t){throw new Error("toolPath must not be empty")}this.options=e;this.toolPath=t;if(e.delay){this.delay=e.delay}}CheckComplete(){if(this.done){return}if(this.processClosed){this._setResult()}else if(this.processExited){this.timeout=setTimeout(ExecState.HandleTimeout,this.delay,this)}}_debug(e){this.emit("debug",e)}_setResult(){let e;if(this.processExited){if(this.processError){e=new Error(`There was an error when attempting to execute the process '${this.toolPath}'. This may indicate the process failed to start. Error: ${this.processError}`)}else if(this.processExitCode!==0&&!this.options.ignoreReturnCode){e=new Error(`The process '${this.toolPath}' failed with exit code ${this.processExitCode}`)}else if(this.processStderr&&this.options.failOnStdErr){e=new Error(`The process '${this.toolPath}' failed because one or more lines were written to the STDERR stream`)}}if(this.timeout){clearTimeout(this.timeout);this.timeout=null}this.done=true;this.emit("done",e,this.processExitCode)}static HandleTimeout(e){if(e.done){return}if(!e.processClosed&&e.processExited){const t=`The STDIO streams did not close within ${e.delay/1e3} seconds of the exit event from process '${e.toolPath}'. This may indicate a child process inherited the STDIO streams and has not yet exited.`;e._debug(t)}e._setResult()}}},962:function(e,t,i){var n=this&&this.__awaiter||function(e,t,i,n){function adopt(e){return e instanceof i?e:new i(function(t){t(e)})}return new(i||(i=Promise))(function(i,r){function fulfilled(e){try{step(n.next(e))}catch(e){r(e)}}function rejected(e){try{step(n["throw"](e))}catch(e){r(e)}}function step(e){e.done?i(e.value):adopt(e.value).then(fulfilled,rejected)}step((n=n.apply(e,t||[])).next())})};var r;Object.defineProperty(t,"__esModule",{value:true});const s=i(357);const o=i(747);const u=i(622);r=o.promises,t.chmod=r.chmod,t.copyFile=r.copyFile,t.lstat=r.lstat,t.mkdir=r.mkdir,t.readdir=r.readdir,t.readlink=r.readlink,t.rename=r.rename,t.rmdir=r.rmdir,t.stat=r.stat,t.symlink=r.symlink,t.unlink=r.unlink;t.IS_WINDOWS=process.platform==="win32";function exists(e){return n(this,void 0,void 0,function*(){try{yield t.stat(e)}catch(e){if(e.code==="ENOENT"){return false}throw e}return true})}t.exists=exists;function isDirectory(e,i=false){return n(this,void 0,void 0,function*(){const n=i?yield t.stat(e):yield t.lstat(e);return n.isDirectory()})}t.isDirectory=isDirectory;function isRooted(e){e=normalizeSeparators(e);if(!e){throw new Error('isRooted() parameter "p" cannot be empty')}if(t.IS_WINDOWS){return e.startsWith("\\")||/^[A-Z]:/i.test(e)}return e.startsWith("/")}t.isRooted=isRooted;function mkdirP(e,i=1e3,r=1){return n(this,void 0,void 0,function*(){s.ok(e,"a path argument must be provided");e=u.resolve(e);if(r>=i)return t.mkdir(e);try{yield t.mkdir(e);return}catch(n){switch(n.code){case"ENOENT":{yield mkdirP(u.dirname(e),i,r+1);yield t.mkdir(e);return}default:{let i;try{i=yield t.stat(e)}catch(e){throw n}if(!i.isDirectory())throw n}}}})}t.mkdirP=mkdirP;function tryGetExecutablePath(e,i){return n(this,void 0,void 0,function*(){let n=undefined;try{n=yield t.stat(e)}catch(t){if(t.code!=="ENOENT"){console.log(`Unexpected error attempting to determine if executable file exists '${e}': ${t}`)}}if(n&&n.isFile()){if(t.IS_WINDOWS){const t=u.extname(e).toUpperCase();if(i.some(e=>e.toUpperCase()===t)){return e}}else{if(isUnixExecutable(n)){return e}}}const r=e;for(const s of i){e=r+s;n=undefined;try{n=yield t.stat(e)}catch(t){if(t.code!=="ENOENT"){console.log(`Unexpected error attempting to determine if executable file exists '${e}': ${t}`)}}if(n&&n.isFile()){if(t.IS_WINDOWS){try{const i=u.dirname(e);const n=u.basename(e).toUpperCase();for(const r of yield t.readdir(i)){if(n===r.toUpperCase()){e=u.join(i,r);break}}}catch(t){console.log(`Unexpected error attempting to determine the actual case of the file '${e}': ${t}`)}return e}else{if(isUnixExecutable(n)){return e}}}}return""})}t.tryGetExecutablePath=tryGetExecutablePath;function normalizeSeparators(e){e=e||"";if(t.IS_WINDOWS){e=e.replace(/\//g,"\\");return e.replace(/\\\\+/g,"\\")}return e.replace(/\/\/+/g,"/")}function isUnixExecutable(e){return(e.mode&1)>0||(e.mode&8)>0&&e.gid===process.getgid()||(e.mode&64)>0&&e.uid===process.getuid()}},436:function(e,t,i){var n=this&&this.__awaiter||function(e,t,i,n){function adopt(e){return e instanceof i?e:new i(function(t){t(e)})}return new(i||(i=Promise))(function(i,r){function fulfilled(e){try{step(n.next(e))}catch(e){r(e)}}function rejected(e){try{step(n["throw"](e))}catch(e){r(e)}}function step(e){e.done?i(e.value):adopt(e.value).then(fulfilled,rejected)}step((n=n.apply(e,t||[])).next())})};Object.defineProperty(t,"__esModule",{value:true});const r=i(129);const s=i(622);const o=i(669);const u=i(962);const c=o.promisify(r.exec);function cp(e,t,i={}){return n(this,void 0,void 0,function*(){const{force:n,recursive:r}=readCopyOptions(i);const o=(yield u.exists(t))?yield u.stat(t):null;if(o&&o.isFile()&&!n){return}const c=o&&o.isDirectory()?s.join(t,s.basename(e)):t;if(!(yield u.exists(e))){throw new Error(`no such file or directory: ${e}`)}const l=yield u.stat(e);if(l.isDirectory()){if(!r){throw new Error(`Failed to copy. ${e} is a directory, but tried to copy without recursive flag.`)}else{yield cpDirRecursive(e,c,0,n)}}else{if(s.relative(e,c)===""){throw new Error(`'${c}' and '${e}' are the same file`)}yield copyFile(e,c,n)}})}t.cp=cp;function mv(e,t,i={}){return n(this,void 0,void 0,function*(){if(yield u.exists(t)){let n=true;if(yield u.isDirectory(t)){t=s.join(t,s.basename(e));n=yield u.exists(t)}if(n){if(i.force==null||i.force){yield rmRF(t)}else{throw new Error("Destination already exists")}}}yield mkdirP(s.dirname(t));yield u.rename(e,t)})}t.mv=mv;function rmRF(e){return n(this,void 0,void 0,function*(){if(u.IS_WINDOWS){try{if(yield u.isDirectory(e,true)){yield c(`rd /s /q "${e}"`)}else{yield c(`del /f /a "${e}"`)}}catch(e){if(e.code!=="ENOENT")throw e}try{yield u.unlink(e)}catch(e){if(e.code!=="ENOENT")throw e}}else{let t=false;try{t=yield u.isDirectory(e)}catch(e){if(e.code!=="ENOENT")throw e;return}if(t){yield c(`rm -rf "${e}"`)}else{yield u.unlink(e)}}})}t.rmRF=rmRF;function mkdirP(e){return n(this,void 0,void 0,function*(){yield u.mkdirP(e)})}t.mkdirP=mkdirP;function which(e,t){return n(this,void 0,void 0,function*(){if(!e){throw new Error("parameter 'tool' is required")}if(t){const t=yield which(e,false);if(!t){if(u.IS_WINDOWS){throw new Error(`Unable to locate executable file: ${e}. Please verify either the file path exists or the file can be found within a directory specified by the PATH environment variable. Also verify the file has a valid extension for an executable file.`)}else{throw new Error(`Unable to locate executable file: ${e}. Please verify either the file path exists or the file can be found within a directory specified by the PATH environment variable. Also check the file mode to verify the file is executable.`)}}}try{const t=[];if(u.IS_WINDOWS&&process.env.PATHEXT){for(const e of process.env.PATHEXT.split(s.delimiter)){if(e){t.push(e)}}}if(u.isRooted(e)){const i=yield u.tryGetExecutablePath(e,t);if(i){return i}return""}if(e.includes("/")||u.IS_WINDOWS&&e.includes("\\")){return""}const i=[];if(process.env.PATH){for(const e of process.env.PATH.split(s.delimiter)){if(e){i.push(e)}}}for(const n of i){const i=yield u.tryGetExecutablePath(n+s.sep+e,t);if(i){return i}}return""}catch(e){throw new Error(`which failed with message ${e.message}`)}})}t.which=which;function readCopyOptions(e){const t=e.force==null?true:e.force;const i=Boolean(e.recursive);return{force:t,recursive:i}}function cpDirRecursive(e,t,i,r){return n(this,void 0,void 0,function*(){if(i>=255)return;i++;yield mkdirP(t);const n=yield u.readdir(e);for(const s of n){const n=`${e}/${s}`;const o=`${t}/${s}`;const c=yield u.lstat(n);if(c.isDirectory()){yield cpDirRecursive(n,o,i,r)}else{yield copyFile(n,o,r)}}yield u.chmod(t,(yield u.stat(e)).mode)})}function copyFile(e,t,i){return n(this,void 0,void 0,function*(){if((yield u.lstat(e)).isSymbolicLink()){try{yield u.lstat(t);yield u.unlink(t)}catch(e){if(e.code==="EPERM"){yield u.chmod(t,"0666");yield u.unlink(t)}}const i=yield u.readlink(e);yield u.symlink(i,t,u.IS_WINDOWS?"junction":null)}else if(!(yield u.exists(t))||i){yield u.copyFile(e,t)}})}},987:(e,t,i)=>{Object.defineProperty(t,"__esModule",{value:true});t.BuildahCli=void 0;const n=i(186);const r=i(514);const s=i(622);class BuildahCli{constructor(e){this.executable=e}static getImageFormatOption(e){return["--format",e?"oci":"docker"]}async buildUsingDocker(e,t,i,n,r){const s=["bud"];i.forEach(e=>{s.push("-f");s.push(e)});n.forEach(e=>{s.push("--build-arg");s.push(e)});s.push(...BuildahCli.getImageFormatOption(r));s.push("-t");s.push(e);s.push(t);return this.execute(s)}async from(e){return this.execute(["from",e])}async copy(e,t,i){if(t.length===0){return undefined}n.debug("copy");n.debug(e);for(const n of t){const t=["copy",e,n];if(i){t.push(i)}return this.execute(t)}return undefined}async config(e,t){n.debug("config");n.debug(e);const i=["config"];if(t.entrypoint){i.push("--entrypoint");i.push(BuildahCli.convertArrayToStringArg(t.entrypoint))}if(t.port){i.push("--port");i.push(t.port)}if(t.envs){t.envs.forEach(e=>{i.push("--env");i.push(e)})}i.push(e);return this.execute(i)}async commit(e,t,i){n.debug("commit");n.debug(e);n.debug(t);const r=["commit",...BuildahCli.getImageFormatOption(i),"--squash",e,t];return this.execute(r)}async tag(e,t){const i=["tag"];for(const n of t){i.push(`${e}:${n}`)}n.info(`Tagging the built image with tags ${t.toString()}`);return this.execute(i)}static convertArrayToStringArg(e){let t="[";e.forEach(e=>{t+=`"${e}",`});return`${t.slice(0,-1)}]`}async execute(e,t={}){let i="";let n="";const o={...t};o.ignoreReturnCode=true;o.listeners={stdline:e=>{i+=e+"\n"},errline:e=>{n+=e+"\n"}};const u=await r.exec(this.executable,e,o);if(t.ignoreReturnCode!==true&&u!==0){let e=`${s.basename(this.executable)} exited with code ${u}`;if(n){e+=`\n${n}`}throw new Error(e)}return{exitCode:u,output:i,error:n}}}t.BuildahCli=BuildahCli},69:(e,t)=>{Object.defineProperty(t,"__esModule",{value:true});t.Outputs=t.Inputs=void 0;var i;(function(e){e["BASE_IMAGE"]="base-image";e["BUILD_ARGS"]="build-args";e["CONTENT"]="content";e["CONTEXT"]="context";e["DOCKERFILES"]="dockerfiles";e["ENTRYPOINT"]="entrypoint";e["ENVS"]="envs";e["IMAGE"]="image";e["OCI"]="oci";e["PORT"]="port";e["TAGS"]="tags";e["WORKDIR"]="workdir"})(i=t.Inputs||(t.Inputs={}));var n;(function(e){e["IMAGE"]="image";e["TAGS"]="tags"})(n=t.Outputs||(t.Outputs={}))},144:(e,t,i)=>{Object.defineProperty(t,"__esModule",{value:true});t.run=void 0;const n=i(186);const r=i(436);const s=i(622);const o=i(69);const u=i(987);async function run(){if(process.env.RUNNER_OS!=="Linux"){throw new Error("buildah, and therefore this action, only works on Linux. Please use a Linux runner.")}const e=await r.which("buildah",true);const t=new u.BuildahCli(e);const i=process.env.GITHUB_WORKSPACE||process.cwd();const s=getInputList(o.Inputs.DOCKERFILES);const c=n.getInput(o.Inputs.IMAGE,{required:true});const l=n.getInput(o.Inputs.TAGS)||"latest";const a=l.split(" ");const d=`${c}:${a[0]}`;const f=n.getInput(o.Inputs.OCI)==="true";if(s.length!==0){await doBuildUsingDockerFiles(t,d,i,s,f)}else{await doBuildFromScratch(t,d,f)}if(a.length>1){await t.tag(c,a)}n.setOutput(o.Outputs.IMAGE,c);n.setOutput(o.Outputs.TAGS,l)}t.run=run;async function doBuildUsingDockerFiles(e,t,i,r,u){if(r.length===1){n.info(`Performing build from Dockerfile`)}else{n.info(`Performing build from ${r.length} Dockerfiles`)}const c=s.join(i,n.getInput(o.Inputs.CONTEXT));const l=getInputList(o.Inputs.BUILD_ARGS);const a=r.map(e=>s.join(i,e));await e.buildUsingDocker(t,c,a,l,u)}async function doBuildFromScratch(e,t,i){n.info(`Performing build from scratch`);const r=n.getInput(o.Inputs.BASE_IMAGE,{required:true});const s=getInputList(o.Inputs.CONTENT);const u=getInputList(o.Inputs.ENTRYPOINT);const c=n.getInput(o.Inputs.PORT);const l=n.getInput(o.Inputs.WORKDIR);const a=getInputList(o.Inputs.ENVS);const d=await e.from(r);const f=d.output.replace("\n","");await e.copy(f,s);const p={entrypoint:u,port:c,workingdir:l,envs:a};await e.config(f,p);await e.commit(f,t,i)}function getInputList(e){const t=n.getInput(e);if(!t){return[]}return t.split(/\r?\n/).filter(e=>e).reduce((e,t)=>e.concat(t).map(e=>e.trim()),[])}run().catch(n.setFailed)},357:e=>{e.exports=require("assert")},129:e=>{e.exports=require("child_process")},614:e=>{e.exports=require("events")},747:e=>{e.exports=require("fs")},87:e=>{e.exports=require("os")},622:e=>{e.exports=require("path")},669:e=>{e.exports=require("util")}};var t={};function __webpack_require__(i){if(t[i]){return t[i].exports}var n=t[i]={exports:{}};var r=true;try{e[i].call(n.exports,n,n.exports,__webpack_require__);r=false}finally{if(r)delete t[i]}return n.exports}__webpack_require__.ab=__dirname+"/";return __webpack_require__(144)})();
//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/dist/index.js.map b/dist/index.js.map
index 921ff7f..2b80689 100644
--- a/dist/index.js.map
+++ b/dist/index.js.map
@@ -1 +1 @@
-{"version":3,"sources":["../webpack:/buildah-build/node_modules/@actions/core/lib/command.js","../webpack:/buildah-build/node_modules/@actions/core/lib/core.js","../webpack:/buildah-build/node_modules/@actions/core/lib/file-command.js","../webpack:/buildah-build/node_modules/@actions/core/lib/utils.js","../webpack:/buildah-build/node_modules/@actions/exec/lib/exec.js","../webpack:/buildah-build/node_modules/@actions/exec/lib/toolrunner.js","../webpack:/buildah-build/node_modules/@actions/io/lib/io-util.js","../webpack:/buildah-build/node_modules/@actions/io/lib/io.js","../webpack:/buildah-build/src/buildah.ts","../webpack:/buildah-build/src/index.ts","../webpack:/buildah-build/external \"assert\"","../webpack:/buildah-build/external \"child_process\"","../webpack:/buildah-build/external \"events\"","../webpack:/buildah-build/external \"fs\"","../webpack:/buildah-build/external \"os\"","../webpack:/buildah-build/external \"path\"","../webpack:/buildah-build/external \"util\"","../webpack:/buildah-build/webpack/bootstrap","../webpack:/buildah-build/webpack/runtime/compat","../webpack:/buildah-build/webpack/startup"],"names":["__importStar","this","mod","__esModule","result","k","Object","hasOwnProperty","call","defineProperty","exports","value","os","__webpack_require__","utils_1","issueCommand","command","properties","message","cmd","Command","process","stdout","write","toString","EOL","issue","name","CMD_STRING","[object Object]","cmdStr","keys","length","first","key","val","escapeProperty","escapeData","s","toCommandValue","replace","__awaiter","thisArg","_arguments","P","generator","adopt","resolve","Promise","reject","fulfilled","step","next","e","rejected","done","then","apply","command_1","file_command_1","path","ExitCode","exportVariable","convertedVal","env","filePath","delimiter","commandValue","setSecret","secret","addPath","inputPath","getInput","options","toUpperCase","required","Error","trim","setOutput","setCommandEcho","enabled","setFailed","exitCode","Failure","error","isDebug","debug","warning","info","startGroup","endGroup","group","fn","saveState","getState","fs","existsSync","appendFileSync","encoding","input","undefined","String","JSON","stringify","tr","exec","commandLine","args","commandArgs","argStringToArray","toolPath","slice","concat","runner","ToolRunner","events","child","io","ioUtil","IS_WINDOWS","platform","EventEmitter","super","listeners","noPrefix","_getSpawnFileName","_getSpawnArgs","_isCmdFile","a","windowsVerbatimArguments","_windowsQuoteCmdArg","data","strBuffer","onLine","n","indexOf","line","substring","err","_debug","argline","str","end","endsWith","upperToolPath","_endsWith","arg","_uvQuoteCmdArg","cmdSpecialChars","needsQuotes","char","some","x","reverse","quoteHit","i","split","join","includes","cwd","silent","failOnStdErr","ignoreReturnCode","delay","outStream","errStream","stderr","argv0","isRooted","which","optionsNonNull","_cloneExecOptions","_getCommandString","state","ExecState","on","fileName","cp","spawn","_getSpawnOptions","stdbuffer","_processLineBuffer","stdline","errbuffer","processStderr","errline","processError","processExited","processClosed","CheckComplete","code","processExitCode","emit","removeAllListeners","stdin","argString","inQuotes","escaped","append","c","charAt","push","timeout","_setResult","setTimeout","HandleTimeout","clearTimeout","_a","assert_1","promises","chmod","copyFile","lstat","mkdir","readdir","readlink","rename","rmdir","stat","symlink","unlink","exists","fsPath","isDirectory","useStat","stats","p","normalizeSeparators","startsWith","test","mkdirP","maxDepth","depth","ok","dirname","err2","tryGetExecutablePath","extensions","console","log","isFile","upperExt","extname","validExt","isUnixExecutable","originalFilePath","extension","directory","upperName","basename","actualName","mode","gid","getgid","uid","getuid","childProcess","util_1","promisify","source","dest","force","recursive","readCopyOptions","destStat","newDest","sourceStat","cpDirRecursive","relative","mv","destExists","rmRF","isDir","tool","check","PATHEXT","directories","PATH","sep","Boolean","sourceDir","destDir","currentDepth","files","srcFile","destFile","srcFileStat","isSymbolicLink","symlinkFull","core","BuildahCli","executable","useOCI","image","context","dockerFiles","buildArgs","forEach","file","buildArg","getImageFormatOption","execute","baseImage","container","contentToCopy","contentPath","content","settings","entrypoint","convertArrayToStringArg","port","envs","newImageName","imageName","tags","tag","arrayAsString","execOptions","finalExecOptions","output","buildah_1","async","run","RUNNER_OS","buildahPath","cli","workspace","GITHUB_WORKSPACE","getInputList","tagsList","newImage","doBuildUsingDockerFiles","doBuildFromScratch","dockerFileAbsPaths","map","buildUsingDocker","workingDir","from","containerId","copy","newImageConfig","workingdir","config","commit","items","filter","reduce","acc","pat","catch","module","require","__webpack_module_cache__","moduleId","threw","__webpack_modules__","ab","__dirname"],"mappings":"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","file":"index.js","sourcesContent":["\"use strict\";\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst os = __importStar(require(\"os\"));\nconst utils_1 = require(\"./utils\");\n/**\n * Commands\n *\n * Command Format:\n * ::name key=value,key=value::message\n *\n * Examples:\n * ::warning::This is the message\n * ::set-env name=MY_VAR::some value\n */\nfunction issueCommand(command, properties, message) {\n const cmd = new Command(command, properties, message);\n process.stdout.write(cmd.toString() + os.EOL);\n}\nexports.issueCommand = issueCommand;\nfunction issue(name, message = '') {\n issueCommand(name, {}, message);\n}\nexports.issue = issue;\nconst CMD_STRING = '::';\nclass Command {\n constructor(command, properties, message) {\n if (!command) {\n command = 'missing.command';\n }\n this.command = command;\n this.properties = properties;\n this.message = message;\n }\n toString() {\n let cmdStr = CMD_STRING + this.command;\n if (this.properties && Object.keys(this.properties).length > 0) {\n cmdStr += ' ';\n let first = true;\n for (const key in this.properties) {\n if (this.properties.hasOwnProperty(key)) {\n const val = this.properties[key];\n if (val) {\n if (first) {\n first = false;\n }\n else {\n cmdStr += ',';\n }\n cmdStr += `${key}=${escapeProperty(val)}`;\n }\n }\n }\n }\n cmdStr += `${CMD_STRING}${escapeData(this.message)}`;\n return cmdStr;\n }\n}\nfunction escapeData(s) {\n return utils_1.toCommandValue(s)\n .replace(/%/g, '%25')\n .replace(/\\r/g, '%0D')\n .replace(/\\n/g, '%0A');\n}\nfunction escapeProperty(s) {\n return utils_1.toCommandValue(s)\n .replace(/%/g, '%25')\n .replace(/\\r/g, '%0D')\n .replace(/\\n/g, '%0A')\n .replace(/:/g, '%3A')\n .replace(/,/g, '%2C');\n}\n//# sourceMappingURL=command.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst command_1 = require(\"./command\");\nconst file_command_1 = require(\"./file-command\");\nconst utils_1 = require(\"./utils\");\nconst os = __importStar(require(\"os\"));\nconst path = __importStar(require(\"path\"));\n/**\n * The code to exit an action\n */\nvar ExitCode;\n(function (ExitCode) {\n /**\n * A code indicating that the action was successful\n */\n ExitCode[ExitCode[\"Success\"] = 0] = \"Success\";\n /**\n * A code indicating that the action was a failure\n */\n ExitCode[ExitCode[\"Failure\"] = 1] = \"Failure\";\n})(ExitCode = exports.ExitCode || (exports.ExitCode = {}));\n//-----------------------------------------------------------------------\n// Variables\n//-----------------------------------------------------------------------\n/**\n * Sets env variable for this action and future actions in the job\n * @param name the name of the variable to set\n * @param val the value of the variable. Non-string values will be converted to a string via JSON.stringify\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction exportVariable(name, val) {\n const convertedVal = utils_1.toCommandValue(val);\n process.env[name] = convertedVal;\n const filePath = process.env['GITHUB_ENV'] || '';\n if (filePath) {\n const delimiter = '_GitHubActionsFileCommandDelimeter_';\n const commandValue = `${name}<<${delimiter}${os.EOL}${convertedVal}${os.EOL}${delimiter}`;\n file_command_1.issueCommand('ENV', commandValue);\n }\n else {\n command_1.issueCommand('set-env', { name }, convertedVal);\n }\n}\nexports.exportVariable = exportVariable;\n/**\n * Registers a secret which will get masked from logs\n * @param secret value of the secret\n */\nfunction setSecret(secret) {\n command_1.issueCommand('add-mask', {}, secret);\n}\nexports.setSecret = setSecret;\n/**\n * Prepends inputPath to the PATH (for this action and future actions)\n * @param inputPath\n */\nfunction addPath(inputPath) {\n const filePath = process.env['GITHUB_PATH'] || '';\n if (filePath) {\n file_command_1.issueCommand('PATH', inputPath);\n }\n else {\n command_1.issueCommand('add-path', {}, inputPath);\n }\n process.env['PATH'] = `${inputPath}${path.delimiter}${process.env['PATH']}`;\n}\nexports.addPath = addPath;\n/**\n * Gets the value of an input. The value is also trimmed.\n *\n * @param name name of the input to get\n * @param options optional. See InputOptions.\n * @returns string\n */\nfunction getInput(name, options) {\n const val = process.env[`INPUT_${name.replace(/ /g, '_').toUpperCase()}`] || '';\n if (options && options.required && !val) {\n throw new Error(`Input required and not supplied: ${name}`);\n }\n return val.trim();\n}\nexports.getInput = getInput;\n/**\n * Sets the value of an output.\n *\n * @param name name of the output to set\n * @param value value to store. Non-string values will be converted to a string via JSON.stringify\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction setOutput(name, value) {\n command_1.issueCommand('set-output', { name }, value);\n}\nexports.setOutput = setOutput;\n/**\n * Enables or disables the echoing of commands into stdout for the rest of the step.\n * Echoing is disabled by default if ACTIONS_STEP_DEBUG is not set.\n *\n */\nfunction setCommandEcho(enabled) {\n command_1.issue('echo', enabled ? 'on' : 'off');\n}\nexports.setCommandEcho = setCommandEcho;\n//-----------------------------------------------------------------------\n// Results\n//-----------------------------------------------------------------------\n/**\n * Sets the action status to failed.\n * When the action exits it will be with an exit code of 1\n * @param message add error issue message\n */\nfunction setFailed(message) {\n process.exitCode = ExitCode.Failure;\n error(message);\n}\nexports.setFailed = setFailed;\n//-----------------------------------------------------------------------\n// Logging Commands\n//-----------------------------------------------------------------------\n/**\n * Gets whether Actions Step Debug is on or not\n */\nfunction isDebug() {\n return process.env['RUNNER_DEBUG'] === '1';\n}\nexports.isDebug = isDebug;\n/**\n * Writes debug message to user log\n * @param message debug message\n */\nfunction debug(message) {\n command_1.issueCommand('debug', {}, message);\n}\nexports.debug = debug;\n/**\n * Adds an error issue\n * @param message error issue message. Errors will be converted to string via toString()\n */\nfunction error(message) {\n command_1.issue('error', message instanceof Error ? message.toString() : message);\n}\nexports.error = error;\n/**\n * Adds an warning issue\n * @param message warning issue message. Errors will be converted to string via toString()\n */\nfunction warning(message) {\n command_1.issue('warning', message instanceof Error ? message.toString() : message);\n}\nexports.warning = warning;\n/**\n * Writes info to log with console.log.\n * @param message info message\n */\nfunction info(message) {\n process.stdout.write(message + os.EOL);\n}\nexports.info = info;\n/**\n * Begin an output group.\n *\n * Output until the next `groupEnd` will be foldable in this group\n *\n * @param name The name of the output group\n */\nfunction startGroup(name) {\n command_1.issue('group', name);\n}\nexports.startGroup = startGroup;\n/**\n * End an output group.\n */\nfunction endGroup() {\n command_1.issue('endgroup');\n}\nexports.endGroup = endGroup;\n/**\n * Wrap an asynchronous function call in a group.\n *\n * Returns the same type as the function itself.\n *\n * @param name The name of the group\n * @param fn The function to wrap in the group\n */\nfunction group(name, fn) {\n return __awaiter(this, void 0, void 0, function* () {\n startGroup(name);\n let result;\n try {\n result = yield fn();\n }\n finally {\n endGroup();\n }\n return result;\n });\n}\nexports.group = group;\n//-----------------------------------------------------------------------\n// Wrapper action state\n//-----------------------------------------------------------------------\n/**\n * Saves state for current action, the state can only be retrieved by this action's post job execution.\n *\n * @param name name of the state to store\n * @param value value to store. Non-string values will be converted to a string via JSON.stringify\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction saveState(name, value) {\n command_1.issueCommand('save-state', { name }, value);\n}\nexports.saveState = saveState;\n/**\n * Gets the value of an state set by this action's main execution.\n *\n * @param name name of the state to get\n * @returns string\n */\nfunction getState(name) {\n return process.env[`STATE_${name}`] || '';\n}\nexports.getState = getState;\n//# sourceMappingURL=core.js.map","\"use strict\";\n// For internal use, subject to change.\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n// We use any as a valid input type\n/* eslint-disable @typescript-eslint/no-explicit-any */\nconst fs = __importStar(require(\"fs\"));\nconst os = __importStar(require(\"os\"));\nconst utils_1 = require(\"./utils\");\nfunction issueCommand(command, message) {\n const filePath = process.env[`GITHUB_${command}`];\n if (!filePath) {\n throw new Error(`Unable to find environment variable for file command ${command}`);\n }\n if (!fs.existsSync(filePath)) {\n throw new Error(`Missing file at path: ${filePath}`);\n }\n fs.appendFileSync(filePath, `${utils_1.toCommandValue(message)}${os.EOL}`, {\n encoding: 'utf8'\n });\n}\nexports.issueCommand = issueCommand;\n//# sourceMappingURL=file-command.js.map","\"use strict\";\n// We use any as a valid input type\n/* eslint-disable @typescript-eslint/no-explicit-any */\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Sanitizes an input into a string so it can be passed into issueCommand safely\n * @param input input to sanitize into a string\n */\nfunction toCommandValue(input) {\n if (input === null || input === undefined) {\n return '';\n }\n else if (typeof input === 'string' || input instanceof String) {\n return input;\n }\n return JSON.stringify(input);\n}\nexports.toCommandValue = toCommandValue;\n//# sourceMappingURL=utils.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst tr = __importStar(require(\"./toolrunner\"));\n/**\n * Exec a command.\n * Output will be streamed to the live console.\n * Returns promise with return code\n *\n * @param commandLine command to execute (can include additional args). Must be correctly escaped.\n * @param args optional arguments for tool. Escaping is handled by the lib.\n * @param options optional exec options. See ExecOptions\n * @returns Promise exit code\n */\nfunction exec(commandLine, args, options) {\n return __awaiter(this, void 0, void 0, function* () {\n const commandArgs = tr.argStringToArray(commandLine);\n if (commandArgs.length === 0) {\n throw new Error(`Parameter 'commandLine' cannot be null or empty.`);\n }\n // Path to tool to execute should be first arg\n const toolPath = commandArgs[0];\n args = commandArgs.slice(1).concat(args || []);\n const runner = new tr.ToolRunner(toolPath, args, options);\n return runner.exec();\n });\n}\nexports.exec = exec;\n//# sourceMappingURL=exec.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst os = __importStar(require(\"os\"));\nconst events = __importStar(require(\"events\"));\nconst child = __importStar(require(\"child_process\"));\nconst path = __importStar(require(\"path\"));\nconst io = __importStar(require(\"@actions/io\"));\nconst ioUtil = __importStar(require(\"@actions/io/lib/io-util\"));\n/* eslint-disable @typescript-eslint/unbound-method */\nconst IS_WINDOWS = process.platform === 'win32';\n/*\n * Class for running command line tools. Handles quoting and arg parsing in a platform agnostic way.\n */\nclass ToolRunner extends events.EventEmitter {\n constructor(toolPath, args, options) {\n super();\n if (!toolPath) {\n throw new Error(\"Parameter 'toolPath' cannot be null or empty.\");\n }\n this.toolPath = toolPath;\n this.args = args || [];\n this.options = options || {};\n }\n _debug(message) {\n if (this.options.listeners && this.options.listeners.debug) {\n this.options.listeners.debug(message);\n }\n }\n _getCommandString(options, noPrefix) {\n const toolPath = this._getSpawnFileName();\n const args = this._getSpawnArgs(options);\n let cmd = noPrefix ? '' : '[command]'; // omit prefix when piped to a second tool\n if (IS_WINDOWS) {\n // Windows + cmd file\n if (this._isCmdFile()) {\n cmd += toolPath;\n for (const a of args) {\n cmd += ` ${a}`;\n }\n }\n // Windows + verbatim\n else if (options.windowsVerbatimArguments) {\n cmd += `\"${toolPath}\"`;\n for (const a of args) {\n cmd += ` ${a}`;\n }\n }\n // Windows (regular)\n else {\n cmd += this._windowsQuoteCmdArg(toolPath);\n for (const a of args) {\n cmd += ` ${this._windowsQuoteCmdArg(a)}`;\n }\n }\n }\n else {\n // OSX/Linux - this can likely be improved with some form of quoting.\n // creating processes on Unix is fundamentally different than Windows.\n // on Unix, execvp() takes an arg array.\n cmd += toolPath;\n for (const a of args) {\n cmd += ` ${a}`;\n }\n }\n return cmd;\n }\n _processLineBuffer(data, strBuffer, onLine) {\n try {\n let s = strBuffer + data.toString();\n let n = s.indexOf(os.EOL);\n while (n > -1) {\n const line = s.substring(0, n);\n onLine(line);\n // the rest of the string ...\n s = s.substring(n + os.EOL.length);\n n = s.indexOf(os.EOL);\n }\n strBuffer = s;\n }\n catch (err) {\n // streaming lines to console is best effort. Don't fail a build.\n this._debug(`error processing line. Failed with error ${err}`);\n }\n }\n _getSpawnFileName() {\n if (IS_WINDOWS) {\n if (this._isCmdFile()) {\n return process.env['COMSPEC'] || 'cmd.exe';\n }\n }\n return this.toolPath;\n }\n _getSpawnArgs(options) {\n if (IS_WINDOWS) {\n if (this._isCmdFile()) {\n let argline = `/D /S /C \"${this._windowsQuoteCmdArg(this.toolPath)}`;\n for (const a of this.args) {\n argline += ' ';\n argline += options.windowsVerbatimArguments\n ? a\n : this._windowsQuoteCmdArg(a);\n }\n argline += '\"';\n return [argline];\n }\n }\n return this.args;\n }\n _endsWith(str, end) {\n return str.endsWith(end);\n }\n _isCmdFile() {\n const upperToolPath = this.toolPath.toUpperCase();\n return (this._endsWith(upperToolPath, '.CMD') ||\n this._endsWith(upperToolPath, '.BAT'));\n }\n _windowsQuoteCmdArg(arg) {\n // for .exe, apply the normal quoting rules that libuv applies\n if (!this._isCmdFile()) {\n return this._uvQuoteCmdArg(arg);\n }\n // otherwise apply quoting rules specific to the cmd.exe command line parser.\n // the libuv rules are generic and are not designed specifically for cmd.exe\n // command line parser.\n //\n // for a detailed description of the cmd.exe command line parser, refer to\n // http://stackoverflow.com/questions/4094699/how-does-the-windows-command-interpreter-cmd-exe-parse-scripts/7970912#7970912\n // need quotes for empty arg\n if (!arg) {\n return '\"\"';\n }\n // determine whether the arg needs to be quoted\n const cmdSpecialChars = [\n ' ',\n '\\t',\n '&',\n '(',\n ')',\n '[',\n ']',\n '{',\n '}',\n '^',\n '=',\n ';',\n '!',\n \"'\",\n '+',\n ',',\n '`',\n '~',\n '|',\n '<',\n '>',\n '\"'\n ];\n let needsQuotes = false;\n for (const char of arg) {\n if (cmdSpecialChars.some(x => x === char)) {\n needsQuotes = true;\n break;\n }\n }\n // short-circuit if quotes not needed\n if (!needsQuotes) {\n return arg;\n }\n // the following quoting rules are very similar to the rules that by libuv applies.\n //\n // 1) wrap the string in quotes\n //\n // 2) double-up quotes - i.e. \" => \"\"\n //\n // this is different from the libuv quoting rules. libuv replaces \" with \\\", which unfortunately\n // doesn't work well with a cmd.exe command line.\n //\n // note, replacing \" with \"\" also works well if the arg is passed to a downstream .NET console app.\n // for example, the command line:\n // foo.exe \"myarg:\"\"my val\"\"\"\n // is parsed by a .NET console app into an arg array:\n // [ \"myarg:\\\"my val\\\"\" ]\n // which is the same end result when applying libuv quoting rules. although the actual\n // command line from libuv quoting rules would look like:\n // foo.exe \"myarg:\\\"my val\\\"\"\n //\n // 3) double-up slashes that precede a quote,\n // e.g. hello \\world => \"hello \\world\"\n // hello\\\"world => \"hello\\\\\"\"world\"\n // hello\\\\\"world => \"hello\\\\\\\\\"\"world\"\n // hello world\\ => \"hello world\\\\\"\n //\n // technically this is not required for a cmd.exe command line, or the batch argument parser.\n // the reasons for including this as a .cmd quoting rule are:\n //\n // a) this is optimized for the scenario where the argument is passed from the .cmd file to an\n // external program. many programs (e.g. .NET console apps) rely on the slash-doubling rule.\n //\n // b) it's what we've been doing previously (by deferring to node default behavior) and we\n // haven't heard any complaints about that aspect.\n //\n // note, a weakness of the quoting rules chosen here, is that % is not escaped. in fact, % cannot be\n // escaped when used on the command line directly - even though within a .cmd file % can be escaped\n // by using %%.\n //\n // the saving grace is, on the command line, %var% is left as-is if var is not defined. this contrasts\n // the line parsing rules within a .cmd file, where if var is not defined it is replaced with nothing.\n //\n // one option that was explored was replacing % with ^% - i.e. %var% => ^%var^%. this hack would\n // often work, since it is unlikely that var^ would exist, and the ^ character is removed when the\n // variable is used. the problem, however, is that ^ is not removed when %* is used to pass the args\n // to an external program.\n //\n // an unexplored potential solution for the % escaping problem, is to create a wrapper .cmd file.\n // % can be escaped within a .cmd file.\n let reverse = '\"';\n let quoteHit = true;\n for (let i = arg.length; i > 0; i--) {\n // walk the string in reverse\n reverse += arg[i - 1];\n if (quoteHit && arg[i - 1] === '\\\\') {\n reverse += '\\\\'; // double the slash\n }\n else if (arg[i - 1] === '\"') {\n quoteHit = true;\n reverse += '\"'; // double the quote\n }\n else {\n quoteHit = false;\n }\n }\n reverse += '\"';\n return reverse\n .split('')\n .reverse()\n .join('');\n }\n _uvQuoteCmdArg(arg) {\n // Tool runner wraps child_process.spawn() and needs to apply the same quoting as\n // Node in certain cases where the undocumented spawn option windowsVerbatimArguments\n // is used.\n //\n // Since this function is a port of quote_cmd_arg from Node 4.x (technically, lib UV,\n // see https://github.com/nodejs/node/blob/v4.x/deps/uv/src/win/process.c for details),\n // pasting copyright notice from Node within this function:\n //\n // Copyright Joyent, Inc. and other Node contributors. All rights reserved.\n //\n // Permission is hereby granted, free of charge, to any person obtaining a copy\n // of this software and associated documentation files (the \"Software\"), to\n // deal in the Software without restriction, including without limitation the\n // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n // sell copies of the Software, and to permit persons to whom the Software is\n // furnished to do so, subject to the following conditions:\n //\n // The above copyright notice and this permission notice shall be included in\n // all copies or substantial portions of the Software.\n //\n // THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n // IN THE SOFTWARE.\n if (!arg) {\n // Need double quotation for empty argument\n return '\"\"';\n }\n if (!arg.includes(' ') && !arg.includes('\\t') && !arg.includes('\"')) {\n // No quotation needed\n return arg;\n }\n if (!arg.includes('\"') && !arg.includes('\\\\')) {\n // No embedded double quotes or backslashes, so I can just wrap\n // quote marks around the whole thing.\n return `\"${arg}\"`;\n }\n // Expected input/output:\n // input : hello\"world\n // output: \"hello\\\"world\"\n // input : hello\"\"world\n // output: \"hello\\\"\\\"world\"\n // input : hello\\world\n // output: hello\\world\n // input : hello\\\\world\n // output: hello\\\\world\n // input : hello\\\"world\n // output: \"hello\\\\\\\"world\"\n // input : hello\\\\\"world\n // output: \"hello\\\\\\\\\\\"world\"\n // input : hello world\\\n // output: \"hello world\\\\\" - note the comment in libuv actually reads \"hello world\\\"\n // but it appears the comment is wrong, it should be \"hello world\\\\\"\n let reverse = '\"';\n let quoteHit = true;\n for (let i = arg.length; i > 0; i--) {\n // walk the string in reverse\n reverse += arg[i - 1];\n if (quoteHit && arg[i - 1] === '\\\\') {\n reverse += '\\\\';\n }\n else if (arg[i - 1] === '\"') {\n quoteHit = true;\n reverse += '\\\\';\n }\n else {\n quoteHit = false;\n }\n }\n reverse += '\"';\n return reverse\n .split('')\n .reverse()\n .join('');\n }\n _cloneExecOptions(options) {\n options = options || {};\n const result = {\n cwd: options.cwd || process.cwd(),\n env: options.env || process.env,\n silent: options.silent || false,\n windowsVerbatimArguments: options.windowsVerbatimArguments || false,\n failOnStdErr: options.failOnStdErr || false,\n ignoreReturnCode: options.ignoreReturnCode || false,\n delay: options.delay || 10000\n };\n result.outStream = options.outStream || process.stdout;\n result.errStream = options.errStream || process.stderr;\n return result;\n }\n _getSpawnOptions(options, toolPath) {\n options = options || {};\n const result = {};\n result.cwd = options.cwd;\n result.env = options.env;\n result['windowsVerbatimArguments'] =\n options.windowsVerbatimArguments || this._isCmdFile();\n if (options.windowsVerbatimArguments) {\n result.argv0 = `\"${toolPath}\"`;\n }\n return result;\n }\n /**\n * Exec a tool.\n * Output will be streamed to the live console.\n * Returns promise with return code\n *\n * @param tool path to tool to exec\n * @param options optional exec options. See ExecOptions\n * @returns number\n */\n exec() {\n return __awaiter(this, void 0, void 0, function* () {\n // root the tool path if it is unrooted and contains relative pathing\n if (!ioUtil.isRooted(this.toolPath) &&\n (this.toolPath.includes('/') ||\n (IS_WINDOWS && this.toolPath.includes('\\\\')))) {\n // prefer options.cwd if it is specified, however options.cwd may also need to be rooted\n this.toolPath = path.resolve(process.cwd(), this.options.cwd || process.cwd(), this.toolPath);\n }\n // if the tool is only a file name, then resolve it from the PATH\n // otherwise verify it exists (add extension on Windows if necessary)\n this.toolPath = yield io.which(this.toolPath, true);\n return new Promise((resolve, reject) => {\n this._debug(`exec tool: ${this.toolPath}`);\n this._debug('arguments:');\n for (const arg of this.args) {\n this._debug(` ${arg}`);\n }\n const optionsNonNull = this._cloneExecOptions(this.options);\n if (!optionsNonNull.silent && optionsNonNull.outStream) {\n optionsNonNull.outStream.write(this._getCommandString(optionsNonNull) + os.EOL);\n }\n const state = new ExecState(optionsNonNull, this.toolPath);\n state.on('debug', (message) => {\n this._debug(message);\n });\n const fileName = this._getSpawnFileName();\n const cp = child.spawn(fileName, this._getSpawnArgs(optionsNonNull), this._getSpawnOptions(this.options, fileName));\n const stdbuffer = '';\n if (cp.stdout) {\n cp.stdout.on('data', (data) => {\n if (this.options.listeners && this.options.listeners.stdout) {\n this.options.listeners.stdout(data);\n }\n if (!optionsNonNull.silent && optionsNonNull.outStream) {\n optionsNonNull.outStream.write(data);\n }\n this._processLineBuffer(data, stdbuffer, (line) => {\n if (this.options.listeners && this.options.listeners.stdline) {\n this.options.listeners.stdline(line);\n }\n });\n });\n }\n const errbuffer = '';\n if (cp.stderr) {\n cp.stderr.on('data', (data) => {\n state.processStderr = true;\n if (this.options.listeners && this.options.listeners.stderr) {\n this.options.listeners.stderr(data);\n }\n if (!optionsNonNull.silent &&\n optionsNonNull.errStream &&\n optionsNonNull.outStream) {\n const s = optionsNonNull.failOnStdErr\n ? optionsNonNull.errStream\n : optionsNonNull.outStream;\n s.write(data);\n }\n this._processLineBuffer(data, errbuffer, (line) => {\n if (this.options.listeners && this.options.listeners.errline) {\n this.options.listeners.errline(line);\n }\n });\n });\n }\n cp.on('error', (err) => {\n state.processError = err.message;\n state.processExited = true;\n state.processClosed = true;\n state.CheckComplete();\n });\n cp.on('exit', (code) => {\n state.processExitCode = code;\n state.processExited = true;\n this._debug(`Exit code ${code} received from tool '${this.toolPath}'`);\n state.CheckComplete();\n });\n cp.on('close', (code) => {\n state.processExitCode = code;\n state.processExited = true;\n state.processClosed = true;\n this._debug(`STDIO streams have closed for tool '${this.toolPath}'`);\n state.CheckComplete();\n });\n state.on('done', (error, exitCode) => {\n if (stdbuffer.length > 0) {\n this.emit('stdline', stdbuffer);\n }\n if (errbuffer.length > 0) {\n this.emit('errline', errbuffer);\n }\n cp.removeAllListeners();\n if (error) {\n reject(error);\n }\n else {\n resolve(exitCode);\n }\n });\n if (this.options.input) {\n if (!cp.stdin) {\n throw new Error('child process missing stdin');\n }\n cp.stdin.end(this.options.input);\n }\n });\n });\n }\n}\nexports.ToolRunner = ToolRunner;\n/**\n * Convert an arg string to an array of args. Handles escaping\n *\n * @param argString string of arguments\n * @returns string[] array of arguments\n */\nfunction argStringToArray(argString) {\n const args = [];\n let inQuotes = false;\n let escaped = false;\n let arg = '';\n function append(c) {\n // we only escape double quotes.\n if (escaped && c !== '\"') {\n arg += '\\\\';\n }\n arg += c;\n escaped = false;\n }\n for (let i = 0; i < argString.length; i++) {\n const c = argString.charAt(i);\n if (c === '\"') {\n if (!escaped) {\n inQuotes = !inQuotes;\n }\n else {\n append(c);\n }\n continue;\n }\n if (c === '\\\\' && escaped) {\n append(c);\n continue;\n }\n if (c === '\\\\' && inQuotes) {\n escaped = true;\n continue;\n }\n if (c === ' ' && !inQuotes) {\n if (arg.length > 0) {\n args.push(arg);\n arg = '';\n }\n continue;\n }\n append(c);\n }\n if (arg.length > 0) {\n args.push(arg.trim());\n }\n return args;\n}\nexports.argStringToArray = argStringToArray;\nclass ExecState extends events.EventEmitter {\n constructor(options, toolPath) {\n super();\n this.processClosed = false; // tracks whether the process has exited and stdio is closed\n this.processError = '';\n this.processExitCode = 0;\n this.processExited = false; // tracks whether the process has exited\n this.processStderr = false; // tracks whether stderr was written to\n this.delay = 10000; // 10 seconds\n this.done = false;\n this.timeout = null;\n if (!toolPath) {\n throw new Error('toolPath must not be empty');\n }\n this.options = options;\n this.toolPath = toolPath;\n if (options.delay) {\n this.delay = options.delay;\n }\n }\n CheckComplete() {\n if (this.done) {\n return;\n }\n if (this.processClosed) {\n this._setResult();\n }\n else if (this.processExited) {\n this.timeout = setTimeout(ExecState.HandleTimeout, this.delay, this);\n }\n }\n _debug(message) {\n this.emit('debug', message);\n }\n _setResult() {\n // determine whether there is an error\n let error;\n if (this.processExited) {\n if (this.processError) {\n error = new Error(`There was an error when attempting to execute the process '${this.toolPath}'. This may indicate the process failed to start. Error: ${this.processError}`);\n }\n else if (this.processExitCode !== 0 && !this.options.ignoreReturnCode) {\n error = new Error(`The process '${this.toolPath}' failed with exit code ${this.processExitCode}`);\n }\n else if (this.processStderr && this.options.failOnStdErr) {\n error = new Error(`The process '${this.toolPath}' failed because one or more lines were written to the STDERR stream`);\n }\n }\n // clear the timeout\n if (this.timeout) {\n clearTimeout(this.timeout);\n this.timeout = null;\n }\n this.done = true;\n this.emit('done', error, this.processExitCode);\n }\n static HandleTimeout(state) {\n if (state.done) {\n return;\n }\n if (!state.processClosed && state.processExited) {\n const message = `The STDIO streams did not close within ${state.delay /\n 1000} seconds of the exit event from process '${state.toolPath}'. This may indicate a child process inherited the STDIO streams and has not yet exited.`;\n state._debug(message);\n }\n state._setResult();\n }\n}\n//# sourceMappingURL=toolrunner.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar _a;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst assert_1 = require(\"assert\");\nconst fs = require(\"fs\");\nconst path = require(\"path\");\n_a = fs.promises, exports.chmod = _a.chmod, exports.copyFile = _a.copyFile, exports.lstat = _a.lstat, exports.mkdir = _a.mkdir, exports.readdir = _a.readdir, exports.readlink = _a.readlink, exports.rename = _a.rename, exports.rmdir = _a.rmdir, exports.stat = _a.stat, exports.symlink = _a.symlink, exports.unlink = _a.unlink;\nexports.IS_WINDOWS = process.platform === 'win32';\nfunction exists(fsPath) {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n yield exports.stat(fsPath);\n }\n catch (err) {\n if (err.code === 'ENOENT') {\n return false;\n }\n throw err;\n }\n return true;\n });\n}\nexports.exists = exists;\nfunction isDirectory(fsPath, useStat = false) {\n return __awaiter(this, void 0, void 0, function* () {\n const stats = useStat ? yield exports.stat(fsPath) : yield exports.lstat(fsPath);\n return stats.isDirectory();\n });\n}\nexports.isDirectory = isDirectory;\n/**\n * On OSX/Linux, true if path starts with '/'. On Windows, true for paths like:\n * \\, \\hello, \\\\hello\\share, C:, and C:\\hello (and corresponding alternate separator cases).\n */\nfunction isRooted(p) {\n p = normalizeSeparators(p);\n if (!p) {\n throw new Error('isRooted() parameter \"p\" cannot be empty');\n }\n if (exports.IS_WINDOWS) {\n return (p.startsWith('\\\\') || /^[A-Z]:/i.test(p) // e.g. \\ or \\hello or \\\\hello\n ); // e.g. C: or C:\\hello\n }\n return p.startsWith('/');\n}\nexports.isRooted = isRooted;\n/**\n * Recursively create a directory at `fsPath`.\n *\n * This implementation is optimistic, meaning it attempts to create the full\n * path first, and backs up the path stack from there.\n *\n * @param fsPath The path to create\n * @param maxDepth The maximum recursion depth\n * @param depth The current recursion depth\n */\nfunction mkdirP(fsPath, maxDepth = 1000, depth = 1) {\n return __awaiter(this, void 0, void 0, function* () {\n assert_1.ok(fsPath, 'a path argument must be provided');\n fsPath = path.resolve(fsPath);\n if (depth >= maxDepth)\n return exports.mkdir(fsPath);\n try {\n yield exports.mkdir(fsPath);\n return;\n }\n catch (err) {\n switch (err.code) {\n case 'ENOENT': {\n yield mkdirP(path.dirname(fsPath), maxDepth, depth + 1);\n yield exports.mkdir(fsPath);\n return;\n }\n default: {\n let stats;\n try {\n stats = yield exports.stat(fsPath);\n }\n catch (err2) {\n throw err;\n }\n if (!stats.isDirectory())\n throw err;\n }\n }\n }\n });\n}\nexports.mkdirP = mkdirP;\n/**\n * Best effort attempt to determine whether a file exists and is executable.\n * @param filePath file path to check\n * @param extensions additional file extensions to try\n * @return if file exists and is executable, returns the file path. otherwise empty string.\n */\nfunction tryGetExecutablePath(filePath, extensions) {\n return __awaiter(this, void 0, void 0, function* () {\n let stats = undefined;\n try {\n // test file exists\n stats = yield exports.stat(filePath);\n }\n catch (err) {\n if (err.code !== 'ENOENT') {\n // eslint-disable-next-line no-console\n console.log(`Unexpected error attempting to determine if executable file exists '${filePath}': ${err}`);\n }\n }\n if (stats && stats.isFile()) {\n if (exports.IS_WINDOWS) {\n // on Windows, test for valid extension\n const upperExt = path.extname(filePath).toUpperCase();\n if (extensions.some(validExt => validExt.toUpperCase() === upperExt)) {\n return filePath;\n }\n }\n else {\n if (isUnixExecutable(stats)) {\n return filePath;\n }\n }\n }\n // try each extension\n const originalFilePath = filePath;\n for (const extension of extensions) {\n filePath = originalFilePath + extension;\n stats = undefined;\n try {\n stats = yield exports.stat(filePath);\n }\n catch (err) {\n if (err.code !== 'ENOENT') {\n // eslint-disable-next-line no-console\n console.log(`Unexpected error attempting to determine if executable file exists '${filePath}': ${err}`);\n }\n }\n if (stats && stats.isFile()) {\n if (exports.IS_WINDOWS) {\n // preserve the case of the actual file (since an extension was appended)\n try {\n const directory = path.dirname(filePath);\n const upperName = path.basename(filePath).toUpperCase();\n for (const actualName of yield exports.readdir(directory)) {\n if (upperName === actualName.toUpperCase()) {\n filePath = path.join(directory, actualName);\n break;\n }\n }\n }\n catch (err) {\n // eslint-disable-next-line no-console\n console.log(`Unexpected error attempting to determine the actual case of the file '${filePath}': ${err}`);\n }\n return filePath;\n }\n else {\n if (isUnixExecutable(stats)) {\n return filePath;\n }\n }\n }\n }\n return '';\n });\n}\nexports.tryGetExecutablePath = tryGetExecutablePath;\nfunction normalizeSeparators(p) {\n p = p || '';\n if (exports.IS_WINDOWS) {\n // convert slashes on Windows\n p = p.replace(/\\//g, '\\\\');\n // remove redundant slashes\n return p.replace(/\\\\\\\\+/g, '\\\\');\n }\n // remove redundant slashes\n return p.replace(/\\/\\/+/g, '/');\n}\n// on Mac/Linux, test the execute bit\n// R W X R W X R W X\n// 256 128 64 32 16 8 4 2 1\nfunction isUnixExecutable(stats) {\n return ((stats.mode & 1) > 0 ||\n ((stats.mode & 8) > 0 && stats.gid === process.getgid()) ||\n ((stats.mode & 64) > 0 && stats.uid === process.getuid()));\n}\n//# sourceMappingURL=io-util.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst childProcess = require(\"child_process\");\nconst path = require(\"path\");\nconst util_1 = require(\"util\");\nconst ioUtil = require(\"./io-util\");\nconst exec = util_1.promisify(childProcess.exec);\n/**\n * Copies a file or folder.\n * Based off of shelljs - https://github.com/shelljs/shelljs/blob/9237f66c52e5daa40458f94f9565e18e8132f5a6/src/cp.js\n *\n * @param source source path\n * @param dest destination path\n * @param options optional. See CopyOptions.\n */\nfunction cp(source, dest, options = {}) {\n return __awaiter(this, void 0, void 0, function* () {\n const { force, recursive } = readCopyOptions(options);\n const destStat = (yield ioUtil.exists(dest)) ? yield ioUtil.stat(dest) : null;\n // Dest is an existing file, but not forcing\n if (destStat && destStat.isFile() && !force) {\n return;\n }\n // If dest is an existing directory, should copy inside.\n const newDest = destStat && destStat.isDirectory()\n ? path.join(dest, path.basename(source))\n : dest;\n if (!(yield ioUtil.exists(source))) {\n throw new Error(`no such file or directory: ${source}`);\n }\n const sourceStat = yield ioUtil.stat(source);\n if (sourceStat.isDirectory()) {\n if (!recursive) {\n throw new Error(`Failed to copy. ${source} is a directory, but tried to copy without recursive flag.`);\n }\n else {\n yield cpDirRecursive(source, newDest, 0, force);\n }\n }\n else {\n if (path.relative(source, newDest) === '') {\n // a file cannot be copied to itself\n throw new Error(`'${newDest}' and '${source}' are the same file`);\n }\n yield copyFile(source, newDest, force);\n }\n });\n}\nexports.cp = cp;\n/**\n * Moves a path.\n *\n * @param source source path\n * @param dest destination path\n * @param options optional. See MoveOptions.\n */\nfunction mv(source, dest, options = {}) {\n return __awaiter(this, void 0, void 0, function* () {\n if (yield ioUtil.exists(dest)) {\n let destExists = true;\n if (yield ioUtil.isDirectory(dest)) {\n // If dest is directory copy src into dest\n dest = path.join(dest, path.basename(source));\n destExists = yield ioUtil.exists(dest);\n }\n if (destExists) {\n if (options.force == null || options.force) {\n yield rmRF(dest);\n }\n else {\n throw new Error('Destination already exists');\n }\n }\n }\n yield mkdirP(path.dirname(dest));\n yield ioUtil.rename(source, dest);\n });\n}\nexports.mv = mv;\n/**\n * Remove a path recursively with force\n *\n * @param inputPath path to remove\n */\nfunction rmRF(inputPath) {\n return __awaiter(this, void 0, void 0, function* () {\n if (ioUtil.IS_WINDOWS) {\n // Node doesn't provide a delete operation, only an unlink function. This means that if the file is being used by another\n // program (e.g. antivirus), it won't be deleted. To address this, we shell out the work to rd/del.\n try {\n if (yield ioUtil.isDirectory(inputPath, true)) {\n yield exec(`rd /s /q \"${inputPath}\"`);\n }\n else {\n yield exec(`del /f /a \"${inputPath}\"`);\n }\n }\n catch (err) {\n // if you try to delete a file that doesn't exist, desired result is achieved\n // other errors are valid\n if (err.code !== 'ENOENT')\n throw err;\n }\n // Shelling out fails to remove a symlink folder with missing source, this unlink catches that\n try {\n yield ioUtil.unlink(inputPath);\n }\n catch (err) {\n // if you try to delete a file that doesn't exist, desired result is achieved\n // other errors are valid\n if (err.code !== 'ENOENT')\n throw err;\n }\n }\n else {\n let isDir = false;\n try {\n isDir = yield ioUtil.isDirectory(inputPath);\n }\n catch (err) {\n // if you try to delete a file that doesn't exist, desired result is achieved\n // other errors are valid\n if (err.code !== 'ENOENT')\n throw err;\n return;\n }\n if (isDir) {\n yield exec(`rm -rf \"${inputPath}\"`);\n }\n else {\n yield ioUtil.unlink(inputPath);\n }\n }\n });\n}\nexports.rmRF = rmRF;\n/**\n * Make a directory. Creates the full path with folders in between\n * Will throw if it fails\n *\n * @param fsPath path to create\n * @returns Promise\n */\nfunction mkdirP(fsPath) {\n return __awaiter(this, void 0, void 0, function* () {\n yield ioUtil.mkdirP(fsPath);\n });\n}\nexports.mkdirP = mkdirP;\n/**\n * Returns path of a tool had the tool actually been invoked. Resolves via paths.\n * If you check and the tool does not exist, it will throw.\n *\n * @param tool name of the tool\n * @param check whether to check if tool exists\n * @returns Promise path to tool\n */\nfunction which(tool, check) {\n return __awaiter(this, void 0, void 0, function* () {\n if (!tool) {\n throw new Error(\"parameter 'tool' is required\");\n }\n // recursive when check=true\n if (check) {\n const result = yield which(tool, false);\n if (!result) {\n if (ioUtil.IS_WINDOWS) {\n throw new Error(`Unable to locate executable file: ${tool}. Please verify either the file path exists or the file can be found within a directory specified by the PATH environment variable. Also verify the file has a valid extension for an executable file.`);\n }\n else {\n throw new Error(`Unable to locate executable file: ${tool}. Please verify either the file path exists or the file can be found within a directory specified by the PATH environment variable. Also check the file mode to verify the file is executable.`);\n }\n }\n }\n try {\n // build the list of extensions to try\n const extensions = [];\n if (ioUtil.IS_WINDOWS && process.env.PATHEXT) {\n for (const extension of process.env.PATHEXT.split(path.delimiter)) {\n if (extension) {\n extensions.push(extension);\n }\n }\n }\n // if it's rooted, return it if exists. otherwise return empty.\n if (ioUtil.isRooted(tool)) {\n const filePath = yield ioUtil.tryGetExecutablePath(tool, extensions);\n if (filePath) {\n return filePath;\n }\n return '';\n }\n // if any path separators, return empty\n if (tool.includes('/') || (ioUtil.IS_WINDOWS && tool.includes('\\\\'))) {\n return '';\n }\n // build the list of directories\n //\n // Note, technically \"where\" checks the current directory on Windows. From a toolkit perspective,\n // it feels like we should not do this. Checking the current directory seems like more of a use\n // case of a shell, and the which() function exposed by the toolkit should strive for consistency\n // across platforms.\n const directories = [];\n if (process.env.PATH) {\n for (const p of process.env.PATH.split(path.delimiter)) {\n if (p) {\n directories.push(p);\n }\n }\n }\n // return the first match\n for (const directory of directories) {\n const filePath = yield ioUtil.tryGetExecutablePath(directory + path.sep + tool, extensions);\n if (filePath) {\n return filePath;\n }\n }\n return '';\n }\n catch (err) {\n throw new Error(`which failed with message ${err.message}`);\n }\n });\n}\nexports.which = which;\nfunction readCopyOptions(options) {\n const force = options.force == null ? true : options.force;\n const recursive = Boolean(options.recursive);\n return { force, recursive };\n}\nfunction cpDirRecursive(sourceDir, destDir, currentDepth, force) {\n return __awaiter(this, void 0, void 0, function* () {\n // Ensure there is not a run away recursive copy\n if (currentDepth >= 255)\n return;\n currentDepth++;\n yield mkdirP(destDir);\n const files = yield ioUtil.readdir(sourceDir);\n for (const fileName of files) {\n const srcFile = `${sourceDir}/${fileName}`;\n const destFile = `${destDir}/${fileName}`;\n const srcFileStat = yield ioUtil.lstat(srcFile);\n if (srcFileStat.isDirectory()) {\n // Recurse\n yield cpDirRecursive(srcFile, destFile, currentDepth, force);\n }\n else {\n yield copyFile(srcFile, destFile, force);\n }\n }\n // Change the mode for the newly created directory\n yield ioUtil.chmod(destDir, (yield ioUtil.stat(sourceDir)).mode);\n });\n}\n// Buffered file copy\nfunction copyFile(srcFile, destFile, force) {\n return __awaiter(this, void 0, void 0, function* () {\n if ((yield ioUtil.lstat(srcFile)).isSymbolicLink()) {\n // unlink/re-link it\n try {\n yield ioUtil.lstat(destFile);\n yield ioUtil.unlink(destFile);\n }\n catch (e) {\n // Try to override file permission\n if (e.code === 'EPERM') {\n yield ioUtil.chmod(destFile, '0666');\n yield ioUtil.unlink(destFile);\n }\n // other errors = it doesn't exist, no work to do\n }\n // Copy over symlink\n const symlinkFull = yield ioUtil.readlink(srcFile);\n yield ioUtil.symlink(symlinkFull, destFile, ioUtil.IS_WINDOWS ? 'junction' : null);\n }\n else if (!(yield ioUtil.exists(destFile)) || force) {\n yield ioUtil.copyFile(srcFile, destFile);\n }\n });\n}\n//# sourceMappingURL=io.js.map","import * as core from \"@actions/core\";\nimport * as exec from \"@actions/exec\";\nimport * as path from \"path\";\nimport CommandResult from \"./types\";\n\nexport interface BuildahConfigSettings {\n entrypoint?: string[];\n envs?: string[];\n port?: string;\n workingdir?: string;\n}\n\ninterface Buildah {\n buildUsingDocker(\n image: string, context: string, dockerFiles: string[], buildArgs: string[], useOCI: boolean,\n ): Promise;\n from(baseImage: string): Promise;\n copy(container: string, contentToCopy: string[]): Promise;\n config(container: string, setting: BuildahConfigSettings): Promise;\n commit(container: string, newImageName: string, useOCI: boolean): Promise;\n}\n\nexport class BuildahCli implements Buildah {\n private readonly executable: string;\n\n constructor(executable: string) {\n this.executable = executable;\n }\n\n private static getImageFormatOption(useOCI: boolean): string[] {\n return [ \"--format\", useOCI ? \"oci\" : \"docker\" ];\n }\n\n async buildUsingDocker(\n image: string, context: string, dockerFiles: string[], buildArgs: string[], useOCI: boolean,\n ): Promise {\n const args: string[] = [ \"bud\" ];\n dockerFiles.forEach((file) => {\n args.push(\"-f\");\n args.push(file);\n });\n buildArgs.forEach((buildArg) => {\n args.push(\"--build-arg\");\n args.push(buildArg);\n });\n args.push(...BuildahCli.getImageFormatOption(useOCI));\n args.push(\"-t\");\n args.push(image);\n args.push(context);\n return this.execute(args);\n }\n\n async from(baseImage: string): Promise {\n return this.execute([ \"from\", baseImage ]);\n }\n\n async copy(container: string, contentToCopy: string[], contentPath?: string): Promise {\n if (contentToCopy.length === 0) {\n return undefined;\n }\n\n core.debug(\"copy\");\n core.debug(container);\n for (const content of contentToCopy) {\n const args: string[] = [ \"copy\", container, content ];\n if (contentPath) {\n args.push(contentPath);\n }\n return this.execute(args);\n }\n\n return undefined;\n }\n\n async config(container: string, settings: BuildahConfigSettings): Promise {\n core.debug(\"config\");\n core.debug(container);\n const args: string[] = [ \"config\" ];\n if (settings.entrypoint) {\n args.push(\"--entrypoint\");\n args.push(BuildahCli.convertArrayToStringArg(settings.entrypoint));\n }\n if (settings.port) {\n args.push(\"--port\");\n args.push(settings.port);\n }\n if (settings.envs) {\n settings.envs.forEach((env) => {\n args.push(\"--env\");\n args.push(env);\n });\n }\n args.push(container);\n return this.execute(args);\n }\n\n async commit(container: string, newImageName: string, useOCI: boolean): Promise {\n core.debug(\"commit\");\n core.debug(container);\n core.debug(newImageName);\n const args: string[] = [\n \"commit\", ...BuildahCli.getImageFormatOption(useOCI),\n \"--squash\", container, newImageName,\n ];\n return this.execute(args);\n }\n\n async tag(imageName: string, tags: string[]): Promise {\n const args: string[] = [ \"tag\" ];\n for (const tag of tags) {\n args.push(`${imageName}:${tag}`);\n }\n core.info(`Tagging the built image with tags ${tags.toString()}`);\n return this.execute(args);\n }\n\n private static convertArrayToStringArg(args: string[]): string {\n let arrayAsString = \"[\";\n args.forEach((arg) => {\n arrayAsString += `\"${arg}\",`;\n });\n return `${arrayAsString.slice(0, -1)}]`;\n }\n\n private async execute(args: string[], execOptions: exec.ExecOptions = {}): Promise {\n // ghCore.info(`${EXECUTABLE} ${args.join(\" \")}`)\n\n let stdout = \"\";\n let stderr = \"\";\n\n const finalExecOptions = { ...execOptions };\n finalExecOptions.ignoreReturnCode = true; // the return code is processed below\n\n finalExecOptions.listeners = {\n stdline: (line): void => {\n stdout += line + \"\\n\";\n },\n errline: (line):void => {\n stderr += line + \"\\n\";\n },\n };\n\n const exitCode = await exec.exec(this.executable, args, finalExecOptions);\n\n if (execOptions.ignoreReturnCode !== true && exitCode !== 0) {\n // Throwing the stderr as part of the Error makes the stderr\n // show up in the action outline, which saves some clicking when debugging.\n let error = `${path.basename(this.executable)} exited with code ${exitCode}`;\n if (stderr) {\n error += `\\n${stderr}`;\n }\n throw new Error(error);\n }\n\n return {\n exitCode, output: stdout, error: stderr,\n };\n }\n}\n","import * as core from \"@actions/core\";\nimport * as io from \"@actions/io\";\nimport * as path from \"path\";\nimport { BuildahCli, BuildahConfigSettings } from \"./buildah\";\n\nexport async function run(): Promise {\n if (process.env.RUNNER_OS !== \"Linux\") {\n throw new Error(\"buildah, and therefore this action, only works on Linux. Please use a Linux runner.\");\n }\n\n // get buildah cli\n const buildahPath = await io.which(\"buildah\", true);\n const cli: BuildahCli = new BuildahCli(buildahPath);\n\n const workspace = process.env.GITHUB_WORKSPACE || process.cwd();\n const dockerFiles = getInputList(\"dockerfiles\");\n const image = core.getInput(\"image\", { required: true });\n const tags = core.getInput(\"tags\") || \"latest\";\n const tagsList: string[] = tags.split(\" \");\n const newImage = `${image}:${tagsList[0]}`;\n const useOCI = core.getInput(\"oci\") === \"true\";\n\n if (dockerFiles.length !== 0) {\n await doBuildUsingDockerFiles(cli, newImage, workspace, dockerFiles, useOCI);\n }\n else {\n await doBuildFromScratch(cli, newImage, useOCI);\n }\n\n if (tagsList.length > 1) {\n await cli.tag(image, tagsList);\n }\n core.setOutput(\"image\", image);\n core.setOutput(\"tags\", tags);\n}\n\nasync function doBuildUsingDockerFiles(\n cli: BuildahCli, newImage: string, workspace: string, dockerFiles: string[], useOCI: boolean,\n): Promise {\n if (dockerFiles.length === 1) {\n core.info(`Performing build from Dockerfile`);\n }\n else {\n core.info(`Performing build from ${dockerFiles.length} Dockerfiles`);\n }\n\n const context = path.join(workspace, core.getInput(\"context\"));\n const buildArgs = getInputList(\"build-args\");\n const dockerFileAbsPaths = dockerFiles.map((file) => path.join(workspace, file));\n await cli.buildUsingDocker(newImage, context, dockerFileAbsPaths, buildArgs, useOCI);\n}\n\nasync function doBuildFromScratch(\n cli: BuildahCli, newImage: string, useOCI: boolean,\n): Promise {\n core.info(`Performing build from scratch`);\n\n const baseImage = core.getInput(\"base-image\", { required: true });\n const content = getInputList(\"content\");\n const entrypoint = getInputList(\"entrypoint\");\n const port = core.getInput(\"port\");\n const workingDir = core.getInput(\"workdir\");\n const envs = getInputList(\"envs\");\n\n const container = await cli.from(baseImage);\n const containerId = container.output.replace(\"\\n\", \"\");\n\n await cli.copy(containerId, content);\n\n const newImageConfig: BuildahConfigSettings = {\n entrypoint,\n port,\n workingdir: workingDir,\n envs,\n };\n await cli.config(containerId, newImageConfig);\n await cli.commit(containerId, newImage, useOCI);\n}\n\nfunction getInputList(name: string): string[] {\n const items = core.getInput(name);\n if (!items) {\n return [];\n }\n return items\n .split(/\\r?\\n/)\n .filter((x) => x)\n .reduce(\n (acc, line) => acc.concat(line).map((pat) => pat.trim()),\n [],\n );\n}\n\nrun().catch(core.setFailed);\n","module.exports = require(\"assert\");;","module.exports = require(\"child_process\");;","module.exports = require(\"events\");;","module.exports = require(\"fs\");;","module.exports = require(\"os\");;","module.exports = require(\"path\");;","module.exports = require(\"util\");;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tif(__webpack_module_cache__[moduleId]) {\n\t\treturn __webpack_module_cache__[moduleId].exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\tvar threw = true;\n\ttry {\n\t\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\t\tthrew = false;\n\t} finally {\n\t\tif(threw) delete __webpack_module_cache__[moduleId];\n\t}\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","\n__webpack_require__.ab = __dirname + \"/\";","// module exports must be returned from runtime so entry inlining is disabled\n// startup\n// Load entry module and return exports\nreturn __webpack_require__(144);\n"]}
\ No newline at end of file
+{"version":3,"sources":["../webpack:/buildah-build/node_modules/@actions/core/lib/command.js","../webpack:/buildah-build/node_modules/@actions/core/lib/core.js","../webpack:/buildah-build/node_modules/@actions/core/lib/file-command.js","../webpack:/buildah-build/node_modules/@actions/core/lib/utils.js","../webpack:/buildah-build/node_modules/@actions/exec/lib/exec.js","../webpack:/buildah-build/node_modules/@actions/exec/lib/toolrunner.js","../webpack:/buildah-build/node_modules/@actions/io/lib/io-util.js","../webpack:/buildah-build/node_modules/@actions/io/lib/io.js","../webpack:/buildah-build/src/buildah.ts","../webpack:/buildah-build/src/generated/inputs-outputs.ts","../webpack:/buildah-build/src/index.ts","../webpack:/buildah-build/external \"assert\"","../webpack:/buildah-build/external \"child_process\"","../webpack:/buildah-build/external \"events\"","../webpack:/buildah-build/external \"fs\"","../webpack:/buildah-build/external \"os\"","../webpack:/buildah-build/external \"path\"","../webpack:/buildah-build/external \"util\"","../webpack:/buildah-build/webpack/bootstrap","../webpack:/buildah-build/webpack/runtime/compat","../webpack:/buildah-build/webpack/startup"],"names":["__importStar","this","mod","__esModule","result","k","Object","hasOwnProperty","call","defineProperty","exports","value","os","__webpack_require__","utils_1","issueCommand","command","properties","message","cmd","Command","process","stdout","write","toString","EOL","issue","name","CMD_STRING","[object Object]","cmdStr","keys","length","first","key","val","escapeProperty","escapeData","s","toCommandValue","replace","__awaiter","thisArg","_arguments","P","generator","adopt","resolve","Promise","reject","fulfilled","step","next","e","rejected","done","then","apply","command_1","file_command_1","path","ExitCode","exportVariable","convertedVal","env","filePath","delimiter","commandValue","setSecret","secret","addPath","inputPath","getInput","options","toUpperCase","required","Error","trim","setOutput","setCommandEcho","enabled","setFailed","exitCode","Failure","error","isDebug","debug","warning","info","startGroup","endGroup","group","fn","saveState","getState","fs","existsSync","appendFileSync","encoding","input","undefined","String","JSON","stringify","tr","exec","commandLine","args","commandArgs","argStringToArray","toolPath","slice","concat","runner","ToolRunner","events","child","io","ioUtil","IS_WINDOWS","platform","EventEmitter","super","listeners","noPrefix","_getSpawnFileName","_getSpawnArgs","_isCmdFile","a","windowsVerbatimArguments","_windowsQuoteCmdArg","data","strBuffer","onLine","n","indexOf","line","substring","err","_debug","argline","str","end","endsWith","upperToolPath","_endsWith","arg","_uvQuoteCmdArg","cmdSpecialChars","needsQuotes","char","some","x","reverse","quoteHit","i","split","join","includes","cwd","silent","failOnStdErr","ignoreReturnCode","delay","outStream","errStream","stderr","argv0","isRooted","which","optionsNonNull","_cloneExecOptions","_getCommandString","state","ExecState","on","fileName","cp","spawn","_getSpawnOptions","stdbuffer","_processLineBuffer","stdline","errbuffer","processStderr","errline","processError","processExited","processClosed","CheckComplete","code","processExitCode","emit","removeAllListeners","stdin","argString","inQuotes","escaped","append","c","charAt","push","timeout","_setResult","setTimeout","HandleTimeout","clearTimeout","_a","assert_1","promises","chmod","copyFile","lstat","mkdir","readdir","readlink","rename","rmdir","stat","symlink","unlink","exists","fsPath","isDirectory","useStat","stats","p","normalizeSeparators","startsWith","test","mkdirP","maxDepth","depth","ok","dirname","err2","tryGetExecutablePath","extensions","console","log","isFile","upperExt","extname","validExt","isUnixExecutable","originalFilePath","extension","directory","upperName","basename","actualName","mode","gid","getgid","uid","getuid","childProcess","util_1","promisify","source","dest","force","recursive","readCopyOptions","destStat","newDest","sourceStat","cpDirRecursive","relative","mv","destExists","rmRF","isDir","tool","check","PATHEXT","directories","PATH","sep","Boolean","sourceDir","destDir","currentDepth","files","srcFile","destFile","srcFileStat","isSymbolicLink","symlinkFull","core","BuildahCli","executable","useOCI","image","context","dockerFiles","buildArgs","forEach","file","buildArg","getImageFormatOption","execute","baseImage","container","contentToCopy","contentPath","content","settings","entrypoint","convertArrayToStringArg","port","envs","newImageName","imageName","tags","tag","arrayAsString","execOptions","finalExecOptions","output","Inputs","Outputs","inputs_outputs_1","buildah_1","async","run","RUNNER_OS","buildahPath","cli","workspace","GITHUB_WORKSPACE","getInputList","DOCKERFILES","IMAGE","TAGS","tagsList","newImage","OCI","doBuildUsingDockerFiles","doBuildFromScratch","CONTEXT","BUILD_ARGS","dockerFileAbsPaths","map","buildUsingDocker","BASE_IMAGE","CONTENT","ENTRYPOINT","PORT","workingDir","WORKDIR","ENVS","from","containerId","copy","newImageConfig","workingdir","config","commit","items","filter","reduce","acc","pat","catch","module","require","__webpack_module_cache__","moduleId","threw","__webpack_modules__","ab","__dirname"],"mappings":"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","file":"index.js","sourcesContent":["\"use strict\";\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst os = __importStar(require(\"os\"));\nconst utils_1 = require(\"./utils\");\n/**\n * Commands\n *\n * Command Format:\n * ::name key=value,key=value::message\n *\n * Examples:\n * ::warning::This is the message\n * ::set-env name=MY_VAR::some value\n */\nfunction issueCommand(command, properties, message) {\n const cmd = new Command(command, properties, message);\n process.stdout.write(cmd.toString() + os.EOL);\n}\nexports.issueCommand = issueCommand;\nfunction issue(name, message = '') {\n issueCommand(name, {}, message);\n}\nexports.issue = issue;\nconst CMD_STRING = '::';\nclass Command {\n constructor(command, properties, message) {\n if (!command) {\n command = 'missing.command';\n }\n this.command = command;\n this.properties = properties;\n this.message = message;\n }\n toString() {\n let cmdStr = CMD_STRING + this.command;\n if (this.properties && Object.keys(this.properties).length > 0) {\n cmdStr += ' ';\n let first = true;\n for (const key in this.properties) {\n if (this.properties.hasOwnProperty(key)) {\n const val = this.properties[key];\n if (val) {\n if (first) {\n first = false;\n }\n else {\n cmdStr += ',';\n }\n cmdStr += `${key}=${escapeProperty(val)}`;\n }\n }\n }\n }\n cmdStr += `${CMD_STRING}${escapeData(this.message)}`;\n return cmdStr;\n }\n}\nfunction escapeData(s) {\n return utils_1.toCommandValue(s)\n .replace(/%/g, '%25')\n .replace(/\\r/g, '%0D')\n .replace(/\\n/g, '%0A');\n}\nfunction escapeProperty(s) {\n return utils_1.toCommandValue(s)\n .replace(/%/g, '%25')\n .replace(/\\r/g, '%0D')\n .replace(/\\n/g, '%0A')\n .replace(/:/g, '%3A')\n .replace(/,/g, '%2C');\n}\n//# sourceMappingURL=command.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst command_1 = require(\"./command\");\nconst file_command_1 = require(\"./file-command\");\nconst utils_1 = require(\"./utils\");\nconst os = __importStar(require(\"os\"));\nconst path = __importStar(require(\"path\"));\n/**\n * The code to exit an action\n */\nvar ExitCode;\n(function (ExitCode) {\n /**\n * A code indicating that the action was successful\n */\n ExitCode[ExitCode[\"Success\"] = 0] = \"Success\";\n /**\n * A code indicating that the action was a failure\n */\n ExitCode[ExitCode[\"Failure\"] = 1] = \"Failure\";\n})(ExitCode = exports.ExitCode || (exports.ExitCode = {}));\n//-----------------------------------------------------------------------\n// Variables\n//-----------------------------------------------------------------------\n/**\n * Sets env variable for this action and future actions in the job\n * @param name the name of the variable to set\n * @param val the value of the variable. Non-string values will be converted to a string via JSON.stringify\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction exportVariable(name, val) {\n const convertedVal = utils_1.toCommandValue(val);\n process.env[name] = convertedVal;\n const filePath = process.env['GITHUB_ENV'] || '';\n if (filePath) {\n const delimiter = '_GitHubActionsFileCommandDelimeter_';\n const commandValue = `${name}<<${delimiter}${os.EOL}${convertedVal}${os.EOL}${delimiter}`;\n file_command_1.issueCommand('ENV', commandValue);\n }\n else {\n command_1.issueCommand('set-env', { name }, convertedVal);\n }\n}\nexports.exportVariable = exportVariable;\n/**\n * Registers a secret which will get masked from logs\n * @param secret value of the secret\n */\nfunction setSecret(secret) {\n command_1.issueCommand('add-mask', {}, secret);\n}\nexports.setSecret = setSecret;\n/**\n * Prepends inputPath to the PATH (for this action and future actions)\n * @param inputPath\n */\nfunction addPath(inputPath) {\n const filePath = process.env['GITHUB_PATH'] || '';\n if (filePath) {\n file_command_1.issueCommand('PATH', inputPath);\n }\n else {\n command_1.issueCommand('add-path', {}, inputPath);\n }\n process.env['PATH'] = `${inputPath}${path.delimiter}${process.env['PATH']}`;\n}\nexports.addPath = addPath;\n/**\n * Gets the value of an input. The value is also trimmed.\n *\n * @param name name of the input to get\n * @param options optional. See InputOptions.\n * @returns string\n */\nfunction getInput(name, options) {\n const val = process.env[`INPUT_${name.replace(/ /g, '_').toUpperCase()}`] || '';\n if (options && options.required && !val) {\n throw new Error(`Input required and not supplied: ${name}`);\n }\n return val.trim();\n}\nexports.getInput = getInput;\n/**\n * Sets the value of an output.\n *\n * @param name name of the output to set\n * @param value value to store. Non-string values will be converted to a string via JSON.stringify\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction setOutput(name, value) {\n command_1.issueCommand('set-output', { name }, value);\n}\nexports.setOutput = setOutput;\n/**\n * Enables or disables the echoing of commands into stdout for the rest of the step.\n * Echoing is disabled by default if ACTIONS_STEP_DEBUG is not set.\n *\n */\nfunction setCommandEcho(enabled) {\n command_1.issue('echo', enabled ? 'on' : 'off');\n}\nexports.setCommandEcho = setCommandEcho;\n//-----------------------------------------------------------------------\n// Results\n//-----------------------------------------------------------------------\n/**\n * Sets the action status to failed.\n * When the action exits it will be with an exit code of 1\n * @param message add error issue message\n */\nfunction setFailed(message) {\n process.exitCode = ExitCode.Failure;\n error(message);\n}\nexports.setFailed = setFailed;\n//-----------------------------------------------------------------------\n// Logging Commands\n//-----------------------------------------------------------------------\n/**\n * Gets whether Actions Step Debug is on or not\n */\nfunction isDebug() {\n return process.env['RUNNER_DEBUG'] === '1';\n}\nexports.isDebug = isDebug;\n/**\n * Writes debug message to user log\n * @param message debug message\n */\nfunction debug(message) {\n command_1.issueCommand('debug', {}, message);\n}\nexports.debug = debug;\n/**\n * Adds an error issue\n * @param message error issue message. Errors will be converted to string via toString()\n */\nfunction error(message) {\n command_1.issue('error', message instanceof Error ? message.toString() : message);\n}\nexports.error = error;\n/**\n * Adds an warning issue\n * @param message warning issue message. Errors will be converted to string via toString()\n */\nfunction warning(message) {\n command_1.issue('warning', message instanceof Error ? message.toString() : message);\n}\nexports.warning = warning;\n/**\n * Writes info to log with console.log.\n * @param message info message\n */\nfunction info(message) {\n process.stdout.write(message + os.EOL);\n}\nexports.info = info;\n/**\n * Begin an output group.\n *\n * Output until the next `groupEnd` will be foldable in this group\n *\n * @param name The name of the output group\n */\nfunction startGroup(name) {\n command_1.issue('group', name);\n}\nexports.startGroup = startGroup;\n/**\n * End an output group.\n */\nfunction endGroup() {\n command_1.issue('endgroup');\n}\nexports.endGroup = endGroup;\n/**\n * Wrap an asynchronous function call in a group.\n *\n * Returns the same type as the function itself.\n *\n * @param name The name of the group\n * @param fn The function to wrap in the group\n */\nfunction group(name, fn) {\n return __awaiter(this, void 0, void 0, function* () {\n startGroup(name);\n let result;\n try {\n result = yield fn();\n }\n finally {\n endGroup();\n }\n return result;\n });\n}\nexports.group = group;\n//-----------------------------------------------------------------------\n// Wrapper action state\n//-----------------------------------------------------------------------\n/**\n * Saves state for current action, the state can only be retrieved by this action's post job execution.\n *\n * @param name name of the state to store\n * @param value value to store. Non-string values will be converted to a string via JSON.stringify\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction saveState(name, value) {\n command_1.issueCommand('save-state', { name }, value);\n}\nexports.saveState = saveState;\n/**\n * Gets the value of an state set by this action's main execution.\n *\n * @param name name of the state to get\n * @returns string\n */\nfunction getState(name) {\n return process.env[`STATE_${name}`] || '';\n}\nexports.getState = getState;\n//# sourceMappingURL=core.js.map","\"use strict\";\n// For internal use, subject to change.\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n// We use any as a valid input type\n/* eslint-disable @typescript-eslint/no-explicit-any */\nconst fs = __importStar(require(\"fs\"));\nconst os = __importStar(require(\"os\"));\nconst utils_1 = require(\"./utils\");\nfunction issueCommand(command, message) {\n const filePath = process.env[`GITHUB_${command}`];\n if (!filePath) {\n throw new Error(`Unable to find environment variable for file command ${command}`);\n }\n if (!fs.existsSync(filePath)) {\n throw new Error(`Missing file at path: ${filePath}`);\n }\n fs.appendFileSync(filePath, `${utils_1.toCommandValue(message)}${os.EOL}`, {\n encoding: 'utf8'\n });\n}\nexports.issueCommand = issueCommand;\n//# sourceMappingURL=file-command.js.map","\"use strict\";\n// We use any as a valid input type\n/* eslint-disable @typescript-eslint/no-explicit-any */\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Sanitizes an input into a string so it can be passed into issueCommand safely\n * @param input input to sanitize into a string\n */\nfunction toCommandValue(input) {\n if (input === null || input === undefined) {\n return '';\n }\n else if (typeof input === 'string' || input instanceof String) {\n return input;\n }\n return JSON.stringify(input);\n}\nexports.toCommandValue = toCommandValue;\n//# sourceMappingURL=utils.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst tr = __importStar(require(\"./toolrunner\"));\n/**\n * Exec a command.\n * Output will be streamed to the live console.\n * Returns promise with return code\n *\n * @param commandLine command to execute (can include additional args). Must be correctly escaped.\n * @param args optional arguments for tool. Escaping is handled by the lib.\n * @param options optional exec options. See ExecOptions\n * @returns Promise exit code\n */\nfunction exec(commandLine, args, options) {\n return __awaiter(this, void 0, void 0, function* () {\n const commandArgs = tr.argStringToArray(commandLine);\n if (commandArgs.length === 0) {\n throw new Error(`Parameter 'commandLine' cannot be null or empty.`);\n }\n // Path to tool to execute should be first arg\n const toolPath = commandArgs[0];\n args = commandArgs.slice(1).concat(args || []);\n const runner = new tr.ToolRunner(toolPath, args, options);\n return runner.exec();\n });\n}\nexports.exec = exec;\n//# sourceMappingURL=exec.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst os = __importStar(require(\"os\"));\nconst events = __importStar(require(\"events\"));\nconst child = __importStar(require(\"child_process\"));\nconst path = __importStar(require(\"path\"));\nconst io = __importStar(require(\"@actions/io\"));\nconst ioUtil = __importStar(require(\"@actions/io/lib/io-util\"));\n/* eslint-disable @typescript-eslint/unbound-method */\nconst IS_WINDOWS = process.platform === 'win32';\n/*\n * Class for running command line tools. Handles quoting and arg parsing in a platform agnostic way.\n */\nclass ToolRunner extends events.EventEmitter {\n constructor(toolPath, args, options) {\n super();\n if (!toolPath) {\n throw new Error(\"Parameter 'toolPath' cannot be null or empty.\");\n }\n this.toolPath = toolPath;\n this.args = args || [];\n this.options = options || {};\n }\n _debug(message) {\n if (this.options.listeners && this.options.listeners.debug) {\n this.options.listeners.debug(message);\n }\n }\n _getCommandString(options, noPrefix) {\n const toolPath = this._getSpawnFileName();\n const args = this._getSpawnArgs(options);\n let cmd = noPrefix ? '' : '[command]'; // omit prefix when piped to a second tool\n if (IS_WINDOWS) {\n // Windows + cmd file\n if (this._isCmdFile()) {\n cmd += toolPath;\n for (const a of args) {\n cmd += ` ${a}`;\n }\n }\n // Windows + verbatim\n else if (options.windowsVerbatimArguments) {\n cmd += `\"${toolPath}\"`;\n for (const a of args) {\n cmd += ` ${a}`;\n }\n }\n // Windows (regular)\n else {\n cmd += this._windowsQuoteCmdArg(toolPath);\n for (const a of args) {\n cmd += ` ${this._windowsQuoteCmdArg(a)}`;\n }\n }\n }\n else {\n // OSX/Linux - this can likely be improved with some form of quoting.\n // creating processes on Unix is fundamentally different than Windows.\n // on Unix, execvp() takes an arg array.\n cmd += toolPath;\n for (const a of args) {\n cmd += ` ${a}`;\n }\n }\n return cmd;\n }\n _processLineBuffer(data, strBuffer, onLine) {\n try {\n let s = strBuffer + data.toString();\n let n = s.indexOf(os.EOL);\n while (n > -1) {\n const line = s.substring(0, n);\n onLine(line);\n // the rest of the string ...\n s = s.substring(n + os.EOL.length);\n n = s.indexOf(os.EOL);\n }\n strBuffer = s;\n }\n catch (err) {\n // streaming lines to console is best effort. Don't fail a build.\n this._debug(`error processing line. Failed with error ${err}`);\n }\n }\n _getSpawnFileName() {\n if (IS_WINDOWS) {\n if (this._isCmdFile()) {\n return process.env['COMSPEC'] || 'cmd.exe';\n }\n }\n return this.toolPath;\n }\n _getSpawnArgs(options) {\n if (IS_WINDOWS) {\n if (this._isCmdFile()) {\n let argline = `/D /S /C \"${this._windowsQuoteCmdArg(this.toolPath)}`;\n for (const a of this.args) {\n argline += ' ';\n argline += options.windowsVerbatimArguments\n ? a\n : this._windowsQuoteCmdArg(a);\n }\n argline += '\"';\n return [argline];\n }\n }\n return this.args;\n }\n _endsWith(str, end) {\n return str.endsWith(end);\n }\n _isCmdFile() {\n const upperToolPath = this.toolPath.toUpperCase();\n return (this._endsWith(upperToolPath, '.CMD') ||\n this._endsWith(upperToolPath, '.BAT'));\n }\n _windowsQuoteCmdArg(arg) {\n // for .exe, apply the normal quoting rules that libuv applies\n if (!this._isCmdFile()) {\n return this._uvQuoteCmdArg(arg);\n }\n // otherwise apply quoting rules specific to the cmd.exe command line parser.\n // the libuv rules are generic and are not designed specifically for cmd.exe\n // command line parser.\n //\n // for a detailed description of the cmd.exe command line parser, refer to\n // http://stackoverflow.com/questions/4094699/how-does-the-windows-command-interpreter-cmd-exe-parse-scripts/7970912#7970912\n // need quotes for empty arg\n if (!arg) {\n return '\"\"';\n }\n // determine whether the arg needs to be quoted\n const cmdSpecialChars = [\n ' ',\n '\\t',\n '&',\n '(',\n ')',\n '[',\n ']',\n '{',\n '}',\n '^',\n '=',\n ';',\n '!',\n \"'\",\n '+',\n ',',\n '`',\n '~',\n '|',\n '<',\n '>',\n '\"'\n ];\n let needsQuotes = false;\n for (const char of arg) {\n if (cmdSpecialChars.some(x => x === char)) {\n needsQuotes = true;\n break;\n }\n }\n // short-circuit if quotes not needed\n if (!needsQuotes) {\n return arg;\n }\n // the following quoting rules are very similar to the rules that by libuv applies.\n //\n // 1) wrap the string in quotes\n //\n // 2) double-up quotes - i.e. \" => \"\"\n //\n // this is different from the libuv quoting rules. libuv replaces \" with \\\", which unfortunately\n // doesn't work well with a cmd.exe command line.\n //\n // note, replacing \" with \"\" also works well if the arg is passed to a downstream .NET console app.\n // for example, the command line:\n // foo.exe \"myarg:\"\"my val\"\"\"\n // is parsed by a .NET console app into an arg array:\n // [ \"myarg:\\\"my val\\\"\" ]\n // which is the same end result when applying libuv quoting rules. although the actual\n // command line from libuv quoting rules would look like:\n // foo.exe \"myarg:\\\"my val\\\"\"\n //\n // 3) double-up slashes that precede a quote,\n // e.g. hello \\world => \"hello \\world\"\n // hello\\\"world => \"hello\\\\\"\"world\"\n // hello\\\\\"world => \"hello\\\\\\\\\"\"world\"\n // hello world\\ => \"hello world\\\\\"\n //\n // technically this is not required for a cmd.exe command line, or the batch argument parser.\n // the reasons for including this as a .cmd quoting rule are:\n //\n // a) this is optimized for the scenario where the argument is passed from the .cmd file to an\n // external program. many programs (e.g. .NET console apps) rely on the slash-doubling rule.\n //\n // b) it's what we've been doing previously (by deferring to node default behavior) and we\n // haven't heard any complaints about that aspect.\n //\n // note, a weakness of the quoting rules chosen here, is that % is not escaped. in fact, % cannot be\n // escaped when used on the command line directly - even though within a .cmd file % can be escaped\n // by using %%.\n //\n // the saving grace is, on the command line, %var% is left as-is if var is not defined. this contrasts\n // the line parsing rules within a .cmd file, where if var is not defined it is replaced with nothing.\n //\n // one option that was explored was replacing % with ^% - i.e. %var% => ^%var^%. this hack would\n // often work, since it is unlikely that var^ would exist, and the ^ character is removed when the\n // variable is used. the problem, however, is that ^ is not removed when %* is used to pass the args\n // to an external program.\n //\n // an unexplored potential solution for the % escaping problem, is to create a wrapper .cmd file.\n // % can be escaped within a .cmd file.\n let reverse = '\"';\n let quoteHit = true;\n for (let i = arg.length; i > 0; i--) {\n // walk the string in reverse\n reverse += arg[i - 1];\n if (quoteHit && arg[i - 1] === '\\\\') {\n reverse += '\\\\'; // double the slash\n }\n else if (arg[i - 1] === '\"') {\n quoteHit = true;\n reverse += '\"'; // double the quote\n }\n else {\n quoteHit = false;\n }\n }\n reverse += '\"';\n return reverse\n .split('')\n .reverse()\n .join('');\n }\n _uvQuoteCmdArg(arg) {\n // Tool runner wraps child_process.spawn() and needs to apply the same quoting as\n // Node in certain cases where the undocumented spawn option windowsVerbatimArguments\n // is used.\n //\n // Since this function is a port of quote_cmd_arg from Node 4.x (technically, lib UV,\n // see https://github.com/nodejs/node/blob/v4.x/deps/uv/src/win/process.c for details),\n // pasting copyright notice from Node within this function:\n //\n // Copyright Joyent, Inc. and other Node contributors. All rights reserved.\n //\n // Permission is hereby granted, free of charge, to any person obtaining a copy\n // of this software and associated documentation files (the \"Software\"), to\n // deal in the Software without restriction, including without limitation the\n // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n // sell copies of the Software, and to permit persons to whom the Software is\n // furnished to do so, subject to the following conditions:\n //\n // The above copyright notice and this permission notice shall be included in\n // all copies or substantial portions of the Software.\n //\n // THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n // IN THE SOFTWARE.\n if (!arg) {\n // Need double quotation for empty argument\n return '\"\"';\n }\n if (!arg.includes(' ') && !arg.includes('\\t') && !arg.includes('\"')) {\n // No quotation needed\n return arg;\n }\n if (!arg.includes('\"') && !arg.includes('\\\\')) {\n // No embedded double quotes or backslashes, so I can just wrap\n // quote marks around the whole thing.\n return `\"${arg}\"`;\n }\n // Expected input/output:\n // input : hello\"world\n // output: \"hello\\\"world\"\n // input : hello\"\"world\n // output: \"hello\\\"\\\"world\"\n // input : hello\\world\n // output: hello\\world\n // input : hello\\\\world\n // output: hello\\\\world\n // input : hello\\\"world\n // output: \"hello\\\\\\\"world\"\n // input : hello\\\\\"world\n // output: \"hello\\\\\\\\\\\"world\"\n // input : hello world\\\n // output: \"hello world\\\\\" - note the comment in libuv actually reads \"hello world\\\"\n // but it appears the comment is wrong, it should be \"hello world\\\\\"\n let reverse = '\"';\n let quoteHit = true;\n for (let i = arg.length; i > 0; i--) {\n // walk the string in reverse\n reverse += arg[i - 1];\n if (quoteHit && arg[i - 1] === '\\\\') {\n reverse += '\\\\';\n }\n else if (arg[i - 1] === '\"') {\n quoteHit = true;\n reverse += '\\\\';\n }\n else {\n quoteHit = false;\n }\n }\n reverse += '\"';\n return reverse\n .split('')\n .reverse()\n .join('');\n }\n _cloneExecOptions(options) {\n options = options || {};\n const result = {\n cwd: options.cwd || process.cwd(),\n env: options.env || process.env,\n silent: options.silent || false,\n windowsVerbatimArguments: options.windowsVerbatimArguments || false,\n failOnStdErr: options.failOnStdErr || false,\n ignoreReturnCode: options.ignoreReturnCode || false,\n delay: options.delay || 10000\n };\n result.outStream = options.outStream || process.stdout;\n result.errStream = options.errStream || process.stderr;\n return result;\n }\n _getSpawnOptions(options, toolPath) {\n options = options || {};\n const result = {};\n result.cwd = options.cwd;\n result.env = options.env;\n result['windowsVerbatimArguments'] =\n options.windowsVerbatimArguments || this._isCmdFile();\n if (options.windowsVerbatimArguments) {\n result.argv0 = `\"${toolPath}\"`;\n }\n return result;\n }\n /**\n * Exec a tool.\n * Output will be streamed to the live console.\n * Returns promise with return code\n *\n * @param tool path to tool to exec\n * @param options optional exec options. See ExecOptions\n * @returns number\n */\n exec() {\n return __awaiter(this, void 0, void 0, function* () {\n // root the tool path if it is unrooted and contains relative pathing\n if (!ioUtil.isRooted(this.toolPath) &&\n (this.toolPath.includes('/') ||\n (IS_WINDOWS && this.toolPath.includes('\\\\')))) {\n // prefer options.cwd if it is specified, however options.cwd may also need to be rooted\n this.toolPath = path.resolve(process.cwd(), this.options.cwd || process.cwd(), this.toolPath);\n }\n // if the tool is only a file name, then resolve it from the PATH\n // otherwise verify it exists (add extension on Windows if necessary)\n this.toolPath = yield io.which(this.toolPath, true);\n return new Promise((resolve, reject) => {\n this._debug(`exec tool: ${this.toolPath}`);\n this._debug('arguments:');\n for (const arg of this.args) {\n this._debug(` ${arg}`);\n }\n const optionsNonNull = this._cloneExecOptions(this.options);\n if (!optionsNonNull.silent && optionsNonNull.outStream) {\n optionsNonNull.outStream.write(this._getCommandString(optionsNonNull) + os.EOL);\n }\n const state = new ExecState(optionsNonNull, this.toolPath);\n state.on('debug', (message) => {\n this._debug(message);\n });\n const fileName = this._getSpawnFileName();\n const cp = child.spawn(fileName, this._getSpawnArgs(optionsNonNull), this._getSpawnOptions(this.options, fileName));\n const stdbuffer = '';\n if (cp.stdout) {\n cp.stdout.on('data', (data) => {\n if (this.options.listeners && this.options.listeners.stdout) {\n this.options.listeners.stdout(data);\n }\n if (!optionsNonNull.silent && optionsNonNull.outStream) {\n optionsNonNull.outStream.write(data);\n }\n this._processLineBuffer(data, stdbuffer, (line) => {\n if (this.options.listeners && this.options.listeners.stdline) {\n this.options.listeners.stdline(line);\n }\n });\n });\n }\n const errbuffer = '';\n if (cp.stderr) {\n cp.stderr.on('data', (data) => {\n state.processStderr = true;\n if (this.options.listeners && this.options.listeners.stderr) {\n this.options.listeners.stderr(data);\n }\n if (!optionsNonNull.silent &&\n optionsNonNull.errStream &&\n optionsNonNull.outStream) {\n const s = optionsNonNull.failOnStdErr\n ? optionsNonNull.errStream\n : optionsNonNull.outStream;\n s.write(data);\n }\n this._processLineBuffer(data, errbuffer, (line) => {\n if (this.options.listeners && this.options.listeners.errline) {\n this.options.listeners.errline(line);\n }\n });\n });\n }\n cp.on('error', (err) => {\n state.processError = err.message;\n state.processExited = true;\n state.processClosed = true;\n state.CheckComplete();\n });\n cp.on('exit', (code) => {\n state.processExitCode = code;\n state.processExited = true;\n this._debug(`Exit code ${code} received from tool '${this.toolPath}'`);\n state.CheckComplete();\n });\n cp.on('close', (code) => {\n state.processExitCode = code;\n state.processExited = true;\n state.processClosed = true;\n this._debug(`STDIO streams have closed for tool '${this.toolPath}'`);\n state.CheckComplete();\n });\n state.on('done', (error, exitCode) => {\n if (stdbuffer.length > 0) {\n this.emit('stdline', stdbuffer);\n }\n if (errbuffer.length > 0) {\n this.emit('errline', errbuffer);\n }\n cp.removeAllListeners();\n if (error) {\n reject(error);\n }\n else {\n resolve(exitCode);\n }\n });\n if (this.options.input) {\n if (!cp.stdin) {\n throw new Error('child process missing stdin');\n }\n cp.stdin.end(this.options.input);\n }\n });\n });\n }\n}\nexports.ToolRunner = ToolRunner;\n/**\n * Convert an arg string to an array of args. Handles escaping\n *\n * @param argString string of arguments\n * @returns string[] array of arguments\n */\nfunction argStringToArray(argString) {\n const args = [];\n let inQuotes = false;\n let escaped = false;\n let arg = '';\n function append(c) {\n // we only escape double quotes.\n if (escaped && c !== '\"') {\n arg += '\\\\';\n }\n arg += c;\n escaped = false;\n }\n for (let i = 0; i < argString.length; i++) {\n const c = argString.charAt(i);\n if (c === '\"') {\n if (!escaped) {\n inQuotes = !inQuotes;\n }\n else {\n append(c);\n }\n continue;\n }\n if (c === '\\\\' && escaped) {\n append(c);\n continue;\n }\n if (c === '\\\\' && inQuotes) {\n escaped = true;\n continue;\n }\n if (c === ' ' && !inQuotes) {\n if (arg.length > 0) {\n args.push(arg);\n arg = '';\n }\n continue;\n }\n append(c);\n }\n if (arg.length > 0) {\n args.push(arg.trim());\n }\n return args;\n}\nexports.argStringToArray = argStringToArray;\nclass ExecState extends events.EventEmitter {\n constructor(options, toolPath) {\n super();\n this.processClosed = false; // tracks whether the process has exited and stdio is closed\n this.processError = '';\n this.processExitCode = 0;\n this.processExited = false; // tracks whether the process has exited\n this.processStderr = false; // tracks whether stderr was written to\n this.delay = 10000; // 10 seconds\n this.done = false;\n this.timeout = null;\n if (!toolPath) {\n throw new Error('toolPath must not be empty');\n }\n this.options = options;\n this.toolPath = toolPath;\n if (options.delay) {\n this.delay = options.delay;\n }\n }\n CheckComplete() {\n if (this.done) {\n return;\n }\n if (this.processClosed) {\n this._setResult();\n }\n else if (this.processExited) {\n this.timeout = setTimeout(ExecState.HandleTimeout, this.delay, this);\n }\n }\n _debug(message) {\n this.emit('debug', message);\n }\n _setResult() {\n // determine whether there is an error\n let error;\n if (this.processExited) {\n if (this.processError) {\n error = new Error(`There was an error when attempting to execute the process '${this.toolPath}'. This may indicate the process failed to start. Error: ${this.processError}`);\n }\n else if (this.processExitCode !== 0 && !this.options.ignoreReturnCode) {\n error = new Error(`The process '${this.toolPath}' failed with exit code ${this.processExitCode}`);\n }\n else if (this.processStderr && this.options.failOnStdErr) {\n error = new Error(`The process '${this.toolPath}' failed because one or more lines were written to the STDERR stream`);\n }\n }\n // clear the timeout\n if (this.timeout) {\n clearTimeout(this.timeout);\n this.timeout = null;\n }\n this.done = true;\n this.emit('done', error, this.processExitCode);\n }\n static HandleTimeout(state) {\n if (state.done) {\n return;\n }\n if (!state.processClosed && state.processExited) {\n const message = `The STDIO streams did not close within ${state.delay /\n 1000} seconds of the exit event from process '${state.toolPath}'. This may indicate a child process inherited the STDIO streams and has not yet exited.`;\n state._debug(message);\n }\n state._setResult();\n }\n}\n//# sourceMappingURL=toolrunner.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar _a;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst assert_1 = require(\"assert\");\nconst fs = require(\"fs\");\nconst path = require(\"path\");\n_a = fs.promises, exports.chmod = _a.chmod, exports.copyFile = _a.copyFile, exports.lstat = _a.lstat, exports.mkdir = _a.mkdir, exports.readdir = _a.readdir, exports.readlink = _a.readlink, exports.rename = _a.rename, exports.rmdir = _a.rmdir, exports.stat = _a.stat, exports.symlink = _a.symlink, exports.unlink = _a.unlink;\nexports.IS_WINDOWS = process.platform === 'win32';\nfunction exists(fsPath) {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n yield exports.stat(fsPath);\n }\n catch (err) {\n if (err.code === 'ENOENT') {\n return false;\n }\n throw err;\n }\n return true;\n });\n}\nexports.exists = exists;\nfunction isDirectory(fsPath, useStat = false) {\n return __awaiter(this, void 0, void 0, function* () {\n const stats = useStat ? yield exports.stat(fsPath) : yield exports.lstat(fsPath);\n return stats.isDirectory();\n });\n}\nexports.isDirectory = isDirectory;\n/**\n * On OSX/Linux, true if path starts with '/'. On Windows, true for paths like:\n * \\, \\hello, \\\\hello\\share, C:, and C:\\hello (and corresponding alternate separator cases).\n */\nfunction isRooted(p) {\n p = normalizeSeparators(p);\n if (!p) {\n throw new Error('isRooted() parameter \"p\" cannot be empty');\n }\n if (exports.IS_WINDOWS) {\n return (p.startsWith('\\\\') || /^[A-Z]:/i.test(p) // e.g. \\ or \\hello or \\\\hello\n ); // e.g. C: or C:\\hello\n }\n return p.startsWith('/');\n}\nexports.isRooted = isRooted;\n/**\n * Recursively create a directory at `fsPath`.\n *\n * This implementation is optimistic, meaning it attempts to create the full\n * path first, and backs up the path stack from there.\n *\n * @param fsPath The path to create\n * @param maxDepth The maximum recursion depth\n * @param depth The current recursion depth\n */\nfunction mkdirP(fsPath, maxDepth = 1000, depth = 1) {\n return __awaiter(this, void 0, void 0, function* () {\n assert_1.ok(fsPath, 'a path argument must be provided');\n fsPath = path.resolve(fsPath);\n if (depth >= maxDepth)\n return exports.mkdir(fsPath);\n try {\n yield exports.mkdir(fsPath);\n return;\n }\n catch (err) {\n switch (err.code) {\n case 'ENOENT': {\n yield mkdirP(path.dirname(fsPath), maxDepth, depth + 1);\n yield exports.mkdir(fsPath);\n return;\n }\n default: {\n let stats;\n try {\n stats = yield exports.stat(fsPath);\n }\n catch (err2) {\n throw err;\n }\n if (!stats.isDirectory())\n throw err;\n }\n }\n }\n });\n}\nexports.mkdirP = mkdirP;\n/**\n * Best effort attempt to determine whether a file exists and is executable.\n * @param filePath file path to check\n * @param extensions additional file extensions to try\n * @return if file exists and is executable, returns the file path. otherwise empty string.\n */\nfunction tryGetExecutablePath(filePath, extensions) {\n return __awaiter(this, void 0, void 0, function* () {\n let stats = undefined;\n try {\n // test file exists\n stats = yield exports.stat(filePath);\n }\n catch (err) {\n if (err.code !== 'ENOENT') {\n // eslint-disable-next-line no-console\n console.log(`Unexpected error attempting to determine if executable file exists '${filePath}': ${err}`);\n }\n }\n if (stats && stats.isFile()) {\n if (exports.IS_WINDOWS) {\n // on Windows, test for valid extension\n const upperExt = path.extname(filePath).toUpperCase();\n if (extensions.some(validExt => validExt.toUpperCase() === upperExt)) {\n return filePath;\n }\n }\n else {\n if (isUnixExecutable(stats)) {\n return filePath;\n }\n }\n }\n // try each extension\n const originalFilePath = filePath;\n for (const extension of extensions) {\n filePath = originalFilePath + extension;\n stats = undefined;\n try {\n stats = yield exports.stat(filePath);\n }\n catch (err) {\n if (err.code !== 'ENOENT') {\n // eslint-disable-next-line no-console\n console.log(`Unexpected error attempting to determine if executable file exists '${filePath}': ${err}`);\n }\n }\n if (stats && stats.isFile()) {\n if (exports.IS_WINDOWS) {\n // preserve the case of the actual file (since an extension was appended)\n try {\n const directory = path.dirname(filePath);\n const upperName = path.basename(filePath).toUpperCase();\n for (const actualName of yield exports.readdir(directory)) {\n if (upperName === actualName.toUpperCase()) {\n filePath = path.join(directory, actualName);\n break;\n }\n }\n }\n catch (err) {\n // eslint-disable-next-line no-console\n console.log(`Unexpected error attempting to determine the actual case of the file '${filePath}': ${err}`);\n }\n return filePath;\n }\n else {\n if (isUnixExecutable(stats)) {\n return filePath;\n }\n }\n }\n }\n return '';\n });\n}\nexports.tryGetExecutablePath = tryGetExecutablePath;\nfunction normalizeSeparators(p) {\n p = p || '';\n if (exports.IS_WINDOWS) {\n // convert slashes on Windows\n p = p.replace(/\\//g, '\\\\');\n // remove redundant slashes\n return p.replace(/\\\\\\\\+/g, '\\\\');\n }\n // remove redundant slashes\n return p.replace(/\\/\\/+/g, '/');\n}\n// on Mac/Linux, test the execute bit\n// R W X R W X R W X\n// 256 128 64 32 16 8 4 2 1\nfunction isUnixExecutable(stats) {\n return ((stats.mode & 1) > 0 ||\n ((stats.mode & 8) > 0 && stats.gid === process.getgid()) ||\n ((stats.mode & 64) > 0 && stats.uid === process.getuid()));\n}\n//# sourceMappingURL=io-util.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst childProcess = require(\"child_process\");\nconst path = require(\"path\");\nconst util_1 = require(\"util\");\nconst ioUtil = require(\"./io-util\");\nconst exec = util_1.promisify(childProcess.exec);\n/**\n * Copies a file or folder.\n * Based off of shelljs - https://github.com/shelljs/shelljs/blob/9237f66c52e5daa40458f94f9565e18e8132f5a6/src/cp.js\n *\n * @param source source path\n * @param dest destination path\n * @param options optional. See CopyOptions.\n */\nfunction cp(source, dest, options = {}) {\n return __awaiter(this, void 0, void 0, function* () {\n const { force, recursive } = readCopyOptions(options);\n const destStat = (yield ioUtil.exists(dest)) ? yield ioUtil.stat(dest) : null;\n // Dest is an existing file, but not forcing\n if (destStat && destStat.isFile() && !force) {\n return;\n }\n // If dest is an existing directory, should copy inside.\n const newDest = destStat && destStat.isDirectory()\n ? path.join(dest, path.basename(source))\n : dest;\n if (!(yield ioUtil.exists(source))) {\n throw new Error(`no such file or directory: ${source}`);\n }\n const sourceStat = yield ioUtil.stat(source);\n if (sourceStat.isDirectory()) {\n if (!recursive) {\n throw new Error(`Failed to copy. ${source} is a directory, but tried to copy without recursive flag.`);\n }\n else {\n yield cpDirRecursive(source, newDest, 0, force);\n }\n }\n else {\n if (path.relative(source, newDest) === '') {\n // a file cannot be copied to itself\n throw new Error(`'${newDest}' and '${source}' are the same file`);\n }\n yield copyFile(source, newDest, force);\n }\n });\n}\nexports.cp = cp;\n/**\n * Moves a path.\n *\n * @param source source path\n * @param dest destination path\n * @param options optional. See MoveOptions.\n */\nfunction mv(source, dest, options = {}) {\n return __awaiter(this, void 0, void 0, function* () {\n if (yield ioUtil.exists(dest)) {\n let destExists = true;\n if (yield ioUtil.isDirectory(dest)) {\n // If dest is directory copy src into dest\n dest = path.join(dest, path.basename(source));\n destExists = yield ioUtil.exists(dest);\n }\n if (destExists) {\n if (options.force == null || options.force) {\n yield rmRF(dest);\n }\n else {\n throw new Error('Destination already exists');\n }\n }\n }\n yield mkdirP(path.dirname(dest));\n yield ioUtil.rename(source, dest);\n });\n}\nexports.mv = mv;\n/**\n * Remove a path recursively with force\n *\n * @param inputPath path to remove\n */\nfunction rmRF(inputPath) {\n return __awaiter(this, void 0, void 0, function* () {\n if (ioUtil.IS_WINDOWS) {\n // Node doesn't provide a delete operation, only an unlink function. This means that if the file is being used by another\n // program (e.g. antivirus), it won't be deleted. To address this, we shell out the work to rd/del.\n try {\n if (yield ioUtil.isDirectory(inputPath, true)) {\n yield exec(`rd /s /q \"${inputPath}\"`);\n }\n else {\n yield exec(`del /f /a \"${inputPath}\"`);\n }\n }\n catch (err) {\n // if you try to delete a file that doesn't exist, desired result is achieved\n // other errors are valid\n if (err.code !== 'ENOENT')\n throw err;\n }\n // Shelling out fails to remove a symlink folder with missing source, this unlink catches that\n try {\n yield ioUtil.unlink(inputPath);\n }\n catch (err) {\n // if you try to delete a file that doesn't exist, desired result is achieved\n // other errors are valid\n if (err.code !== 'ENOENT')\n throw err;\n }\n }\n else {\n let isDir = false;\n try {\n isDir = yield ioUtil.isDirectory(inputPath);\n }\n catch (err) {\n // if you try to delete a file that doesn't exist, desired result is achieved\n // other errors are valid\n if (err.code !== 'ENOENT')\n throw err;\n return;\n }\n if (isDir) {\n yield exec(`rm -rf \"${inputPath}\"`);\n }\n else {\n yield ioUtil.unlink(inputPath);\n }\n }\n });\n}\nexports.rmRF = rmRF;\n/**\n * Make a directory. Creates the full path with folders in between\n * Will throw if it fails\n *\n * @param fsPath path to create\n * @returns Promise\n */\nfunction mkdirP(fsPath) {\n return __awaiter(this, void 0, void 0, function* () {\n yield ioUtil.mkdirP(fsPath);\n });\n}\nexports.mkdirP = mkdirP;\n/**\n * Returns path of a tool had the tool actually been invoked. Resolves via paths.\n * If you check and the tool does not exist, it will throw.\n *\n * @param tool name of the tool\n * @param check whether to check if tool exists\n * @returns Promise path to tool\n */\nfunction which(tool, check) {\n return __awaiter(this, void 0, void 0, function* () {\n if (!tool) {\n throw new Error(\"parameter 'tool' is required\");\n }\n // recursive when check=true\n if (check) {\n const result = yield which(tool, false);\n if (!result) {\n if (ioUtil.IS_WINDOWS) {\n throw new Error(`Unable to locate executable file: ${tool}. Please verify either the file path exists or the file can be found within a directory specified by the PATH environment variable. Also verify the file has a valid extension for an executable file.`);\n }\n else {\n throw new Error(`Unable to locate executable file: ${tool}. Please verify either the file path exists or the file can be found within a directory specified by the PATH environment variable. Also check the file mode to verify the file is executable.`);\n }\n }\n }\n try {\n // build the list of extensions to try\n const extensions = [];\n if (ioUtil.IS_WINDOWS && process.env.PATHEXT) {\n for (const extension of process.env.PATHEXT.split(path.delimiter)) {\n if (extension) {\n extensions.push(extension);\n }\n }\n }\n // if it's rooted, return it if exists. otherwise return empty.\n if (ioUtil.isRooted(tool)) {\n const filePath = yield ioUtil.tryGetExecutablePath(tool, extensions);\n if (filePath) {\n return filePath;\n }\n return '';\n }\n // if any path separators, return empty\n if (tool.includes('/') || (ioUtil.IS_WINDOWS && tool.includes('\\\\'))) {\n return '';\n }\n // build the list of directories\n //\n // Note, technically \"where\" checks the current directory on Windows. From a toolkit perspective,\n // it feels like we should not do this. Checking the current directory seems like more of a use\n // case of a shell, and the which() function exposed by the toolkit should strive for consistency\n // across platforms.\n const directories = [];\n if (process.env.PATH) {\n for (const p of process.env.PATH.split(path.delimiter)) {\n if (p) {\n directories.push(p);\n }\n }\n }\n // return the first match\n for (const directory of directories) {\n const filePath = yield ioUtil.tryGetExecutablePath(directory + path.sep + tool, extensions);\n if (filePath) {\n return filePath;\n }\n }\n return '';\n }\n catch (err) {\n throw new Error(`which failed with message ${err.message}`);\n }\n });\n}\nexports.which = which;\nfunction readCopyOptions(options) {\n const force = options.force == null ? true : options.force;\n const recursive = Boolean(options.recursive);\n return { force, recursive };\n}\nfunction cpDirRecursive(sourceDir, destDir, currentDepth, force) {\n return __awaiter(this, void 0, void 0, function* () {\n // Ensure there is not a run away recursive copy\n if (currentDepth >= 255)\n return;\n currentDepth++;\n yield mkdirP(destDir);\n const files = yield ioUtil.readdir(sourceDir);\n for (const fileName of files) {\n const srcFile = `${sourceDir}/${fileName}`;\n const destFile = `${destDir}/${fileName}`;\n const srcFileStat = yield ioUtil.lstat(srcFile);\n if (srcFileStat.isDirectory()) {\n // Recurse\n yield cpDirRecursive(srcFile, destFile, currentDepth, force);\n }\n else {\n yield copyFile(srcFile, destFile, force);\n }\n }\n // Change the mode for the newly created directory\n yield ioUtil.chmod(destDir, (yield ioUtil.stat(sourceDir)).mode);\n });\n}\n// Buffered file copy\nfunction copyFile(srcFile, destFile, force) {\n return __awaiter(this, void 0, void 0, function* () {\n if ((yield ioUtil.lstat(srcFile)).isSymbolicLink()) {\n // unlink/re-link it\n try {\n yield ioUtil.lstat(destFile);\n yield ioUtil.unlink(destFile);\n }\n catch (e) {\n // Try to override file permission\n if (e.code === 'EPERM') {\n yield ioUtil.chmod(destFile, '0666');\n yield ioUtil.unlink(destFile);\n }\n // other errors = it doesn't exist, no work to do\n }\n // Copy over symlink\n const symlinkFull = yield ioUtil.readlink(srcFile);\n yield ioUtil.symlink(symlinkFull, destFile, ioUtil.IS_WINDOWS ? 'junction' : null);\n }\n else if (!(yield ioUtil.exists(destFile)) || force) {\n yield ioUtil.copyFile(srcFile, destFile);\n }\n });\n}\n//# sourceMappingURL=io.js.map","import * as core from \"@actions/core\";\nimport * as exec from \"@actions/exec\";\nimport * as path from \"path\";\nimport CommandResult from \"./types\";\n\nexport interface BuildahConfigSettings {\n entrypoint?: string[];\n envs?: string[];\n port?: string;\n workingdir?: string;\n}\n\ninterface Buildah {\n buildUsingDocker(\n image: string, context: string, dockerFiles: string[], buildArgs: string[], useOCI: boolean,\n ): Promise;\n from(baseImage: string): Promise;\n copy(container: string, contentToCopy: string[]): Promise;\n config(container: string, setting: BuildahConfigSettings): Promise;\n commit(container: string, newImageName: string, useOCI: boolean): Promise;\n}\n\nexport class BuildahCli implements Buildah {\n private readonly executable: string;\n\n constructor(executable: string) {\n this.executable = executable;\n }\n\n private static getImageFormatOption(useOCI: boolean): string[] {\n return [ \"--format\", useOCI ? \"oci\" : \"docker\" ];\n }\n\n async buildUsingDocker(\n image: string, context: string, dockerFiles: string[], buildArgs: string[], useOCI: boolean,\n ): Promise {\n const args: string[] = [ \"bud\" ];\n dockerFiles.forEach((file) => {\n args.push(\"-f\");\n args.push(file);\n });\n buildArgs.forEach((buildArg) => {\n args.push(\"--build-arg\");\n args.push(buildArg);\n });\n args.push(...BuildahCli.getImageFormatOption(useOCI));\n args.push(\"-t\");\n args.push(image);\n args.push(context);\n return this.execute(args);\n }\n\n async from(baseImage: string): Promise {\n return this.execute([ \"from\", baseImage ]);\n }\n\n async copy(container: string, contentToCopy: string[], contentPath?: string): Promise {\n if (contentToCopy.length === 0) {\n return undefined;\n }\n\n core.debug(\"copy\");\n core.debug(container);\n for (const content of contentToCopy) {\n const args: string[] = [ \"copy\", container, content ];\n if (contentPath) {\n args.push(contentPath);\n }\n return this.execute(args);\n }\n\n return undefined;\n }\n\n async config(container: string, settings: BuildahConfigSettings): Promise {\n core.debug(\"config\");\n core.debug(container);\n const args: string[] = [ \"config\" ];\n if (settings.entrypoint) {\n args.push(\"--entrypoint\");\n args.push(BuildahCli.convertArrayToStringArg(settings.entrypoint));\n }\n if (settings.port) {\n args.push(\"--port\");\n args.push(settings.port);\n }\n if (settings.envs) {\n settings.envs.forEach((env) => {\n args.push(\"--env\");\n args.push(env);\n });\n }\n args.push(container);\n return this.execute(args);\n }\n\n async commit(container: string, newImageName: string, useOCI: boolean): Promise {\n core.debug(\"commit\");\n core.debug(container);\n core.debug(newImageName);\n const args: string[] = [\n \"commit\", ...BuildahCli.getImageFormatOption(useOCI),\n \"--squash\", container, newImageName,\n ];\n return this.execute(args);\n }\n\n async tag(imageName: string, tags: string[]): Promise {\n const args: string[] = [ \"tag\" ];\n for (const tag of tags) {\n args.push(`${imageName}:${tag}`);\n }\n core.info(`Tagging the built image with tags ${tags.toString()}`);\n return this.execute(args);\n }\n\n private static convertArrayToStringArg(args: string[]): string {\n let arrayAsString = \"[\";\n args.forEach((arg) => {\n arrayAsString += `\"${arg}\",`;\n });\n return `${arrayAsString.slice(0, -1)}]`;\n }\n\n private async execute(args: string[], execOptions: exec.ExecOptions = {}): Promise {\n // ghCore.info(`${EXECUTABLE} ${args.join(\" \")}`)\n\n let stdout = \"\";\n let stderr = \"\";\n\n const finalExecOptions = { ...execOptions };\n finalExecOptions.ignoreReturnCode = true; // the return code is processed below\n\n finalExecOptions.listeners = {\n stdline: (line): void => {\n stdout += line + \"\\n\";\n },\n errline: (line):void => {\n stderr += line + \"\\n\";\n },\n };\n\n const exitCode = await exec.exec(this.executable, args, finalExecOptions);\n\n if (execOptions.ignoreReturnCode !== true && exitCode !== 0) {\n // Throwing the stderr as part of the Error makes the stderr\n // show up in the action outline, which saves some clicking when debugging.\n let error = `${path.basename(this.executable)} exited with code ${exitCode}`;\n if (stderr) {\n error += `\\n${stderr}`;\n }\n throw new Error(error);\n }\n\n return {\n exitCode, output: stdout, error: stderr,\n };\n }\n}\n","// This file was auto-generated by action-io-generator. Do not edit by hand!\nexport enum Inputs {\n /**\n * The base image to use to create a new container image\n * Required: true\n * Default: None.\n */\n BASE_IMAGE = \"base-image\",\n /**\n * List of --build-args to pass to buildah\n * Required: false\n * Default: None.\n */\n BUILD_ARGS = \"build-args\",\n /**\n * List of files/directories to copy inside the base image\n * Required: false\n * Default: None.\n */\n CONTENT = \"content\",\n /**\n * Path of the directory to use as context (default: .)\n * Required: false\n * Default: \".\"\n */\n CONTEXT = \"context\",\n /**\n * List of Dockerfile paths (eg: ./Dockerfile)\n * Required: false\n * Default: None.\n */\n DOCKERFILES = \"dockerfiles\",\n /**\n * The entry point to set for containers based on image\n * Required: false\n * Default: None.\n */\n ENTRYPOINT = \"entrypoint\",\n /**\n * List of environment variables to be set when running containers based on image\n * Required: false\n * Default: None.\n */\n ENVS = \"envs\",\n /**\n * The name (reference) of the image to build\n * Required: true\n * Default: None.\n */\n IMAGE = \"image\",\n /**\n * Set to true to build using the OCI image format instead of the Docker image format\n * Required: false\n * Default: \"false\"\n */\n OCI = \"oci\",\n /**\n * The port to expose when running containers based on image\n * Required: false\n * Default: None.\n */\n PORT = \"port\",\n /**\n * The tags of the image to build. For multiple tags, seperate by a space. For example, \"latest v1\".\n * Required: false\n * Default: \"latest\"\n */\n TAGS = \"tags\",\n /**\n * The working directory to use within the container\n * Required: false\n * Default: None.\n */\n WORKDIR = \"workdir\",\n}\n\nexport enum Outputs {\n /**\n * Name of the image built\n * Required: false\n * Default: None.\n */\n IMAGE = \"image\",\n /**\n * List of the tags that were created, separated by spaces\n * Required: false\n * Default: None.\n */\n TAGS = \"tags\",\n}\n","import * as core from \"@actions/core\";\nimport * as io from \"@actions/io\";\nimport * as path from \"path\";\nimport { Inputs, Outputs } from \"./generated/inputs-outputs\";\nimport { BuildahCli, BuildahConfigSettings } from \"./buildah\";\n\nexport async function run(): Promise {\n if (process.env.RUNNER_OS !== \"Linux\") {\n throw new Error(\"buildah, and therefore this action, only works on Linux. Please use a Linux runner.\");\n }\n\n // get buildah cli\n const buildahPath = await io.which(\"buildah\", true);\n const cli: BuildahCli = new BuildahCli(buildahPath);\n\n const workspace = process.env.GITHUB_WORKSPACE || process.cwd();\n const dockerFiles = getInputList(Inputs.DOCKERFILES);\n const image = core.getInput(Inputs.IMAGE, { required: true });\n const tags = core.getInput(Inputs.TAGS) || \"latest\";\n const tagsList: string[] = tags.split(\" \");\n const newImage = `${image}:${tagsList[0]}`;\n const useOCI = core.getInput(Inputs.OCI) === \"true\";\n\n if (dockerFiles.length !== 0) {\n await doBuildUsingDockerFiles(cli, newImage, workspace, dockerFiles, useOCI);\n }\n else {\n await doBuildFromScratch(cli, newImage, useOCI);\n }\n\n if (tagsList.length > 1) {\n await cli.tag(image, tagsList);\n }\n core.setOutput(Outputs.IMAGE, image);\n core.setOutput(Outputs.TAGS, tags);\n}\n\nasync function doBuildUsingDockerFiles(\n cli: BuildahCli, newImage: string, workspace: string, dockerFiles: string[], useOCI: boolean,\n): Promise {\n if (dockerFiles.length === 1) {\n core.info(`Performing build from Dockerfile`);\n }\n else {\n core.info(`Performing build from ${dockerFiles.length} Dockerfiles`);\n }\n\n const context = path.join(workspace, core.getInput(Inputs.CONTEXT));\n const buildArgs = getInputList(Inputs.BUILD_ARGS);\n const dockerFileAbsPaths = dockerFiles.map((file) => path.join(workspace, file));\n await cli.buildUsingDocker(newImage, context, dockerFileAbsPaths, buildArgs, useOCI);\n}\n\nasync function doBuildFromScratch(\n cli: BuildahCli, newImage: string, useOCI: boolean,\n): Promise {\n core.info(`Performing build from scratch`);\n\n const baseImage = core.getInput(Inputs.BASE_IMAGE, { required: true });\n const content = getInputList(Inputs.CONTENT);\n const entrypoint = getInputList(Inputs.ENTRYPOINT);\n const port = core.getInput(Inputs.PORT);\n const workingDir = core.getInput(Inputs.WORKDIR);\n const envs = getInputList(Inputs.ENVS);\n\n const container = await cli.from(baseImage);\n const containerId = container.output.replace(\"\\n\", \"\");\n\n await cli.copy(containerId, content);\n\n const newImageConfig: BuildahConfigSettings = {\n entrypoint,\n port,\n workingdir: workingDir,\n envs,\n };\n await cli.config(containerId, newImageConfig);\n await cli.commit(containerId, newImage, useOCI);\n}\n\nfunction getInputList(name: string): string[] {\n const items = core.getInput(name);\n if (!items) {\n return [];\n }\n return items\n .split(/\\r?\\n/)\n .filter((x) => x)\n .reduce(\n (acc, line) => acc.concat(line).map((pat) => pat.trim()),\n [],\n );\n}\n\nrun().catch(core.setFailed);\n","module.exports = require(\"assert\");;","module.exports = require(\"child_process\");;","module.exports = require(\"events\");;","module.exports = require(\"fs\");;","module.exports = require(\"os\");;","module.exports = require(\"path\");;","module.exports = require(\"util\");;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tif(__webpack_module_cache__[moduleId]) {\n\t\treturn __webpack_module_cache__[moduleId].exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\tvar threw = true;\n\ttry {\n\t\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\t\tthrew = false;\n\t} finally {\n\t\tif(threw) delete __webpack_module_cache__[moduleId];\n\t}\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","\n__webpack_require__.ab = __dirname + \"/\";","// module exports must be returned from runtime so entry inlining is disabled\n// startup\n// Load entry module and return exports\nreturn __webpack_require__(144);\n"]}
\ No newline at end of file
diff --git a/dist/language-image.json b/dist/language-image.json
deleted file mode 100644
index 2845f1b..0000000
--- a/dist/language-image.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "java": "docker.io/fabric8/java-alpine-openjdk11-jre"
-}
\ No newline at end of file
diff --git a/dist/languages.yaml b/dist/languages.yaml
deleted file mode 100644
index 1f85918..0000000
--- a/dist/languages.yaml
+++ /dev/null
@@ -1,6622 +0,0 @@
-# Defines all Languages known to GitHub.
-#
-# fs_name - Optional field. Only necessary as a replacement for the sample directory name if the
-# language name is not a valid filename under the Windows filesystem (e.g., if it
-# contains an asterisk).
-# type - Either data, programming, markup, prose, or nil
-# aliases - An Array of additional aliases (implicitly
-# includes name.downcase)
-# ace_mode - A String name of the Ace Mode used for highlighting whenever
-# a file is edited. This must match one of the filenames in http://git.io/3XO_Cg.
-# Use "text" if a mode does not exist.
-# codemirror_mode - A String name of the CodeMirror Mode used for highlighting whenever a file is edited.
-# This must match a mode from https://git.io/vi9Fx
-# codemirror_mime_type - A String name of the file mime type used for highlighting whenever a file is edited.
-# This should match the `mime` associated with the mode from https://git.io/f4SoQ
-# wrap - Boolean wrap to enable line wrapping (default: false)
-# extensions - An Array of associated extensions (the first one is
-# considered the primary extension, the others should be
-# listed alphabetically)
-# filenames - An Array of filenames commonly associated with the language
-# interpreters - An Array of associated interpreters
-# searchable - Boolean flag to enable searching (defaults to true)
-# language_id - Integer used as a language-name-independent indexed field so that we can rename
-# languages in Linguist without reindexing all the code on GitHub. Must not be
-# changed for existing languages without the explicit permission of GitHub staff.
-# color - CSS hex color to represent the language. Only used if type is "programming" or "markup".
-# tm_scope - The TextMate scope that represents this programming
-# language. This should match one of the scopes listed in
-# the grammars.yml file. Use "none" if there is no grammar
-# for this language.
-# group - Name of the parent language. Languages in a group are counted
-# in the statistics as the parent language.
-#
-# Any additions or modifications (even trivial) should have corresponding
-# test changes in `test/test_blob.rb`.
-#
-# Please keep this list alphabetized. Capitalization comes before lowercase.
-
----
-1C Enterprise:
- type: programming
- color: "#814CCC"
- extensions:
- - ".bsl"
- - ".os"
- tm_scope: source.bsl
- ace_mode: text
- language_id: 0
-4D:
- type: programming
- extensions:
- - ".4dm"
- tm_scope: source.4dm
- ace_mode: text
- language_id: 577529595
-ABAP:
- type: programming
- color: "#E8274B"
- extensions:
- - ".abap"
- tm_scope: source.abap
- ace_mode: abap
- language_id: 1
-ABNF:
- type: data
- ace_mode: text
- extensions:
- - ".abnf"
- tm_scope: source.abnf
- language_id: 429
-AGS Script:
- type: programming
- color: "#B9D9FF"
- aliases:
- - ags
- extensions:
- - ".asc"
- - ".ash"
- tm_scope: source.c++
- ace_mode: c_cpp
- codemirror_mode: clike
- codemirror_mime_type: text/x-c++src
- language_id: 2
-AL:
- type: programming
- color: "#3AA2B5"
- extensions:
- - ".al"
- tm_scope: source.al
- ace_mode: text
- language_id: 658971832
-AMPL:
- type: programming
- color: "#E6EFBB"
- extensions:
- - ".ampl"
- - ".mod"
- tm_scope: source.ampl
- ace_mode: text
- language_id: 3
-ANTLR:
- type: programming
- color: "#9DC3FF"
- extensions:
- - ".g4"
- tm_scope: source.antlr
- ace_mode: text
- language_id: 4
-API Blueprint:
- type: markup
- color: "#2ACCA8"
- ace_mode: markdown
- extensions:
- - ".apib"
- tm_scope: text.html.markdown.source.gfm.apib
- language_id: 5
-APL:
- type: programming
- color: "#5A8164"
- extensions:
- - ".apl"
- - ".dyalog"
- interpreters:
- - apl
- - aplx
- - dyalog
- tm_scope: source.apl
- ace_mode: text
- codemirror_mode: apl
- codemirror_mime_type: text/apl
- language_id: 6
-ASL:
- type: programming
- ace_mode: text
- extensions:
- - ".asl"
- - ".dsl"
- tm_scope: source.asl
- language_id: 124996147
-ASN.1:
- type: data
- extensions:
- - ".asn"
- - ".asn1"
- tm_scope: source.asn
- ace_mode: text
- codemirror_mode: asn.1
- codemirror_mime_type: text/x-ttcn-asn
- language_id: 7
-ASP.NET:
- type: programming
- tm_scope: text.html.asp
- color: "#9400ff"
- aliases:
- - aspx
- - aspx-vb
- extensions:
- - ".asax"
- - ".ascx"
- - ".ashx"
- - ".asmx"
- - ".aspx"
- - ".axd"
- ace_mode: text
- codemirror_mode: htmlembedded
- codemirror_mime_type: application/x-aspx
- language_id: 564186416
-ATS:
- type: programming
- color: "#1ac620"
- aliases:
- - ats2
- extensions:
- - ".dats"
- - ".hats"
- - ".sats"
- tm_scope: source.ats
- ace_mode: ocaml
- language_id: 9
-ActionScript:
- type: programming
- tm_scope: source.actionscript.3
- color: "#882B0F"
- aliases:
- - actionscript 3
- - actionscript3
- - as3
- extensions:
- - ".as"
- ace_mode: actionscript
- language_id: 10
-Ada:
- type: programming
- color: "#02f88c"
- extensions:
- - ".adb"
- - ".ada"
- - ".ads"
- aliases:
- - ada95
- - ada2005
- tm_scope: source.ada
- ace_mode: ada
- language_id: 11
-Adobe Font Metrics:
- type: data
- tm_scope: source.afm
- extensions:
- - ".afm"
- aliases:
- - acfm
- - adobe composite font metrics
- - adobe multiple font metrics
- - amfm
- ace_mode: text
- language_id: 147198098
-Agda:
- type: programming
- color: "#315665"
- extensions:
- - ".agda"
- tm_scope: source.agda
- ace_mode: text
- language_id: 12
-Alloy:
- type: programming
- color: "#64C800"
- extensions:
- - ".als"
- tm_scope: source.alloy
- ace_mode: text
- language_id: 13
-Alpine Abuild:
- type: programming
- group: Shell
- aliases:
- - abuild
- - apkbuild
- filenames:
- - APKBUILD
- tm_scope: source.shell
- ace_mode: sh
- codemirror_mode: shell
- codemirror_mime_type: text/x-sh
- language_id: 14
-Altium Designer:
- type: data
- aliases:
- - altium
- extensions:
- - ".OutJob"
- - ".PcbDoc"
- - ".PrjPCB"
- - ".SchDoc"
- tm_scope: source.ini
- ace_mode: ini
- language_id: 187772328
-AngelScript:
- type: programming
- color: "#C7D7DC"
- extensions:
- - ".as"
- - ".angelscript"
- tm_scope: source.angelscript
- ace_mode: text
- codemirror_mode: clike
- codemirror_mime_type: text/x-c++src
- language_id: 389477596
-Ant Build System:
- type: data
- tm_scope: text.xml.ant
- filenames:
- - ant.xml
- - build.xml
- ace_mode: xml
- codemirror_mode: xml
- codemirror_mime_type: application/xml
- language_id: 15
-ApacheConf:
- type: data
- aliases:
- - aconf
- - apache
- extensions:
- - ".apacheconf"
- - ".vhost"
- filenames:
- - ".htaccess"
- - apache2.conf
- - httpd.conf
- tm_scope: source.apache-config
- ace_mode: apache_conf
- language_id: 16
-Apex:
- type: programming
- color: "#1797c0"
- extensions:
- - ".cls"
- tm_scope: source.java
- ace_mode: java
- codemirror_mode: clike
- codemirror_mime_type: text/x-java
- language_id: 17
-Apollo Guidance Computer:
- type: programming
- color: "#0B3D91"
- group: Assembly
- extensions:
- - ".agc"
- tm_scope: source.agc
- ace_mode: assembly_x86
- language_id: 18
-AppleScript:
- type: programming
- aliases:
- - osascript
- extensions:
- - ".applescript"
- - ".scpt"
- interpreters:
- - osascript
- tm_scope: source.applescript
- ace_mode: applescript
- color: "#101F1F"
- language_id: 19
-Arc:
- type: programming
- color: "#aa2afe"
- extensions:
- - ".arc"
- tm_scope: none
- ace_mode: text
- language_id: 20
-AsciiDoc:
- type: prose
- ace_mode: asciidoc
- wrap: true
- extensions:
- - ".asciidoc"
- - ".adoc"
- - ".asc"
- tm_scope: text.html.asciidoc
- language_id: 22
-AspectJ:
- type: programming
- color: "#a957b0"
- extensions:
- - ".aj"
- tm_scope: source.aspectj
- ace_mode: text
- language_id: 23
-Assembly:
- type: programming
- color: "#6E4C13"
- aliases:
- - asm
- - nasm
- extensions:
- - ".asm"
- - ".a51"
- - ".i"
- - ".inc"
- - ".nasm"
- tm_scope: source.assembly
- ace_mode: assembly_x86
- language_id: 24
-Asymptote:
- type: programming
- color: "#ff0000"
- extensions:
- - ".asy"
- interpreters:
- - asy
- tm_scope: source.c++
- ace_mode: c_cpp
- codemirror_mode: clike
- codemirror_mime_type: text/x-kotlin
- language_id: 591605007
-Augeas:
- type: programming
- extensions:
- - ".aug"
- tm_scope: none
- ace_mode: text
- language_id: 25
-AutoHotkey:
- type: programming
- color: "#6594b9"
- aliases:
- - ahk
- extensions:
- - ".ahk"
- - ".ahkl"
- tm_scope: source.ahk
- ace_mode: autohotkey
- language_id: 26
-AutoIt:
- type: programming
- color: "#1C3552"
- aliases:
- - au3
- - AutoIt3
- - AutoItScript
- extensions:
- - ".au3"
- tm_scope: source.autoit
- ace_mode: autohotkey
- language_id: 27
-Avro IDL:
- type: data
- extensions:
- - ".avdl"
- tm_scope: source.avro
- ace_mode: text
- language_id: 785497837
-Awk:
- type: programming
- extensions:
- - ".awk"
- - ".auk"
- - ".gawk"
- - ".mawk"
- - ".nawk"
- interpreters:
- - awk
- - gawk
- - mawk
- - nawk
- tm_scope: source.awk
- ace_mode: text
- language_id: 28
-Ballerina:
- type: programming
- extensions:
- - ".bal"
- tm_scope: source.ballerina
- ace_mode: text
- color: "#FF5000"
- language_id: 720859680
-Batchfile:
- type: programming
- aliases:
- - bat
- - batch
- - dosbatch
- - winbatch
- extensions:
- - ".bat"
- - ".cmd"
- tm_scope: source.batchfile
- ace_mode: batchfile
- color: "#C1F12E"
- language_id: 29
-Befunge:
- type: programming
- extensions:
- - ".befunge"
- tm_scope: source.befunge
- ace_mode: text
- language_id: 30
-BibTeX:
- type: markup
- group: TeX
- extensions:
- - ".bib"
- - ".bibtex"
- tm_scope: text.bibtex
- ace_mode: tex
- codemirror_mode: stex
- codemirror_mime_type: text/x-stex
- language_id: 982188347
-Bison:
- type: programming
- color: "#6A463F"
- group: Yacc
- tm_scope: source.yacc
- extensions:
- - ".bison"
- ace_mode: text
- language_id: 31
-BitBake:
- type: programming
- tm_scope: none
- extensions:
- - ".bb"
- ace_mode: text
- language_id: 32
-Blade:
- type: markup
- color: "#f7523f"
- extensions:
- - ".blade"
- - ".blade.php"
- tm_scope: text.html.php.blade
- ace_mode: text
- language_id: 33
-BlitzBasic:
- type: programming
- aliases:
- - b3d
- - blitz3d
- - blitzplus
- - bplus
- extensions:
- - ".bb"
- - ".decls"
- tm_scope: source.blitzmax
- ace_mode: text
- language_id: 34
-BlitzMax:
- type: programming
- color: "#cd6400"
- extensions:
- - ".bmx"
- aliases:
- - bmax
- tm_scope: source.blitzmax
- ace_mode: text
- language_id: 35
-Bluespec:
- type: programming
- extensions:
- - ".bsv"
- tm_scope: source.bsv
- ace_mode: verilog
- language_id: 36
-Boo:
- type: programming
- color: "#d4bec1"
- extensions:
- - ".boo"
- ace_mode: text
- tm_scope: source.boo
- language_id: 37
-Brainfuck:
- type: programming
- color: "#2F2530"
- extensions:
- - ".b"
- - ".bf"
- tm_scope: source.bf
- ace_mode: text
- codemirror_mode: brainfuck
- codemirror_mime_type: text/x-brainfuck
- language_id: 38
-Brightscript:
- type: programming
- extensions:
- - ".brs"
- tm_scope: source.brightscript
- ace_mode: text
- language_id: 39
-C:
- type: programming
- color: "#555555"
- extensions:
- - ".c"
- - ".cats"
- - ".h"
- - ".idc"
- interpreters:
- - tcc
- tm_scope: source.c
- ace_mode: c_cpp
- codemirror_mode: clike
- codemirror_mime_type: text/x-csrc
- language_id: 41
-C#:
- type: programming
- ace_mode: csharp
- codemirror_mode: clike
- codemirror_mime_type: text/x-csharp
- tm_scope: source.cs
- color: "#178600"
- aliases:
- - csharp
- extensions:
- - ".cs"
- - ".cake"
- - ".csx"
- - ".linq"
- language_id: 42
-C++:
- type: programming
- tm_scope: source.c++
- ace_mode: c_cpp
- codemirror_mode: clike
- codemirror_mime_type: text/x-c++src
- color: "#f34b7d"
- aliases:
- - cpp
- extensions:
- - ".cpp"
- - ".c++"
- - ".cc"
- - ".cp"
- - ".cxx"
- - ".h"
- - ".h++"
- - ".hh"
- - ".hpp"
- - ".hxx"
- - ".inc"
- - ".inl"
- - ".ino"
- - ".ipp"
- - ".re"
- - ".tcc"
- - ".tpp"
- language_id: 43
-C-ObjDump:
- type: data
- extensions:
- - ".c-objdump"
- tm_scope: objdump.x86asm
- ace_mode: assembly_x86
- language_id: 44
-C2hs Haskell:
- type: programming
- group: Haskell
- aliases:
- - c2hs
- extensions:
- - ".chs"
- tm_scope: source.haskell
- ace_mode: haskell
- codemirror_mode: haskell
- codemirror_mime_type: text/x-haskell
- language_id: 45
-CLIPS:
- type: programming
- extensions:
- - ".clp"
- tm_scope: source.clips
- ace_mode: text
- language_id: 46
-CMake:
- type: programming
- extensions:
- - ".cmake"
- - ".cmake.in"
- filenames:
- - CMakeLists.txt
- tm_scope: source.cmake
- ace_mode: text
- codemirror_mode: cmake
- codemirror_mime_type: text/x-cmake
- language_id: 47
-COBOL:
- type: programming
- extensions:
- - ".cob"
- - ".cbl"
- - ".ccp"
- - ".cobol"
- - ".cpy"
- tm_scope: source.cobol
- ace_mode: cobol
- codemirror_mode: cobol
- codemirror_mime_type: text/x-cobol
- language_id: 48
-COLLADA:
- type: data
- extensions:
- - ".dae"
- tm_scope: text.xml
- ace_mode: xml
- codemirror_mode: xml
- codemirror_mime_type: text/xml
- language_id: 49
-CSON:
- type: data
- color: "#244776"
- tm_scope: source.coffee
- ace_mode: coffee
- codemirror_mode: coffeescript
- codemirror_mime_type: text/x-coffeescript
- extensions:
- - ".cson"
- language_id: 424
-CSS:
- type: markup
- tm_scope: source.css
- ace_mode: css
- codemirror_mode: css
- codemirror_mime_type: text/css
- color: "#563d7c"
- extensions:
- - ".css"
- language_id: 50
-CSV:
- type: data
- ace_mode: text
- tm_scope: none
- extensions:
- - ".csv"
- language_id: 51
-CWeb:
- type: programming
- extensions:
- - ".w"
- tm_scope: none
- ace_mode: text
- language_id: 657332628
-Cabal Config:
- type: data
- aliases:
- - Cabal
- extensions:
- - ".cabal"
- filenames:
- - cabal.config
- - cabal.project
- ace_mode: haskell
- codemirror_mode: haskell
- codemirror_mime_type: text/x-haskell
- tm_scope: source.cabal
- language_id: 677095381
-Cap'n Proto:
- type: programming
- tm_scope: source.capnp
- extensions:
- - ".capnp"
- ace_mode: text
- language_id: 52
-CartoCSS:
- type: programming
- aliases:
- - Carto
- extensions:
- - ".mss"
- ace_mode: text
- tm_scope: source.css.mss
- language_id: 53
-Ceylon:
- type: programming
- color: "#dfa535"
- extensions:
- - ".ceylon"
- tm_scope: source.ceylon
- ace_mode: text
- language_id: 54
-Chapel:
- type: programming
- color: "#8dc63f"
- aliases:
- - chpl
- extensions:
- - ".chpl"
- tm_scope: source.chapel
- ace_mode: text
- language_id: 55
-Charity:
- type: programming
- extensions:
- - ".ch"
- tm_scope: none
- ace_mode: text
- language_id: 56
-ChucK:
- type: programming
- extensions:
- - ".ck"
- tm_scope: source.java
- ace_mode: java
- codemirror_mode: clike
- codemirror_mime_type: text/x-java
- language_id: 57
-Cirru:
- type: programming
- color: "#ccccff"
- tm_scope: source.cirru
- ace_mode: cirru
- extensions:
- - ".cirru"
- language_id: 58
-Clarion:
- type: programming
- color: "#db901e"
- ace_mode: text
- extensions:
- - ".clw"
- tm_scope: source.clarion
- language_id: 59
-Classic ASP:
- type: programming
- color: "#6a40fd"
- tm_scope: text.html.asp
- aliases:
- - asp
- extensions:
- - ".asp"
- ace_mode: text
- language_id: 8
-Clean:
- type: programming
- color: "#3F85AF"
- extensions:
- - ".icl"
- - ".dcl"
- tm_scope: source.clean
- ace_mode: text
- language_id: 60
-Click:
- type: programming
- color: "#E4E6F3"
- extensions:
- - ".click"
- tm_scope: source.click
- ace_mode: text
- language_id: 61
-Clojure:
- type: programming
- tm_scope: source.clojure
- ace_mode: clojure
- codemirror_mode: clojure
- codemirror_mime_type: text/x-clojure
- color: "#db5855"
- extensions:
- - ".clj"
- - ".boot"
- - ".cl2"
- - ".cljc"
- - ".cljs"
- - ".cljs.hl"
- - ".cljscm"
- - ".cljx"
- - ".hic"
- filenames:
- - riemann.config
- language_id: 62
-Closure Templates:
- type: markup
- group: HTML
- ace_mode: soy_template
- codemirror_mode: soy
- codemirror_mime_type: text/x-soy
- aliases:
- - soy
- extensions:
- - ".soy"
- tm_scope: text.html.soy
- language_id: 357046146
-Cloud Firestore Security Rules:
- type: data
- ace_mode: less
- codemirror_mode: css
- codemirror_mime_type: text/css
- tm_scope: source.firestore
- filenames:
- - firestore.rules
- language_id: 407996372
-CoNLL-U:
- type: data
- extensions:
- - ".conllu"
- - ".conll"
- tm_scope: text.conllu
- ace_mode: text
- aliases:
- - CoNLL
- - CoNLL-X
- language_id: 421026389
-CodeQL:
- type: programming
- extensions:
- - ".ql"
- - ".qll"
- tm_scope: source.ql
- ace_mode: text
- language_id: 424259634
- aliases:
- - ql
-CoffeeScript:
- type: programming
- tm_scope: source.coffee
- ace_mode: coffee
- codemirror_mode: coffeescript
- codemirror_mime_type: text/x-coffeescript
- color: "#244776"
- aliases:
- - coffee
- - coffee-script
- extensions:
- - ".coffee"
- - "._coffee"
- - ".cake"
- - ".cjsx"
- - ".iced"
- filenames:
- - Cakefile
- interpreters:
- - coffee
- language_id: 63
-ColdFusion:
- type: programming
- ace_mode: coldfusion
- color: "#ed2cd6"
- aliases:
- - cfm
- - cfml
- - coldfusion html
- extensions:
- - ".cfm"
- - ".cfml"
- tm_scope: text.html.cfm
- language_id: 64
-ColdFusion CFC:
- type: programming
- color: "#ed2cd6"
- group: ColdFusion
- ace_mode: coldfusion
- aliases:
- - cfc
- extensions:
- - ".cfc"
- tm_scope: source.cfscript
- language_id: 65
-Common Lisp:
- type: programming
- tm_scope: source.lisp
- color: "#3fb68b"
- aliases:
- - lisp
- extensions:
- - ".lisp"
- - ".asd"
- - ".cl"
- - ".l"
- - ".lsp"
- - ".ny"
- - ".podsl"
- - ".sexp"
- interpreters:
- - lisp
- - sbcl
- - ccl
- - clisp
- - ecl
- ace_mode: lisp
- codemirror_mode: commonlisp
- codemirror_mime_type: text/x-common-lisp
- language_id: 66
-Common Workflow Language:
- aliases:
- - cwl
- type: programming
- ace_mode: yaml
- codemirror_mode: yaml
- codemirror_mime_type: text/x-yaml
- extensions:
- - ".cwl"
- interpreters:
- - cwl-runner
- color: "#B5314C"
- tm_scope: source.cwl
- language_id: 988547172
-Component Pascal:
- type: programming
- color: "#B0CE4E"
- extensions:
- - ".cp"
- - ".cps"
- tm_scope: source.pascal
- aliases:
- - delphi
- - objectpascal
- ace_mode: pascal
- codemirror_mode: pascal
- codemirror_mime_type: text/x-pascal
- language_id: 67
-Cool:
- type: programming
- extensions:
- - ".cl"
- tm_scope: source.cool
- ace_mode: text
- language_id: 68
-Coq:
- type: programming
- extensions:
- - ".coq"
- - ".v"
- tm_scope: source.coq
- ace_mode: text
- language_id: 69
-Cpp-ObjDump:
- type: data
- extensions:
- - ".cppobjdump"
- - ".c++-objdump"
- - ".c++objdump"
- - ".cpp-objdump"
- - ".cxx-objdump"
- tm_scope: objdump.x86asm
- aliases:
- - c++-objdump
- ace_mode: assembly_x86
- language_id: 70
-Creole:
- type: prose
- wrap: true
- extensions:
- - ".creole"
- tm_scope: text.html.creole
- ace_mode: text
- language_id: 71
-Crystal:
- type: programming
- color: "#000100"
- extensions:
- - ".cr"
- ace_mode: ruby
- codemirror_mode: crystal
- codemirror_mime_type: text/x-crystal
- tm_scope: source.crystal
- interpreters:
- - crystal
- language_id: 72
-Csound:
- type: programming
- aliases:
- - csound-orc
- extensions:
- - ".orc"
- - ".udo"
- tm_scope: source.csound
- ace_mode: csound_orchestra
- language_id: 73
-Csound Document:
- type: programming
- aliases:
- - csound-csd
- extensions:
- - ".csd"
- tm_scope: source.csound-document
- ace_mode: csound_document
- language_id: 74
-Csound Score:
- type: programming
- aliases:
- - csound-sco
- extensions:
- - ".sco"
- tm_scope: source.csound-score
- ace_mode: csound_score
- language_id: 75
-Cuda:
- type: programming
- extensions:
- - ".cu"
- - ".cuh"
- tm_scope: source.cuda-c++
- ace_mode: c_cpp
- codemirror_mode: clike
- codemirror_mime_type: text/x-c++src
- color: "#3A4E3A"
- language_id: 77
-Cycript:
- type: programming
- extensions:
- - ".cy"
- tm_scope: source.js
- ace_mode: javascript
- codemirror_mode: javascript
- codemirror_mime_type: text/javascript
- language_id: 78
-Cython:
- type: programming
- group: Python
- extensions:
- - ".pyx"
- - ".pxd"
- - ".pxi"
- aliases:
- - pyrex
- tm_scope: source.cython
- ace_mode: text
- codemirror_mode: python
- codemirror_mime_type: text/x-cython
- language_id: 79
-D:
- type: programming
- color: "#ba595e"
- extensions:
- - ".d"
- - ".di"
- tm_scope: source.d
- ace_mode: d
- codemirror_mode: d
- codemirror_mime_type: text/x-d
- language_id: 80
-D-ObjDump:
- type: data
- extensions:
- - ".d-objdump"
- tm_scope: objdump.x86asm
- ace_mode: assembly_x86
- language_id: 81
-DIGITAL Command Language:
- type: programming
- aliases:
- - dcl
- extensions:
- - ".com"
- tm_scope: none
- ace_mode: text
- language_id: 82
-DM:
- type: programming
- color: "#447265"
- extensions:
- - ".dm"
- aliases:
- - byond
- tm_scope: source.dm
- ace_mode: c_cpp
- language_id: 83
-DNS Zone:
- type: data
- extensions:
- - ".zone"
- - ".arpa"
- tm_scope: text.zone_file
- ace_mode: text
- language_id: 84
-DTrace:
- type: programming
- aliases:
- - dtrace-script
- extensions:
- - ".d"
- interpreters:
- - dtrace
- tm_scope: source.c
- ace_mode: c_cpp
- codemirror_mode: clike
- codemirror_mime_type: text/x-csrc
- language_id: 85
-Dafny:
- type: programming
- color: "#FFEC25"
- extensions:
- - ".dfy"
- interpreters:
- - dafny
- tm_scope: text.dfy.dafny
- ace_mode: text
- language_id: 969323346
-Darcs Patch:
- type: data
- aliases:
- - dpatch
- extensions:
- - ".darcspatch"
- - ".dpatch"
- tm_scope: none
- ace_mode: text
- language_id: 86
-Dart:
- type: programming
- color: "#00B4AB"
- extensions:
- - ".dart"
- interpreters:
- - dart
- tm_scope: source.dart
- ace_mode: dart
- codemirror_mode: dart
- codemirror_mime_type: application/dart
- language_id: 87
-DataWeave:
- type: programming
- color: "#003a52"
- extensions:
- - ".dwl"
- ace_mode: text
- tm_scope: source.data-weave
- language_id: 974514097
-Dhall:
- type: programming
- color: "#dfafff"
- extensions:
- - ".dhall"
- tm_scope: source.haskell
- ace_mode: haskell
- codemirror_mode: haskell
- codemirror_mime_type: text/x-haskell
- language_id: 793969321
-Diff:
- type: data
- extensions:
- - ".diff"
- - ".patch"
- aliases:
- - udiff
- tm_scope: source.diff
- ace_mode: diff
- codemirror_mode: diff
- codemirror_mime_type: text/x-diff
- language_id: 88
-DirectX 3D File:
- type: data
- extensions:
- - ".x"
- ace_mode: text
- tm_scope: none
- language_id: 201049282
-Dockerfile:
- type: programming
- color: "#384d54"
- tm_scope: source.dockerfile
- extensions:
- - ".dockerfile"
- filenames:
- - Dockerfile
- ace_mode: dockerfile
- codemirror_mode: dockerfile
- codemirror_mime_type: text/x-dockerfile
- language_id: 89
-Dogescript:
- type: programming
- color: "#cca760"
- extensions:
- - ".djs"
- tm_scope: none
- ace_mode: text
- language_id: 90
-Dylan:
- type: programming
- color: "#6c616e"
- extensions:
- - ".dylan"
- - ".dyl"
- - ".intr"
- - ".lid"
- tm_scope: source.dylan
- ace_mode: text
- codemirror_mode: dylan
- codemirror_mime_type: text/x-dylan
- language_id: 91
-E:
- type: programming
- color: "#ccce35"
- extensions:
- - ".E"
- interpreters:
- - rune
- tm_scope: none
- ace_mode: text
- language_id: 92
-EBNF:
- type: data
- extensions:
- - ".ebnf"
- tm_scope: source.ebnf
- ace_mode: text
- codemirror_mode: ebnf
- codemirror_mime_type: text/x-ebnf
- language_id: 430
-ECL:
- type: programming
- color: "#8a1267"
- extensions:
- - ".ecl"
- - ".eclxml"
- tm_scope: none
- ace_mode: text
- codemirror_mode: ecl
- codemirror_mime_type: text/x-ecl
- language_id: 93
-ECLiPSe:
- type: programming
- group: prolog
- extensions:
- - ".ecl"
- tm_scope: source.prolog.eclipse
- ace_mode: prolog
- language_id: 94
-EJS:
- type: markup
- color: "#a91e50"
- group: HTML
- extensions:
- - ".ejs"
- - ".ect"
- - ".jst"
- tm_scope: text.html.js
- ace_mode: ejs
- language_id: 95
-EML:
- type: data
- extensions:
- - ".eml"
- - ".mbox"
- tm_scope: text.eml.basic
- ace_mode: text
- language_id: 529653389
-EQ:
- type: programming
- color: "#a78649"
- extensions:
- - ".eq"
- tm_scope: source.cs
- ace_mode: csharp
- codemirror_mode: clike
- codemirror_mime_type: text/x-csharp
- language_id: 96
-Eagle:
- type: data
- extensions:
- - ".sch"
- - ".brd"
- tm_scope: text.xml
- ace_mode: xml
- codemirror_mode: xml
- codemirror_mime_type: text/xml
- language_id: 97
-Easybuild:
- type: data
- group: Python
- ace_mode: python
- codemirror_mode: python
- codemirror_mime_type: text/x-python
- tm_scope: source.python
- extensions:
- - ".eb"
- language_id: 342840477
-Ecere Projects:
- type: data
- group: JavaScript
- extensions:
- - ".epj"
- tm_scope: source.json
- ace_mode: json
- codemirror_mode: javascript
- codemirror_mime_type: application/json
- language_id: 98
-EditorConfig:
- type: data
- group: INI
- filenames:
- - ".editorconfig"
- aliases:
- - editor-config
- ace_mode: ini
- codemirror_mode: properties
- codemirror_mime_type: text/x-properties
- tm_scope: source.editorconfig
- language_id: 96139566
-Edje Data Collection:
- type: data
- extensions:
- - ".edc"
- tm_scope: source.c++
- ace_mode: c_cpp
- codemirror_mode: clike
- codemirror_mime_type: text/x-c++src
- language_id: 342840478
-Eiffel:
- type: programming
- color: "#4d6977"
- extensions:
- - ".e"
- tm_scope: source.eiffel
- ace_mode: eiffel
- codemirror_mode: eiffel
- codemirror_mime_type: text/x-eiffel
- language_id: 99
-Elixir:
- type: programming
- color: "#6e4a7e"
- extensions:
- - ".ex"
- - ".exs"
- tm_scope: source.elixir
- ace_mode: elixir
- filenames:
- - mix.lock
- interpreters:
- - elixir
- language_id: 100
-Elm:
- type: programming
- color: "#60B5CC"
- extensions:
- - ".elm"
- tm_scope: source.elm
- ace_mode: elm
- codemirror_mode: elm
- codemirror_mime_type: text/x-elm
- language_id: 101
-Emacs Lisp:
- type: programming
- tm_scope: source.emacs.lisp
- color: "#c065db"
- aliases:
- - elisp
- - emacs
- filenames:
- - ".abbrev_defs"
- - ".emacs"
- - ".emacs.desktop"
- - ".gnus"
- - ".spacemacs"
- - ".viper"
- - Cask
- - Project.ede
- - _emacs
- - abbrev_defs
- extensions:
- - ".el"
- - ".emacs"
- - ".emacs.desktop"
- ace_mode: lisp
- codemirror_mode: commonlisp
- codemirror_mime_type: text/x-common-lisp
- language_id: 102
-EmberScript:
- type: programming
- color: "#FFF4F3"
- extensions:
- - ".em"
- - ".emberscript"
- tm_scope: source.coffee
- ace_mode: coffee
- codemirror_mode: coffeescript
- codemirror_mime_type: text/x-coffeescript
- language_id: 103
-Erlang:
- type: programming
- color: "#B83998"
- extensions:
- - ".erl"
- - ".app.src"
- - ".es"
- - ".escript"
- - ".hrl"
- - ".xrl"
- - ".yrl"
- filenames:
- - Emakefile
- - rebar.config
- - rebar.config.lock
- - rebar.lock
- tm_scope: source.erlang
- ace_mode: erlang
- codemirror_mode: erlang
- codemirror_mime_type: text/x-erlang
- interpreters:
- - escript
- language_id: 104
-F#:
- type: programming
- color: "#b845fc"
- aliases:
- - fsharp
- extensions:
- - ".fs"
- - ".fsi"
- - ".fsx"
- tm_scope: source.fsharp
- ace_mode: text
- codemirror_mode: mllike
- codemirror_mime_type: text/x-fsharp
- language_id: 105
-F*:
- fs_name: Fstar
- type: programming
- color: "#572e30"
- aliases:
- - fstar
- extensions:
- - ".fst"
- tm_scope: source.fstar
- ace_mode: text
- language_id: 336943375
-FIGlet Font:
- type: data
- aliases:
- - FIGfont
- extensions:
- - ".flf"
- tm_scope: source.figfont
- ace_mode: text
- language_id: 686129783
-FLUX:
- type: programming
- color: "#88ccff"
- extensions:
- - ".fx"
- - ".flux"
- tm_scope: none
- ace_mode: text
- language_id: 106
-Factor:
- type: programming
- color: "#636746"
- extensions:
- - ".factor"
- filenames:
- - ".factor-boot-rc"
- - ".factor-rc"
- tm_scope: source.factor
- ace_mode: text
- codemirror_mode: factor
- codemirror_mime_type: text/x-factor
- language_id: 108
-Fancy:
- type: programming
- color: "#7b9db4"
- extensions:
- - ".fy"
- - ".fancypack"
- filenames:
- - Fakefile
- tm_scope: source.fancy
- ace_mode: text
- language_id: 109
-Fantom:
- type: programming
- color: "#14253c"
- extensions:
- - ".fan"
- tm_scope: source.fan
- ace_mode: text
- language_id: 110
-Faust:
- type: programming
- color: "#c37240"
- extensions:
- - ".dsp"
- tm_scope: source.faust
- ace_mode: text
- language_id: 622529198
-Filebench WML:
- type: programming
- extensions:
- - ".f"
- tm_scope: none
- ace_mode: text
- language_id: 111
-Filterscript:
- type: programming
- group: RenderScript
- extensions:
- - ".fs"
- tm_scope: none
- ace_mode: text
- language_id: 112
-Formatted:
- type: data
- extensions:
- - ".for"
- - ".eam.fs"
- tm_scope: none
- ace_mode: text
- language_id: 113
-Forth:
- type: programming
- color: "#341708"
- extensions:
- - ".fth"
- - ".4th"
- - ".f"
- - ".for"
- - ".forth"
- - ".fr"
- - ".frt"
- - ".fs"
- tm_scope: source.forth
- ace_mode: forth
- codemirror_mode: forth
- codemirror_mime_type: text/x-forth
- language_id: 114
-Fortran:
- group: Fortran
- type: programming
- color: "#4d41b1"
- extensions:
- - ".f"
- - ".f77"
- - ".for"
- - ".fpp"
- tm_scope: source.fortran
- ace_mode: text
- codemirror_mode: fortran
- codemirror_mime_type: text/x-fortran
- language_id: 107
-Fortran Free Form:
- group: Fortran
- type: programming
- extensions:
- - ".f90"
- - ".f03"
- - ".f08"
- - ".f95"
- tm_scope: source.fortran.modern
- ace_mode: text
- codemirror_mode: fortran
- codemirror_mime_type: text/x-fortran
- language_id: 761352333
-FreeMarker:
- type: programming
- color: "#0050b2"
- aliases:
- - ftl
- extensions:
- - ".ftl"
- tm_scope: text.html.ftl
- ace_mode: ftl
- language_id: 115
-Frege:
- type: programming
- color: "#00cafe"
- extensions:
- - ".fr"
- tm_scope: source.haskell
- ace_mode: haskell
- language_id: 116
-Futhark:
- type: programming
- color: "#5f021f"
- extensions:
- - ".fut"
- tm_scope: source.futhark
- ace_mode: text
- language_id: 97358117
-G-code:
- type: programming
- color: "#D08CF2"
- extensions:
- - ".g"
- - ".cnc"
- - ".gco"
- - ".gcode"
- tm_scope: source.gcode
- ace_mode: gcode
- language_id: 117
-GAML:
- type: programming
- color: "#FFC766"
- extensions:
- - ".gaml"
- tm_scope: none
- ace_mode: text
- language_id: 290345951
-GAMS:
- type: programming
- extensions:
- - ".gms"
- tm_scope: none
- ace_mode: text
- language_id: 118
-GAP:
- type: programming
- extensions:
- - ".g"
- - ".gap"
- - ".gd"
- - ".gi"
- - ".tst"
- tm_scope: source.gap
- ace_mode: text
- language_id: 119
-GCC Machine Description:
- type: programming
- extensions:
- - ".md"
- tm_scope: source.lisp
- ace_mode: lisp
- codemirror_mode: commonlisp
- codemirror_mime_type: text/x-common-lisp
- language_id: 121
-GDB:
- type: programming
- extensions:
- - ".gdb"
- - ".gdbinit"
- tm_scope: source.gdb
- ace_mode: text
- language_id: 122
-GDScript:
- type: programming
- color: "#355570"
- extensions:
- - ".gd"
- tm_scope: source.gdscript
- ace_mode: text
- language_id: 123
-GEDCOM:
- type: data
- ace_mode: text
- extensions:
- - ".ged"
- tm_scope: source.gedcom
- language_id: 459577965
-GLSL:
- type: programming
- extensions:
- - ".glsl"
- - ".fp"
- - ".frag"
- - ".frg"
- - ".fs"
- - ".fsh"
- - ".fshader"
- - ".geo"
- - ".geom"
- - ".glslf"
- - ".glslv"
- - ".gs"
- - ".gshader"
- - ".shader"
- - ".tesc"
- - ".tese"
- - ".vert"
- - ".vrx"
- - ".vsh"
- - ".vshader"
- tm_scope: source.glsl
- ace_mode: glsl
- language_id: 124
-GN:
- type: data
- extensions:
- - ".gn"
- - ".gni"
- interpreters:
- - gn
- filenames:
- - ".gn"
- tm_scope: source.gn
- ace_mode: python
- codemirror_mode: python
- codemirror_mime_type: text/x-python
- language_id: 302957008
-Game Maker Language:
- type: programming
- color: "#71b417"
- extensions:
- - ".gml"
- tm_scope: source.c++
- ace_mode: c_cpp
- codemirror_mode: clike
- codemirror_mime_type: text/x-c++src
- language_id: 125
-Genie:
- type: programming
- ace_mode: text
- extensions:
- - ".gs"
- color: "#fb855d"
- tm_scope: none
- language_id: 792408528
-Genshi:
- type: programming
- extensions:
- - ".kid"
- tm_scope: text.xml.genshi
- aliases:
- - xml+genshi
- - xml+kid
- ace_mode: xml
- codemirror_mode: xml
- codemirror_mime_type: text/xml
- language_id: 126
-Gentoo Ebuild:
- type: programming
- group: Shell
- extensions:
- - ".ebuild"
- tm_scope: source.shell
- ace_mode: sh
- codemirror_mode: shell
- codemirror_mime_type: text/x-sh
- language_id: 127
-Gentoo Eclass:
- type: programming
- group: Shell
- extensions:
- - ".eclass"
- tm_scope: source.shell
- ace_mode: sh
- codemirror_mode: shell
- codemirror_mime_type: text/x-sh
- language_id: 128
-Gerber Image:
- type: data
- aliases:
- - rs-274x
- extensions:
- - ".gbr"
- - ".gbl"
- - ".gbo"
- - ".gbp"
- - ".gbs"
- - ".gko"
- - ".gml"
- - ".gpb"
- - ".gpt"
- - ".gtl"
- - ".gto"
- - ".gtp"
- - ".gts"
- - ".sol"
- interpreters:
- - gerbv
- - gerbview
- tm_scope: source.gerber
- ace_mode: text
- language_id: 404627610
-Gettext Catalog:
- type: prose
- searchable: false
- aliases:
- - pot
- extensions:
- - ".po"
- - ".pot"
- tm_scope: source.po
- ace_mode: text
- language_id: 129
-Gherkin:
- type: programming
- extensions:
- - ".feature"
- - ".story"
- tm_scope: text.gherkin.feature
- aliases:
- - cucumber
- ace_mode: text
- color: "#5B2063"
- language_id: 76
-Git Attributes:
- type: data
- group: INI
- aliases:
- - gitattributes
- filenames:
- - ".gitattributes"
- tm_scope: source.gitattributes
- ace_mode: gitignore
- codemirror_mode: shell
- codemirror_mime_type: text/x-sh
- language_id: 956324166
-Git Config:
- type: data
- group: INI
- aliases:
- - gitconfig
- - gitmodules
- extensions:
- - ".gitconfig"
- filenames:
- - ".gitconfig"
- - ".gitmodules"
- ace_mode: ini
- codemirror_mode: properties
- codemirror_mime_type: text/x-properties
- tm_scope: source.gitconfig
- language_id: 807968997
-Glyph:
- type: programming
- color: "#c1ac7f"
- extensions:
- - ".glf"
- tm_scope: source.tcl
- ace_mode: tcl
- codemirror_mode: tcl
- codemirror_mime_type: text/x-tcl
- language_id: 130
-Glyph Bitmap Distribution Format:
- type: data
- extensions:
- - ".bdf"
- tm_scope: source.bdf
- ace_mode: text
- language_id: 997665271
-Gnuplot:
- type: programming
- color: "#f0a9f0"
- extensions:
- - ".gp"
- - ".gnu"
- - ".gnuplot"
- - ".p"
- - ".plot"
- - ".plt"
- interpreters:
- - gnuplot
- tm_scope: source.gnuplot
- ace_mode: text
- language_id: 131
-Go:
- type: programming
- color: "#00ADD8"
- aliases:
- - golang
- extensions:
- - ".go"
- tm_scope: source.go
- ace_mode: golang
- codemirror_mode: go
- codemirror_mime_type: text/x-go
- language_id: 132
-Golo:
- type: programming
- color: "#88562A"
- extensions:
- - ".golo"
- tm_scope: source.golo
- ace_mode: text
- language_id: 133
-Gosu:
- type: programming
- color: "#82937f"
- extensions:
- - ".gs"
- - ".gst"
- - ".gsx"
- - ".vark"
- tm_scope: source.gosu.2
- ace_mode: text
- language_id: 134
-Grace:
- type: programming
- extensions:
- - ".grace"
- tm_scope: source.grace
- ace_mode: text
- language_id: 135
-Gradle:
- type: data
- extensions:
- - ".gradle"
- tm_scope: source.groovy.gradle
- ace_mode: text
- language_id: 136
-Grammatical Framework:
- type: programming
- aliases:
- - gf
- extensions:
- - ".gf"
- color: "#ff0000"
- tm_scope: source.gf
- ace_mode: haskell
- codemirror_mode: haskell
- codemirror_mime_type: text/x-haskell
- language_id: 137
-Graph Modeling Language:
- type: data
- extensions:
- - ".gml"
- tm_scope: none
- ace_mode: text
- language_id: 138
-GraphQL:
- type: data
- color: "#e10098"
- extensions:
- - ".graphql"
- - ".gql"
- - ".graphqls"
- tm_scope: source.graphql
- ace_mode: text
- language_id: 139
-Graphviz (DOT):
- type: data
- tm_scope: source.dot
- extensions:
- - ".dot"
- - ".gv"
- ace_mode: text
- language_id: 140
-Groovy:
- type: programming
- tm_scope: source.groovy
- ace_mode: groovy
- codemirror_mode: groovy
- codemirror_mime_type: text/x-groovy
- color: "#e69f56"
- extensions:
- - ".groovy"
- - ".grt"
- - ".gtpl"
- - ".gvy"
- interpreters:
- - groovy
- filenames:
- - Jenkinsfile
- language_id: 142
-Groovy Server Pages:
- type: programming
- group: Groovy
- aliases:
- - gsp
- - java server page
- extensions:
- - ".gsp"
- tm_scope: text.html.jsp
- ace_mode: jsp
- codemirror_mode: htmlembedded
- codemirror_mime_type: application/x-jsp
- language_id: 143
-HAProxy:
- type: data
- extensions:
- - ".cfg"
- filenames:
- - haproxy.cfg
- tm_scope: source.haproxy-config
- ace_mode: text
- language_id: 366607477
-HCL:
- type: programming
- extensions:
- - ".hcl"
- - ".nomad"
- - ".tf"
- - ".tfvars"
- - ".workflow"
- aliases:
- - terraform
- ace_mode: ruby
- codemirror_mode: ruby
- codemirror_mime_type: text/x-ruby
- tm_scope: source.terraform
- language_id: 144
-HLSL:
- type: programming
- extensions:
- - ".hlsl"
- - ".cginc"
- - ".fx"
- - ".fxh"
- - ".hlsli"
- ace_mode: text
- tm_scope: source.hlsl
- language_id: 145
-HTML:
- type: markup
- tm_scope: text.html.basic
- ace_mode: html
- codemirror_mode: htmlmixed
- codemirror_mime_type: text/html
- color: "#e34c26"
- aliases:
- - xhtml
- extensions:
- - ".html"
- - ".htm"
- - ".html.hl"
- - ".inc"
- - ".st"
- - ".xht"
- - ".xhtml"
- language_id: 146
-HTML+Django:
- type: markup
- tm_scope: text.html.django
- group: HTML
- extensions:
- - ".jinja"
- - ".j2"
- - ".jinja2"
- - ".njk"
- aliases:
- - django
- - html+django/jinja
- - html+jinja
- - htmldjango
- - njk
- - nunjucks
- ace_mode: django
- codemirror_mode: django
- codemirror_mime_type: text/x-django
- language_id: 147
-HTML+ECR:
- type: markup
- tm_scope: text.html.ecr
- group: HTML
- aliases:
- - ecr
- extensions:
- - ".ecr"
- ace_mode: text
- codemirror_mode: htmlmixed
- codemirror_mime_type: text/html
- language_id: 148
-HTML+EEX:
- type: markup
- tm_scope: text.html.elixir
- group: HTML
- aliases:
- - eex
- extensions:
- - ".eex"
- ace_mode: text
- codemirror_mode: htmlmixed
- codemirror_mime_type: text/html
- language_id: 149
-HTML+ERB:
- type: markup
- tm_scope: text.html.erb
- group: HTML
- aliases:
- - erb
- - rhtml
- - html+ruby
- extensions:
- - ".erb"
- - ".erb.deface"
- - ".rhtml"
- ace_mode: text
- codemirror_mode: htmlembedded
- codemirror_mime_type: application/x-erb
- language_id: 150
-HTML+PHP:
- type: markup
- tm_scope: text.html.php
- group: HTML
- extensions:
- - ".phtml"
- ace_mode: php
- codemirror_mode: php
- codemirror_mime_type: application/x-httpd-php
- language_id: 151
-HTML+Razor:
- type: markup
- tm_scope: text.html.cshtml
- group: HTML
- aliases:
- - razor
- extensions:
- - ".cshtml"
- - ".razor"
- ace_mode: razor
- codemirror_mode: htmlmixed
- codemirror_mime_type: text/html
- language_id: 479039817
-HTTP:
- type: data
- extensions:
- - ".http"
- tm_scope: source.httpspec
- ace_mode: text
- codemirror_mode: http
- codemirror_mime_type: message/http
- language_id: 152
-HXML:
- type: data
- ace_mode: text
- extensions:
- - ".hxml"
- tm_scope: source.hxml
- language_id: 786683730
-Hack:
- type: programming
- ace_mode: php
- codemirror_mode: php
- codemirror_mime_type: application/x-httpd-php
- extensions:
- - ".hack"
- - ".hh"
- - ".hhi"
- - ".php"
- tm_scope: source.hack
- color: "#878787"
- language_id: 153
-Haml:
- type: markup
- color: "#ece2a9"
- extensions:
- - ".haml"
- - ".haml.deface"
- tm_scope: text.haml
- ace_mode: haml
- codemirror_mode: haml
- codemirror_mime_type: text/x-haml
- language_id: 154
-Handlebars:
- type: markup
- color: "#f7931e"
- aliases:
- - hbs
- - htmlbars
- extensions:
- - ".handlebars"
- - ".hbs"
- tm_scope: text.html.handlebars
- ace_mode: handlebars
- language_id: 155
-Harbour:
- type: programming
- color: "#0e60e3"
- extensions:
- - ".hb"
- tm_scope: source.harbour
- ace_mode: text
- language_id: 156
-Haskell:
- type: programming
- color: "#5e5086"
- extensions:
- - ".hs"
- - ".hs-boot"
- - ".hsc"
- interpreters:
- - runghc
- - runhaskell
- - runhugs
- tm_scope: source.haskell
- ace_mode: haskell
- codemirror_mode: haskell
- codemirror_mime_type: text/x-haskell
- language_id: 157
-Haxe:
- type: programming
- ace_mode: haxe
- codemirror_mode: haxe
- codemirror_mime_type: text/x-haxe
- color: "#df7900"
- extensions:
- - ".hx"
- - ".hxsl"
- tm_scope: source.hx
- language_id: 158
-HiveQL:
- type: programming
- extensions:
- - ".q"
- - ".hql"
- color: "#dce200"
- tm_scope: source.hql
- ace_mode: sql
- language_id: 931814087
-HolyC:
- type: programming
- color: "#ffefaf"
- extensions:
- - ".hc"
- tm_scope: source.hc
- ace_mode: c_cpp
- codemirror_mode: clike
- codemirror_mime_type: text/x-csrc
- language_id: 928121743
-Hy:
- type: programming
- ace_mode: text
- color: "#7790B2"
- extensions:
- - ".hy"
- interpreters:
- - hy
- aliases:
- - hylang
- tm_scope: source.hy
- language_id: 159
-HyPhy:
- type: programming
- ace_mode: text
- extensions:
- - ".bf"
- tm_scope: none
- language_id: 160
-IDL:
- type: programming
- color: "#a3522f"
- extensions:
- - ".pro"
- - ".dlm"
- tm_scope: source.idl
- ace_mode: text
- codemirror_mode: idl
- codemirror_mime_type: text/x-idl
- language_id: 161
-IGOR Pro:
- type: programming
- color: "#0000cc"
- extensions:
- - ".ipf"
- aliases:
- - igor
- - igorpro
- tm_scope: source.igor
- ace_mode: text
- language_id: 162
-INI:
- type: data
- extensions:
- - ".ini"
- - ".cfg"
- - ".dof"
- - ".lektorproject"
- - ".prefs"
- - ".pro"
- - ".properties"
- filenames:
- - buildozer.spec
- tm_scope: source.ini
- aliases:
- - dosini
- ace_mode: ini
- codemirror_mode: properties
- codemirror_mime_type: text/x-properties
- language_id: 163
-IRC log:
- type: data
- aliases:
- - irc
- - irc logs
- extensions:
- - ".irclog"
- - ".weechatlog"
- tm_scope: none
- ace_mode: text
- codemirror_mode: mirc
- codemirror_mime_type: text/mirc
- language_id: 164
-Idris:
- type: programming
- color: "#b30000"
- extensions:
- - ".idr"
- - ".lidr"
- ace_mode: text
- tm_scope: source.idris
- language_id: 165
-Ignore List:
- type: data
- group: INI
- aliases:
- - ignore
- - gitignore
- - git-ignore
- extensions:
- - ".gitignore"
- filenames:
- - ".atomignore"
- - ".babelignore"
- - ".bzrignore"
- - ".coffeelintignore"
- - ".cvsignore"
- - ".dockerignore"
- - ".eslintignore"
- - ".gitignore"
- - ".nodemonignore"
- - ".npmignore"
- - ".prettierignore"
- - ".stylelintignore"
- - ".vscodeignore"
- - gitignore-global
- - gitignore_global
- ace_mode: gitignore
- tm_scope: source.gitignore
- codemirror_mode: shell
- codemirror_mime_type: text/x-sh
- language_id: 74444240
-Inform 7:
- type: programming
- wrap: true
- extensions:
- - ".ni"
- - ".i7x"
- tm_scope: source.inform7
- aliases:
- - i7
- - inform7
- ace_mode: text
- language_id: 166
-Inno Setup:
- type: programming
- extensions:
- - ".iss"
- - ".isl"
- tm_scope: source.inno
- ace_mode: text
- language_id: 167
-Io:
- type: programming
- color: "#a9188d"
- extensions:
- - ".io"
- interpreters:
- - io
- tm_scope: source.io
- ace_mode: io
- language_id: 168
-Ioke:
- type: programming
- color: "#078193"
- extensions:
- - ".ik"
- interpreters:
- - ioke
- tm_scope: source.ioke
- ace_mode: text
- language_id: 169
-Isabelle:
- type: programming
- color: "#FEFE00"
- extensions:
- - ".thy"
- tm_scope: source.isabelle.theory
- ace_mode: text
- language_id: 170
-Isabelle ROOT:
- type: programming
- group: Isabelle
- filenames:
- - ROOT
- tm_scope: source.isabelle.root
- ace_mode: text
- language_id: 171
-J:
- type: programming
- color: "#9EEDFF"
- extensions:
- - ".ijs"
- interpreters:
- - jconsole
- tm_scope: source.j
- ace_mode: text
- language_id: 172
-JFlex:
- type: programming
- color: "#DBCA00"
- group: Lex
- extensions:
- - ".flex"
- - ".jflex"
- tm_scope: source.jflex
- ace_mode: text
- language_id: 173
-JSON:
- type: data
- tm_scope: source.json
- ace_mode: json
- codemirror_mode: javascript
- codemirror_mime_type: application/json
- searchable: false
- extensions:
- - ".json"
- - ".avsc"
- - ".geojson"
- - ".gltf"
- - ".har"
- - ".ice"
- - ".JSON-tmLanguage"
- - ".jsonl"
- - ".mcmeta"
- - ".tfstate"
- - ".tfstate.backup"
- - ".topojson"
- - ".webapp"
- - ".webmanifest"
- - ".yy"
- - ".yyp"
- filenames:
- - ".arcconfig"
- - ".htmlhintrc"
- - ".tern-config"
- - ".tern-project"
- - ".watchmanconfig"
- - composer.lock
- - mcmod.info
- language_id: 174
-JSON with Comments:
- type: data
- group: JSON
- tm_scope: source.js
- ace_mode: javascript
- codemirror_mode: javascript
- codemirror_mime_type: text/javascript
- aliases:
- - jsonc
- extensions:
- - ".jsonc"
- - ".sublime-build"
- - ".sublime-commands"
- - ".sublime-completions"
- - ".sublime-keymap"
- - ".sublime-macro"
- - ".sublime-menu"
- - ".sublime-mousemap"
- - ".sublime-project"
- - ".sublime-settings"
- - ".sublime-theme"
- - ".sublime-workspace"
- - ".sublime_metrics"
- - ".sublime_session"
- filenames:
- - ".babelrc"
- - ".eslintrc.json"
- - ".jscsrc"
- - ".jshintrc"
- - ".jslintrc"
- - jsconfig.json
- - language-configuration.json
- - tsconfig.json
- - tslint.json
- language_id: 423
-JSON5:
- type: data
- extensions:
- - ".json5"
- tm_scope: source.js
- ace_mode: javascript
- codemirror_mode: javascript
- codemirror_mime_type: application/json
- language_id: 175
-JSONLD:
- type: data
- extensions:
- - ".jsonld"
- tm_scope: source.js
- ace_mode: javascript
- codemirror_mode: javascript
- codemirror_mime_type: application/json
- language_id: 176
-JSONiq:
- color: "#40d47e"
- type: programming
- ace_mode: jsoniq
- codemirror_mode: javascript
- codemirror_mime_type: application/json
- extensions:
- - ".jq"
- tm_scope: source.jq
- language_id: 177
-JSX:
- type: programming
- group: JavaScript
- extensions:
- - ".jsx"
- tm_scope: source.js.jsx
- ace_mode: javascript
- codemirror_mode: jsx
- codemirror_mime_type: text/jsx
- language_id: 178
-Jasmin:
- type: programming
- ace_mode: java
- extensions:
- - ".j"
- tm_scope: source.jasmin
- language_id: 180
-Java:
- type: programming
- tm_scope: source.java
- ace_mode: java
- codemirror_mode: clike
- codemirror_mime_type: text/x-java
- color: "#b07219"
- extensions:
- - ".java"
- language_id: 181
-Java Properties:
- type: data
- extensions:
- - ".properties"
- tm_scope: source.java-properties
- ace_mode: properties
- codemirror_mode: properties
- codemirror_mime_type: text/x-properties
- language_id: 519377561
-Java Server Pages:
- type: programming
- group: Java
- aliases:
- - jsp
- extensions:
- - ".jsp"
- tm_scope: text.html.jsp
- ace_mode: jsp
- codemirror_mode: htmlembedded
- codemirror_mime_type: application/x-jsp
- language_id: 182
-JavaScript:
- type: programming
- tm_scope: source.js
- ace_mode: javascript
- codemirror_mode: javascript
- codemirror_mime_type: text/javascript
- color: "#f1e05a"
- aliases:
- - js
- - node
- extensions:
- - ".js"
- - "._js"
- - ".bones"
- - ".cjs"
- - ".es"
- - ".es6"
- - ".frag"
- - ".gs"
- - ".jake"
- - ".jsb"
- - ".jscad"
- - ".jsfl"
- - ".jsm"
- - ".jss"
- - ".mjs"
- - ".njs"
- - ".pac"
- - ".sjs"
- - ".ssjs"
- - ".xsjs"
- - ".xsjslib"
- filenames:
- - Jakefile
- interpreters:
- - chakra
- - d8
- - gjs
- - js
- - node
- - nodejs
- - qjs
- - rhino
- - v8
- - v8-shell
- language_id: 183
-JavaScript+ERB:
- type: programming
- tm_scope: source.js
- group: JavaScript
- extensions:
- - ".js.erb"
- ace_mode: javascript
- codemirror_mode: javascript
- codemirror_mime_type: application/javascript
- language_id: 914318960
-Jison:
- type: programming
- group: Yacc
- extensions:
- - ".jison"
- tm_scope: source.jison
- ace_mode: text
- language_id: 284531423
-Jison Lex:
- type: programming
- group: Lex
- extensions:
- - ".jisonlex"
- tm_scope: source.jisonlex
- ace_mode: text
- language_id: 406395330
-Jolie:
- type: programming
- extensions:
- - ".ol"
- - ".iol"
- interpreters:
- - jolie
- color: "#843179"
- ace_mode: text
- tm_scope: source.jolie
- language_id: 998078858
-Jsonnet:
- color: "#0064bd"
- type: programming
- ace_mode: text
- extensions:
- - ".jsonnet"
- - ".libsonnet"
- tm_scope: source.jsonnet
- language_id: 664885656
-Julia:
- type: programming
- extensions:
- - ".jl"
- interpreters:
- - julia
- color: "#a270ba"
- tm_scope: source.julia
- ace_mode: julia
- codemirror_mode: julia
- codemirror_mime_type: text/x-julia
- language_id: 184
-Jupyter Notebook:
- type: markup
- ace_mode: json
- codemirror_mode: javascript
- codemirror_mime_type: application/json
- tm_scope: source.json
- color: "#DA5B0B"
- extensions:
- - ".ipynb"
- filenames:
- - Notebook
- aliases:
- - IPython Notebook
- language_id: 185
-KRL:
- type: programming
- color: "#28430A"
- extensions:
- - ".krl"
- tm_scope: none
- ace_mode: text
- language_id: 186
-Kaitai Struct:
- type: programming
- aliases:
- - ksy
- ace_mode: yaml
- codemirror_mode: yaml
- codemirror_mime_type: text/x-yaml
- color: "#773b37"
- extensions:
- - ".ksy"
- tm_scope: source.yaml
- language_id: 818804755
-KiCad Layout:
- type: data
- aliases:
- - pcbnew
- extensions:
- - ".kicad_pcb"
- - ".kicad_mod"
- - ".kicad_wks"
- filenames:
- - fp-lib-table
- tm_scope: source.pcb.sexp
- ace_mode: lisp
- codemirror_mode: commonlisp
- codemirror_mime_type: text/x-common-lisp
- language_id: 187
-KiCad Legacy Layout:
- type: data
- extensions:
- - ".brd"
- tm_scope: source.pcb.board
- ace_mode: text
- language_id: 140848857
-KiCad Schematic:
- type: data
- aliases:
- - eeschema schematic
- extensions:
- - ".sch"
- tm_scope: source.pcb.schematic
- ace_mode: text
- language_id: 622447435
-Kit:
- type: markup
- ace_mode: html
- codemirror_mode: htmlmixed
- codemirror_mime_type: text/html
- extensions:
- - ".kit"
- tm_scope: text.html.basic
- language_id: 188
-Kotlin:
- type: programming
- color: "#F18E33"
- extensions:
- - ".kt"
- - ".ktm"
- - ".kts"
- tm_scope: source.kotlin
- ace_mode: text
- codemirror_mode: clike
- codemirror_mime_type: text/x-kotlin
- language_id: 189
-LFE:
- type: programming
- color: "#4C3023"
- extensions:
- - ".lfe"
- tm_scope: source.lisp
- ace_mode: lisp
- codemirror_mode: commonlisp
- codemirror_mime_type: text/x-common-lisp
- language_id: 190
-LLVM:
- type: programming
- extensions:
- - ".ll"
- tm_scope: source.llvm
- ace_mode: text
- color: "#185619"
- language_id: 191
-LOLCODE:
- type: programming
- extensions:
- - ".lol"
- color: "#cc9900"
- tm_scope: none
- ace_mode: text
- language_id: 192
-LSL:
- type: programming
- tm_scope: source.lsl
- ace_mode: lsl
- extensions:
- - ".lsl"
- - ".lslp"
- interpreters:
- - lsl
- color: "#3d9970"
- language_id: 193
-LTspice Symbol:
- type: data
- extensions:
- - ".asy"
- tm_scope: source.ltspice.symbol
- ace_mode: text
- codemirror_mode: spreadsheet
- codemirror_mime_type: text/x-spreadsheet
- language_id: 1013566805
-LabVIEW:
- type: programming
- extensions:
- - ".lvproj"
- tm_scope: text.xml
- ace_mode: xml
- codemirror_mode: xml
- codemirror_mime_type: text/xml
- language_id: 194
-Lark:
- type: data
- group: EBNF
- color: "#0b130f"
- extensions:
- - ".lark"
- tm_scope: source.lark
- ace_mode: text
- codemirror_mode: ebnf
- codemirror_mime_type: text/x-ebnf
- language_id: 758480799
-Lasso:
- type: programming
- color: "#999999"
- extensions:
- - ".lasso"
- - ".las"
- - ".lasso8"
- - ".lasso9"
- tm_scope: file.lasso
- aliases:
- - lassoscript
- ace_mode: text
- language_id: 195
-Latte:
- type: markup
- color: "#f2a542"
- extensions:
- - ".latte"
- tm_scope: text.html.smarty
- ace_mode: smarty
- codemirror_mode: smarty
- codemirror_mime_type: text/x-smarty
- language_id: 196
-Lean:
- type: programming
- extensions:
- - ".lean"
- - ".hlean"
- tm_scope: source.lean
- ace_mode: text
- language_id: 197
-Less:
- type: markup
- color: "#1d365d"
- extensions:
- - ".less"
- tm_scope: source.css.less
- ace_mode: less
- codemirror_mode: css
- codemirror_mime_type: text/css
- language_id: 198
-Lex:
- type: programming
- color: "#DBCA00"
- aliases:
- - flex
- extensions:
- - ".l"
- - ".lex"
- filenames:
- - Lexer.x
- - lexer.x
- tm_scope: source.lex
- ace_mode: text
- language_id: 199
-LilyPond:
- type: programming
- extensions:
- - ".ly"
- - ".ily"
- tm_scope: source.lilypond
- ace_mode: text
- language_id: 200
-Limbo:
- type: programming
- extensions:
- - ".b"
- - ".m"
- tm_scope: none
- ace_mode: text
- language_id: 201
-Linker Script:
- type: data
- extensions:
- - ".ld"
- - ".lds"
- - ".x"
- filenames:
- - ld.script
- tm_scope: none
- ace_mode: text
- language_id: 202
-Linux Kernel Module:
- type: data
- extensions:
- - ".mod"
- tm_scope: none
- ace_mode: text
- language_id: 203
-Liquid:
- type: markup
- extensions:
- - ".liquid"
- tm_scope: text.html.liquid
- ace_mode: liquid
- language_id: 204
-Literate Agda:
- type: programming
- group: Agda
- extensions:
- - ".lagda"
- tm_scope: none
- ace_mode: text
- language_id: 205
-Literate CoffeeScript:
- type: programming
- tm_scope: source.litcoffee
- group: CoffeeScript
- ace_mode: text
- wrap: true
- aliases:
- - litcoffee
- extensions:
- - ".litcoffee"
- - ".coffee.md"
- language_id: 206
-Literate Haskell:
- type: programming
- group: Haskell
- aliases:
- - lhaskell
- - lhs
- extensions:
- - ".lhs"
- tm_scope: text.tex.latex.haskell
- ace_mode: text
- codemirror_mode: haskell-literate
- codemirror_mime_type: text/x-literate-haskell
- language_id: 207
-LiveScript:
- type: programming
- color: "#499886"
- aliases:
- - live-script
- - ls
- extensions:
- - ".ls"
- - "._ls"
- filenames:
- - Slakefile
- tm_scope: source.livescript
- ace_mode: livescript
- codemirror_mode: livescript
- codemirror_mime_type: text/x-livescript
- language_id: 208
-Logos:
- type: programming
- extensions:
- - ".xm"
- - ".x"
- - ".xi"
- ace_mode: text
- tm_scope: source.logos
- language_id: 209
-Logtalk:
- type: programming
- extensions:
- - ".lgt"
- - ".logtalk"
- tm_scope: source.logtalk
- ace_mode: text
- language_id: 210
-LookML:
- type: programming
- ace_mode: yaml
- codemirror_mode: yaml
- codemirror_mime_type: text/x-yaml
- color: "#652B81"
- extensions:
- - ".lookml"
- - ".model.lkml"
- - ".view.lkml"
- tm_scope: source.yaml
- language_id: 211
-LoomScript:
- type: programming
- extensions:
- - ".ls"
- tm_scope: source.loomscript
- ace_mode: text
- language_id: 212
-Lua:
- type: programming
- tm_scope: source.lua
- ace_mode: lua
- codemirror_mode: lua
- codemirror_mime_type: text/x-lua
- color: "#000080"
- extensions:
- - ".lua"
- - ".fcgi"
- - ".nse"
- - ".p8"
- - ".pd_lua"
- - ".rbxs"
- - ".rockspec"
- - ".wlua"
- filenames:
- - ".luacheckrc"
- interpreters:
- - lua
- language_id: 213
-M:
- type: programming
- aliases:
- - mumps
- extensions:
- - ".mumps"
- - ".m"
- ace_mode: text
- codemirror_mode: mumps
- codemirror_mime_type: text/x-mumps
- language_id: 214
- tm_scope: none
-M4:
- type: programming
- extensions:
- - ".m4"
- tm_scope: source.m4
- ace_mode: text
- language_id: 215
-M4Sugar:
- type: programming
- group: M4
- aliases:
- - autoconf
- extensions:
- - ".m4"
- filenames:
- - configure.ac
- tm_scope: source.m4
- ace_mode: text
- language_id: 216
-MATLAB:
- type: programming
- color: "#e16737"
- aliases:
- - octave
- extensions:
- - ".matlab"
- - ".m"
- tm_scope: source.matlab
- ace_mode: matlab
- codemirror_mode: octave
- codemirror_mime_type: text/x-octave
- language_id: 225
-MAXScript:
- type: programming
- color: "#00a6a6"
- extensions:
- - ".ms"
- - ".mcr"
- tm_scope: source.maxscript
- ace_mode: text
- language_id: 217
-MLIR:
- type: programming
- color: "#5EC8DB"
- extensions:
- - ".mlir"
- tm_scope: source.mlir
- ace_mode: text
- language_id: 448253929
-MQL4:
- type: programming
- color: "#62A8D6"
- extensions:
- - ".mq4"
- - ".mqh"
- tm_scope: source.mql5
- ace_mode: c_cpp
- language_id: 426
-MQL5:
- type: programming
- color: "#4A76B8"
- extensions:
- - ".mq5"
- - ".mqh"
- tm_scope: source.mql5
- ace_mode: c_cpp
- language_id: 427
-MTML:
- type: markup
- color: "#b7e1f4"
- extensions:
- - ".mtml"
- tm_scope: text.html.basic
- ace_mode: html
- codemirror_mode: htmlmixed
- codemirror_mime_type: text/html
- language_id: 218
-MUF:
- type: programming
- group: Forth
- extensions:
- - ".muf"
- - ".m"
- tm_scope: none
- ace_mode: forth
- codemirror_mode: forth
- codemirror_mime_type: text/x-forth
- language_id: 219
-Macaulay2:
- type: programming
- extensions:
- - ".m2"
- aliases:
- - m2
- interpreters:
- - M2
- ace_mode: text
- tm_scope: source.m2
- color: "#d8ffff"
- language_id: 34167825
-Makefile:
- type: programming
- color: "#427819"
- aliases:
- - bsdmake
- - make
- - mf
- extensions:
- - ".mak"
- - ".d"
- - ".make"
- - ".mk"
- - ".mkfile"
- filenames:
- - BSDmakefile
- - GNUmakefile
- - Kbuild
- - Makefile
- - Makefile.am
- - Makefile.boot
- - Makefile.frag
- - Makefile.in
- - Makefile.inc
- - Makefile.wat
- - makefile
- - makefile.sco
- - mkfile
- interpreters:
- - make
- tm_scope: source.makefile
- ace_mode: makefile
- codemirror_mode: cmake
- codemirror_mime_type: text/x-cmake
- language_id: 220
-Mako:
- type: programming
- extensions:
- - ".mako"
- - ".mao"
- tm_scope: text.html.mako
- ace_mode: text
- language_id: 221
-Markdown:
- type: prose
- color: "#083fa1"
- aliases:
- - pandoc
- ace_mode: markdown
- codemirror_mode: gfm
- codemirror_mime_type: text/x-gfm
- wrap: true
- extensions:
- - ".md"
- - ".markdown"
- - ".mdown"
- - ".mdwn"
- - ".mdx"
- - ".mkd"
- - ".mkdn"
- - ".mkdown"
- - ".ronn"
- - ".workbook"
- filenames:
- - contents.lr
- tm_scope: source.gfm
- language_id: 222
-Marko:
- type: markup
- color: "#42bff2"
- tm_scope: text.marko
- extensions:
- - ".marko"
- aliases:
- - markojs
- ace_mode: text
- codemirror_mode: htmlmixed
- codemirror_mime_type: text/html
- language_id: 932782397
-Mask:
- type: markup
- color: "#f97732"
- ace_mode: mask
- extensions:
- - ".mask"
- tm_scope: source.mask
- language_id: 223
-Mathematica:
- type: programming
- extensions:
- - ".mathematica"
- - ".cdf"
- - ".m"
- - ".ma"
- - ".mt"
- - ".nb"
- - ".nbp"
- - ".wl"
- - ".wlt"
- aliases:
- - mma
- tm_scope: source.mathematica
- ace_mode: text
- codemirror_mode: mathematica
- codemirror_mime_type: text/x-mathematica
- language_id: 224
-Maven POM:
- type: data
- tm_scope: text.xml.pom
- filenames:
- - pom.xml
- ace_mode: xml
- codemirror_mode: xml
- codemirror_mime_type: text/xml
- language_id: 226
-Max:
- type: programming
- color: "#c4a79c"
- aliases:
- - max/msp
- - maxmsp
- extensions:
- - ".maxpat"
- - ".maxhelp"
- - ".maxproj"
- - ".mxt"
- - ".pat"
- tm_scope: source.json
- ace_mode: json
- codemirror_mode: javascript
- codemirror_mime_type: application/json
- language_id: 227
-MediaWiki:
- type: prose
- wrap: true
- extensions:
- - ".mediawiki"
- - ".wiki"
- tm_scope: text.html.mediawiki
- ace_mode: text
- language_id: 228
-Mercury:
- type: programming
- color: "#ff2b2b"
- ace_mode: prolog
- interpreters:
- - mmi
- extensions:
- - ".m"
- - ".moo"
- tm_scope: source.mercury
- language_id: 229
-Meson:
- type: programming
- color: "#007800"
- filenames:
- - meson.build
- - meson_options.txt
- tm_scope: source.meson
- ace_mode: text
- language_id: 799141244
-Metal:
- type: programming
- color: "#8f14e9"
- extensions:
- - ".metal"
- tm_scope: source.c++
- ace_mode: c_cpp
- codemirror_mode: clike
- codemirror_mime_type: text/x-c++src
- language_id: 230
-Microsoft Developer Studio Project:
- type: data
- extensions:
- - ".dsp"
- tm_scope: none
- ace_mode: text
- language_id: 800983837
-MiniD:
- type: programming
- searchable: false
- extensions:
- - ".minid"
- tm_scope: none
- ace_mode: text
- language_id: 231
-Mirah:
- type: programming
- color: "#c7a938"
- extensions:
- - ".druby"
- - ".duby"
- - ".mirah"
- tm_scope: source.ruby
- ace_mode: ruby
- codemirror_mode: ruby
- codemirror_mime_type: text/x-ruby
- language_id: 232
-Modelica:
- type: programming
- extensions:
- - ".mo"
- tm_scope: source.modelica
- ace_mode: text
- codemirror_mode: modelica
- codemirror_mime_type: text/x-modelica
- language_id: 233
-Modula-2:
- type: programming
- extensions:
- - ".mod"
- tm_scope: source.modula2
- ace_mode: text
- language_id: 234
-Modula-3:
- type: programming
- extensions:
- - ".i3"
- - ".ig"
- - ".m3"
- - ".mg"
- color: "#223388"
- ace_mode: text
- tm_scope: source.modula-3
- language_id: 564743864
-Module Management System:
- type: programming
- extensions:
- - ".mms"
- - ".mmk"
- filenames:
- - descrip.mmk
- - descrip.mms
- tm_scope: none
- ace_mode: text
- language_id: 235
-Monkey:
- type: programming
- extensions:
- - ".monkey"
- - ".monkey2"
- ace_mode: text
- tm_scope: source.monkey
- language_id: 236
-Moocode:
- type: programming
- extensions:
- - ".moo"
- tm_scope: none
- ace_mode: text
- language_id: 237
-MoonScript:
- type: programming
- extensions:
- - ".moon"
- interpreters:
- - moon
- tm_scope: source.moonscript
- ace_mode: text
- language_id: 238
-Motorola 68K Assembly:
- type: programming
- group: Assembly
- aliases:
- - m68k
- extensions:
- - ".asm"
- - ".i"
- - ".inc"
- - ".s"
- - ".x68"
- tm_scope: source.m68k
- ace_mode: assembly_x86
- language_id: 477582706
-Muse:
- type: prose
- extensions:
- - ".muse"
- tm_scope: text.muse
- ace_mode: text
- wrap: true
- language_id: 474864066
- aliases:
- - amusewiki
- - emacs muse
-Mustache:
- type: markup
- group: HTML
- extensions:
- - ".mustache"
- tm_scope: text.html.smarty
- ace_mode: smarty
- codemirror_mode: smarty
- codemirror_mime_type: text/x-smarty
- language_id: 638334590
-Myghty:
- type: programming
- extensions:
- - ".myt"
- tm_scope: none
- ace_mode: text
- language_id: 239
-NASL:
- type: programming
- extensions:
- - ".nasl"
- - ".inc"
- tm_scope: source.nasl
- ace_mode: text
- language_id: 171666519
-NCL:
- type: programming
- color: "#28431f"
- extensions:
- - ".ncl"
- tm_scope: source.ncl
- ace_mode: text
- language_id: 240
-NEON:
- type: data
- extensions:
- - ".neon"
- tm_scope: source.neon
- ace_mode: text
- aliases:
- - nette object notation
- - ne-on
- language_id: 481192983
-NL:
- type: data
- extensions:
- - ".nl"
- tm_scope: none
- ace_mode: text
- language_id: 241
-NPM Config:
- type: data
- group: INI
- aliases:
- - npmrc
- filenames:
- - ".npmrc"
- tm_scope: source.ini.npmrc
- ace_mode: text
- language_id: 685022663
-NSIS:
- type: programming
- extensions:
- - ".nsi"
- - ".nsh"
- tm_scope: source.nsis
- ace_mode: text
- codemirror_mode: nsis
- codemirror_mime_type: text/x-nsis
- language_id: 242
-Nearley:
- type: programming
- ace_mode: text
- color: "#990000"
- extensions:
- - ".ne"
- - ".nearley"
- tm_scope: source.ne
- language_id: 521429430
-Nemerle:
- type: programming
- color: "#3d3c6e"
- extensions:
- - ".n"
- tm_scope: source.nemerle
- ace_mode: text
- language_id: 243
-NetLinx:
- type: programming
- color: "#0aa0ff"
- extensions:
- - ".axs"
- - ".axi"
- tm_scope: source.netlinx
- ace_mode: text
- language_id: 244
-NetLinx+ERB:
- type: programming
- color: "#747faa"
- extensions:
- - ".axs.erb"
- - ".axi.erb"
- tm_scope: source.netlinx.erb
- ace_mode: text
- language_id: 245
-NetLogo:
- type: programming
- color: "#ff6375"
- extensions:
- - ".nlogo"
- tm_scope: source.lisp
- ace_mode: lisp
- codemirror_mode: commonlisp
- codemirror_mime_type: text/x-common-lisp
- language_id: 246
-NewLisp:
- type: programming
- color: "#87AED7"
- extensions:
- - ".nl"
- - ".lisp"
- - ".lsp"
- interpreters:
- - newlisp
- tm_scope: source.lisp
- ace_mode: lisp
- codemirror_mode: commonlisp
- codemirror_mime_type: text/x-common-lisp
- language_id: 247
-Nextflow:
- type: programming
- ace_mode: groovy
- tm_scope: source.nextflow
- color: "#3ac486"
- extensions:
- - ".nf"
- filenames:
- - nextflow.config
- interpreters:
- - nextflow
- language_id: 506780613
-Nginx:
- type: data
- extensions:
- - ".nginx"
- - ".nginxconf"
- - ".vhost"
- filenames:
- - nginx.conf
- tm_scope: source.nginx
- aliases:
- - nginx configuration file
- ace_mode: text
- codemirror_mode: nginx
- codemirror_mime_type: text/x-nginx-conf
- language_id: 248
-Nim:
- type: programming
- color: "#ffc200"
- extensions:
- - ".nim"
- - ".nim.cfg"
- - ".nimble"
- - ".nimrod"
- - ".nims"
- filenames:
- - nim.cfg
- ace_mode: text
- tm_scope: source.nim
- language_id: 249
-Ninja:
- type: data
- tm_scope: source.ninja
- extensions:
- - ".ninja"
- ace_mode: text
- language_id: 250
-Nit:
- type: programming
- color: "#009917"
- extensions:
- - ".nit"
- tm_scope: source.nit
- ace_mode: text
- language_id: 251
-Nix:
- type: programming
- color: "#7e7eff"
- extensions:
- - ".nix"
- aliases:
- - nixos
- tm_scope: source.nix
- ace_mode: nix
- language_id: 252
-Nu:
- type: programming
- color: "#c9df40"
- aliases:
- - nush
- extensions:
- - ".nu"
- filenames:
- - Nukefile
- tm_scope: source.nu
- ace_mode: scheme
- codemirror_mode: scheme
- codemirror_mime_type: text/x-scheme
- interpreters:
- - nush
- language_id: 253
-NumPy:
- type: programming
- color: "#9C8AF9"
- group: Python
- extensions:
- - ".numpy"
- - ".numpyw"
- - ".numsc"
- tm_scope: none
- ace_mode: text
- codemirror_mode: python
- codemirror_mime_type: text/x-python
- language_id: 254
-OCaml:
- type: programming
- ace_mode: ocaml
- codemirror_mode: mllike
- codemirror_mime_type: text/x-ocaml
- color: "#3be133"
- extensions:
- - ".ml"
- - ".eliom"
- - ".eliomi"
- - ".ml4"
- - ".mli"
- - ".mll"
- - ".mly"
- interpreters:
- - ocaml
- - ocamlrun
- - ocamlscript
- tm_scope: source.ocaml
- language_id: 255
-ObjDump:
- type: data
- extensions:
- - ".objdump"
- tm_scope: objdump.x86asm
- ace_mode: assembly_x86
- language_id: 256
-Object Data Instance Notation:
- type: data
- extensions:
- - ".odin"
- tm_scope: source.odin-ehr
- ace_mode: text
- language_id: 985227236
-ObjectScript:
- type: programming
- extensions:
- - ".cls"
- language_id: 202735509
- tm_scope: source.objectscript
- color: "#424893"
- ace_mode: text
-Objective-C:
- type: programming
- tm_scope: source.objc
- color: "#438eff"
- aliases:
- - obj-c
- - objc
- - objectivec
- extensions:
- - ".m"
- - ".h"
- ace_mode: objectivec
- codemirror_mode: clike
- codemirror_mime_type: text/x-objectivec
- language_id: 257
-Objective-C++:
- type: programming
- tm_scope: source.objc++
- color: "#6866fb"
- aliases:
- - obj-c++
- - objc++
- - objectivec++
- extensions:
- - ".mm"
- ace_mode: objectivec
- codemirror_mode: clike
- codemirror_mime_type: text/x-objectivec
- language_id: 258
-Objective-J:
- type: programming
- color: "#ff0c5a"
- aliases:
- - obj-j
- - objectivej
- - objj
- extensions:
- - ".j"
- - ".sj"
- tm_scope: source.js.objj
- ace_mode: text
- language_id: 259
-Odin:
- type: programming
- color: "#60AFFE"
- aliases:
- - odinlang
- - odin-lang
- extensions:
- - ".odin"
- tm_scope: source.odin
- ace_mode: text
- language_id: 889244082
-Omgrofl:
- type: programming
- extensions:
- - ".omgrofl"
- color: "#cabbff"
- tm_scope: none
- ace_mode: text
- language_id: 260
-Opa:
- type: programming
- extensions:
- - ".opa"
- tm_scope: source.opa
- ace_mode: text
- language_id: 261
-Opal:
- type: programming
- color: "#f7ede0"
- extensions:
- - ".opal"
- tm_scope: source.opal
- ace_mode: text
- language_id: 262
-Open Policy Agent:
- type: programming
- ace_mode: text
- extensions:
- - ".rego"
- language_id: 840483232
- tm_scope: source.rego
-OpenCL:
- type: programming
- group: C
- extensions:
- - ".cl"
- - ".opencl"
- tm_scope: source.c
- ace_mode: c_cpp
- codemirror_mode: clike
- codemirror_mime_type: text/x-csrc
- language_id: 263
-OpenEdge ABL:
- type: programming
- aliases:
- - progress
- - openedge
- - abl
- extensions:
- - ".p"
- - ".cls"
- - ".w"
- tm_scope: source.abl
- ace_mode: text
- language_id: 264
-OpenQASM:
- type: programming
- extensions:
- - ".qasm"
- color: "#AA70FF"
- tm_scope: source.qasm
- ace_mode: text
- language_id: 153739399
-OpenRC runscript:
- type: programming
- group: Shell
- aliases:
- - openrc
- interpreters:
- - openrc-run
- tm_scope: source.shell
- ace_mode: sh
- codemirror_mode: shell
- codemirror_mime_type: text/x-sh
- language_id: 265
-OpenSCAD:
- type: programming
- extensions:
- - ".scad"
- tm_scope: source.scad
- ace_mode: scad
- language_id: 266
-OpenStep Property List:
- type: data
- extensions:
- - ".plist"
- tm_scope: source.plist
- ace_mode: text
- language_id: 598917541
-OpenType Feature File:
- type: data
- aliases:
- - AFDKO
- extensions:
- - ".fea"
- tm_scope: source.opentype
- ace_mode: text
- language_id: 374317347
-Org:
- type: prose
- wrap: true
- extensions:
- - ".org"
- tm_scope: none
- ace_mode: text
- language_id: 267
-Ox:
- type: programming
- extensions:
- - ".ox"
- - ".oxh"
- - ".oxo"
- tm_scope: source.ox
- ace_mode: text
- language_id: 268
-Oxygene:
- type: programming
- color: "#cdd0e3"
- extensions:
- - ".oxygene"
- tm_scope: none
- ace_mode: text
- language_id: 269
-Oz:
- type: programming
- color: "#fab738"
- extensions:
- - ".oz"
- tm_scope: source.oz
- ace_mode: text
- codemirror_mode: oz
- codemirror_mime_type: text/x-oz
- language_id: 270
-P4:
- type: programming
- color: "#7055b5"
- extensions:
- - ".p4"
- tm_scope: source.p4
- ace_mode: text
- language_id: 348895984
-PHP:
- type: programming
- tm_scope: text.html.php
- ace_mode: php
- codemirror_mode: php
- codemirror_mime_type: application/x-httpd-php
- color: "#4F5D95"
- extensions:
- - ".php"
- - ".aw"
- - ".ctp"
- - ".fcgi"
- - ".inc"
- - ".php3"
- - ".php4"
- - ".php5"
- - ".phps"
- - ".phpt"
- filenames:
- - ".php"
- - ".php_cs"
- - ".php_cs.dist"
- - Phakefile
- interpreters:
- - php
- aliases:
- - inc
- language_id: 272
-PLSQL:
- type: programming
- ace_mode: sql
- codemirror_mode: sql
- codemirror_mime_type: text/x-plsql
- tm_scope: none
- color: "#dad8d8"
- extensions:
- - ".pls"
- - ".bdy"
- - ".ddl"
- - ".fnc"
- - ".pck"
- - ".pkb"
- - ".pks"
- - ".plb"
- - ".plsql"
- - ".prc"
- - ".spc"
- - ".sql"
- - ".tpb"
- - ".tps"
- - ".trg"
- - ".vw"
- language_id: 273
-PLpgSQL:
- type: programming
- ace_mode: pgsql
- codemirror_mode: sql
- codemirror_mime_type: text/x-sql
- tm_scope: source.sql
- extensions:
- - ".pgsql"
- - ".sql"
- language_id: 274
-POV-Ray SDL:
- type: programming
- aliases:
- - pov-ray
- - povray
- extensions:
- - ".pov"
- - ".inc"
- tm_scope: source.pov-ray sdl
- ace_mode: text
- language_id: 275
-Pan:
- type: programming
- color: "#cc0000"
- extensions:
- - ".pan"
- tm_scope: source.pan
- ace_mode: text
- language_id: 276
-Papyrus:
- type: programming
- color: "#6600cc"
- extensions:
- - ".psc"
- tm_scope: source.papyrus.skyrim
- ace_mode: text
- language_id: 277
-Parrot:
- type: programming
- color: "#f3ca0a"
- extensions:
- - ".parrot"
- tm_scope: none
- ace_mode: text
- language_id: 278
-Parrot Assembly:
- group: Parrot
- type: programming
- aliases:
- - pasm
- extensions:
- - ".pasm"
- interpreters:
- - parrot
- tm_scope: none
- ace_mode: text
- language_id: 279
-Parrot Internal Representation:
- group: Parrot
- tm_scope: source.parrot.pir
- type: programming
- aliases:
- - pir
- extensions:
- - ".pir"
- interpreters:
- - parrot
- ace_mode: text
- language_id: 280
-Pascal:
- type: programming
- color: "#E3F171"
- extensions:
- - ".pas"
- - ".dfm"
- - ".dpr"
- - ".inc"
- - ".lpr"
- - ".pascal"
- - ".pp"
- interpreters:
- - instantfpc
- tm_scope: source.pascal
- ace_mode: pascal
- codemirror_mode: pascal
- codemirror_mime_type: text/x-pascal
- language_id: 281
-Pawn:
- type: programming
- color: "#dbb284"
- extensions:
- - ".pwn"
- - ".inc"
- - ".sma"
- tm_scope: source.pawn
- ace_mode: text
- language_id: 271
-Pep8:
- type: programming
- color: "#C76F5B"
- extensions:
- - ".pep"
- ace_mode: text
- tm_scope: source.pep8
- language_id: 840372442
-Perl:
- type: programming
- tm_scope: source.perl
- ace_mode: perl
- codemirror_mode: perl
- codemirror_mime_type: text/x-perl
- color: "#0298c3"
- extensions:
- - ".pl"
- - ".al"
- - ".cgi"
- - ".fcgi"
- - ".perl"
- - ".ph"
- - ".plx"
- - ".pm"
- - ".psgi"
- - ".t"
- filenames:
- - Makefile.PL
- - Rexfile
- - ack
- - cpanfile
- interpreters:
- - cperl
- - perl
- aliases:
- - cperl
- language_id: 282
-Pic:
- type: markup
- group: Roff
- tm_scope: source.pic
- extensions:
- - ".pic"
- - ".chem"
- ace_mode: text
- codemirror_mode: troff
- codemirror_mime_type: text/troff
- language_id: 425
-Pickle:
- type: data
- extensions:
- - ".pkl"
- tm_scope: none
- ace_mode: text
- language_id: 284
-PicoLisp:
- type: programming
- extensions:
- - ".l"
- interpreters:
- - picolisp
- - pil
- tm_scope: source.lisp
- ace_mode: lisp
- language_id: 285
-PigLatin:
- type: programming
- color: "#fcd7de"
- extensions:
- - ".pig"
- tm_scope: source.pig_latin
- ace_mode: text
- language_id: 286
-Pike:
- type: programming
- color: "#005390"
- extensions:
- - ".pike"
- - ".pmod"
- interpreters:
- - pike
- tm_scope: source.pike
- ace_mode: text
- language_id: 287
-PlantUML:
- type: data
- extensions:
- - ".puml"
- - ".iuml"
- - ".plantuml"
- tm_scope: source.wsd
- ace_mode: text
- language_id: 833504686
-Pod:
- type: prose
- ace_mode: perl
- codemirror_mode: perl
- codemirror_mime_type: text/x-perl
- wrap: true
- extensions:
- - ".pod"
- interpreters:
- - perl
- tm_scope: none
- language_id: 288
-Pod 6:
- type: prose
- ace_mode: perl
- tm_scope: source.perl6fe
- wrap: true
- extensions:
- - ".pod"
- - ".pod6"
- interpreters:
- - perl6
- language_id: 155357471
-PogoScript:
- type: programming
- color: "#d80074"
- extensions:
- - ".pogo"
- tm_scope: source.pogoscript
- ace_mode: text
- language_id: 289
-Pony:
- type: programming
- extensions:
- - ".pony"
- tm_scope: source.pony
- ace_mode: text
- language_id: 290
-PostCSS:
- type: markup
- tm_scope: source.postcss
- group: CSS
- extensions:
- - ".pcss"
- - ".postcss"
- ace_mode: text
- language_id: 262764437
-PostScript:
- type: markup
- color: "#da291c"
- extensions:
- - ".ps"
- - ".eps"
- - ".epsi"
- - ".pfa"
- tm_scope: source.postscript
- aliases:
- - postscr
- ace_mode: text
- language_id: 291
-PowerBuilder:
- type: programming
- color: "#8f0f8d"
- extensions:
- - ".pbt"
- - ".sra"
- - ".sru"
- - ".srw"
- tm_scope: none
- ace_mode: text
- language_id: 292
-PowerShell:
- type: programming
- color: "#012456"
- tm_scope: source.powershell
- ace_mode: powershell
- codemirror_mode: powershell
- codemirror_mime_type: application/x-powershell
- aliases:
- - posh
- - pwsh
- extensions:
- - ".ps1"
- - ".psd1"
- - ".psm1"
- interpreters:
- - pwsh
- language_id: 293
-Prisma:
- type: data
- color: "#0c344b"
- extensions:
- - ".prisma"
- tm_scope: source.prisma
- ace_mode: text
- language_id: 499933428
-Processing:
- type: programming
- color: "#0096D8"
- extensions:
- - ".pde"
- tm_scope: source.processing
- ace_mode: text
- language_id: 294
-Proguard:
- type: data
- extensions:
- - ".pro"
- tm_scope: none
- ace_mode: text
- language_id: 716513858
-Prolog:
- type: programming
- color: "#74283c"
- extensions:
- - ".pl"
- - ".pro"
- - ".prolog"
- - ".yap"
- interpreters:
- - swipl
- - yap
- tm_scope: source.prolog
- ace_mode: prolog
- language_id: 295
-Propeller Spin:
- type: programming
- color: "#7fa2a7"
- extensions:
- - ".spin"
- tm_scope: source.spin
- ace_mode: text
- language_id: 296
-Protocol Buffer:
- type: data
- aliases:
- - protobuf
- - Protocol Buffers
- extensions:
- - ".proto"
- tm_scope: source.protobuf
- ace_mode: protobuf
- codemirror_mode: protobuf
- codemirror_mime_type: text/x-protobuf
- language_id: 297
-Public Key:
- type: data
- extensions:
- - ".asc"
- - ".pub"
- tm_scope: none
- ace_mode: text
- codemirror_mode: asciiarmor
- codemirror_mime_type: application/pgp
- language_id: 298
-Pug:
- type: markup
- color: "#a86454"
- extensions:
- - ".jade"
- - ".pug"
- tm_scope: text.jade
- ace_mode: jade
- codemirror_mode: pug
- codemirror_mime_type: text/x-pug
- language_id: 179
-Puppet:
- type: programming
- color: "#302B6D"
- extensions:
- - ".pp"
- filenames:
- - Modulefile
- ace_mode: text
- codemirror_mode: puppet
- codemirror_mime_type: text/x-puppet
- tm_scope: source.puppet
- language_id: 299
-Pure Data:
- type: data
- extensions:
- - ".pd"
- tm_scope: none
- ace_mode: text
- language_id: 300
-PureBasic:
- type: programming
- color: "#5a6986"
- extensions:
- - ".pb"
- - ".pbi"
- tm_scope: none
- ace_mode: text
- language_id: 301
-PureScript:
- type: programming
- color: "#1D222D"
- extensions:
- - ".purs"
- tm_scope: source.purescript
- ace_mode: haskell
- codemirror_mode: haskell
- codemirror_mime_type: text/x-haskell
- language_id: 302
-Python:
- type: programming
- tm_scope: source.python
- ace_mode: python
- codemirror_mode: python
- codemirror_mime_type: text/x-python
- color: "#3572A5"
- extensions:
- - ".py"
- - ".cgi"
- - ".fcgi"
- - ".gyp"
- - ".gypi"
- - ".lmi"
- - ".py3"
- - ".pyde"
- - ".pyi"
- - ".pyp"
- - ".pyt"
- - ".pyw"
- - ".rpy"
- - ".smk"
- - ".spec"
- - ".tac"
- - ".wsgi"
- - ".xpy"
- filenames:
- - ".gclient"
- - DEPS
- - SConscript
- - SConstruct
- - Snakefile
- - wscript
- interpreters:
- - python
- - python2
- - python3
- aliases:
- - python3
- - rusthon
- language_id: 303
-Python console:
- type: programming
- group: Python
- searchable: false
- aliases:
- - pycon
- tm_scope: text.python.console
- ace_mode: text
- language_id: 428
-Python traceback:
- type: data
- group: Python
- searchable: false
- extensions:
- - ".pytb"
- tm_scope: text.python.traceback
- ace_mode: text
- language_id: 304
-Q#:
- type: programming
- extensions:
- - ".qs"
- aliases:
- - qsharp
- color: "#fed659"
- ace_mode: text
- tm_scope: source.qsharp
- language_id: 697448245
-QML:
- type: programming
- color: "#44a51c"
- extensions:
- - ".qml"
- - ".qbs"
- tm_scope: source.qml
- ace_mode: text
- language_id: 305
-QMake:
- type: programming
- extensions:
- - ".pro"
- - ".pri"
- interpreters:
- - qmake
- tm_scope: source.qmake
- ace_mode: text
- language_id: 306
-Qt Script:
- type: programming
- ace_mode: javascript
- codemirror_mode: javascript
- codemirror_mime_type: text/javascript
- extensions:
- - ".qs"
- filenames:
- - installscript.qs
- - toolchain_installscript.qs
- color: "#00b841"
- tm_scope: source.js
- language_id: 558193693
-Quake:
- type: programming
- filenames:
- - m3makefile
- - m3overrides
- color: "#882233"
- ace_mode: text
- tm_scope: source.quake
- language_id: 375265331
-R:
- type: programming
- color: "#198CE7"
- aliases:
- - R
- - Rscript
- - splus
- extensions:
- - ".r"
- - ".rd"
- - ".rsx"
- filenames:
- - ".Rprofile"
- - expr-dist
- interpreters:
- - Rscript
- tm_scope: source.r
- ace_mode: r
- codemirror_mode: r
- codemirror_mime_type: text/x-rsrc
- language_id: 307
-RAML:
- type: markup
- ace_mode: yaml
- codemirror_mode: yaml
- codemirror_mime_type: text/x-yaml
- tm_scope: source.yaml
- color: "#77d9fb"
- extensions:
- - ".raml"
- language_id: 308
-RDoc:
- type: prose
- ace_mode: rdoc
- wrap: true
- extensions:
- - ".rdoc"
- tm_scope: text.rdoc
- language_id: 309
-REALbasic:
- type: programming
- extensions:
- - ".rbbas"
- - ".rbfrm"
- - ".rbmnu"
- - ".rbres"
- - ".rbtbar"
- - ".rbuistate"
- tm_scope: source.vbnet
- ace_mode: text
- language_id: 310
-REXX:
- type: programming
- aliases:
- - arexx
- extensions:
- - ".rexx"
- - ".pprx"
- - ".rex"
- interpreters:
- - regina
- - rexx
- tm_scope: source.rexx
- ace_mode: text
- language_id: 311
-RMarkdown:
- type: prose
- wrap: true
- ace_mode: markdown
- codemirror_mode: gfm
- codemirror_mime_type: text/x-gfm
- extensions:
- - ".rmd"
- tm_scope: source.gfm
- language_id: 313
-RPC:
- type: programming
- aliases:
- - rpcgen
- - oncrpc
- - xdr
- ace_mode: c_cpp
- extensions:
- - ".x"
- tm_scope: source.c
- language_id: 1031374237
-RPM Spec:
- type: data
- tm_scope: source.rpm-spec
- extensions:
- - ".spec"
- aliases:
- - specfile
- ace_mode: text
- codemirror_mode: rpm
- codemirror_mime_type: text/x-rpm-spec
- language_id: 314
-RUNOFF:
- type: markup
- color: "#665a4e"
- extensions:
- - ".rnh"
- - ".rno"
- wrap: true
- tm_scope: text.runoff
- ace_mode: text
- language_id: 315
-Racket:
- type: programming
- color: "#3c5caa"
- extensions:
- - ".rkt"
- - ".rktd"
- - ".rktl"
- - ".scrbl"
- interpreters:
- - racket
- tm_scope: source.racket
- ace_mode: lisp
- language_id: 316
-Ragel:
- type: programming
- color: "#9d5200"
- extensions:
- - ".rl"
- aliases:
- - ragel-rb
- - ragel-ruby
- tm_scope: none
- ace_mode: text
- language_id: 317
-Raku:
- type: programming
- color: "#0000fb"
- extensions:
- - ".6pl"
- - ".6pm"
- - ".nqp"
- - ".p6"
- - ".p6l"
- - ".p6m"
- - ".pl"
- - ".pl6"
- - ".pm"
- - ".pm6"
- - ".t"
- interpreters:
- - perl6
- - raku
- - rakudo
- aliases:
- - perl6
- - perl-6
- tm_scope: source.perl6fe
- ace_mode: perl
- codemirror_mode: perl
- codemirror_mime_type: text/x-perl
- language_id: 283
-Rascal:
- type: programming
- color: "#fffaa0"
- extensions:
- - ".rsc"
- tm_scope: source.rascal
- ace_mode: text
- language_id: 173616037
-Raw token data:
- type: data
- aliases:
- - raw
- extensions:
- - ".raw"
- tm_scope: none
- ace_mode: text
- language_id: 318
-Readline Config:
- type: data
- group: INI
- aliases:
- - inputrc
- - readline
- filenames:
- - ".inputrc"
- - inputrc
- tm_scope: source.inputrc
- ace_mode: text
- language_id: 538732839
-Reason:
- type: programming
- color: "#ff5847"
- ace_mode: rust
- codemirror_mode: rust
- codemirror_mime_type: text/x-rustsrc
- extensions:
- - ".re"
- - ".rei"
- tm_scope: source.reason
- language_id: 869538413
-Rebol:
- type: programming
- color: "#358a5b"
- extensions:
- - ".reb"
- - ".r"
- - ".r2"
- - ".r3"
- - ".rebol"
- ace_mode: text
- tm_scope: source.rebol
- language_id: 319
-Red:
- type: programming
- color: "#f50000"
- extensions:
- - ".red"
- - ".reds"
- aliases:
- - red/system
- tm_scope: source.red
- ace_mode: text
- language_id: 320
-Redcode:
- type: programming
- extensions:
- - ".cw"
- tm_scope: none
- ace_mode: text
- language_id: 321
-Regular Expression:
- type: data
- extensions:
- - ".regexp"
- - ".regex"
- aliases:
- - regexp
- - regex
- ace_mode: text
- tm_scope: source.regexp
- language_id: 363378884
-Ren'Py:
- type: programming
- aliases:
- - renpy
- color: "#ff7f7f"
- extensions:
- - ".rpy"
- tm_scope: source.renpy
- ace_mode: python
- language_id: 322
-RenderScript:
- type: programming
- extensions:
- - ".rs"
- - ".rsh"
- tm_scope: none
- ace_mode: text
- language_id: 323
-Rich Text Format:
- type: markup
- extensions:
- - ".rtf"
- tm_scope: text.rtf
- ace_mode: text
- language_id: 51601661
-Ring:
- type: programming
- color: "#2D54CB"
- extensions:
- - ".ring"
- tm_scope: source.ring
- ace_mode: text
- language_id: 431
-Riot:
- type: markup
- color: "#A71E49"
- ace_mode: html
- extensions:
- - ".riot"
- tm_scope: text.html.riot
- language_id: 878396783
-RobotFramework:
- type: programming
- extensions:
- - ".robot"
- tm_scope: text.robot
- ace_mode: text
- language_id: 324
-Roff:
- type: markup
- color: "#ecdebe"
- extensions:
- - ".roff"
- - ".1"
- - ".1in"
- - ".1m"
- - ".1x"
- - ".2"
- - ".3"
- - ".3in"
- - ".3m"
- - ".3p"
- - ".3pm"
- - ".3qt"
- - ".3x"
- - ".4"
- - ".5"
- - ".6"
- - ".7"
- - ".8"
- - ".9"
- - ".l"
- - ".man"
- - ".mdoc"
- - ".me"
- - ".ms"
- - ".n"
- - ".nr"
- - ".rno"
- - ".tmac"
- filenames:
- - eqnrc
- - mmn
- - mmt
- - troffrc
- - troffrc-end
- tm_scope: text.roff
- aliases:
- - groff
- - man
- - manpage
- - man page
- - man-page
- - mdoc
- - nroff
- - troff
- wrap: true
- ace_mode: text
- codemirror_mode: troff
- codemirror_mime_type: text/troff
- language_id: 141
-Roff Manpage:
- type: markup
- group: Roff
- extensions:
- - ".1"
- - ".1in"
- - ".1m"
- - ".1x"
- - ".2"
- - ".3"
- - ".3in"
- - ".3m"
- - ".3p"
- - ".3pm"
- - ".3qt"
- - ".3x"
- - ".4"
- - ".5"
- - ".6"
- - ".7"
- - ".8"
- - ".9"
- - ".man"
- - ".mdoc"
- wrap: true
- tm_scope: text.roff
- ace_mode: text
- codemirror_mode: troff
- codemirror_mime_type: text/troff
- language_id: 612669833
-Rouge:
- type: programming
- ace_mode: clojure
- codemirror_mode: clojure
- codemirror_mime_type: text/x-clojure
- color: "#cc0088"
- extensions:
- - ".rg"
- tm_scope: source.clojure
- language_id: 325
-Ruby:
- type: programming
- tm_scope: source.ruby
- ace_mode: ruby
- codemirror_mode: ruby
- codemirror_mime_type: text/x-ruby
- color: "#701516"
- aliases:
- - jruby
- - macruby
- - rake
- - rb
- - rbx
- extensions:
- - ".rb"
- - ".builder"
- - ".eye"
- - ".fcgi"
- - ".gemspec"
- - ".god"
- - ".jbuilder"
- - ".mspec"
- - ".pluginspec"
- - ".podspec"
- - ".rabl"
- - ".rake"
- - ".rbi"
- - ".rbuild"
- - ".rbw"
- - ".rbx"
- - ".ru"
- - ".ruby"
- - ".spec"
- - ".thor"
- - ".watchr"
- interpreters:
- - ruby
- - macruby
- - rake
- - jruby
- - rbx
- filenames:
- - ".irbrc"
- - ".pryrc"
- - ".simplecov"
- - Appraisals
- - Berksfile
- - Brewfile
- - Buildfile
- - Capfile
- - Dangerfile
- - Deliverfile
- - Fastfile
- - Gemfile
- - Gemfile.lock
- - Guardfile
- - Jarfile
- - Mavenfile
- - Podfile
- - Puppetfile
- - Rakefile
- - Snapfile
- - Thorfile
- - Vagrantfile
- - buildfile
- language_id: 326
-Rust:
- type: programming
- color: "#dea584"
- extensions:
- - ".rs"
- - ".rs.in"
- tm_scope: source.rust
- ace_mode: rust
- codemirror_mode: rust
- codemirror_mime_type: text/x-rustsrc
- language_id: 327
-SAS:
- type: programming
- color: "#B34936"
- extensions:
- - ".sas"
- tm_scope: source.sas
- ace_mode: text
- codemirror_mode: sas
- codemirror_mime_type: text/x-sas
- language_id: 328
-SCSS:
- type: markup
- color: "#c6538c"
- tm_scope: source.css.scss
- ace_mode: scss
- codemirror_mode: css
- codemirror_mime_type: text/x-scss
- extensions:
- - ".scss"
- language_id: 329
-SMT:
- type: programming
- extensions:
- - ".smt2"
- - ".smt"
- interpreters:
- - boolector
- - cvc4
- - mathsat5
- - opensmt
- - smtinterpol
- - smt-rat
- - stp
- - verit
- - yices2
- - z3
- tm_scope: source.smt
- ace_mode: text
- language_id: 330
-SPARQL:
- type: data
- tm_scope: source.sparql
- ace_mode: text
- codemirror_mode: sparql
- codemirror_mime_type: application/sparql-query
- extensions:
- - ".sparql"
- - ".rq"
- language_id: 331
-SQF:
- type: programming
- color: "#3F3F3F"
- extensions:
- - ".sqf"
- - ".hqf"
- tm_scope: source.sqf
- ace_mode: text
- language_id: 332
-SQL:
- type: data
- tm_scope: source.sql
- ace_mode: sql
- codemirror_mode: sql
- codemirror_mime_type: text/x-sql
- extensions:
- - ".sql"
- - ".cql"
- - ".ddl"
- - ".inc"
- - ".mysql"
- - ".prc"
- - ".tab"
- - ".udf"
- - ".viw"
- language_id: 333
-SQLPL:
- type: programming
- ace_mode: sql
- codemirror_mode: sql
- codemirror_mime_type: text/x-sql
- tm_scope: source.sql
- extensions:
- - ".sql"
- - ".db2"
- language_id: 334
-SRecode Template:
- type: markup
- color: "#348a34"
- tm_scope: source.lisp
- ace_mode: lisp
- codemirror_mode: commonlisp
- codemirror_mime_type: text/x-common-lisp
- extensions:
- - ".srt"
- language_id: 335
-SSH Config:
- type: data
- group: INI
- filenames:
- - ssh-config
- - ssh_config
- - sshconfig
- - sshconfig.snip
- - sshd-config
- - sshd_config
- ace_mode: text
- tm_scope: source.ssh-config
- language_id: 554920715
-STON:
- type: data
- group: Smalltalk
- extensions:
- - ".ston"
- tm_scope: source.smalltalk
- ace_mode: text
- language_id: 336
-SVG:
- type: data
- color: "#ff9900"
- extensions:
- - ".svg"
- tm_scope: text.xml.svg
- ace_mode: xml
- codemirror_mode: xml
- codemirror_mime_type: text/xml
- language_id: 337
-SWIG:
- type: programming
- extensions:
- - ".i"
- tm_scope: source.c++
- ace_mode: c_cpp
- codemirror_mode: clike
- codemirror_mime_type: text/x-c++src
- language_id: 1066250075
-Sage:
- type: programming
- extensions:
- - ".sage"
- - ".sagews"
- tm_scope: source.python
- ace_mode: python
- codemirror_mode: python
- codemirror_mime_type: text/x-python
- language_id: 338
-SaltStack:
- type: programming
- color: "#646464"
- aliases:
- - saltstate
- - salt
- extensions:
- - ".sls"
- tm_scope: source.yaml.salt
- ace_mode: yaml
- codemirror_mode: yaml
- codemirror_mime_type: text/x-yaml
- language_id: 339
-Sass:
- type: markup
- color: "#a53b70"
- tm_scope: source.sass
- extensions:
- - ".sass"
- ace_mode: sass
- codemirror_mode: sass
- codemirror_mime_type: text/x-sass
- language_id: 340
-Scala:
- type: programming
- tm_scope: source.scala
- ace_mode: scala
- codemirror_mode: clike
- codemirror_mime_type: text/x-scala
- color: "#c22d40"
- extensions:
- - ".scala"
- - ".kojo"
- - ".sbt"
- - ".sc"
- interpreters:
- - scala
- language_id: 341
-Scaml:
- group: HTML
- type: markup
- extensions:
- - ".scaml"
- tm_scope: source.scaml
- ace_mode: text
- language_id: 342
-Scheme:
- type: programming
- color: "#1e4aec"
- extensions:
- - ".scm"
- - ".sch"
- - ".sld"
- - ".sls"
- - ".sps"
- - ".ss"
- interpreters:
- - scheme
- - guile
- - bigloo
- - chicken
- - csi
- - gosh
- - r6rs
- tm_scope: source.scheme
- ace_mode: scheme
- codemirror_mode: scheme
- codemirror_mime_type: text/x-scheme
- language_id: 343
-Scilab:
- type: programming
- extensions:
- - ".sci"
- - ".sce"
- - ".tst"
- tm_scope: source.scilab
- ace_mode: text
- language_id: 344
-Self:
- type: programming
- color: "#0579aa"
- extensions:
- - ".self"
- tm_scope: none
- ace_mode: text
- language_id: 345
-ShaderLab:
- type: programming
- extensions:
- - ".shader"
- ace_mode: text
- tm_scope: source.shaderlab
- language_id: 664257356
-Shell:
- type: programming
- color: "#89e051"
- aliases:
- - sh
- - shell-script
- - bash
- - zsh
- extensions:
- - ".sh"
- - ".bash"
- - ".bats"
- - ".cgi"
- - ".command"
- - ".env"
- - ".fcgi"
- - ".ksh"
- - ".sh.in"
- - ".tmux"
- - ".tool"
- - ".zsh"
- filenames:
- - ".bash_aliases"
- - ".bash_history"
- - ".bash_logout"
- - ".bash_profile"
- - ".bashrc"
- - ".cshrc"
- - ".env"
- - ".env.example"
- - ".flaskenv"
- - ".login"
- - ".profile"
- - ".zlogin"
- - ".zlogout"
- - ".zprofile"
- - ".zshenv"
- - ".zshrc"
- - 9fs
- - PKGBUILD
- - bash_aliases
- - bash_logout
- - bash_profile
- - bashrc
- - cshrc
- - gradlew
- - login
- - man
- - profile
- - zlogin
- - zlogout
- - zprofile
- - zshenv
- - zshrc
- interpreters:
- - ash
- - bash
- - dash
- - ksh
- - mksh
- - pdksh
- - rc
- - sh
- - zsh
- tm_scope: source.shell
- ace_mode: sh
- codemirror_mode: shell
- codemirror_mime_type: text/x-sh
- language_id: 346
-ShellSession:
- type: programming
- extensions:
- - ".sh-session"
- aliases:
- - bash session
- - console
- tm_scope: text.shell-session
- ace_mode: sh
- codemirror_mode: shell
- codemirror_mime_type: text/x-sh
- language_id: 347
-Shen:
- type: programming
- color: "#120F14"
- extensions:
- - ".shen"
- tm_scope: source.shen
- ace_mode: text
- language_id: 348
-Sieve:
- type: programming
- tm_scope: source.sieve
- ace_mode: text
- extensions:
- - ".sieve"
- codemirror_mode: sieve
- codemirror_mime_type: application/sieve
- language_id: 208976687
-Slash:
- type: programming
- color: "#007eff"
- extensions:
- - ".sl"
- tm_scope: text.html.slash
- ace_mode: text
- language_id: 349
-Slice:
- type: programming
- color: "#003fa2"
- tm_scope: source.slice
- ace_mode: text
- extensions:
- - ".ice"
- language_id: 894641667
-Slim:
- type: markup
- color: "#2b2b2b"
- extensions:
- - ".slim"
- tm_scope: text.slim
- ace_mode: text
- codemirror_mode: slim
- codemirror_mime_type: text/x-slim
- language_id: 350
-SmPL:
- type: programming
- extensions:
- - ".cocci"
- aliases:
- - coccinelle
- ace_mode: text
- tm_scope: source.smpl
- color: "#c94949"
- language_id: 164123055
-Smali:
- type: programming
- extensions:
- - ".smali"
- ace_mode: text
- tm_scope: source.smali
- language_id: 351
-Smalltalk:
- type: programming
- color: "#596706"
- extensions:
- - ".st"
- - ".cs"
- aliases:
- - squeak
- tm_scope: source.smalltalk
- ace_mode: text
- codemirror_mode: smalltalk
- codemirror_mime_type: text/x-stsrc
- language_id: 352
-Smarty:
- type: programming
- extensions:
- - ".tpl"
- ace_mode: smarty
- codemirror_mode: smarty
- codemirror_mime_type: text/x-smarty
- tm_scope: text.html.smarty
- language_id: 353
-Solidity:
- type: programming
- color: "#AA6746"
- ace_mode: text
- tm_scope: source.solidity
- extensions:
- - ".sol"
- language_id: 237469032
-SourcePawn:
- type: programming
- color: "#f69e1d"
- aliases:
- - sourcemod
- extensions:
- - ".sp"
- - ".inc"
- tm_scope: source.sourcepawn
- ace_mode: text
- language_id: 354
-Spline Font Database:
- type: data
- extensions:
- - ".sfd"
- tm_scope: text.sfd
- ace_mode: yaml
- language_id: 767169629
-Squirrel:
- type: programming
- color: "#800000"
- extensions:
- - ".nut"
- tm_scope: source.c++
- ace_mode: c_cpp
- codemirror_mode: clike
- codemirror_mime_type: text/x-c++src
- language_id: 355
-Stan:
- type: programming
- color: "#b2011d"
- extensions:
- - ".stan"
- ace_mode: text
- tm_scope: source.stan
- language_id: 356
-Standard ML:
- type: programming
- color: "#dc566d"
- aliases:
- - sml
- extensions:
- - ".ml"
- - ".fun"
- - ".sig"
- - ".sml"
- tm_scope: source.ml
- ace_mode: text
- codemirror_mode: mllike
- codemirror_mime_type: text/x-ocaml
- language_id: 357
-Starlark:
- type: programming
- tm_scope: source.python
- ace_mode: python
- codemirror_mode: python
- codemirror_mime_type: text/x-python
- color: "#76d275"
- extensions:
- - ".bzl"
- filenames:
- - BUCK
- - BUILD
- - BUILD.bazel
- - Tiltfile
- - WORKSPACE
- aliases:
- - bazel
- - bzl
- language_id: 960266174
-Stata:
- type: programming
- extensions:
- - ".do"
- - ".ado"
- - ".doh"
- - ".ihlp"
- - ".mata"
- - ".matah"
- - ".sthlp"
- tm_scope: source.stata
- ace_mode: text
- language_id: 358
-Stylus:
- type: markup
- color: "#ff6347"
- extensions:
- - ".styl"
- tm_scope: source.stylus
- ace_mode: stylus
- language_id: 359
-SubRip Text:
- type: data
- extensions:
- - ".srt"
- ace_mode: text
- tm_scope: text.srt
- language_id: 360
-SugarSS:
- type: markup
- tm_scope: source.css.postcss.sugarss
- group: CSS
- extensions:
- - ".sss"
- ace_mode: text
- language_id: 826404698
-SuperCollider:
- type: programming
- color: "#46390b"
- extensions:
- - ".sc"
- - ".scd"
- interpreters:
- - sclang
- - scsynth
- tm_scope: source.supercollider
- ace_mode: text
- language_id: 361
-Svelte:
- type: markup
- color: "#ff3e00"
- tm_scope: source.svelte
- ace_mode: html
- codemirror_mode: htmlmixed
- codemirror_mime_type: text/html
- extensions:
- - ".svelte"
- language_id: 928734530
-Swift:
- type: programming
- color: "#ffac45"
- extensions:
- - ".swift"
- tm_scope: source.swift
- ace_mode: text
- codemirror_mode: swift
- codemirror_mime_type: text/x-swift
- language_id: 362
-SystemVerilog:
- type: programming
- color: "#DAE1C2"
- extensions:
- - ".sv"
- - ".svh"
- - ".vh"
- tm_scope: source.systemverilog
- ace_mode: verilog
- codemirror_mode: verilog
- codemirror_mime_type: text/x-systemverilog
- language_id: 363
-TI Program:
- type: programming
- ace_mode: text
- color: "#A0AA87"
- extensions:
- - ".8xp"
- - ".8xk"
- - ".8xk.txt"
- - ".8xp.txt"
- language_id: 422
- tm_scope: none
-TLA:
- type: programming
- extensions:
- - ".tla"
- tm_scope: source.tla
- ace_mode: text
- language_id: 364
-TOML:
- type: data
- extensions:
- - ".toml"
- filenames:
- - Cargo.lock
- - Gopkg.lock
- - poetry.lock
- tm_scope: source.toml
- ace_mode: toml
- codemirror_mode: toml
- codemirror_mime_type: text/x-toml
- language_id: 365
-TSQL:
- type: programming
- extensions:
- - ".sql"
- ace_mode: sql
- tm_scope: source.tsql
- language_id: 918334941
-TSV:
- type: data
- ace_mode: text
- tm_scope: source.generic-db
- extensions:
- - ".tsv"
- language_id: 1035892117
-TSX:
- type: programming
- group: TypeScript
- extensions:
- - ".tsx"
- tm_scope: source.tsx
- ace_mode: javascript
- codemirror_mode: jsx
- codemirror_mime_type: text/jsx
- language_id: 94901924
-TXL:
- type: programming
- extensions:
- - ".txl"
- tm_scope: source.txl
- ace_mode: text
- language_id: 366
-Tcl:
- type: programming
- color: "#e4cc98"
- extensions:
- - ".tcl"
- - ".adp"
- - ".tm"
- filenames:
- - owh
- - starfield
- interpreters:
- - tclsh
- - wish
- tm_scope: source.tcl
- ace_mode: tcl
- codemirror_mode: tcl
- codemirror_mime_type: text/x-tcl
- language_id: 367
-Tcsh:
- type: programming
- group: Shell
- extensions:
- - ".tcsh"
- - ".csh"
- interpreters:
- - tcsh
- - csh
- tm_scope: source.shell
- ace_mode: sh
- codemirror_mode: shell
- codemirror_mime_type: text/x-sh
- language_id: 368
-TeX:
- type: markup
- color: "#3D6117"
- ace_mode: tex
- codemirror_mode: stex
- codemirror_mime_type: text/x-stex
- tm_scope: text.tex.latex
- wrap: true
- aliases:
- - latex
- extensions:
- - ".tex"
- - ".aux"
- - ".bbx"
- - ".cbx"
- - ".cls"
- - ".dtx"
- - ".ins"
- - ".lbx"
- - ".ltx"
- - ".mkii"
- - ".mkiv"
- - ".mkvi"
- - ".sty"
- - ".toc"
- language_id: 369
-Tea:
- type: markup
- extensions:
- - ".tea"
- tm_scope: source.tea
- ace_mode: text
- language_id: 370
-Terra:
- type: programming
- extensions:
- - ".t"
- color: "#00004c"
- tm_scope: source.terra
- ace_mode: lua
- codemirror_mode: lua
- codemirror_mime_type: text/x-lua
- interpreters:
- - lua
- language_id: 371
-Texinfo:
- type: prose
- wrap: true
- extensions:
- - ".texinfo"
- - ".texi"
- - ".txi"
- ace_mode: text
- tm_scope: text.texinfo
- interpreters:
- - makeinfo
- language_id: 988020015
-Text:
- type: prose
- wrap: true
- aliases:
- - fundamental
- extensions:
- - ".txt"
- - ".fr"
- - ".nb"
- - ".ncl"
- - ".no"
- filenames:
- - COPYING
- - COPYING.regex
- - COPYRIGHT.regex
- - FONTLOG
- - INSTALL
- - INSTALL.mysql
- - LICENSE
- - LICENSE.mysql
- - NEWS
- - README.1ST
- - README.me
- - README.mysql
- - click.me
- - delete.me
- - go.mod
- - go.sum
- - keep.me
- - package.mask
- - package.use.mask
- - package.use.stable.mask
- - read.me
- - readme.1st
- - test.me
- - use.mask
- - use.stable.mask
- tm_scope: none
- ace_mode: text
- language_id: 372
-Textile:
- type: prose
- ace_mode: textile
- codemirror_mode: textile
- codemirror_mime_type: text/x-textile
- wrap: true
- extensions:
- - ".textile"
- tm_scope: none
- language_id: 373
-Thrift:
- type: programming
- tm_scope: source.thrift
- extensions:
- - ".thrift"
- ace_mode: text
- language_id: 374
-Turing:
- type: programming
- color: "#cf142b"
- extensions:
- - ".t"
- - ".tu"
- tm_scope: source.turing
- ace_mode: text
- language_id: 375
-Turtle:
- type: data
- extensions:
- - ".ttl"
- tm_scope: source.turtle
- ace_mode: text
- codemirror_mode: turtle
- codemirror_mime_type: text/turtle
- language_id: 376
-Twig:
- type: markup
- color: "#c1d026"
- extensions:
- - ".twig"
- tm_scope: text.html.twig
- ace_mode: twig
- codemirror_mode: twig
- codemirror_mime_type: text/x-twig
- language_id: 377
-Type Language:
- type: data
- aliases:
- - tl
- extensions:
- - ".tl"
- tm_scope: source.tl
- ace_mode: text
- language_id: 632765617
-TypeScript:
- type: programming
- color: "#2b7489"
- aliases:
- - ts
- interpreters:
- - deno
- - ts-node
- extensions:
- - ".ts"
- tm_scope: source.ts
- ace_mode: typescript
- codemirror_mode: javascript
- codemirror_mime_type: application/typescript
- language_id: 378
-Unified Parallel C:
- type: programming
- color: "#4e3617"
- group: C
- ace_mode: c_cpp
- codemirror_mode: clike
- codemirror_mime_type: text/x-csrc
- extensions:
- - ".upc"
- tm_scope: source.c
- language_id: 379
-Unity3D Asset:
- type: data
- ace_mode: yaml
- codemirror_mode: yaml
- codemirror_mime_type: text/x-yaml
- extensions:
- - ".anim"
- - ".asset"
- - ".mask"
- - ".mat"
- - ".meta"
- - ".prefab"
- - ".unity"
- tm_scope: source.yaml
- language_id: 380
-Unix Assembly:
- type: programming
- group: Assembly
- extensions:
- - ".s"
- - ".ms"
- tm_scope: source.x86
- ace_mode: assembly_x86
- language_id: 120
-Uno:
- type: programming
- color: "#9933cc"
- extensions:
- - ".uno"
- ace_mode: csharp
- codemirror_mode: clike
- codemirror_mime_type: text/x-csharp
- tm_scope: source.cs
- language_id: 381
-UnrealScript:
- type: programming
- color: "#a54c4d"
- extensions:
- - ".uc"
- tm_scope: source.java
- ace_mode: java
- codemirror_mode: clike
- codemirror_mime_type: text/x-java
- language_id: 382
-UrWeb:
- type: programming
- aliases:
- - Ur/Web
- - Ur
- extensions:
- - ".ur"
- - ".urs"
- tm_scope: source.ur
- ace_mode: text
- language_id: 383
-V:
- type: programming
- color: "#4f87c4"
- aliases:
- - vlang
- extensions:
- - ".v"
- tm_scope: source.v
- ace_mode: golang
- codemirror_mode: go
- codemirror_mime_type: text/x-go
- language_id: 603371597
-VBA:
- type: programming
- color: "#867db1"
- extensions:
- - ".bas"
- - ".cls"
- - ".frm"
- - ".frx"
- - ".vba"
- tm_scope: source.vbnet
- aliases:
- - vb6
- - visual basic 6
- - visual basic for applications
- ace_mode: text
- codemirror_mode: vb
- codemirror_mime_type: text/x-vb
- language_id: 399230729
-VBScript:
- type: programming
- color: "#15dcdc"
- extensions:
- - ".vbs"
- tm_scope: source.vbnet
- ace_mode: text
- codemirror_mode: vbscript
- codemirror_mime_type: text/vbscript
- language_id: 408016005
-VCL:
- type: programming
- color: "#148AA8"
- extensions:
- - ".vcl"
- tm_scope: source.varnish.vcl
- ace_mode: text
- language_id: 384
-VHDL:
- type: programming
- color: "#adb2cb"
- extensions:
- - ".vhdl"
- - ".vhd"
- - ".vhf"
- - ".vhi"
- - ".vho"
- - ".vhs"
- - ".vht"
- - ".vhw"
- tm_scope: source.vhdl
- ace_mode: vhdl
- codemirror_mode: vhdl
- codemirror_mime_type: text/x-vhdl
- language_id: 385
-Vala:
- type: programming
- color: "#fbe5cd"
- extensions:
- - ".vala"
- - ".vapi"
- tm_scope: source.vala
- ace_mode: vala
- language_id: 386
-Verilog:
- type: programming
- color: "#b2b7f8"
- extensions:
- - ".v"
- - ".veo"
- tm_scope: source.verilog
- ace_mode: verilog
- codemirror_mode: verilog
- codemirror_mime_type: text/x-verilog
- language_id: 387
-Vim Help File:
- type: prose
- aliases:
- - vimhelp
- extensions:
- - ".txt"
- tm_scope: text.vim-help
- ace_mode: text
- language_id: 508563686
-Vim Snippet:
- type: markup
- aliases:
- - SnipMate
- - UltiSnip
- - UltiSnips
- - NeoSnippet
- extensions:
- - ".snip"
- - ".snippet"
- - ".snippets"
- tm_scope: source.vim-snippet
- ace_mode: text
- language_id: 81265970
-Vim script:
- type: programming
- color: "#199f4b"
- tm_scope: source.viml
- aliases:
- - vim
- - viml
- - nvim
- extensions:
- - ".vim"
- - ".vba"
- - ".vmb"
- filenames:
- - ".exrc"
- - ".gvimrc"
- - ".nvimrc"
- - ".vimrc"
- - _vimrc
- - gvimrc
- - nvimrc
- - vimrc
- ace_mode: text
- language_id: 388
-Visual Basic .NET:
- type: programming
- color: "#945db7"
- extensions:
- - ".vb"
- - ".vbhtml"
- aliases:
- - visual basic
- - vbnet
- - vb .net
- - vb.net
- tm_scope: source.vbnet
- ace_mode: text
- codemirror_mode: vb
- codemirror_mime_type: text/x-vb
- language_id: 389
-Volt:
- type: programming
- color: "#1F1F1F"
- extensions:
- - ".volt"
- tm_scope: source.d
- ace_mode: d
- codemirror_mode: d
- codemirror_mime_type: text/x-d
- language_id: 390
-Vue:
- type: markup
- color: "#2c3e50"
- extensions:
- - ".vue"
- tm_scope: text.html.vue
- ace_mode: html
- language_id: 391
-Wavefront Material:
- type: data
- extensions:
- - ".mtl"
- tm_scope: source.wavefront.mtl
- ace_mode: text
- language_id: 392
-Wavefront Object:
- type: data
- extensions:
- - ".obj"
- tm_scope: source.wavefront.obj
- ace_mode: text
- language_id: 393
-Web Ontology Language:
- type: data
- extensions:
- - ".owl"
- tm_scope: text.xml
- ace_mode: xml
- language_id: 394
-WebAssembly:
- type: programming
- color: "#04133b"
- extensions:
- - ".wast"
- - ".wat"
- aliases:
- - wast
- - wasm
- tm_scope: source.webassembly
- ace_mode: lisp
- codemirror_mode: commonlisp
- codemirror_mime_type: text/x-common-lisp
- language_id: 956556503
-WebIDL:
- type: programming
- extensions:
- - ".webidl"
- tm_scope: source.webidl
- ace_mode: text
- codemirror_mode: webidl
- codemirror_mime_type: text/x-webidl
- language_id: 395
-WebVTT:
- type: data
- wrap: true
- extensions:
- - ".vtt"
- tm_scope: source.vtt
- ace_mode: text
- language_id: 658679714
-Wget Config:
- type: data
- group: INI
- aliases:
- - wgetrc
- filenames:
- - ".wgetrc"
- tm_scope: source.wgetrc
- ace_mode: text
- language_id: 668457123
-Windows Registry Entries:
- type: data
- extensions:
- - ".reg"
- tm_scope: source.reg
- ace_mode: ini
- codemirror_mode: properties
- codemirror_mime_type: text/x-properties
- language_id: 969674868
-Wollok:
- type: programming
- color: "#a23738"
- extensions:
- - ".wlk"
- ace_mode: text
- tm_scope: source.wollok
- language_id: 632745969
-World of Warcraft Addon Data:
- type: data
- extensions:
- - ".toc"
- tm_scope: source.toc
- ace_mode: text
- language_id: 396
-X BitMap:
- type: data
- group: C
- aliases:
- - xbm
- extensions:
- - ".xbm"
- ace_mode: c_cpp
- tm_scope: source.c
- codemirror_mode: clike
- codemirror_mime_type: text/x-csrc
- language_id: 782911107
-X Font Directory Index:
- type: data
- filenames:
- - encodings.dir
- - fonts.alias
- - fonts.dir
- - fonts.scale
- tm_scope: source.fontdir
- ace_mode: text
- language_id: 208700028
-X PixMap:
- type: data
- group: C
- aliases:
- - xpm
- extensions:
- - ".xpm"
- - ".pm"
- ace_mode: c_cpp
- tm_scope: source.c
- codemirror_mode: clike
- codemirror_mime_type: text/x-csrc
- language_id: 781846279
-X10:
- type: programming
- aliases:
- - xten
- ace_mode: text
- extensions:
- - ".x10"
- color: "#4B6BEF"
- tm_scope: source.x10
- language_id: 397
-XC:
- type: programming
- color: "#99DA07"
- extensions:
- - ".xc"
- tm_scope: source.xc
- ace_mode: c_cpp
- codemirror_mode: clike
- codemirror_mime_type: text/x-csrc
- language_id: 398
-XCompose:
- type: data
- filenames:
- - ".XCompose"
- - XCompose
- - xcompose
- tm_scope: config.xcompose
- ace_mode: text
- language_id: 225167241
-XML:
- type: data
- tm_scope: text.xml
- ace_mode: xml
- codemirror_mode: xml
- codemirror_mime_type: text/xml
- aliases:
- - rss
- - xsd
- - wsdl
- extensions:
- - ".xml"
- - ".adml"
- - ".admx"
- - ".ant"
- - ".axml"
- - ".builds"
- - ".ccproj"
- - ".ccxml"
- - ".clixml"
- - ".cproject"
- - ".cscfg"
- - ".csdef"
- - ".csl"
- - ".csproj"
- - ".ct"
- - ".depproj"
- - ".dita"
- - ".ditamap"
- - ".ditaval"
- - ".dll.config"
- - ".dotsettings"
- - ".filters"
- - ".fsproj"
- - ".fxml"
- - ".glade"
- - ".gml"
- - ".gmx"
- - ".grxml"
- - ".gst"
- - ".iml"
- - ".ivy"
- - ".jelly"
- - ".jsproj"
- - ".kml"
- - ".launch"
- - ".mdpolicy"
- - ".mjml"
- - ".mm"
- - ".mod"
- - ".mxml"
- - ".natvis"
- - ".ncl"
- - ".ndproj"
- - ".nproj"
- - ".nuspec"
- - ".odd"
- - ".osm"
- - ".pkgproj"
- - ".pluginspec"
- - ".proj"
- - ".props"
- - ".ps1xml"
- - ".psc1"
- - ".pt"
- - ".rdf"
- - ".resx"
- - ".rss"
- - ".sch"
- - ".scxml"
- - ".sfproj"
- - ".shproj"
- - ".srdf"
- - ".storyboard"
- - ".sublime-snippet"
- - ".targets"
- - ".tml"
- - ".ts"
- - ".tsx"
- - ".ui"
- - ".urdf"
- - ".ux"
- - ".vbproj"
- - ".vcxproj"
- - ".vsixmanifest"
- - ".vssettings"
- - ".vstemplate"
- - ".vxml"
- - ".wixproj"
- - ".workflow"
- - ".wsdl"
- - ".wsf"
- - ".wxi"
- - ".wxl"
- - ".wxs"
- - ".x3d"
- - ".xacro"
- - ".xaml"
- - ".xib"
- - ".xlf"
- - ".xliff"
- - ".xmi"
- - ".xml.dist"
- - ".xproj"
- - ".xsd"
- - ".xspec"
- - ".xul"
- - ".zcml"
- filenames:
- - ".classpath"
- - ".cproject"
- - ".project"
- - App.config
- - NuGet.config
- - Settings.StyleCop
- - Web.Debug.config
- - Web.Release.config
- - Web.config
- - packages.config
- language_id: 399
-XML Property List:
- type: data
- group: XML
- extensions:
- - ".plist"
- - ".stTheme"
- - ".tmCommand"
- - ".tmLanguage"
- - ".tmPreferences"
- - ".tmSnippet"
- - ".tmTheme"
- tm_scope: text.xml.plist
- ace_mode: xml
- codemirror_mode: xml
- codemirror_mime_type: text/xml
- language_id: 75622871
-XPages:
- type: data
- extensions:
- - ".xsp-config"
- - ".xsp.metadata"
- tm_scope: text.xml
- ace_mode: xml
- codemirror_mode: xml
- codemirror_mime_type: text/xml
- language_id: 400
-XProc:
- type: programming
- extensions:
- - ".xpl"
- - ".xproc"
- tm_scope: text.xml
- ace_mode: xml
- codemirror_mode: xml
- codemirror_mime_type: text/xml
- language_id: 401
-XQuery:
- type: programming
- color: "#5232e7"
- extensions:
- - ".xquery"
- - ".xq"
- - ".xql"
- - ".xqm"
- - ".xqy"
- ace_mode: xquery
- codemirror_mode: xquery
- codemirror_mime_type: application/xquery
- tm_scope: source.xq
- language_id: 402
-XS:
- type: programming
- extensions:
- - ".xs"
- tm_scope: source.c
- ace_mode: c_cpp
- codemirror_mode: clike
- codemirror_mime_type: text/x-csrc
- language_id: 403
-XSLT:
- type: programming
- aliases:
- - xsl
- extensions:
- - ".xslt"
- - ".xsl"
- tm_scope: text.xml.xsl
- ace_mode: xml
- codemirror_mode: xml
- codemirror_mime_type: text/xml
- color: "#EB8CEB"
- language_id: 404
-Xojo:
- type: programming
- extensions:
- - ".xojo_code"
- - ".xojo_menu"
- - ".xojo_report"
- - ".xojo_script"
- - ".xojo_toolbar"
- - ".xojo_window"
- tm_scope: source.xojo
- ace_mode: text
- language_id: 405
-Xtend:
- type: programming
- extensions:
- - ".xtend"
- tm_scope: source.xtend
- ace_mode: text
- language_id: 406
-YAML:
- type: data
- color: "#cb171e"
- tm_scope: source.yaml
- aliases:
- - yml
- extensions:
- - ".yml"
- - ".mir"
- - ".reek"
- - ".rviz"
- - ".sublime-syntax"
- - ".syntax"
- - ".yaml"
- - ".yaml-tmlanguage"
- - ".yaml.sed"
- - ".yml.mysql"
- filenames:
- - ".clang-format"
- - ".clang-tidy"
- - ".gemrc"
- - glide.lock
- - yarn.lock
- ace_mode: yaml
- codemirror_mode: yaml
- codemirror_mime_type: text/x-yaml
- language_id: 407
-YANG:
- type: data
- extensions:
- - ".yang"
- tm_scope: source.yang
- ace_mode: text
- language_id: 408
-YARA:
- type: programming
- color: "#220000"
- ace_mode: text
- extensions:
- - ".yar"
- - ".yara"
- tm_scope: source.yara
- language_id: 805122868
-YASnippet:
- type: markup
- aliases:
- - snippet
- - yas
- color: "#32AB90"
- extensions:
- - ".yasnippet"
- tm_scope: source.yasnippet
- ace_mode: text
- language_id: 378760102
-Yacc:
- type: programming
- extensions:
- - ".y"
- - ".yacc"
- - ".yy"
- tm_scope: source.yacc
- ace_mode: text
- color: "#4B6C4B"
- language_id: 409
-ZAP:
- type: programming
- color: "#0d665e"
- extensions:
- - ".zap"
- - ".xzap"
- tm_scope: source.zap
- ace_mode: text
- language_id: 952972794
-ZIL:
- type: programming
- color: "#dc75e5"
- extensions:
- - ".zil"
- - ".mud"
- tm_scope: source.zil
- ace_mode: text
- language_id: 973483626
-Zeek:
- type: programming
- aliases:
- - bro
- extensions:
- - ".zeek"
- - ".bro"
- tm_scope: source.zeek
- ace_mode: text
- language_id: 40
-ZenScript:
- type: programming
- color: "#00BCD1"
- extensions:
- - ".zs"
- tm_scope: source.zenscript
- ace_mode: text
- language_id: 494938890
-Zephir:
- type: programming
- color: "#118f9e"
- extensions:
- - ".zep"
- tm_scope: source.php.zephir
- ace_mode: php
- language_id: 410
-Zig:
- type: programming
- color: "#ec915c"
- extensions:
- - ".zig"
- tm_scope: source.zig
- ace_mode: text
- language_id: 646424281
-Zimpl:
- type: programming
- extensions:
- - ".zimpl"
- - ".zmpl"
- - ".zpl"
- tm_scope: none
- ace_mode: text
- language_id: 411
-cURL Config:
- type: data
- group: INI
- aliases:
- - curlrc
- filenames:
- - ".curlrc"
- - _curlrc
- tm_scope: source.curlrc
- ace_mode: text
- language_id: 992375436
-desktop:
- type: data
- extensions:
- - ".desktop"
- - ".desktop.in"
- tm_scope: source.desktop
- ace_mode: text
- language_id: 412
-dircolors:
- type: data
- extensions:
- - ".dircolors"
- filenames:
- - ".dir_colors"
- - ".dircolors"
- - DIR_COLORS
- - _dir_colors
- - _dircolors
- - dir_colors
- tm_scope: source.dircolors
- ace_mode: text
- language_id: 691605112
-eC:
- type: programming
- color: "#913960"
- extensions:
- - ".ec"
- - ".eh"
- tm_scope: source.c.ec
- ace_mode: text
- language_id: 413
-edn:
- type: data
- ace_mode: clojure
- codemirror_mode: clojure
- codemirror_mime_type: text/x-clojure
- extensions:
- - ".edn"
- tm_scope: source.clojure
- language_id: 414
-fish:
- type: programming
- group: Shell
- interpreters:
- - fish
- extensions:
- - ".fish"
- tm_scope: source.fish
- ace_mode: text
- language_id: 415
-mIRC Script:
- type: programming
- color: "#3d57c3"
- extensions:
- - ".mrc"
- tm_scope: source.msl
- ace_mode: text
- language_id: 517654727
-mcfunction:
- type: programming
- color: "#E22837"
- extensions:
- - ".mcfunction"
- tm_scope: source.mcfunction
- ace_mode: text
- language_id: 462488745
-mupad:
- type: programming
- extensions:
- - ".mu"
- tm_scope: source.mupad
- ace_mode: text
- language_id: 416
-nanorc:
- type: data
- group: INI
- extensions:
- - ".nanorc"
- filenames:
- - ".nanorc"
- - nanorc
- tm_scope: source.nanorc
- ace_mode: text
- language_id: 775996197
-nesC:
- type: programming
- color: "#94B0C7"
- extensions:
- - ".nc"
- ace_mode: text
- tm_scope: source.nesc
- language_id: 417
-ooc:
- type: programming
- color: "#b0b77e"
- extensions:
- - ".ooc"
- tm_scope: source.ooc
- ace_mode: text
- language_id: 418
-q:
- type: programming
- extensions:
- - ".q"
- tm_scope: source.q
- ace_mode: text
- color: "#0040cd"
- language_id: 970539067
-reStructuredText:
- type: prose
- wrap: true
- aliases:
- - rst
- extensions:
- - ".rst"
- - ".rest"
- - ".rest.txt"
- - ".rst.txt"
- tm_scope: text.restructuredtext
- ace_mode: text
- codemirror_mode: rst
- codemirror_mime_type: text/x-rst
- language_id: 419
-sed:
- type: programming
- color: "#64b970"
- extensions:
- - ".sed"
- interpreters:
- - gsed
- - minised
- - sed
- - ssed
- ace_mode: text
- tm_scope: source.sed
- language_id: 847830017
-wdl:
- type: programming
- color: "#42f1f4"
- extensions:
- - ".wdl"
- tm_scope: source.wdl
- ace_mode: text
- language_id: 374521672
-wisp:
- type: programming
- ace_mode: clojure
- codemirror_mode: clojure
- codemirror_mime_type: text/x-clojure
- color: "#7582D1"
- extensions:
- - ".wisp"
- tm_scope: source.clojure
- language_id: 420
-xBase:
- type: programming
- color: "#403a40"
- aliases:
- - advpl
- - clipper
- - foxpro
- extensions:
- - ".prg"
- - ".ch"
- - ".prw"
- tm_scope: source.harbour
- ace_mode: text
- language_id: 421
\ No newline at end of file
diff --git a/git-hooks/pre-commit b/git-hooks/pre-commit
new file mode 100644
index 0000000..d6481d6
--- /dev/null
+++ b/git-hooks/pre-commit
@@ -0,0 +1,10 @@
+#!/usr/bin/env bash
+
+### Copy this into .git/hooks and overwrite the empty one.
+### This will ensure the bundle and ins-outs verification checks won't fail for you.
+
+echo "----- Pre-commit -----"
+set -ex
+npx action-io-generator -o src/generated/inputs-outputs.ts
+npm run bundle
+git add -v dist/ src/generated
\ No newline at end of file
diff --git a/package-lock.json b/package-lock.json
index 5c387e2..f3a8dbb 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -128,6 +128,28 @@
"fastq": "^1.6.0"
}
},
+ "@redhat-actions/action-io-generator": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/@redhat-actions/action-io-generator/-/action-io-generator-1.5.0.tgz",
+ "integrity": "sha512-zaBZyP0ev5c36j0h8EyvqbD+fhUjDOeme2qzVa+CSWjeGVAsgdZREzE8smE3QA6xXpMHPU5keT+q2iN8/hq5uA==",
+ "dev": true,
+ "requires": {
+ "js-yaml": "^3.14.1",
+ "minimist": "^1.2.5"
+ },
+ "dependencies": {
+ "js-yaml": {
+ "version": "3.14.1",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
+ "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
+ "dev": true,
+ "requires": {
+ "argparse": "^1.0.7",
+ "esprima": "^4.0.0"
+ }
+ }
+ }
+ },
"@redhat-actions/eslint-config": {
"version": "1.2.11",
"resolved": "https://registry.npmjs.org/@redhat-actions/eslint-config/-/eslint-config-1.2.11.tgz",
diff --git a/package.json b/package.json
index f623a4d..b8b300f 100644
--- a/package.json
+++ b/package.json
@@ -26,6 +26,7 @@
"language-recognizer": "0.0.1"
},
"devDependencies": {
+ "@redhat-actions/action-io-generator": "^1.5.0",
"@redhat-actions/eslint-config": "^1.2.11",
"@redhat-actions/tsconfig": "^1.1.1",
"@types/node": "^12",
diff --git a/src/generated/inputs-outputs.ts b/src/generated/inputs-outputs.ts
new file mode 100644
index 0000000..143af70
--- /dev/null
+++ b/src/generated/inputs-outputs.ts
@@ -0,0 +1,90 @@
+// This file was auto-generated by action-io-generator. Do not edit by hand!
+export enum Inputs {
+ /**
+ * The base image to use to create a new container image
+ * Required: true
+ * Default: None.
+ */
+ BASE_IMAGE = "base-image",
+ /**
+ * List of --build-args to pass to buildah
+ * Required: false
+ * Default: None.
+ */
+ BUILD_ARGS = "build-args",
+ /**
+ * List of files/directories to copy inside the base image
+ * Required: false
+ * Default: None.
+ */
+ CONTENT = "content",
+ /**
+ * Path of the directory to use as context (default: .)
+ * Required: false
+ * Default: "."
+ */
+ CONTEXT = "context",
+ /**
+ * List of Dockerfile paths (eg: ./Dockerfile)
+ * Required: false
+ * Default: None.
+ */
+ DOCKERFILES = "dockerfiles",
+ /**
+ * The entry point to set for containers based on image
+ * Required: false
+ * Default: None.
+ */
+ ENTRYPOINT = "entrypoint",
+ /**
+ * List of environment variables to be set when running containers based on image
+ * Required: false
+ * Default: None.
+ */
+ ENVS = "envs",
+ /**
+ * The name (reference) of the image to build
+ * Required: true
+ * Default: None.
+ */
+ IMAGE = "image",
+ /**
+ * Set to true to build using the OCI image format instead of the Docker image format
+ * Required: false
+ * Default: "false"
+ */
+ OCI = "oci",
+ /**
+ * The port to expose when running containers based on image
+ * Required: false
+ * Default: None.
+ */
+ PORT = "port",
+ /**
+ * The tags of the image to build. For multiple tags, seperate by a space. For example, "latest v1".
+ * Required: false
+ * Default: "latest"
+ */
+ TAGS = "tags",
+ /**
+ * The working directory to use within the container
+ * Required: false
+ * Default: None.
+ */
+ WORKDIR = "workdir",
+}
+
+export enum Outputs {
+ /**
+ * Name of the image built
+ * Required: false
+ * Default: None.
+ */
+ IMAGE = "image",
+ /**
+ * List of the tags that were created, separated by spaces
+ * Required: false
+ * Default: None.
+ */
+ TAGS = "tags",
+}
diff --git a/src/index.ts b/src/index.ts
index efe6109..971ba96 100644
--- a/src/index.ts
+++ b/src/index.ts
@@ -1,6 +1,7 @@
import * as core from "@actions/core";
import * as io from "@actions/io";
import * as path from "path";
+import { Inputs, Outputs } from "./generated/inputs-outputs";
import { BuildahCli, BuildahConfigSettings } from "./buildah";
export async function run(): Promise {
@@ -13,12 +14,12 @@ export async function run(): Promise {
const cli: BuildahCli = new BuildahCli(buildahPath);
const workspace = process.env.GITHUB_WORKSPACE || process.cwd();
- const dockerFiles = getInputList("dockerfiles");
- const image = core.getInput("image", { required: true });
- const tags = core.getInput("tags") || "latest";
+ const dockerFiles = getInputList(Inputs.DOCKERFILES);
+ const image = core.getInput(Inputs.IMAGE, { required: true });
+ const tags = core.getInput(Inputs.TAGS) || "latest";
const tagsList: string[] = tags.split(" ");
const newImage = `${image}:${tagsList[0]}`;
- const useOCI = core.getInput("oci") === "true";
+ const useOCI = core.getInput(Inputs.OCI) === "true";
if (dockerFiles.length !== 0) {
await doBuildUsingDockerFiles(cli, newImage, workspace, dockerFiles, useOCI);
@@ -30,8 +31,8 @@ export async function run(): Promise {
if (tagsList.length > 1) {
await cli.tag(image, tagsList);
}
- core.setOutput("image", image);
- core.setOutput("tags", tags);
+ core.setOutput(Outputs.IMAGE, image);
+ core.setOutput(Outputs.TAGS, tags);
}
async function doBuildUsingDockerFiles(
@@ -44,8 +45,8 @@ async function doBuildUsingDockerFiles(
core.info(`Performing build from ${dockerFiles.length} Dockerfiles`);
}
- const context = path.join(workspace, core.getInput("context"));
- const buildArgs = getInputList("build-args");
+ const context = path.join(workspace, core.getInput(Inputs.CONTEXT));
+ const buildArgs = getInputList(Inputs.BUILD_ARGS);
const dockerFileAbsPaths = dockerFiles.map((file) => path.join(workspace, file));
await cli.buildUsingDocker(newImage, context, dockerFileAbsPaths, buildArgs, useOCI);
}
@@ -55,12 +56,12 @@ async function doBuildFromScratch(
): Promise {
core.info(`Performing build from scratch`);
- const baseImage = core.getInput("base-image", { required: true });
- const content = getInputList("content");
- const entrypoint = getInputList("entrypoint");
- const port = core.getInput("port");
- const workingDir = core.getInput("workdir");
- const envs = getInputList("envs");
+ const baseImage = core.getInput(Inputs.BASE_IMAGE, { required: true });
+ const content = getInputList(Inputs.CONTENT);
+ const entrypoint = getInputList(Inputs.ENTRYPOINT);
+ const port = core.getInput(Inputs.PORT);
+ const workingDir = core.getInput(Inputs.WORKDIR);
+ const envs = getInputList(Inputs.ENVS);
const container = await cli.from(baseImage);
const containerId = container.output.replace("\n", "");