{"id":27880856,"url":"https://github.com/atomicgo/isprod","last_synced_at":"2025-07-05T00:06:41.489Z","repository":{"id":185715825,"uuid":"673988841","full_name":"atomicgo/isprod","owner":"atomicgo","description":"🔴 A minimalistic Go module to check if the current environment is running in production.","archived":false,"fork":false,"pushed_at":"2024-08-08T17:04:23.000Z","size":40,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-05-05T04:45:06.095Z","etag":null,"topics":["atomicgo","go","golang","golang-library","prod","production"],"latest_commit_sha":null,"homepage":"https://atomicgo.dev","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/atomicgo.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"github":["MarvinJWendt"]}},"created_at":"2023-08-02T22:20:44.000Z","updated_at":"2024-08-08T17:04:27.000Z","dependencies_parsed_at":null,"dependency_job_id":"5e339e8b-f6d7-4c84-b15a-7f88def4d432","html_url":"https://github.com/atomicgo/isprod","commit_stats":null,"previous_names":["atomicgo/isprod"],"tags_count":1,"template":false,"template_full_name":"atomicgo/template","purl":"pkg:github/atomicgo/isprod","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/atomicgo%2Fisprod","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/atomicgo%2Fisprod/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/atomicgo%2Fisprod/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/atomicgo%2Fisprod/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/atomicgo","download_url":"https://codeload.github.com/atomicgo/isprod/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/atomicgo%2Fisprod/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":263636796,"owners_count":23492305,"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":["atomicgo","go","golang","golang-library","prod","production"],"created_at":"2025-05-05T04:38:50.520Z","updated_at":"2025-07-05T00:06:41.467Z","avatar_url":"https://github.com/atomicgo.png","language":"Go","funding_links":["https://github.com/sponsors/MarvinJWendt"],"categories":[],"sub_categories":[],"readme":"\u003c!--\n\n\n\n┌───────────────────────────────────────────────────────────────────┐\n│                                                                   │\n│                          IMPORTANT NOTE                           │\n│                                                                   │\n│               This file is automatically generated                │\n│           All manual modifications will be overwritten            │\n│                                                                   │\n└───────────────────────────────────────────────────────────────────┘\n\n\n\n--\u003e\n\n\u003ch1 align=\"center\"\u003eAtomicGo | isprod\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n\u003cimg src=\"https://img.shields.io/endpoint?url=https%3A%2F%2Fatomicgo.dev%2Fapi%2Fshields%2Fisprod\u0026style=flat-square\" alt=\"Downloads\"\u003e\n\n\u003ca href=\"https://github.com/atomicgo/isprod/releases\"\u003e\n\u003cimg src=\"https://img.shields.io/github/v/release/atomicgo/isprod?style=flat-square\" alt=\"Latest Release\"\u003e\n\u003c/a\u003e\n\n\u003ca href=\"https://codecov.io/gh/atomicgo/isprod\" target=\"_blank\"\u003e\n\u003cimg src=\"https://img.shields.io/github/actions/workflow/status/atomicgo/isprod/go.yml?style=flat-square\" alt=\"Tests\"\u003e\n\u003c/a\u003e\n\n\u003ca href=\"https://codecov.io/gh/atomicgo/isprod\" target=\"_blank\"\u003e\n\u003cimg src=\"https://img.shields.io/codecov/c/gh/atomicgo/isprod?color=magenta\u0026logo=codecov\u0026style=flat-square\" alt=\"Coverage\"\u003e\n\u003c/a\u003e\n\n\u003ca href=\"https://codecov.io/gh/atomicgo/isprod\"\u003e\n\u003c!-- unittestcount:start --\u003e\u003cimg src=\"https://img.shields.io/badge/Unit_Tests-6-magenta?style=flat-square\" alt=\"Unit test count\"\u003e\u003c!-- unittestcount:end --\u003e\n\u003c/a\u003e\n\n\u003ca href=\"https://opensource.org/licenses/MIT\" target=\"_blank\"\u003e\n\u003cimg src=\"https://img.shields.io/badge/License-MIT-yellow.svg?style=flat-square\" alt=\"License: MIT\"\u003e\n\u003c/a\u003e\n  \n\u003ca href=\"https://goreportcard.com/report/github.com/atomicgo/isprod\" target=\"_blank\"\u003e\n\u003cimg src=\"https://goreportcard.com/badge/github.com/atomicgo/isprod?style=flat-square\" alt=\"Go report\"\u003e\n\u003c/a\u003e   \n\n\u003c/p\u003e\n\n---\n\n\u003cp align=\"center\"\u003e\n\u003cstrong\u003e\u003ca href=\"https://pkg.go.dev/atomicgo.dev/isprod#section-documentation\" target=\"_blank\"\u003eDocumentation\u003c/a\u003e\u003c/strong\u003e\n|\n\u003cstrong\u003e\u003ca href=\"https://github.com/atomicgo/atomicgo/blob/main/CONTRIBUTING.md\" target=\"_blank\"\u003eContributing\u003c/a\u003e\u003c/strong\u003e\n|\n\u003cstrong\u003e\u003ca href=\"https://github.com/atomicgo/atomicgo/blob/main/CODE_OF_CONDUCT.md\" target=\"_blank\"\u003eCode of Conduct\u003c/a\u003e\u003c/strong\u003e\n\u003c/p\u003e\n\n---\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://raw.githubusercontent.com/atomicgo/atomicgo/main/assets/header.png\" alt=\"AtomicGo\"\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n\u003ctable\u003e\n\u003ctbody\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c/p\u003e\n\u003ch3  align=\"center\"\u003e\u003cpre\u003ego get atomicgo.dev/isprod\u003c/pre\u003e\u003c/h3\u003e\n\u003cp align=\"center\"\u003e\n\u003ctable\u003e\n\u003ctbody\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c/p\u003e\n\n\u003c!-- gomarkdoc:embed:start --\u003e\n\n\u003c!-- Code generated by gomarkdoc. DO NOT EDIT --\u003e\n\n# isprod\n\n```go\nimport \"atomicgo.dev/isprod\"\n```\n\nPackage isprod is a simple package to check if the application is running in production or not.\n\nIt has default conditions that fit the most common cases, but you can also add your own conditions.\n\nDefault rules are:\n\n```\nIf environment variable 'prod' is set and its value is not one of [false], consider it as production environment.\nIf environment variable 'production' is set and its value is not one of [false], consider it as production environment.\nIf environment variable 'staging' is set and its value is not one of [false], consider it as production environment.\nIf environment variable 'live' is set and its value is not one of [false], consider it as production environment.\nIf environment variable 'ci' is set and its value is not one of [false], consider it as production environment.\nIf environment variable 'PROD' is set and its value is not one of [false], consider it as production environment.\nIf environment variable 'PRODUCTION' is set and its value is not one of [false], consider it as production environment.\nIf environment variable 'STAGING' is set and its value is not one of [false], consider it as production environment.\nIf environment variable 'LIVE' is set and its value is not one of [false], consider it as production environment.\nIf environment variable 'CI' is set and its value is not one of [false], consider it as production environment.\nIf environment variable 'env' is set and its value is one of [prod, production, staging, live, ci, PROD, PRODUCTION, STAGING, LIVE, CI], consider it as production environment.\nIf environment variable 'environment' is set and its value is one of [prod, production, staging, live, ci, PROD, PRODUCTION, STAGING, LIVE, CI], consider it as production environment.\nIf environment variable 'mode' is set and its value is one of [prod, production, staging, live, ci, PROD, PRODUCTION, STAGING, LIVE, CI], consider it as production environment.\nIf environment variable 'ENV' is set and its value is one of [prod, production, staging, live, ci, PROD, PRODUCTION, STAGING, LIVE, CI], consider it as production environment.\nIf environment variable 'ENVIRONMENT' is set and its value is one of [prod, production, staging, live, ci, PROD, PRODUCTION, STAGING, LIVE, CI], consider it as production environment.\nIf environment variable 'MODE' is set and its value is one of [prod, production, staging, live, ci, PROD, PRODUCTION, STAGING, LIVE, CI], consider it as production environment.\n```\n\n## Index\n\n- [func Check\\(\\) bool](\u003c#Check\u003e)\n- [type Condition](\u003c#Condition\u003e)\n  - [func \\(c Condition\\) Check\\(\\) bool](\u003c#Condition.Check\u003e)\n  - [func \\(c Condition\\) String\\(\\) string](\u003c#Condition.String\u003e)\n- [type Conditions](\u003c#Conditions\u003e)\n  - [func \\(c \\*Conditions\\) Add\\(condition Condition\\)](\u003c#Conditions.Add\u003e)\n  - [func \\(c Conditions\\) Check\\(\\) bool](\u003c#Conditions.Check\u003e)\n  - [func \\(c Conditions\\) String\\(\\) string](\u003c#Conditions.String\u003e)\n\n\n\u003ca name=\"Check\"\u003e\u003c/a\u003e\n## func [Check](\u003chttps://github.com/atomicgo/isprod/blob/main/isprod.go#L150\u003e)\n\n```go\nfunc Check() bool\n```\n\nCheck checks if the application is running in production or not. It uses the DefaultConditions. If you want to use your own conditions, use the Conditions.Check\\(\\) method.\n\n\n\n\n\n```go\npackage main\n\nimport (\n\t\"atomicgo.dev/isprod\"\n\t\"fmt\"\n\t\"os\"\n)\n\nfunc main() {\n\tos.Setenv(\"PRODUCTION\", \"true\") // Many common names are supported. See DefaultConditions.\n\tfmt.Println(isprod.Check())\n}\n```\n\n#### Output\n\n```\ntrue\n```\n\n\n\n\u003ca name=\"Condition\"\u003e\u003c/a\u003e\n## type [Condition](\u003chttps://github.com/atomicgo/isprod/blob/main/isprod.go#L64-L73\u003e)\n\nCondition is a condition that checks if the environment is production.\n\n```go\ntype Condition struct {\n    // EnvVarName is the name of the environment variable to check.\n    EnvVarName string\n    // AllowedValues is a list of values that are considered valid for the environment variable.\n    AllowedValues []string\n    // AllowAnyValue can be set to true if any value for the environment variable is allowed.\n    AllowAnyValue bool\n    // ExcludedValues is a list of values that are specifically not allowed, even if AllowAnyValue is set to true.\n    ExcludedValues []string\n}\n```\n\n\u003ca name=\"Condition.Check\"\u003e\u003c/a\u003e\n### func \\(Condition\\) [Check](\u003chttps://github.com/atomicgo/isprod/blob/main/isprod.go#L76\u003e)\n\n```go\nfunc (c Condition) Check() bool\n```\n\nCheck checks if the condition is met.\n\n\n\n\n\n```go\npackage main\n\nimport (\n\t\"atomicgo.dev/isprod\"\n\t\"fmt\"\n\t\"os\"\n)\n\nfunc main() {\n\tos.Setenv(\"MY_ENV_VAR\", \"live\")\n\n\tcond := isprod.Condition{\n\t\tEnvVarName:     \"MY_ENV_VAR\",\n\t\tAllowAnyValue:  true,\n\t\tExcludedValues: []string{\"false\"},\n\t}\n\n\tfmt.Println(cond.Check())\n}\n```\n\n#### Output\n\n```\ntrue\n```\n\n\n\n\u003ca name=\"Condition.String\"\u003e\u003c/a\u003e\n### func \\(Condition\\) [String](\u003chttps://github.com/atomicgo/isprod/blob/main/isprod.go#L107\u003e)\n\n```go\nfunc (c Condition) String() string\n```\n\n\n\n\u003ca name=\"Conditions\"\u003e\u003c/a\u003e\n## type [Conditions](\u003chttps://github.com/atomicgo/isprod/blob/main/isprod.go#L118\u003e)\n\nConditions is a list of conditions.\n\n```go\ntype Conditions []Condition\n```\n\n\u003ca name=\"DefaultConditions\"\u003e\u003c/a\u003eDefaultConditions is a list of conditions that are used by default. It's initialized at package init.\n\n```go\nvar DefaultConditions Conditions\n```\n\n\u003ca name=\"Conditions.Add\"\u003e\u003c/a\u003e\n### func \\(\\*Conditions\\) [Add](\u003chttps://github.com/atomicgo/isprod/blob/main/isprod.go#L121\u003e)\n\n```go\nfunc (c *Conditions) Add(condition Condition)\n```\n\nAdd adds a condition to the list.\n\n\n\n\n\n```go\npackage main\n\nimport (\n\t\"atomicgo.dev/isprod\"\n\t\"fmt\"\n)\n\nfunc main() {\n\tvar conds isprod.Conditions\n\n\tcond1 := isprod.Condition{\n\t\tEnvVarName:    \"ENV_VAR_1\",\n\t\tAllowAnyValue: true,\n\t}\n\tcond2 := isprod.Condition{\n\t\tEnvVarName:    \"ENV_VAR_2\",\n\t\tAllowAnyValue: true,\n\t}\n\n\tconds.Add(cond1)\n\tconds.Add(cond2)\n\n\tfmt.Println(len(conds))\n}\n```\n\n#### Output\n\n```\n2\n```\n\n\n\n\u003ca name=\"Conditions.Check\"\u003e\u003c/a\u003e\n### func \\(Conditions\\) [Check](\u003chttps://github.com/atomicgo/isprod/blob/main/isprod.go#L126\u003e)\n\n```go\nfunc (c Conditions) Check() bool\n```\n\nCheck checks if any of the conditions is true.\n\n\n\n\n\n```go\npackage main\n\nimport (\n\t\"atomicgo.dev/isprod\"\n\t\"fmt\"\n\t\"os\"\n)\n\nfunc main() {\n\tos.Setenv(\"ENV_VAR_1\", \"true\")\n\n\tvar conds isprod.Conditions\n\n\tcond1 := isprod.Condition{\n\t\tEnvVarName:    \"ENV_VAR_1\",\n\t\tAllowAnyValue: true,\n\t}\n\tcond2 := isprod.Condition{\n\t\tEnvVarName:    \"ENV_VAR_2\",\n\t\tAllowAnyValue: true,\n\t}\n\n\tconds.Add(cond1)\n\tconds.Add(cond2)\n\n\tfmt.Println(conds.Check())\n}\n```\n\n#### Output\n\n```\ntrue\n```\n\n\n\n\u003ca name=\"Conditions.String\"\u003e\u003c/a\u003e\n### func \\(Conditions\\) [String](\u003chttps://github.com/atomicgo/isprod/blob/main/isprod.go#L137\u003e)\n\n```go\nfunc (c Conditions) String() string\n```\n\nString returns a string representation of the conditions in plain english.\n\nGenerated by [gomarkdoc](\u003chttps://github.com/princjef/gomarkdoc\u003e)\n\n\n\u003c!-- gomarkdoc:embed:end --\u003e\n\n---\n\n\u003e [AtomicGo.dev](https://atomicgo.dev) \u0026nbsp;\u0026middot;\u0026nbsp;\n\u003e with ❤️ by [@MarvinJWendt](https://github.com/MarvinJWendt) |\n\u003e [MarvinJWendt.com](https://marvinjwendt.com)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fatomicgo%2Fisprod","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fatomicgo%2Fisprod","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fatomicgo%2Fisprod/lists"}