{"id":19516117,"url":"https://github.com/deviantony/shflags","last_synced_at":"2025-10-26T10:09:49.644Z","repository":{"id":16713383,"uuid":"19470264","full_name":"deviantony/shflags","owner":"deviantony","description":"Shell Flags (shFlags) is a library written to greatly simplify the handling of command-line flags in Bourne based Unix shell scripts (bash, dash, ksh, sh, zsh) on many Unix OSes (Linux, Solaris, Mac OS X, etc.).  Most shell scripts use getopt for flags processing, but the different versions of getopt on various OSes make writing portable shell scripts difficult. shFlags instead provides an API that doesn't change across shell and OS versions so the script writer can be confident that the script will work.  shFlags is a port of the google-gflags C++/Python library. This fork is using the shFlags version 1.0.4 updated by Andreas Schuh for the Cmake-basis project: https://github.com/schuhschuh/cmake-basis","archived":false,"fork":false,"pushed_at":"2014-05-18T15:29:42.000Z","size":317,"stargazers_count":3,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-01-08T12:38:25.920Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"http://code.google.com/p/shflags/","language":"Shell","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/deviantony.png","metadata":{"files":{"readme":"README.html","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2014-05-05T20:35:21.000Z","updated_at":"2019-07-11T17:20:26.000Z","dependencies_parsed_at":"2022-08-02T20:30:30.026Z","dependency_job_id":null,"html_url":"https://github.com/deviantony/shflags","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/deviantony%2Fshflags","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/deviantony%2Fshflags/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/deviantony%2Fshflags/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/deviantony%2Fshflags/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/deviantony","download_url":"https://codeload.github.com/deviantony/shflags/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240766672,"owners_count":19854114,"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":[],"created_at":"2024-11-10T23:44:36.751Z","updated_at":"2025-10-26T10:09:44.584Z","avatar_url":"https://github.com/deviantony.png","language":"Shell","readme":"\u003c?xml version=\"1.0\" encoding=\"utf-8\" ?\u003e\n\u003c!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\"\u003e\n\u003chtml xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\" lang=\"en\"\u003e\n\u003chead\u003e\n\u003cmeta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" /\u003e\n\u003cmeta name=\"generator\" content=\"Docutils 0.5: http://docutils.sourceforge.net/\" /\u003e\n\u003ctitle\u003eshFlags 1.0.x README\u003c/title\u003e\n\u003cstyle type=\"text/css\"\u003e\n\n/*\n:Author: David Goodger\n:Contact: goodger@users.sourceforge.net\n:Date: $Date$\n:Revision: $Revision$\n:Copyright: This stylesheet has been placed in the public domain.\n:Modified by: Kate Ward \u003ckate.ward@forestent.com\u003e\n\nDefault cascading style sheet for the HTML output of Docutils.\n\nSee http://docutils.sf.net/docs/howto/html-stylesheets.html for how to\ncustomize this style sheet.\n*/\n\n/* used to remove borders from tables and images */\n.borderless, table.borderless td, table.borderless th {\n  border: 0 }\n\ntable.borderless td, table.borderless th {\n  /* Override padding for \"table.docutils td\" with \"! important\".\n     The right padding separates the table cells. */\n  padding: 0 0.5em 0 0 ! important }\n\n.first {\n  /* Override more specific margin styles with \"! important\". */\n  margin-top: 0 ! important }\n\n.last, .with-subtitle {\n  margin-bottom: 0 ! important }\n\n.hidden {\n  display: none }\n\na.toc-backref {\n  text-decoration: none ;\n  color: black }\n\nblockquote.epigraph {\n  margin: 2em 5em ; }\n\ndl.docutils dd {\n  margin-bottom: 0.5em }\n\n/* Uncomment (and remove this text!) to get bold-faced definition list terms\ndl.docutils dt {\n  font-weight: bold }\n*/\n\ndiv.abstract {\n  margin: 2em 5em }\n\ndiv.abstract p.topic-title {\n  font-weight: bold ;\n  text-align: center }\n\ndiv.admonition, div.attention, div.caution, div.danger, div.error,\ndiv.hint, div.important, div.note, div.tip, div.warning {\n  margin: 2em ;\n  border: medium outset ;\n  padding: 1em }\n\ndiv.admonition p.admonition-title, div.hint p.admonition-title,\ndiv.important p.admonition-title, div.note p.admonition-title,\ndiv.tip p.admonition-title {\n  font-weight: bold ;\n  font-family: sans-serif }\n\ndiv.attention p.admonition-title, div.caution p.admonition-title,\ndiv.danger p.admonition-title, div.error p.admonition-title,\ndiv.warning p.admonition-title {\n  color: red ;\n  font-weight: bold ;\n  font-family: sans-serif }\n\n/* Uncomment (and remove this text!) to get reduced vertical space in\n   compound paragraphs.\ndiv.compound .compound-first, div.compound .compound-middle {\n  margin-bottom: 0.5em }\n\ndiv.compound .compound-last, div.compound .compound-middle {\n  margin-top: 0.5em }\n*/\n\ndiv.dedication {\n  margin: 2em 5em ;\n  text-align: center ;\n  font-style: italic }\n\ndiv.dedication p.topic-title {\n  font-weight: bold ;\n  font-style: normal }\n\ndiv.figure {\n  margin-left: 2em ;\n  margin-right: 2em }\n\ndiv.footer, div.header {\n  clear: both;\n  font-size: smaller }\n\ndiv.line-block {\n  display: block ;\n  margin-top: 1em ;\n  margin-bottom: 1em }\n\ndiv.line-block div.line-block {\n  margin-top: 0 ;\n  margin-bottom: 0 ;\n  margin-left: 1.5em }\n\ndiv.sidebar {\n  margin-left: 1em ;\n  border: medium outset ;\n  padding: 1em ;\n  background-color: #ffffee ;\n  width: 40% ;\n  float: right ;\n  clear: right }\n\ndiv.sidebar p.rubric {\n  font-family: sans-serif ;\n  font-size: medium }\n\ndiv.system-messages {\n  margin: 5em }\n\ndiv.system-messages h1 {\n  color: red }\n\ndiv.system-message {\n  border: medium outset ;\n  padding: 1em }\n\ndiv.system-message p.system-message-title {\n  color: red ;\n  font-weight: bold }\n\ndiv.topic {\n  margin: 2em }\n\nh1.section-subtitle, h2.section-subtitle, h3.section-subtitle,\nh4.section-subtitle, h5.section-subtitle, h6.section-subtitle {\n  margin-top: 0.4em }\n\nh1.title {\n  text-align: center }\n\nh2.subtitle {\n  text-align: center }\n\nhr.docutils {\n  width: 75% }\n\nimg.align-left {\n  clear: left }\n\nimg.align-right {\n  clear: right }\n\nol.simple, ul.simple {\n  margin-bottom: 1em }\n\nol.arabic {\n  list-style: decimal }\n\nol.loweralpha {\n  list-style: lower-alpha }\n\nol.upperalpha {\n  list-style: upper-alpha }\n\nol.lowerroman {\n  list-style: lower-roman }\n\nol.upperroman {\n  list-style: upper-roman }\n\np.attribution {\n  text-align: right ;\n  margin-left: 50% }\n\np.caption {\n  font-style: italic }\n\np.credits {\n  font-style: italic ;\n  font-size: smaller }\n\np.label {\n  white-space: nowrap }\n\np.rubric {\n  font-weight: bold ;\n  font-size: larger ;\n  color: maroon ;\n  text-align: center }\n\np.sidebar-title {\n  font-family: sans-serif ;\n  font-weight: bold ;\n  font-size: larger }\n\np.sidebar-subtitle {\n  font-family: sans-serif ;\n  font-weight: bold }\n\np.topic-title {\n  font-weight: bold }\n\npre.address {\n  margin-bottom: 0 ;\n  margin-top: 0 ;\n  font-family: serif ;\n  font-size: 100% }\n\npre.literal-block, pre.doctest-block {\n  margin-left: 2em ;\n  margin-right: 2em ;\n  background-color: #eeeeee }\n\nspan.classifier {\n  font-family: sans-serif ;\n  font-style: oblique }\n\nspan.classifier-delimiter {\n  font-family: sans-serif ;\n  font-weight: bold }\n\nspan.interpreted {\n  font-family: sans-serif }\n\nspan.option {\n  white-space: nowrap }\n\nspan.pre {\n  white-space: pre }\n\nspan.problematic {\n  color: red }\n\nspan.section-subtitle {\n  /* font-size relative to parent (h1..h6 element) */\n  font-size: 80% }\n\ntable.citation {\n  border-left: solid 1px gray;\n  margin-left: 1px }\n\ntable.docinfo {\n  margin: 2em 4em }\n\n/*\ntable.docutils {\n  margin-top: 0.5em ;\n  margin-bottom: 0.5em }\n*/\n\ntable.footnote {\n  border-left: solid 1px black;\n  margin-left: 1px ;\n  font-size: 80% }\n  }\n\ntable.docutils td, table.docutils th,\ntable.docinfo td, table.docinfo th {\n  padding-left: 0.5em ;\n  padding-right: 0.5em ;\n  vertical-align: top }\n\ntable.docutils th.field-name, table.docinfo th.docinfo-name {\n  font-weight: bold ;\n  text-align: left ;\n  white-space: nowrap ;\n  padding-left: 0 }\n\nh1 tt.docutils, h2 tt.docutils, h3 tt.docutils,\nh4 tt.docutils, h5 tt.docutils, h6 tt.docutils {\n  font-size: 100% }\n\n/*\ntt.docutils {\n  background-color: #eeeeee }\n*/\n\nul.auto-toc {\n  list-style-type: none }\n\n/* customizations by kward */\n\nh1 { font-size: 133%; border-top:1px solid #CCCCFF; }\nh1.title { font-size: 150%; border-top:0px; padding-top: 1em; }\n/* div.document { font-size: 90% } */\n\n\u003c/style\u003e\n\u003c/head\u003e\n\u003cbody\u003e\n\u003cdiv class=\"document\" id=\"shflags-1-0-x-readme\"\u003e\n\u003ch1 class=\"title\"\u003eshFlags 1.0.x README\u003c/h1\u003e\n\n\u003cdiv class=\"section\" id=\"code-google-com\"\u003e\n\u003ch1\u003ecode.google.com\u003c/h1\u003e\n\u003cp\u003eThis project is stored on code.google.com as \u003ca class=\"reference external\" href=\"http://code.google.com/p/shflags/\"\u003ehttp://code.google.com/p/shflags/\u003c/a\u003e.\nDocumentation is available there, as are all releases and source code. The\nsource code is stored in Subversion and can be accessed using the following\ninformation.\u003c/p\u003e\n\u003cp\u003eBrowse the code in a web browser:\u003c/p\u003e\n\u003cul class=\"simple\"\u003e\n\u003cli\u003e\u003ca class=\"reference external\" href=\"http://code.google.com/p/shflags/source/browse\"\u003ehttp://code.google.com/p/shflags/source/browse\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003esvn \u0026gt; trunk \u0026gt; source \u0026gt; 1.0\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eCheck out the code locally\u003c/p\u003e\n\u003cpre class=\"literal-block\"\u003e\n$ svn checkout http://shflags.googlecode.com/svn/trunk/ shflags-read-only\n\u003c/pre\u003e\n\u003cp\u003eDocumentation is available on the web at\n\u003ca class=\"reference external\" href=\"http://code.google.com/p/shflags/wiki/Documentation10x\"\u003ehttp://code.google.com/p/shflags/wiki/Documentation10x\u003c/a\u003e.\u003c/p\u003e\n\u003c/div\u003e\n\u003cdiv class=\"section\" id=\"making-a-release\"\u003e\n\u003ch1\u003eMaking a release\u003c/h1\u003e\n\u003cp\u003eFor these steps, it is assumed we are working with release 1.0.0.\u003c/p\u003e\n\u003cp\u003eSteps:\u003c/p\u003e\n\u003cul class=\"simple\"\u003e\n\u003cli\u003ewrite release notes\u003c/li\u003e\n\u003cli\u003eupdate version\u003c/li\u003e\n\u003cli\u003efinish changelog\u003c/li\u003e\n\u003cli\u003echeck all the code in\u003c/li\u003e\n\u003cli\u003etag the release\u003c/li\u003e\n\u003cli\u003eexport the release\u003c/li\u003e\n\u003cli\u003ecreate tarball\u003c/li\u003e\n\u003cli\u003emd5sum the tarball and sign with gpg\u003c/li\u003e\n\u003cli\u003eupdate website\u003c/li\u003e\n\u003cli\u003epost to code.google.com and Freshmeat\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"section\" id=\"write-release-notes\"\u003e\n\u003ch2\u003eWrite Release Notes\u003c/h2\u003e\n\u003cp\u003eThis should be pretty self explainatory. Use one of the release notes from a\nprevious release as an example.\u003c/p\u003e\n\u003c/div\u003e\n\u003cdiv class=\"section\" id=\"update-version\"\u003e\n\u003ch2\u003eUpdate Version\u003c/h2\u003e\n\u003cp\u003eEdit \u003ctt class=\"docutils literal\"\u003e\u003cspan class=\"pre\"\u003esrc/shflags\u003c/span\u003e\u003c/tt\u003e and change the version number in the \u003ctt class=\"docutils literal\"\u003e\u003cspan class=\"pre\"\u003eFLAGS_VERSION\u003c/span\u003e\u003c/tt\u003e\nvariable.\u003c/p\u003e\n\u003c/div\u003e\n\u003cdiv class=\"section\" id=\"finish-documentation\"\u003e\n\u003ch2\u003eFinish Documentation\u003c/h2\u003e\n\u003cp\u003eMake sure that any remaning changes get put into the \u003ctt class=\"docutils literal\"\u003e\u003cspan class=\"pre\"\u003eCHANGES-X.X.txt\u003c/span\u003e\u003c/tt\u003e file.\u003c/p\u003e\n\u003cp\u003eFinish writing the \u003ctt class=\"docutils literal\"\u003e\u003cspan class=\"pre\"\u003eRELEASE_NOTES-X.X.X.txt\u003c/span\u003e\u003c/tt\u003e. Once it is finished, run it\nthrough the \u003cstrong\u003efmt\u003c/strong\u003e command to make it pretty. (This assumes the lines weren't\nalready wrapped at 80 chars when the file was edited.)\u003c/p\u003e\n\u003cpre class=\"literal-block\"\u003e\n$ fmt -w 80 RELEASE_NOTES-2.0.0.txt \u0026gt;RELEASE_NOTES-2.0.0.txt.new\n$ mv RELEASE_NOTES-2.0.0.txt.new RELEASE_NOTES-2.0.0.txt\n\u003c/pre\u003e\n\u003cp\u003eWe want to have an up-to-date version of the documentation in the release, so\nwe'd better build it.\u003c/p\u003e\n\u003cpre class=\"literal-block\"\u003e\n$ pwd\n.../shflags/source/1.0\n$ rst2html --stylesheet-path=doc/rst2html.css README.txt \u0026gt;README.html\n\u003c/pre\u003e\n\u003c/div\u003e\n\u003cdiv class=\"section\" id=\"check-in-all-the-code\"\u003e\n\u003ch2\u003eCheck In All the Code\u003c/h2\u003e\n\u003cp\u003eThis step is pretty self-explainatory\u003c/p\u003e\n\u003cpre class=\"literal-block\"\u003e\n$ pwd\n.../shflags/source/1.0\n$ svn ci -m \u0026quot;finalizing 1.0.0 release\u0026quot;\n\u003c/pre\u003e\n\u003c/div\u003e\n\u003cdiv class=\"section\" id=\"tag-the-release\"\u003e\n\u003ch2\u003eTag the Release\u003c/h2\u003e\n\u003cpre class=\"literal-block\"\u003e\n$ cd ..\n$ pwd\n.../shflags/source\n$ ls\n1.0\n$ svn cp -m \u0026quot;Release 1.0.0\u0026quot; 1.0 https://shflags.googlecode.com/svn/tags/1.0.0\n\u003c/pre\u003e\n\u003c/div\u003e\n\u003cdiv class=\"section\" id=\"export-the-release\"\u003e\n\u003ch2\u003eExport the Release\u003c/h2\u003e\n\u003cpre class=\"literal-block\"\u003e\n$ cd ../builds\n$ pwd\n.../shflags/builds\n$ svn export https://shflags.googlecode.com/svn/tags/1.0.0 shflags-1.0.0\n\u003c/pre\u003e\n\u003c/div\u003e\n\u003cdiv class=\"section\" id=\"create-the-tarball\"\u003e\n\u003ch2\u003eCreate the tarball\u003c/h2\u003e\n\u003cpre class=\"literal-block\"\u003e\n$ tar cfz ../releases/shflags-1.0.0.tgz shflags-1.0.0\n\u003c/pre\u003e\n\u003c/div\u003e\n\u003cdiv class=\"section\" id=\"sign-the-tarball-with-gpg\"\u003e\n\u003ch2\u003eSign the tarball with gpg\u003c/h2\u003e\n\u003cpre class=\"literal-block\"\u003e\n$ cd ../releases\n$ gpg --default-key kate.ward\u0026#64;forestent.com --detach-sign shflags-1.0.0.tgz\n\u003c/pre\u003e\n\u003c/div\u003e\n\u003cdiv class=\"section\" id=\"post-the-release\"\u003e\n\u003ch2\u003ePost the release\u003c/h2\u003e\n\u003cp\u003eTo post the release, the ProjectInfo page needs to be updated with the release\ninfo (release, date, and MD5), and the release with GPG signature needs to\nuploaded.\u003c/p\u003e\n\u003c/div\u003e\n\u003cdiv class=\"section\" id=\"post-to-the-web\"\u003e\n\u003ch2\u003ePost to the Web\u003c/h2\u003e\n\u003cul class=\"simple\"\u003e\n\u003cli\u003e\u003ca class=\"reference external\" href=\"http://shflags.googlecode.com/\"\u003ehttp://shflags.googlecode.com/\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca class=\"reference external\" href=\"http://freshmeat.net/\"\u003ehttp://freshmeat.net/\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/div\u003e\n\u003c/div\u003e\n\u003cdiv class=\"section\" id=\"appendix\"\u003e\n\u003ch1\u003eAppendix\u003c/h1\u003e\n\u003cdiv class=\"section\" id=\"related-documentation\"\u003e\n\u003ch2\u003eRelated Documentation\u003c/h2\u003e\n\u003ctable class=\"docutils field-list\" frame=\"void\" rules=\"none\"\u003e\n\u003ccol class=\"field-name\" /\u003e\n\u003ccol class=\"field-body\" /\u003e\n\u003ctbody valign=\"top\"\u003e\n\u003ctr class=\"field\"\u003e\u003cth class=\"field-name\"\u003egoogle-gflags:\u003c/th\u003e\u003ctd class=\"field-body\"\u003e\u003ca class=\"reference external\" href=\"http://code.google.com/p/google-gflags/\"\u003ehttp://code.google.com/p/google-gflags/\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c/div\u003e\n\u003cdiv class=\"section\" id=\"miscellaneous\"\u003e\n\u003ch2\u003eMiscellaneous\u003c/h2\u003e\n\u003cp\u003eThis document is written using the Restructured Text format to make it easily\nparsable into an HTML file.\u003c/p\u003e\n\u003c!-- generate HTML using rst2html from Docutils of --\u003e\n\u003c!-- http://docutils.sourceforge.net/ --\u003e\n\u003c!--  --\u003e\n\u003c!-- vim:fileencoding=latin1:ft=rst:spell:tw=80 --\u003e\n\u003c!-- $Revision$ --\u003e\n\u003c/div\u003e\n\u003c/div\u003e\n\u003c/div\u003e\n\u003c/body\u003e\n\u003c/html\u003e\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdeviantony%2Fshflags","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdeviantony%2Fshflags","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdeviantony%2Fshflags/lists"}