Glue¶
Join Your Shell & Sublime Text in Quasi-Perfect* Harmony¶
Glue is a cross-platform, extensible plug-in for Sublime Text 2 and 3 that connects your favorite editor to your shell.
Launch¶
Use the right click menu in your project sidebar:

the Command Palette:

or a keybinding:
Ctrl - Alt - G
Enter Commands¶
Use the command input box at the bottom of the screen to enter system commands just like you would in your terminal:

and the standard output is displayed in an editor view.
Inter-Process Communication¶
Pipelining data between processes works. You get the standard output from the final executable in the sequence:

Compile, Unit Test, Profile, Minify, Compress...¶
You get the picture.
File Management¶
Open files in the Sublime Text editor by file path:
$ glue open <filepath> [filepath2] [...]
or by wildcard pattern:
$ glue wco <wildcard>
And create new files with:
$ glue new
Extend Sublime Text With Glue Extensions¶
You can build Sublime Text extensions with your favorite language or extend Sublime Text with any system utility using Glue command extensions. These are aliases for system commands that can be called from the Glue command line using the syntax:
$ glue <your-command> [optional arguments]
You have the option to pass additional command line arguments, clipboard data, or the current working directory path to the mapped system command with template tags.
The Glue-Commands Directory¶
Create a directory in your Sublime Text Packages directory (Preferences > Browse Packages) that is named Glue-Commands.
The glue.json File¶
Create a new file in this directory with the following path Glue-Commands/glue.json.
Use the glue.json file to create Glue extensions with key = command name to value = command string mapping.
Example¶
You could make a command that executes a local image compression shell script on the path /Users/me/scripts/cruncher.sh with the following syntax:
{
"crunch": "/Users/me/scripts/cruncher.sh {{args}}"
}
Then use it in Glue like this:
$ glue crunch image.png
The mapped system command is executed as:
/Users/me/scripts/cruncher.sh image.png
in your current working directory and is accessible in any Sublime Text project.
Make as many as you’d like. You can use the following command to reference an alphabetized list of your extensions:
$ glue user
More detailed extension documentation (including additional examples) is available here.
Limitations¶
✱ Glue is a non-interactive interface to your system shell. See the limitations that result from this application structure.
Contents¶
Install Glue¶
Install with Sublime Package Control¶
If you use the Sublime Package Control system, you can install Glue with the Sublime Text Command Palette. Open it with:
Mac OSX
Cmd - Shift - P
Linux/Windows
Ctrl - Shift - P
Type ‘install’, select the menu item, Package Control: Install Package, then type ‘glue’. The selection for the Glue plugin will appear. Select it and the install is performed automatically.
Install with Git¶
Open your Packages directory with the Sublime Text menu items Preferences -> Browse Packages. Then git clone the Glue repository as a new directory named ‘Glue’ in your Packages directory with the following command:
$ git clone https://github.com/chrissimpkins/glue.git "Glue"
Manual Install¶
If you like to do things the good ole’ fashion way, download the source repository from GitHub (tar.gz | zip).
Decompress the source repository and rename it “Glue”.
Open your Sublime Text Packages directory using the Preferences -> Browse Packages menu items.
Move the entire Glue directory into your Sublime Text Packages directory.
Confirm Your PATH¶
Glue assigns a default user PATH from your environment PATH variable. Frequently, it nails it, but on some installs it may require a bit of help. Never fear. It is incredibly simple to correct this issue.
Confirm that the correct string is being used by launching Glue (use one of the approaches below) and entering the command:
glue path
in the text input box at the bottom of your editor. This displays the default PATH that Glue uses to identify your executable files. If the PATH is incorrect, or if you simply want to modify your PATH in Glue, follow the instructions below.
Change Your PATH Settings¶
Open the Glue user settings file by using the Sublime Text menus to navigate to Preferences > Glue > Glue Settings - User. Include the following line in your JSON settings:
{
"glue_userpath" : "<YOUR PATH>"
}
Include your shell PATH settings as a colon (Mac OSX/Linux) or semicolon (Windows) delimited string. Linux/Mac OSX users can find this by entering echo $SHELL in the terminal.
Here is an example of an appropriate PATH setting for Mac OSX/Linux users:
Mac OSX/Linux
{
"glue_userpath" : "/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin"
}
Save the file and restart Sublime Text.
Windows users can enter the command ECHO %PATH% in cmd.exe to view their PATH string. Enter this in the Glue settings file and escape the backward slash characters in the PATH string like this:
Windows
{
"glue_userpath": "C:\\Windows\\system32;C:\\Windows;C:\\Windows\\System32\\Wbem;"
}
Save the file and restart Sublime Text.
Glue respects your assignment of directory priority in the standard left to right sequence as it attempts to locate system executables for the commands that you submit. If you find that a different version of an executable is being launched, or that installed applications are not being located, please confirm your PATH string in the Glue settings.
Note
Use the Glue Settings - User settings file rather than the default file. The default settings are overwritten on Glue updates!
Set Your Default Shell¶
You have the option to assign your default shell in the glue_shellpath setting. Open the Glue Settings - User JSON file and add a new line to it that includes the setting key with the value set to the path to your desired shell.
Here’s an example that demonstrates how to change the default shell to zsh on Mac OSX/Linux boxes:
Mac OSX/Linux
{
"glue_shellpath": "/usr/local/bin/zsh"
}
and to Powershell for Windows users:
Windows
{
"glue_shellpath": "C:\\Windows\\system32\\WindowsPowerShell\\v1.0\\powershell.exe"
}
Save the file and restart Sublime Text. Note that the shell that is executed may differ from your environment $SHELL (Mac OSX/Linux) or %SHELL% (Windows) setting. The Glue settings change does not alter your system variable assignments, or your default system shell settings, in any way. To confirm that it is working, type a command that will cause the shell to bark at you (e.g. an executable that doesn’t exist):
$ boguscmd
zsh:1: command not found: boguscmd
Set Your PS1¶
Give your prompt a little style. Change the default by adding the glue_ps1 setting to the Glue Settings - User file (see instructions above). Here’s an example that shows how to change it to a ✪
{
"glue_ps1" : "✪"
}
And here’s what you get:

Get Started¶
You can open Glue with any of these approaches:
Use the right click menu in your project sidebar

Use the Command Palette

Keybinding
Ctrl - Alt - G
Then begin entering your commands in the command line at the bottom of the editor.

Use the same syntax that you use on the command line in your terminal (with special character escapes or quotes!).
Commands¶
Table of Commands¶
Command | Description |
---|---|
cd | change working directory |
exit | exit Glue |
glue browse | open URL or local project file in default browser |
glue clear | clear the text in the Glue view |
glue finder | reveal current directory (default) or optional path in finder |
glue goto | Sublime Text Goto Anything search |
glue help | open the Glue help in the Glue view |
glue localhost | open webbrowser to local server (default port 8000) |
glue new | open a new Sublime Text buffer |
glue open | open one or more project files by filepath |
glue path | display the system PATH setting that is used by Glue |
glue user | display an alphabetized list of Glue user extensions |
glue wco | open one or more project files by wildcard pattern |
Command Usage¶
⊙ cd¶
Change the working directory. Directory state is maintained between calls to the shell until you submit the command exit. This command works on Mac OSX, Linux, and Windows platforms.
Usage
Navigate to user assigned directory:
$ cd <directory path>
Idiom for navigation to parent directory:
$ cd ..
Idiom for navigation to your platform-dependent user home directory:
$ cd ~
⊙ exit¶
The exit command performs cleanup tasks and exits the Glue terminal. The view is not automatically closed.
Usage
$ exit
⊙ glue browse¶
Open a URL <url> or a local project filepath <path> in the default web browser.
Usage
$ glue browse <url, path>
⊙ glue finder¶
Reveal the current working directory or optional directory path in the finder
Usage
Reveal current working directory in finder:
$ glue finder
Reveal subdirectory path in finder:
$ glue finder [subdirectory]
⊙ glue goto¶
Launch the Sublime Text Goto Anything search feature with the query term, <file query>
Usage
$ glue goto <file query>
This works best if you use a part of a project filename or directory and submit the Glue command. You will receive a list of matching files and can add additional symbols to jump to locations within the desired file. Add the @ character and additional text to your query to jump to symbols in the file. Add the # character and additional text to the query to search within the file. And add the : character followed by a numeral to jump to a line number in the file.
Note
Sublime Text does not permit the searches within files using @, #, or : to be performed with this Glue command. Add these search filters to your query once you identify the proper file in the list produced by the Goto Anything file match.
⊙ glue localhost¶
Open the default web browser to the local server at the URL http://localhost:8000 by default. You have the option to assign the port in your command.
Usage
$ glue localhost [port]
⊙ glue open¶
Open one or more files in the Sublime Text editor by filepath.
Usage
$ glue open <filepath> [, filepath]
⊙ glue wco¶
Open one or more files in the Sublime Text editor by wildcard pattern
Usage
$ glue wco <pattern>
File Management¶
Glue includes commands that allow you to open files in the Sublime Text editor by path or wildcard.
Open Files by Path¶
To open files by filepath, use the glue open sub-command with one or more filepath arguments:
$ glue open <file> [file]
For example, to open the files test.txt and test2.txt from the current working directory in the editor, use the following command:
$ glue open test.txt test2.txt
Open Files by Wildcard¶
To open files by wildcard value, use the glue wco sub-command with a wildcard argument:
$ glue wco <wildcard>
The following example will open all Python .py files in the sub-directory src on Unix/Linux systems:
$ glue wco '/src/*.py'
File Management with System Utilities¶
You can use system utilities to manage your project files with Glue just as you would from a separate terminal.
For example, on Linux/Mac OSX systems rm <filepath> will delete a file and rm -rf <dirpath> will remove the directory on dirpath and all of its contents. touch <filepath> will create a new file.
Extend Glue¶
Glue allows you to extend the Sublime Text editor with system utilities, your own compiled executables, shell scripts, and source from any interpreted language that is supported on your machine.
This is performed with Glue extensions that function as system command aliases and can be called from the command line with the syntax:
$ glue <your-command> [args]
They are incredibly simple to develop and require absolutely no programming knowledge (but can be hooked into anything that you develop with the capability to process data from the standard input stream):
Create the Glue-Commands Directory¶
Create a Glue-Commands directory inside your Sublime Text Packages directory. You can open your Sublime Text Packages directory with the menu item Preferences > Browse Packages.
Create a glue.json File¶
Create a glue.json file inside the Glue-Commands directory.
Define Your Command Extensions¶
Commands are defined in the glue.json file with a simple mapping of JSON key:value pairs using the following syntax
{
"<command-name-1>": "<system command string 1>",
"<command-name-2>": "<system command string 2>",
[...]
}
You have the option to include these replacement tags in your system command string:
Template Tag | Definition |
---|---|
{{args}} | additional arguments that you include on the command line |
{{clipboard}} | the contents of the clipboard |
{{pwd}} | the current working directory path |
These extensions are immediately available when you save the glue.json file.
Note
Windows users should include single quotes around the {{pwd}} tag in the glue.json file. Failure to do so will result in missing directory path separators in the path string that is replaced at the site of your template tag. See this issue report in the GitHub repository for more details.
Use Your Extensions¶
Launch Glue and run your command extension(s) with the following syntax:
$ glue <command-name> [args]
Your command is executed from your current working directory and data from the standard output stream (and standard error stream for any non-zero exit status codes) are displayed in the Glue view.
System Utility Example¶
Let’s make a command that allows us to view HTTP GET response headers for a web application and call it head. We’ll use cURL for this task.
Add the following to your glue.json file:
{
"head" : "curl -I -s -L {{args}}"
}
Save the file and the command is immediately available for use. Launch Glue and enter a URL as an argument to your command in order to see the GET response headers for the site in the Glue view:
$ glue head www.supafresh.com
Launch URL in Default Browser Example¶
The glue browse command opens a URL in your default browser. Let’s make an extension that performs a Google search for a query that we enter on the command line:
Add the following to your glue.json file:
{
"google" : "glue browse https://www.google.com/#q={{args}}"
}
Save the file and then use the command with a URL encoded query like this:
$ glue google sublime+package+control
Multiple Application Version Example¶
You can alias multiple versions of an application so that you can easily access them for testing purposes. Let’s create extensions for recent versions of Python 2 & 3:
For Windows users, you can add the following to your glue.json file (assuming these are the appropriate versions and install paths):
{
"py27" : "C:\\Python27\\python.exe {{args}}",
"py33" : "C:\\Python33\\python.exe {{args}}",
"py34" : "C:\\Python34\\python.exe {{args}}"
}
Note the escaped backward slashes in the path string.
And Mac OSX users who install Python with Homebrew can create their extensions like this:
{
"py27" : "/usr/local/Cellar/python/2.7.6/bin/python {{args}}",
"py33" : "/usr/local/Cellar/python3/3.3.5/bin/python3.3 {{args}}",
"py34" : "/usr/local/Cellar/python3/3.4.0/bin/python3.4 {{args}}"
}
Confirm the above filepath settings on your own machine.
Then use the separate versions of Python with the following commands:
$ glue py27 --version
Python 2.7.6
$ glue py33 --version
Python 3.3.5
$ glue py34 --version
Python 3.4.0
Shell Script Example¶
For the shell script example, we will make a JavaScript minifier and obfuscator command that is hooked into the YUICompressor. If you are following along, you can download YUICompressor from the GitHub repository. You will need to have Java version 1.4+ installed to use it. Unpack the repository and move the yuicompressor-2.4.8.jar file to a directory for safe keeping (you will run it from this directory).
Next, create a shell script named minijs.sh. Include the following script and modify the YUI_PATH variable with the actual path to your YUICompressor jar file:
#!/bin/sh
# Modify YUI_PATH with the path to the yuicompressor jar file
YUI_PATH="path/to/yuicompressor-2.4.8.jar"
if [ $# -eq 0 ]; then
echo "Please include the file path(s) for the file(s) that you would like to compress." 1>&2
exit 1
fi
for file in "$@";
do
if [ -f "$file" ]; then
java -jar "$YUI_PATH" -o "${file%%.*}-min.js" "$file"
if (( $? )); then
echo "$file was not able to be minified"
exit 1
else
echo "$file was minified to ${file%%.*}-min.js"
fi
else
echo "Unable to find the javascript file '$file'."
fi
done;
exit 0
The script confirms that the filepath argument is a file, then minifies and obfuscates the JavaScript in the file. It will work with more than one file if you pass multiple files to it in your command. The minified version is renamed to <originalname>-min.js and saved to the same directory as the original JavaScript file.
Next, create a Glue extension that will serve as an alias for the call to this shell script when you use the glue minijs command. We’ll include the {{args}} template tag so that we can pass filepath arguments to our script:
{
"minijs" : "/path/to/minijs.sh {{args}}"
}
Launch Glue in your editor and minify JS files in the working directory with a command like this:
$ glue minijs awesome.js
The minified file is saved as awesome-min.js in the same directory.
Limitations¶
Glue and Your Shell¶
Glue is a non-interactive interface to your system shell. This means that Glue communicates with your shell and the data stream is disconnected when the standard output or standard error data are returned to Glue.
This application structure leads to some limitations that differ from your traditional terminal emulator. In the following cases, you will need to return to your system terminal:
- Use commands that require you to submit a superuser password
- Respond to standard input prompts from command line applications
Issues¶
Bugs¶
Please submit bug reports as a new issue on the GitHub repository. There is a shortcut on the Glue Package settings menu:

or browse to https://github.com/chrissimpkins/glue/issues.
I really appreciate your feedback. It helps to make the plugin better for everyone.
Contribute¶
Source Contributions¶
Pull requests are definitely welcomed. Please fork the GitHub repository and either use the develop branch of the project or create your own feature/patch branch.
Changelog¶
The changelog is available on the GitHub repository.
License¶
Glue Plugin License¶
The Glue plugin for Sublime Text is licensed under the MIT License:
The MIT License (MIT)
Copyright (c) 2014 Christopher Simpkins
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Glue Documentation License¶
The Glue documentation is licensed under the Creative Commons Attribution Share-Alike International 4.0 license:
Creative Commons Attribution-ShareAlike 4.0 International Public License
By exercising the Licensed Rights (defined below), You accept and agree to be bound by the terms and conditions of this Creative Commons Attribution-ShareAlike 4.0 International Public License (“Public License”). To the extent this Public License may be interpreted as a contract, You are granted the Licensed Rights in consideration of Your acceptance of these terms and conditions, and the Licensor grants You such rights in consideration of benefits the Licensor receives from making the Licensed Material available under these terms and conditions.
Section 1 – Definitions.
Adapted Material means material subject to Copyright and Similar Rights that is derived from or based upon the Licensed Material and in which the Licensed Material is translated, altered, arranged, transformed, or otherwise modified in a manner requiring permission under the Copyright and Similar Rights held by the Licensor. For purposes of this Public License, where the Licensed Material is a musical work, performance, or sound recording, Adapted Material is always produced where the Licensed Material is synched in timed relation with a moving image. Adapter’s License means the license You apply to Your Copyright and Similar Rights in Your contributions to Adapted Material in accordance with the terms and conditions of this Public License. BY-SA Compatible License means a license listed at creativecommons.org/compatiblelicenses, approved by Creative Commons as essentially the equivalent of this Public License. Copyright and Similar Rights means copyright and/or similar rights closely related to copyright including, without limitation, performance, broadcast, sound recording, and Sui Generis Database Rights, without regard to how the rights are labeled or categorized. For purposes of this Public License, the rights specified in Section 2(b)(1)-(2) are not Copyright and Similar Rights. Effective Technological Measures means those measures that, in the absence of proper authority, may not be circumvented under laws fulfilling obligations under Article 11 of the WIPO Copyright Treaty adopted on December 20, 1996, and/or similar international agreements. Exceptions and Limitations means fair use, fair dealing, and/or any other exception or limitation to Copyright and Similar Rights that applies to Your use of the Licensed Material. License Elements means the license attributes listed in the name of a Creative Commons Public License. The License Elements of this Public License are Attribution and ShareAlike. Licensed Material means the artistic or literary work, database, or other material to which the Licensor applied this Public License. Licensed Rights means the rights granted to You subject to the terms and conditions of this Public License, which are limited to all Copyright and Similar Rights that apply to Your use of the Licensed Material and that the Licensor has authority to license. Licensor means the individual(s) or entity(ies) granting rights under this Public License. Share means to provide material to the public by any means or process that requires permission under the Licensed Rights, such as reproduction, public display, public performance, distribution, dissemination, communication, or importation, and to make material available to the public including in ways that members of the public may access the material from a place and at a time individually chosen by them. Sui Generis Database Rights means rights other than copyright resulting from Directive 96/9/EC of the European Parliament and of the Council of 11 March 1996 on the legal protection of databases, as amended and/or succeeded, as well as other essentially equivalent rights anywhere in the world. You means the individual or entity exercising the Licensed Rights under this Public License. Your has a corresponding meaning. Section 2 – Scope.
License grant. Subject to the terms and conditions of this Public License, the Licensor hereby grants You a worldwide, royalty-free, non-sublicensable, non-exclusive, irrevocable license to exercise the Licensed Rights in the Licensed Material to: reproduce and Share the Licensed Material, in whole or in part; and produce, reproduce, and Share Adapted Material. Exceptions and Limitations. For the avoidance of doubt, where Exceptions and Limitations apply to Your use, this Public License does not apply, and You do not need to comply with its terms and conditions. Term. The term of this Public License is specified in Section 6(a). Media and formats; technical modifications allowed. The Licensor authorizes You to exercise the Licensed Rights in all media and formats whether now known or hereafter created, and to make technical modifications necessary to do so. The Licensor waives and/or agrees not to assert any right or authority to forbid You from making technical modifications necessary to exercise the Licensed Rights, including technical modifications necessary to circumvent Effective Technological Measures. For purposes of this Public License, simply making modifications authorized by this Section 2(a)(4) never produces Adapted Material. Downstream recipients. Offer from the Licensor – Licensed Material. Every recipient of the Licensed Material automatically receives an offer from the Licensor to exercise the Licensed Rights under the terms and conditions of this Public License. Additional offer from the Licensor – Adapted Material. Every recipient of Adapted Material from You automatically receives an offer from the Licensor to exercise the Licensed Rights in the Adapted Material under the conditions of the Adapter’s License You apply. No downstream restrictions. You may not offer or impose any additional or different terms or conditions on, or apply any Effective Technological Measures to, the Licensed Material if doing so restricts exercise of the Licensed Rights by any recipient of the Licensed Material. No endorsement. Nothing in this Public License constitutes or may be construed as permission to assert or imply that You are, or that Your use of the Licensed Material is, connected with, or sponsored, endorsed, or granted official status by, the Licensor or others designated to receive attribution as provided in Section 3(a)(1)(A)(i). Other rights.
Moral rights, such as the right of integrity, are not licensed under this Public License, nor are publicity, privacy, and/or other similar personality rights; however, to the extent possible, the Licensor waives and/or agrees not to assert any such rights held by the Licensor to the limited extent necessary to allow You to exercise the Licensed Rights, but not otherwise. Patent and trademark rights are not licensed under this Public License. To the extent possible, the Licensor waives any right to collect royalties from You for the exercise of the Licensed Rights, whether directly or through a collecting society under any voluntary or waivable statutory or compulsory licensing scheme. In all other cases the Licensor expressly reserves any right to collect such royalties. Section 3 – License Conditions.
Your exercise of the Licensed Rights is expressly made subject to the following conditions.
Attribution.
If You Share the Licensed Material (including in modified form), You must:
retain the following if it is supplied by the Licensor with the Licensed Material: identification of the creator(s) of the Licensed Material and any others designated to receive attribution, in any reasonable manner requested by the Licensor (including by pseudonym if designated); a copyright notice; a notice that refers to this Public License; a notice that refers to the disclaimer of warranties; a URI or hyperlink to the Licensed Material to the extent reasonably practicable; indicate if You modified the Licensed Material and retain an indication of any previous modifications; and indicate the Licensed Material is licensed under this Public License, and include the text of, or the URI or hyperlink to, this Public License. You may satisfy the conditions in Section 3(a)(1) in any reasonable manner based on the medium, means, and context in which You Share the Licensed Material. For example, it may be reasonable to satisfy the conditions by providing a URI or hyperlink to a resource that includes the required information. If requested by the Licensor, You must remove any of the information required by Section 3(a)(1)(A) to the extent reasonably practicable. ShareAlike. In addition to the conditions in Section 3(a), if You Share Adapted Material You produce, the following conditions also apply.
The Adapter’s License You apply must be a Creative Commons license with the same License Elements, this version or later, or a BY-SA Compatible License. You must include the text of, or the URI or hyperlink to, the Adapter’s License You apply. You may satisfy this condition in any reasonable manner based on the medium, means, and context in which You Share Adapted Material. You may not offer or impose any additional or different terms or conditions on, or apply any Effective Technological Measures to, Adapted Material that restrict exercise of the rights granted under the Adapter’s License You apply. Section 4 – Sui Generis Database Rights.
Where the Licensed Rights include Sui Generis Database Rights that apply to Your use of the Licensed Material:
for the avoidance of doubt, Section 2(a)(1) grants You the right to extract, reuse, reproduce, and Share all or a substantial portion of the contents of the database; if You include all or a substantial portion of the database contents in a database in which You have Sui Generis Database Rights, then the database in which You have Sui Generis Database Rights (but not its individual contents) is Adapted Material, including for purposes of Section 3(b); and You must comply with the conditions in Section 3(a) if You Share all or a substantial portion of the contents of the database. For the avoidance of doubt, this Section 4 supplements and does not replace Your obligations under this Public License where the Licensed Rights include other Copyright and Similar Rights. Section 5 – Disclaimer of Warranties and Limitation of Liability.
Unless otherwise separately undertaken by the Licensor, to the extent possible, the Licensor offers the Licensed Material as-is and as-available, and makes no representations or warranties of any kind concerning the Licensed Material, whether express, implied, statutory, or other. This includes, without limitation, warranties of title, merchantability, fitness for a particular purpose, non-infringement, absence of latent or other defects, accuracy, or the presence or absence of errors, whether or not known or discoverable. Where disclaimers of warranties are not allowed in full or in part, this disclaimer may not apply to You. To the extent possible, in no event will the Licensor be liable to You on any legal theory (including, without limitation, negligence) or otherwise for any direct, special, indirect, incidental, consequential, punitive, exemplary, or other losses, costs, expenses, or damages arising out of this Public License or use of the Licensed Material, even if the Licensor has been advised of the possibility of such losses, costs, expenses, or damages. Where a limitation of liability is not allowed in full or in part, this limitation may not apply to You.The disclaimer of warranties and limitation of liability provided above shall be interpreted in a manner that, to the extent possible, most closely approximates an absolute disclaimer and waiver of all liability. Section 6 – Term and Termination.
This Public License applies for the term of the Copyright and Similar Rights licensed here. However, if You fail to comply with this Public License, then Your rights under this Public License terminate automatically. Where Your right to use the Licensed Material has terminated under Section 6(a), it reinstates:
automatically as of the date the violation is cured, provided it is cured within 30 days of Your discovery of the violation; or upon express reinstatement by the Licensor. For the avoidance of doubt, this Section 6(b) does not affect any right the Licensor may have to seek remedies for Your violations of this Public License. For the avoidance of doubt, the Licensor may also offer the Licensed Material under separate terms or conditions or stop distributing the Licensed Material at any time; however, doing so will not terminate this Public License. Sections 1, 5, 6, 7, and 8 survive termination of this Public License. Section 7 – Other Terms and Conditions.
The Licensor shall not be bound by any additional or different terms or conditions communicated by You unless expressly agreed. Any arrangements, understandings, or agreements regarding the Licensed Material not stated herein are separate from and independent of the terms and conditions of this Public License. Section 8 – Interpretation.
For the avoidance of doubt, this Public License does not, and shall not be interpreted to, reduce, limit, restrict, or impose conditions on any use of the Licensed Material that could lawfully be made without permission under this Public License. To the extent possible, if any provision of this Public License is deemed unenforceable, it shall be automatically reformed to the minimum extent necessary to make it enforceable. If the provision cannot be reformed, it shall be severed from this Public License without affecting the enforceability of the remaining terms and conditions. No term or condition of this Public License will be waived and no failure to comply consented to unless expressly agreed to by the Licensor. Nothing in this Public License constitutes or may be interpreted as a limitation upon, or waiver of, any privileges and immunities that apply to the Licensor or You, including from the legal processes of any jurisdiction or authority. Creative Commons is not a party to its public licenses. Notwithstanding, Creative Commons may elect to apply one of its public licenses to material it publishes and in those instances will be considered the “Licensor.” Except for the limited purpose of indicating that material is shared under a Creative Commons public license or as otherwise permitted by the Creative Commons policies published at creativecommons.org/policies, Creative Commons does not authorize the use of the trademark “Creative Commons” or any other trademark or logo of Creative Commons without its prior written consent including, without limitation, in connection with any unauthorized modifications to any of its public licenses or any other arrangements, understandings, or agreements concerning use of licensed material. For the avoidance of doubt, this paragraph does not form part of the public licenses.