This repository was archived by the owner on Jan 8, 2019. It is now read-only.

Repository files navigation

Berth

berth (\ˈbərth\): a place in the water near the shore where a ship stops and stays.

Berth is a tool to help you automate the building of packages for an array of operating system and package systems, while not putting a big load on the local dependencies where you build the packages. It does this by using a Docker container of your choice to build your project inside, and then use another container with the FPM package creator inside to package up the project.

Installation

In order to use Berth you need to have Python and Docker installed. Berth has been tested with Python 2.7+ and 3.4+, and Docker version 1.4+. If you are not running on a system where Docker runs natively, ie. Mac OS X, you can use Docker Toolbox instead. Berth will use the same environment variables as the docker command to figure out which Docker host to talk to.

When those requirements are in place, you can install Berth through pip with:

pip install berth

Usage

$ berth --help
Usage: berth [OPTIONS] <CONFIG FILE>
Berth use Docker containers to build packages for you, based on a YAML
configuration file.
Options:
--version Show the version and exit.
-v, --verbose Turn on verbose output.
-d, --debug Turn on debug output.
-b, --build-only Only perform the build step.
-p, --package-only Only perform the package step.
-k, --keep-containers Keep the containers around after they have been used.
--help Show this message and exit.

There's not much to specify on the command line, except for output level and a configuration file. The configuration file is in YAML format and will look something like the sample.yaml file.

Configuration

Environment

The configuration file has three possible sections, the first is the environment section where you can specify environment variables that will made available to the rest of this configuration. This means you only have to specify metadata once, ie. the version of the package you are building.

Build

Next up is the build section, where you specify everything related to building the project. You can choose the Docker image you would like to do the build in, so if you ie. want to build a Go project, you can use the golang image and have any dependencies available you would need. You also specify which volumes you would like to have mapped into the container, this can be used both for getting source files into the container but also to get built files out of it. Lastly you should specify a script to use for the build process. It will be executed as /build-script, meaning that it should contain an interpreter on the first line.

The build section of the configuration is optional, and if you leave it out the build process is simply skipped. This is useful if you either just want to package some files up which you already have created somewhere else, or if you would like to use fpm to package Python, Ruby or Perl packages directly, by setting the s (source) setting to either python, gem or cpan.

Tip: If you are using a shell script it is recommended to use the -ex flags on the shell, which will make it print each command it is executing making the output easier to read, and it will also make sure the build script is stopped in case one of the commands returns a non-zero exit code.

Package

The last section of the configuration file is package which covers the packaging of the project. You can again specify which image you want to build with and which volumes you need to get mapped into the container, the only requirement to the image is that it has fpm available inside of the $PATH. The remainder of the package section is used to specify the options you want to pass to fpm for when it builds the package. The options will more or less be mapped directly into fpm, with a few exceptions:

  • If the value is a boolean true to YAML, the key will be passed as a flag
  • If the value is a list, the parameter will be passed multiple times, once for each item in the list
  • If the key specified is either template-value or deb-field, the values will be mapped into fpm with the correct syntax
  • If the key is _arguments it will be sent to fpm as the last arguments in the command, with no parameter specified before them

The list of parameters fpm accepts can either be found be running fpm --help or on their wiki.

About

Berth use Docker containers to build packages for you, based on a YAML configuration file.

Topics

Resources

Stars

11 stars

Watchers

12 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content
This repository was archived by the owner on Jan 8, 2019. It is now read-only.

Repository files navigation

Berth

berth (\ˈbərth\): a place in the water near the shore where a ship stops and stays.

Berth is a tool to help you automate the building of packages for an array of operating system and package systems, while not putting a big load on the local dependencies where you build the packages. It does this by using a Docker container of your choice to build your project inside, and then use another container with the FPM package creator inside to package up the project.

Installation

In order to use Berth you need to have Python and Docker installed. Berth has been tested with Python 2.7+ and 3.4+, and Docker version 1.4+. If you are not running on a system where Docker runs natively, ie. Mac OS X, you can use Docker Toolbox instead. Berth will use the same environment variables as the docker command to figure out which Docker host to talk to.

When those requirements are in place, you can install Berth through pip with:

pip install berth

Usage

$ berth --help
Usage: berth [OPTIONS] <CONFIG FILE>
Berth use Docker containers to build packages for you, based on a YAML
configuration file.
Options:
--version Show the version and exit.
-v, --verbose Turn on verbose output.
-d, --debug Turn on debug output.
-b, --build-only Only perform the build step.
-p, --package-only Only perform the package step.
-k, --keep-containers Keep the containers around after they have been used.
--help Show this message and exit.

There's not much to specify on the command line, except for output level and a configuration file. The configuration file is in YAML format and will look something like the sample.yaml file.

Configuration

Environment

The configuration file has three possible sections, the first is the environment section where you can specify environment variables that will made available to the rest of this configuration. This means you only have to specify metadata once, ie. the version of the package you are building.

Build

Next up is the build section, where you specify everything related to building the project. You can choose the Docker image you would like to do the build in, so if you ie. want to build a Go project, you can use the golang image and have any dependencies available you would need. You also specify which volumes you would like to have mapped into the container, this can be used both for getting source files into the container but also to get built files out of it. Lastly you should specify a script to use for the build process. It will be executed as /build-script, meaning that it should contain an interpreter on the first line.

The build section of the configuration is optional, and if you leave it out the build process is simply skipped. This is useful if you either just want to package some files up which you already have created somewhere else, or if you would like to use fpm to package Python, Ruby or Perl packages directly, by setting the s (source) setting to either python, gem or cpan.

Tip: If you are using a shell script it is recommended to use the -ex flags on the shell, which will make it print each command it is executing making the output easier to read, and it will also make sure the build script is stopped in case one of the commands returns a non-zero exit code.

Package

The last section of the configuration file is package which covers the packaging of the project. You can again specify which image you want to build with and which volumes you need to get mapped into the container, the only requirement to the image is that it has fpm available inside of the $PATH. The remainder of the package section is used to specify the options you want to pass to fpm for when it builds the package. The options will more or less be mapped directly into fpm, with a few exceptions:

  • If the value is a boolean true to YAML, the key will be passed as a flag
  • If the value is a list, the parameter will be passed multiple times, once for each item in the list
  • If the key specified is either template-value or deb-field, the values will be mapped into fpm with the correct syntax
  • If the key is _arguments it will be sent to fpm as the last arguments in the command, with no parameter specified before them

The list of parameters fpm accepts can either be found be running fpm --help or on their wiki.

About

Berth use Docker containers to build packages for you, based on a YAML configuration file.

Topics

Resources

Stars

11 stars

Watchers

12 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
This repository was archived by the owner on Jan 8, 2019. It is now read-only.

Repository files navigation

Berth

berth (\ˈbərth\): a place in the water near the shore where a ship stops and stays.

Berth is a tool to help you automate the building of packages for an array of operating system and package systems, while not putting a big load on the local dependencies where you build the packages. It does this by using a Docker container of your choice to build your project inside, and then use another container with the FPM package creator inside to package up the project.

Installation

In order to use Berth you need to have Python and Docker installed. Berth has been tested with Python 2.7+ and 3.4+, and Docker version 1.4+. If you are not running on a system where Docker runs natively, ie. Mac OS X, you can use Docker Toolbox instead. Berth will use the same environment variables as the docker command to figure out which Docker host to talk to.

When those requirements are in place, you can install Berth through pip with:

pip install berth

Usage

$ berth --help
Usage: berth [OPTIONS] <CONFIG FILE>
Berth use Docker containers to build packages for you, based on a YAML
configuration file.
Options:
--version Show the version and exit.
-v, --verbose Turn on verbose output.
-d, --debug Turn on debug output.
-b, --build-only Only perform the build step.
-p, --package-only Only perform the package step.
-k, --keep-containers Keep the containers around after they have been used.
--help Show this message and exit.

There's not much to specify on the command line, except for output level and a configuration file. The configuration file is in YAML format and will look something like the sample.yaml file.

Configuration

Environment

The configuration file has three possible sections, the first is the environment section where you can specify environment variables that will made available to the rest of this configuration. This means you only have to specify metadata once, ie. the version of the package you are building.

Build

Next up is the build section, where you specify everything related to building the project. You can choose the Docker image you would like to do the build in, so if you ie. want to build a Go project, you can use the golang image and have any dependencies available you would need. You also specify which volumes you would like to have mapped into the container, this can be used both for getting source files into the container but also to get built files out of it. Lastly you should specify a script to use for the build process. It will be executed as /build-script, meaning that it should contain an interpreter on the first line.

The build section of the configuration is optional, and if you leave it out the build process is simply skipped. This is useful if you either just want to package some files up which you already have created somewhere else, or if you would like to use fpm to package Python, Ruby or Perl packages directly, by setting the s (source) setting to either python, gem or cpan.

Tip: If you are using a shell script it is recommended to use the -ex flags on the shell, which will make it print each command it is executing making the output easier to read, and it will also make sure the build script is stopped in case one of the commands returns a non-zero exit code.

Package

The last section of the configuration file is package which covers the packaging of the project. You can again specify which image you want to build with and which volumes you need to get mapped into the container, the only requirement to the image is that it has fpm available inside of the $PATH. The remainder of the package section is used to specify the options you want to pass to fpm for when it builds the package. The options will more or less be mapped directly into fpm, with a few exceptions:

  • If the value is a boolean true to YAML, the key will be passed as a flag
  • If the value is a list, the parameter will be passed multiple times, once for each item in the list
  • If the key specified is either template-value or deb-field, the values will be mapped into fpm with the correct syntax
  • If the key is _arguments it will be sent to fpm as the last arguments in the command, with no parameter specified before them

The list of parameters fpm accepts can either be found be running fpm --help or on their wiki.

About

Berth use Docker containers to build packages for you, based on a YAML configuration file.

Topics

Resources

Stars

11 stars

Watchers

12 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
This repository was archived by the owner on Jan 8, 2019. It is now read-only.

Repository files navigation

Berth

berth (\ˈbərth\): a place in the water near the shore where a ship stops and stays.

Berth is a tool to help you automate the building of packages for an array of operating system and package systems, while not putting a big load on the local dependencies where you build the packages. It does this by using a Docker container of your choice to build your project inside, and then use another container with the FPM package creator inside to package up the project.

Installation

In order to use Berth you need to have Python and Docker installed. Berth has been tested with Python 2.7+ and 3.4+, and Docker version 1.4+. If you are not running on a system where Docker runs natively, ie. Mac OS X, you can use Docker Toolbox instead. Berth will use the same environment variables as the docker command to figure out which Docker host to talk to.

When those requirements are in place, you can install Berth through pip with:

pip install berth

Usage

$ berth --help
Usage: berth [OPTIONS] <CONFIG FILE>
Berth use Docker containers to build packages for you, based on a YAML
configuration file.
Options:
--version Show the version and exit.
-v, --verbose Turn on verbose output.
-d, --debug Turn on debug output.
-b, --build-only Only perform the build step.
-p, --package-only Only perform the package step.
-k, --keep-containers Keep the containers around after they have been used.
--help Show this message and exit.

There's not much to specify on the command line, except for output level and a configuration file. The configuration file is in YAML format and will look something like the sample.yaml file.

Configuration

Environment

The configuration file has three possible sections, the first is the environment section where you can specify environment variables that will made available to the rest of this configuration. This means you only have to specify metadata once, ie. the version of the package you are building.

Build

Next up is the build section, where you specify everything related to building the project. You can choose the Docker image you would like to do the build in, so if you ie. want to build a Go project, you can use the golang image and have any dependencies available you would need. You also specify which volumes you would like to have mapped into the container, this can be used both for getting source files into the container but also to get built files out of it. Lastly you should specify a script to use for the build process. It will be executed as /build-script, meaning that it should contain an interpreter on the first line.

The build section of the configuration is optional, and if you leave it out the build process is simply skipped. This is useful if you either just want to package some files up which you already have created somewhere else, or if you would like to use fpm to package Python, Ruby or Perl packages directly, by setting the s (source) setting to either python, gem or cpan.

Tip: If you are using a shell script it is recommended to use the -ex flags on the shell, which will make it print each command it is executing making the output easier to read, and it will also make sure the build script is stopped in case one of the commands returns a non-zero exit code.

Package

The last section of the configuration file is package which covers the packaging of the project. You can again specify which image you want to build with and which volumes you need to get mapped into the container, the only requirement to the image is that it has fpm available inside of the $PATH. The remainder of the package section is used to specify the options you want to pass to fpm for when it builds the package. The options will more or less be mapped directly into fpm, with a few exceptions:

  • If the value is a boolean true to YAML, the key will be passed as a flag
  • If the value is a list, the parameter will be passed multiple times, once for each item in the list
  • If the key specified is either template-value or deb-field, the values will be mapped into fpm with the correct syntax
  • If the key is _arguments it will be sent to fpm as the last arguments in the command, with no parameter specified before them

The list of parameters fpm accepts can either be found be running fpm --help or on their wiki.

About

Berth use Docker containers to build packages for you, based on a YAML configuration file.

Topics

Resources

Stars

11 stars

Watchers

12 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content
This repository was archived by the owner on Jan 8, 2019. It is now read-only.

Repository files navigation

Berth

berth (\ˈbərth\): a place in the water near the shore where a ship stops and stays.

Berth is a tool to help you automate the building of packages for an array of operating system and package systems, while not putting a big load on the local dependencies where you build the packages. It does this by using a Docker container of your choice to build your project inside, and then use another container with the FPM package creator inside to package up the project.

Installation

In order to use Berth you need to have Python and Docker installed. Berth has been tested with Python 2.7+ and 3.4+, and Docker version 1.4+. If you are not running on a system where Docker runs natively, ie. Mac OS X, you can use Docker Toolbox instead. Berth will use the same environment variables as the docker command to figure out which Docker host to talk to.

When those requirements are in place, you can install Berth through pip with:

pip install berth

Usage

$ berth --help
Usage: berth [OPTIONS] <CONFIG FILE>
Berth use Docker containers to build packages for you, based on a YAML
configuration file.
Options:
--version Show the version and exit.
-v, --verbose Turn on verbose output.
-d, --debug Turn on debug output.
-b, --build-only Only perform the build step.
-p, --package-only Only perform the package step.
-k, --keep-containers Keep the containers around after they have been used.
--help Show this message and exit.

There's not much to specify on the command line, except for output level and a configuration file. The configuration file is in YAML format and will look something like the sample.yaml file.

Configuration

Environment

The configuration file has three possible sections, the first is the environment section where you can specify environment variables that will made available to the rest of this configuration. This means you only have to specify metadata once, ie. the version of the package you are building.

Build

Next up is the build section, where you specify everything related to building the project. You can choose the Docker image you would like to do the build in, so if you ie. want to build a Go project, you can use the golang image and have any dependencies available you would need. You also specify which volumes you would like to have mapped into the container, this can be used both for getting source files into the container but also to get built files out of it. Lastly you should specify a script to use for the build process. It will be executed as /build-script, meaning that it should contain an interpreter on the first line.

The build section of the configuration is optional, and if you leave it out the build process is simply skipped. This is useful if you either just want to package some files up which you already have created somewhere else, or if you would like to use fpm to package Python, Ruby or Perl packages directly, by setting the s (source) setting to either python, gem or cpan.

Tip: If you are using a shell script it is recommended to use the -ex flags on the shell, which will make it print each command it is executing making the output easier to read, and it will also make sure the build script is stopped in case one of the commands returns a non-zero exit code.

Package

The last section of the configuration file is package which covers the packaging of the project. You can again specify which image you want to build with and which volumes you need to get mapped into the container, the only requirement to the image is that it has fpm available inside of the $PATH. The remainder of the package section is used to specify the options you want to pass to fpm for when it builds the package. The options will more or less be mapped directly into fpm, with a few exceptions:

  • If the value is a boolean true to YAML, the key will be passed as a flag
  • If the value is a list, the parameter will be passed multiple times, once for each item in the list
  • If the key specified is either template-value or deb-field, the values will be mapped into fpm with the correct syntax
  • If the key is _arguments it will be sent to fpm as the last arguments in the command, with no parameter specified before them

The list of parameters fpm accepts can either be found be running fpm --help or on their wiki.

About

Berth use Docker containers to build packages for you, based on a YAML configuration file.

Topics

Resources

Stars

11 stars

Watchers

12 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
This repository was archived by the owner on Jan 8, 2019. It is now read-only.

Repository files navigation

Berth

berth (\ˈbərth\): a place in the water near the shore where a ship stops and stays.

Berth is a tool to help you automate the building of packages for an array of operating system and package systems, while not putting a big load on the local dependencies where you build the packages. It does this by using a Docker container of your choice to build your project inside, and then use another container with the FPM package creator inside to package up the project.

Installation

In order to use Berth you need to have Python and Docker installed. Berth has been tested with Python 2.7+ and 3.4+, and Docker version 1.4+. If you are not running on a system where Docker runs natively, ie. Mac OS X, you can use Docker Toolbox instead. Berth will use the same environment variables as the docker command to figure out which Docker host to talk to.

When those requirements are in place, you can install Berth through pip with:

pip install berth

Usage

$ berth --help
Usage: berth [OPTIONS] <CONFIG FILE>
Berth use Docker containers to build packages for you, based on a YAML
configuration file.
Options:
--version Show the version and exit.
-v, --verbose Turn on verbose output.
-d, --debug Turn on debug output.
-b, --build-only Only perform the build step.
-p, --package-only Only perform the package step.
-k, --keep-containers Keep the containers around after they have been used.
--help Show this message and exit.

There's not much to specify on the command line, except for output level and a configuration file. The configuration file is in YAML format and will look something like the sample.yaml file.

Configuration

Environment

The configuration file has three possible sections, the first is the environment section where you can specify environment variables that will made available to the rest of this configuration. This means you only have to specify metadata once, ie. the version of the package you are building.

Build

Next up is the build section, where you specify everything related to building the project. You can choose the Docker image you would like to do the build in, so if you ie. want to build a Go project, you can use the golang image and have any dependencies available you would need. You also specify which volumes you would like to have mapped into the container, this can be used both for getting source files into the container but also to get built files out of it. Lastly you should specify a script to use for the build process. It will be executed as /build-script, meaning that it should contain an interpreter on the first line.

The build section of the configuration is optional, and if you leave it out the build process is simply skipped. This is useful if you either just want to package some files up which you already have created somewhere else, or if you would like to use fpm to package Python, Ruby or Perl packages directly, by setting the s (source) setting to either python, gem or cpan.

Tip: If you are using a shell script it is recommended to use the -ex flags on the shell, which will make it print each command it is executing making the output easier to read, and it will also make sure the build script is stopped in case one of the commands returns a non-zero exit code.

Package

The last section of the configuration file is package which covers the packaging of the project. You can again specify which image you want to build with and which volumes you need to get mapped into the container, the only requirement to the image is that it has fpm available inside of the $PATH. The remainder of the package section is used to specify the options you want to pass to fpm for when it builds the package. The options will more or less be mapped directly into fpm, with a few exceptions:

  • If the value is a boolean true to YAML, the key will be passed as a flag
  • If the value is a list, the parameter will be passed multiple times, once for each item in the list
  • If the key specified is either template-value or deb-field, the values will be mapped into fpm with the correct syntax
  • If the key is _arguments it will be sent to fpm as the last arguments in the command, with no parameter specified before them

The list of parameters fpm accepts can either be found be running fpm --help or on their wiki.

About

Berth use Docker containers to build packages for you, based on a YAML configuration file.

Topics

Resources

Stars

11 stars

Watchers

12 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
This repository was archived by the owner on Jan 8, 2019. It is now read-only.

Repository files navigation

Berth

berth (\ˈbərth\): a place in the water near the shore where a ship stops and stays.

Berth is a tool to help you automate the building of packages for an array of operating system and package systems, while not putting a big load on the local dependencies where you build the packages. It does this by using a Docker container of your choice to build your project inside, and then use another container with the FPM package creator inside to package up the project.

Installation

In order to use Berth you need to have Python and Docker installed. Berth has been tested with Python 2.7+ and 3.4+, and Docker version 1.4+. If you are not running on a system where Docker runs natively, ie. Mac OS X, you can use Docker Toolbox instead. Berth will use the same environment variables as the docker command to figure out which Docker host to talk to.

When those requirements are in place, you can install Berth through pip with:

pip install berth

Usage

$ berth --help
Usage: berth [OPTIONS] <CONFIG FILE>
Berth use Docker containers to build packages for you, based on a YAML
configuration file.
Options:
--version Show the version and exit.
-v, --verbose Turn on verbose output.
-d, --debug Turn on debug output.
-b, --build-only Only perform the build step.
-p, --package-only Only perform the package step.
-k, --keep-containers Keep the containers around after they have been used.
--help Show this message and exit.

There's not much to specify on the command line, except for output level and a configuration file. The configuration file is in YAML format and will look something like the sample.yaml file.

Configuration

Environment

The configuration file has three possible sections, the first is the environment section where you can specify environment variables that will made available to the rest of this configuration. This means you only have to specify metadata once, ie. the version of the package you are building.

Build

Next up is the build section, where you specify everything related to building the project. You can choose the Docker image you would like to do the build in, so if you ie. want to build a Go project, you can use the golang image and have any dependencies available you would need. You also specify which volumes you would like to have mapped into the container, this can be used both for getting source files into the container but also to get built files out of it. Lastly you should specify a script to use for the build process. It will be executed as /build-script, meaning that it should contain an interpreter on the first line.

The build section of the configuration is optional, and if you leave it out the build process is simply skipped. This is useful if you either just want to package some files up which you already have created somewhere else, or if you would like to use fpm to package Python, Ruby or Perl packages directly, by setting the s (source) setting to either python, gem or cpan.

Tip: If you are using a shell script it is recommended to use the -ex flags on the shell, which will make it print each command it is executing making the output easier to read, and it will also make sure the build script is stopped in case one of the commands returns a non-zero exit code.

Package

The last section of the configuration file is package which covers the packaging of the project. You can again specify which image you want to build with and which volumes you need to get mapped into the container, the only requirement to the image is that it has fpm available inside of the $PATH. The remainder of the package section is used to specify the options you want to pass to fpm for when it builds the package. The options will more or less be mapped directly into fpm, with a few exceptions:

  • If the value is a boolean true to YAML, the key will be passed as a flag
  • If the value is a list, the parameter will be passed multiple times, once for each item in the list
  • If the key specified is either template-value or deb-field, the values will be mapped into fpm with the correct syntax
  • If the key is _arguments it will be sent to fpm as the last arguments in the command, with no parameter specified before them

The list of parameters fpm accepts can either be found be running fpm --help or on their wiki.

About

Berth use Docker containers to build packages for you, based on a YAML configuration file.

Topics

Resources

Stars

11 stars

Watchers

12 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content
This repository was archived by the owner on Jan 8, 2019. It is now read-only.

Repository files navigation

Berth

berth (\ˈbərth\): a place in the water near the shore where a ship stops and stays.

Berth is a tool to help you automate the building of packages for an array of operating system and package systems, while not putting a big load on the local dependencies where you build the packages. It does this by using a Docker container of your choice to build your project inside, and then use another container with the FPM package creator inside to package up the project.

Installation

In order to use Berth you need to have Python and Docker installed. Berth has been tested with Python 2.7+ and 3.4+, and Docker version 1.4+. If you are not running on a system where Docker runs natively, ie. Mac OS X, you can use Docker Toolbox instead. Berth will use the same environment variables as the docker command to figure out which Docker host to talk to.

When those requirements are in place, you can install Berth through pip with:

pip install berth

Usage

$ berth --help
Usage: berth [OPTIONS] <CONFIG FILE>
Berth use Docker containers to build packages for you, based on a YAML
configuration file.
Options:
--version Show the version and exit.
-v, --verbose Turn on verbose output.
-d, --debug Turn on debug output.
-b, --build-only Only perform the build step.
-p, --package-only Only perform the package step.
-k, --keep-containers Keep the containers around after they have been used.
--help Show this message and exit.

There's not much to specify on the command line, except for output level and a configuration file. The configuration file is in YAML format and will look something like the sample.yaml file.

Configuration

Environment

The configuration file has three possible sections, the first is the environment section where you can specify environment variables that will made available to the rest of this configuration. This means you only have to specify metadata once, ie. the version of the package you are building.

Build

Next up is the build section, where you specify everything related to building the project. You can choose the Docker image you would like to do the build in, so if you ie. want to build a Go project, you can use the golang image and have any dependencies available you would need. You also specify which volumes you would like to have mapped into the container, this can be used both for getting source files into the container but also to get built files out of it. Lastly you should specify a script to use for the build process. It will be executed as /build-script, meaning that it should contain an interpreter on the first line.

The build section of the configuration is optional, and if you leave it out the build process is simply skipped. This is useful if you either just want to package some files up which you already have created somewhere else, or if you would like to use fpm to package Python, Ruby or Perl packages directly, by setting the s (source) setting to either python, gem or cpan.

Tip: If you are using a shell script it is recommended to use the -ex flags on the shell, which will make it print each command it is executing making the output easier to read, and it will also make sure the build script is stopped in case one of the commands returns a non-zero exit code.

Package

The last section of the configuration file is package which covers the packaging of the project. You can again specify which image you want to build with and which volumes you need to get mapped into the container, the only requirement to the image is that it has fpm available inside of the $PATH. The remainder of the package section is used to specify the options you want to pass to fpm for when it builds the package. The options will more or less be mapped directly into fpm, with a few exceptions:

  • If the value is a boolean true to YAML, the key will be passed as a flag
  • If the value is a list, the parameter will be passed multiple times, once for each item in the list
  • If the key specified is either template-value or deb-field, the values will be mapped into fpm with the correct syntax
  • If the key is _arguments it will be sent to fpm as the last arguments in the command, with no parameter specified before them

The list of parameters fpm accepts can either be found be running fpm --help or on their wiki.

About

Berth use Docker containers to build packages for you, based on a YAML configuration file.

Topics

Resources

Stars

11 stars

Watchers

12 watching

Forks

Releases

Packages

Used by

Contributors

Languages