# IDE Usage

Builds

```JSON
{
  "version": "2.0.0",
  "tasks": [
	{
      "label": "Run Build Java Functions",
	  "type": "shell",
	  "command": "c:\\wamp\\bin\\php\\php8.3.0\\php.exe c:\\wamp\\www\\MSHolmes\\assets\\builds\\buildAllFunctionsJava.php",
      "problemMatcher": [],
	  "group": "build"
	},
	{
	  "label": "Run Build PHP Functions",
	  "type": "shell",
	  "command": "c:\\wamp\\bin\\php\\php8.3.0\\php.exe c:\\wamp\\www\\MSHolmes\\assets\\builds\\buildAllFunctionsPhp.php",
	  "problemMatcher": [],
	  "group": "build"
	},
	{
	  "label": "Run Build CSS Base",
	  "type": "shell",
	  "command": "c:\\wamp\\bin\\php\\php8.3.0\\php.exe c:\\wamp\\www\\MSHolmes\\assets\\builds\\buildAllStylesCSS.php",
	  "problemMatcher": [],
	  "group": "build"
	},
	{
	  "label": "Run Build PHP Configs",
	  "type": "shell",
	  "command": "c:\\wamp\\bin\\php\\php8.3.0\\php.exe c:\\wamp\\www\\MSHolmes\\assets\\builds\\buildAllConfigsPhp.php",
	  "problemMatcher": [],
	  "group": "build"
	},
	{
	  "label": "Run Build All",
	  "dependsOn": [
		"Run Build Java Functions",
		"Run Build PHP Functions",
		"Run Build CSS Base",
		"Run Build PHP Configs"
	  ],
	  "group": "build",
	  "problemMatcher": []
	}
  ]
}
```

The IDE is very helpful by providing extensions and tasks for streamlining the work processes. The following details the usage of these enhancements.

##### <span style="color: #ba372a;">**Extensions**</span>

<span style="color: #000000;">**ftp-kr** - This extension controls the upload of files to the live server based on the configuration parameters established in the file *ftp-kr.json*. The json file below details the elements of the file for Holmes county.</span>

```JSON
{
  "host": "www.msholmes.org",
  "username": "msholmes",
  "password": "password",
  "remotePath": "public_html",
  "protocol": "ftp",
  "port": 21,
  "fileNameEncoding": "utf8",
  "autoUpload": true,
  "autoDelete": false,
  "autoDownload": false,
  "ignoreRemoteModification": true,
  "ignore": [
	"/.vscode",
	"/.git",
	"/images/*",
	"/scss/*",
	"/sitemaps/*",
	".html",
	"/builds/*",
	"/assets/functions_java/_*.js",
	"/assets/functions_php/_*.php",
	"/assets/json/*_database.json",
	"/css/*.css"
  ]
}
```

---

<span style="color: #000000;">**Live Sass Compiler** - This extension is used to control the compiling of scss files. The extension will automatically compile .scss files when saved,</span>

<span style="color: #000000;">To exclude a file from being compiled include the folder/files path in the *liveSassCompile.settings.excludeList* of the settings.json file. Note that specifically excluded from compiling are all files in the *scss/mixins* folder, all files that begin with the underline character in the *scss/base* folder, and all files in the *scss/common* folder. The *mixin* and *common* files are included in .scss files as needed and thus don't need to be compiled separately. Likewise the individual *base* files are concatenated into the single file *allStylesCSS.css*.</span>

<span style="color: #000000;">The code shown below is on the *liveSassCompile* portion of the total *settings.json* file.</span>

```JSON
{
  "liveSassCompile.settings.generateMap": false,
  "liveSassCompile.settings.formats": [
	{
      "format": "expanded",
   	  "extensionName": ".css",
	  "savePath": "/css"
    },
    {
	  "format": "compressed",
	  "extensionName": ".min.css",
	  "savePath": "/css/dist"
    }
  ],
	"liveSassCompile.settings.excludeList": [
	  "/.vscode/**",
	  "/scss/mixins/**",
	  "/scss/base/_*.scss",
	  "/scss/common/**"
   ]
}
```

---

<span style="color: #000000;">**Project Manager** - The suite of projects that management includes 6 TNG projects (Fannin, Holmes, and Delta each with a main and admin), plus 2 non-TNG projects (Willow Wild, Delta-Library each with a main and admin). With the extension installed a json file similar to the one below can be included for all projects.</span>

<span style="color: #000000;">Note that all entered projects are listed in *tags* and *name* alpha order, so *tag* and *name* accordingly. The *rootPath* is the file path to the project folder on your local computer.</span>

```JSON
[
  {
	"name": "A-Main",
	"rootPath": "c:\\wamp\\www\\TXFannin",
	"paths": [],
	"tags": ["Fannin"],
	"enabled": true
  },
  {
	"name": "B-Admin",
	"rootPath": "c:\\wamp\\www\\TXFannin-Admin",
	"paths": [],
	"tags": ["Fannin"],
	"enabled": true
  }
]
```

---

- <span style="color: #000000;">**GitHub Actions** - The GitHub provides the mechanism to control all files of a project. GitHub controls the sourcing and versioning of each file. Specific files can be excluded by including the folder/file in a .gitIgnore file. Note that in most cases whole folders are excluded as the files contained can be easily restored.</span>

```JSON
.md-docs/
.vscode/
css/
images/
scripts/
sitemaps/
jsconfig.json
```

---

##### <span style="color: #ba372a;">**Tasks**</span>

<span style="color: #000000;">**Builds** - There are 4 tasks that are that are used to help 'build' files for the main site. They are as follows:</span>