{"id":19576058,"url":"https://github.com/vmitov/casper","last_synced_at":"2026-06-12T12:31:44.937Z","repository":{"id":57498496,"uuid":"73705323","full_name":"VMitov/casper","owner":"VMitov","description":"Configuration Automation for Safe and Painless Environment Releases","archived":false,"fork":false,"pushed_at":"2018-04-05T16:43:24.000Z","size":11024,"stargazers_count":1,"open_issues_count":1,"forks_count":0,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-01-09T04:27:00.076Z","etag":null,"topics":["configuration-by-code","configuration-management","configuration-storage","configurations","go","golang"],"latest_commit_sha":null,"homepage":"https://github.com/miracl/casper","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/VMitov.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2016-11-14T13:05:35.000Z","updated_at":"2019-11-19T14:11:05.000Z","dependencies_parsed_at":"2022-08-28T19:41:33.002Z","dependency_job_id":null,"html_url":"https://github.com/VMitov/casper","commit_stats":null,"previous_names":["miracl/casper"],"tags_count":6,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/VMitov%2Fcasper","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/VMitov%2Fcasper/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/VMitov%2Fcasper/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/VMitov%2Fcasper/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/VMitov","download_url":"https://codeload.github.com/VMitov/casper/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240842763,"owners_count":19866645,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["configuration-by-code","configuration-management","configuration-storage","configurations","go","golang"],"created_at":"2024-11-11T06:50:36.474Z","updated_at":"2026-06-12T12:31:44.922Z","avatar_url":"https://github.com/VMitov.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# CASPER\n_Configuration Automation for Safe and Painless Environment Releases_\n\n[![Build Status](https://secure.travis-ci.org/miracl/casper.png?branch=master)](https://travis-ci.org/miracl/casper?branch=master)\n[![Coverage Status](https://coveralls.io/repos/miracl/casper/badge.svg?branch=master\u0026service=github)](https://coveralls.io/github/miracl/casper?branch=master)\n[![Go Report Card](https://goreportcard.com/badge/github.com/miracl/casper)](https://goreportcard.com/report/github.com/miracl/casper)\n\n## Description\n\nCasper is a simple tool for managing configurations as code where the structure of the configurations is separated from the values themselves. That way you can use the same structure for different environments. The structure of the configurations is described in a template file. Overall the tool combines the template file with all the values, serializes it to a format applicable for the configuration storage and pushes the changes to the storage.\n\n## Installation\n\n### From source \n\n```\ngo get -u github.com/miracl/casper/cmd/casper\n```\n\n### From [GitHub releases](https://github.com/miracl/casper/releases)\n\n## Example\n```\ncd examples/\ncasper build\n```\n* [template.yaml](/example/template.yaml)\n* [config.yaml](/example/config.yaml)\n* [source.yaml](/example/source.yaml)\n* [expected output](/example/output.yaml)\n\n## Usage\n\nAll configurations can be given on the command line, with file or with environment variables. Check `casper -h` for full list.\n\n* **template** - The template file is a golang template. The end product of the template file and the values should be of a format applicable for the configuration storage (e.g: json, yaml for key/value stores)\n* **sources** - Sources are the thing containing the keys for the template. Sources is a list. Currently there are 2 available:\n\t* Config source is a list of key/value pairs directly in the configuration file. Check ([config.yaml](/example/config.yaml)) for examples. \n\t\t```\n\t\tsources:\n\t\t- key1=val1\n\t\t- key2=val2\n\t\t```\n\t* File source defines key/value pairs in a file. Currently supported formats are `json` and `yaml`.\n\t\t```\n\t\tsources:\n\t\t- file://source.yaml\n\t\t```\n* **storage** - Storage is the system that Casper menages. Currently there are 2 available:\n\t* Consul.\n\t\t```\n\t\tstorage: consul\n\t\tconsul-addr: http://172.17.0.1:8500/?token=acl_token\u0026ignore=_ignore\n\t\t```\n\t\t* ignore - keys given the value of this setting in configuration will be ignored by Casper. The default such value is `_ignore`\n\t* File\n\t\t```\n\t\tstorage: file\n\t\tfile-path: output.yaml\n\t\t```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvmitov%2Fcasper","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvmitov%2Fcasper","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvmitov%2Fcasper/lists"}