[{"path":"https://rundel.github.io/ghclass/LICENSE.html","id":null,"dir":"","previous_headings":"","what":"GNU General Public License","title":"GNU General Public License","text":"Version 3, 29 June 2007Copyright © 2007 Free Software Foundation, Inc. <http://fsf.org/> Everyone permitted copy distribute verbatim copies license document, changing allowed.","code":""},{"path":"https://rundel.github.io/ghclass/LICENSE.html","id":"preamble","dir":"","previous_headings":"","what":"Preamble","title":"GNU General Public License","text":"GNU General Public License free, copyleft license software kinds works. licenses software practical works designed take away freedom share change works. contrast, GNU General Public License intended guarantee freedom share change versions program–make sure remains free software users. , Free Software Foundation, use GNU General Public License software; applies also work released way authors. can apply programs, . speak free software, referring freedom, price. General Public Licenses designed make sure freedom distribute copies free software (charge wish), receive source code can get want , can change software use pieces new free programs, know can things. protect rights, need prevent others denying rights asking surrender rights. Therefore, certain responsibilities distribute copies software, modify : responsibilities respect freedom others. example, distribute copies program, whether gratis fee, must pass recipients freedoms received. must make sure , , receive can get source code. must show terms know rights. Developers use GNU GPL protect rights two steps: (1) assert copyright software, (2) offer License giving legal permission copy, distribute /modify . developers’ authors’ protection, GPL clearly explains warranty free software. users’ authors’ sake, GPL requires modified versions marked changed, problems attributed erroneously authors previous versions. devices designed deny users access install run modified versions software inside , although manufacturer can . fundamentally incompatible aim protecting users’ freedom change software. systematic pattern abuse occurs area products individuals use, precisely unacceptable. Therefore, designed version GPL prohibit practice products. problems arise substantially domains, stand ready extend provision domains future versions GPL, needed protect freedom users. Finally, every program threatened constantly software patents. States allow patents restrict development use software general-purpose computers, , wish avoid special danger patents applied free program make effectively proprietary. prevent , GPL assures patents used render program non-free. precise terms conditions copying, distribution modification follow.","code":""},{"path":[]},{"path":"https://rundel.github.io/ghclass/LICENSE.html","id":"id_0-definitions","dir":"","previous_headings":"TERMS AND CONDITIONS","what":"0. Definitions","title":"GNU General Public License","text":"“License” refers version 3 GNU General Public License. “Copyright” also means copyright-like laws apply kinds works, semiconductor masks. “Program” refers copyrightable work licensed License. licensee addressed “”. “Licensees” “recipients” may individuals organizations. “modify” work means copy adapt part work fashion requiring copyright permission, making exact copy. resulting work called “modified version” earlier work work “based ” earlier work. “covered work” means either unmodified Program work based Program. “propagate” work means anything , without permission, make directly secondarily liable infringement applicable copyright law, except executing computer modifying private copy. Propagation includes copying, distribution (without modification), making available public, countries activities well. “convey” work means kind propagation enables parties make receive copies. Mere interaction user computer network, transfer copy, conveying. interactive user interface displays “Appropriate Legal Notices” extent includes convenient prominently visible feature (1) displays appropriate copyright notice, (2) tells user warranty work (except extent warranties provided), licensees may convey work License, view copy License. interface presents list user commands options, menu, prominent item list meets criterion.","code":""},{"path":"https://rundel.github.io/ghclass/LICENSE.html","id":"id_1-source-code","dir":"","previous_headings":"TERMS AND CONDITIONS","what":"1. Source Code","title":"GNU General Public License","text":"“source code” work means preferred form work making modifications . “Object code” means non-source form work. “Standard Interface” means interface either official standard defined recognized standards body, , case interfaces specified particular programming language, one widely used among developers working language. “System Libraries” executable work include anything, work whole, () included normal form packaging Major Component, part Major Component, (b) serves enable use work Major Component, implement Standard Interface implementation available public source code form. “Major Component”, context, means major essential component (kernel, window system, ) specific operating system () executable work runs, compiler used produce work, object code interpreter used run . “Corresponding Source” work object code form means source code needed generate, install, (executable work) run object code modify work, including scripts control activities. However, include work’s System Libraries, general-purpose tools generally available free programs used unmodified performing activities part work. example, Corresponding Source includes interface definition files associated source files work, source code shared libraries dynamically linked subprograms work specifically designed require, intimate data communication control flow subprograms parts work. Corresponding Source need include anything users can regenerate automatically parts Corresponding Source. Corresponding Source work source code form work.","code":""},{"path":"https://rundel.github.io/ghclass/LICENSE.html","id":"id_2-basic-permissions","dir":"","previous_headings":"TERMS AND CONDITIONS","what":"2. Basic Permissions","title":"GNU General Public License","text":"rights granted License granted term copyright Program, irrevocable provided stated conditions met. License explicitly affirms unlimited permission run unmodified Program. output running covered work covered License output, given content, constitutes covered work. License acknowledges rights fair use equivalent, provided copyright law. may make, run propagate covered works convey, without conditions long license otherwise remains force. may convey covered works others sole purpose make modifications exclusively , provide facilities running works, provided comply terms License conveying material control copyright. thus making running covered works must exclusively behalf, direction control, terms prohibit making copies copyrighted material outside relationship . Conveying circumstances permitted solely conditions stated . Sublicensing allowed; section 10 makes unnecessary.","code":""},{"path":"https://rundel.github.io/ghclass/LICENSE.html","id":"id_3-protecting-users-legal-rights-from-anti-circumvention-law","dir":"","previous_headings":"TERMS AND CONDITIONS","what":"3. Protecting Users’ Legal Rights From Anti-Circumvention Law","title":"GNU General Public License","text":"covered work shall deemed part effective technological measure applicable law fulfilling obligations article 11 WIPO copyright treaty adopted 20 December 1996, similar laws prohibiting restricting circumvention measures. convey covered work, waive legal power forbid circumvention technological measures extent circumvention effected exercising rights License respect covered work, disclaim intention limit operation modification work means enforcing, work’s users, third parties’ legal rights forbid circumvention technological measures.","code":""},{"path":"https://rundel.github.io/ghclass/LICENSE.html","id":"id_4-conveying-verbatim-copies","dir":"","previous_headings":"TERMS AND CONDITIONS","what":"4. Conveying Verbatim Copies","title":"GNU General Public License","text":"may convey verbatim copies Program’s source code receive , medium, provided conspicuously appropriately publish copy appropriate copyright notice; keep intact notices stating License non-permissive terms added accord section 7 apply code; keep intact notices absence warranty; give recipients copy License along Program. may charge price price copy convey, may offer support warranty protection fee.","code":""},{"path":"https://rundel.github.io/ghclass/LICENSE.html","id":"id_5-conveying-modified-source-versions","dir":"","previous_headings":"TERMS AND CONDITIONS","what":"5. Conveying Modified Source Versions","title":"GNU General Public License","text":"may convey work based Program, modifications produce Program, form source code terms section 4, provided also meet conditions: ) work must carry prominent notices stating modified , giving relevant date. b) work must carry prominent notices stating released License conditions added section 7. requirement modifies requirement section 4 “keep intact notices”. c) must license entire work, whole, License anyone comes possession copy. License therefore apply, along applicable section 7 additional terms, whole work, parts, regardless packaged. License gives permission license work way, invalidate permission separately received . d) work interactive user interfaces, must display Appropriate Legal Notices; however, Program interactive interfaces display Appropriate Legal Notices, work need make . compilation covered work separate independent works, nature extensions covered work, combined form larger program, volume storage distribution medium, called “aggregate” compilation resulting copyright used limit access legal rights compilation’s users beyond individual works permit. Inclusion covered work aggregate cause License apply parts aggregate.","code":""},{"path":"https://rundel.github.io/ghclass/LICENSE.html","id":"id_6-conveying-non-source-forms","dir":"","previous_headings":"TERMS AND CONDITIONS","what":"6. Conveying Non-Source Forms","title":"GNU General Public License","text":"may convey covered work object code form terms sections 4 5, provided also convey machine-readable Corresponding Source terms License, one ways: ) Convey object code , embodied , physical product (including physical distribution medium), accompanied Corresponding Source fixed durable physical medium customarily used software interchange. b) Convey object code , embodied , physical product (including physical distribution medium), accompanied written offer, valid least three years valid long offer spare parts customer support product model, give anyone possesses object code either (1) copy Corresponding Source software product covered License, durable physical medium customarily used software interchange, price reasonable cost physically performing conveying source, (2) access copy Corresponding Source network server charge. c) Convey individual copies object code copy written offer provide Corresponding Source. alternative allowed occasionally noncommercially, received object code offer, accord subsection 6b. d) Convey object code offering access designated place (gratis charge), offer equivalent access Corresponding Source way place charge. need require recipients copy Corresponding Source along object code. place copy object code network server, Corresponding Source may different server (operated third party) supports equivalent copying facilities, provided maintain clear directions next object code saying find Corresponding Source. Regardless server hosts Corresponding Source, remain obligated ensure available long needed satisfy requirements. e) Convey object code using peer--peer transmission, provided inform peers object code Corresponding Source work offered general public charge subsection 6d. separable portion object code, whose source code excluded Corresponding Source System Library, need included conveying object code work. “User Product” either (1) “consumer product”, means tangible personal property normally used personal, family, household purposes, (2) anything designed sold incorporation dwelling. determining whether product consumer product, doubtful cases shall resolved favor coverage. particular product received particular user, “normally used” refers typical common use class product, regardless status particular user way particular user actually uses, expects expected use, product. product consumer product regardless whether product substantial commercial, industrial non-consumer uses, unless uses represent significant mode use product. “Installation Information” User Product means methods, procedures, authorization keys, information required install execute modified versions covered work User Product modified version Corresponding Source. information must suffice ensure continued functioning modified object code case prevented interfered solely modification made. convey object code work section , , specifically use , User Product, conveying occurs part transaction right possession use User Product transferred recipient perpetuity fixed term (regardless transaction characterized), Corresponding Source conveyed section must accompanied Installation Information. requirement apply neither third party retains ability install modified object code User Product (example, work installed ROM). requirement provide Installation Information include requirement continue provide support service, warranty, updates work modified installed recipient, User Product modified installed. Access network may denied modification materially adversely affects operation network violates rules protocols communication across network. Corresponding Source conveyed, Installation Information provided, accord section must format publicly documented (implementation available public source code form), must require special password key unpacking, reading copying.","code":""},{"path":"https://rundel.github.io/ghclass/LICENSE.html","id":"id_7-additional-terms","dir":"","previous_headings":"TERMS AND CONDITIONS","what":"7. Additional Terms","title":"GNU General Public License","text":"“Additional permissions” terms supplement terms License making exceptions one conditions. Additional permissions applicable entire Program shall treated though included License, extent valid applicable law. additional permissions apply part Program, part may used separately permissions, entire Program remains governed License without regard additional permissions. convey copy covered work, may option remove additional permissions copy, part . (Additional permissions may written require removal certain cases modify work.) may place additional permissions material, added covered work, can give appropriate copyright permission. Notwithstanding provision License, material add covered work, may (authorized copyright holders material) supplement terms License terms: ) Disclaiming warranty limiting liability differently terms sections 15 16 License; b) Requiring preservation specified reasonable legal notices author attributions material Appropriate Legal Notices displayed works containing ; c) Prohibiting misrepresentation origin material, requiring modified versions material marked reasonable ways different original version; d) Limiting use publicity purposes names licensors authors material; e) Declining grant rights trademark law use trade names, trademarks, service marks; f) Requiring indemnification licensors authors material anyone conveys material (modified versions ) contractual assumptions liability recipient, liability contractual assumptions directly impose licensors authors. non-permissive additional terms considered “restrictions” within meaning section 10. Program received , part , contains notice stating governed License along term restriction, may remove term. license document contains restriction permits relicensing conveying License, may add covered work material governed terms license document, provided restriction survive relicensing conveying. add terms covered work accord section, must place, relevant source files, statement additional terms apply files, notice indicating find applicable terms. Additional terms, permissive non-permissive, may stated form separately written license, stated exceptions; requirements apply either way.","code":""},{"path":"https://rundel.github.io/ghclass/LICENSE.html","id":"id_8-termination","dir":"","previous_headings":"TERMS AND CONDITIONS","what":"8. Termination","title":"GNU General Public License","text":"may propagate modify covered work except expressly provided License. attempt otherwise propagate modify void, automatically terminate rights License (including patent licenses granted third paragraph section 11). However, cease violation License, license particular copyright holder reinstated () provisionally, unless copyright holder explicitly finally terminates license, (b) permanently, copyright holder fails notify violation reasonable means prior 60 days cessation. Moreover, license particular copyright holder reinstated permanently copyright holder notifies violation reasonable means, first time received notice violation License (work) copyright holder, cure violation prior 30 days receipt notice. Termination rights section terminate licenses parties received copies rights License. rights terminated permanently reinstated, qualify receive new licenses material section 10.","code":""},{"path":"https://rundel.github.io/ghclass/LICENSE.html","id":"id_9-acceptance-not-required-for-having-copies","dir":"","previous_headings":"TERMS AND CONDITIONS","what":"9. Acceptance Not Required for Having Copies","title":"GNU General Public License","text":"required accept License order receive run copy Program. Ancillary propagation covered work occurring solely consequence using peer--peer transmission receive copy likewise require acceptance. However, nothing License grants permission propagate modify covered work. actions infringe copyright accept License. Therefore, modifying propagating covered work, indicate acceptance License .","code":""},{"path":"https://rundel.github.io/ghclass/LICENSE.html","id":"id_10-automatic-licensing-of-downstream-recipients","dir":"","previous_headings":"TERMS AND CONDITIONS","what":"10. Automatic Licensing of Downstream Recipients","title":"GNU General Public License","text":"time convey covered work, recipient automatically receives license original licensors, run, modify propagate work, subject License. responsible enforcing compliance third parties License. “entity transaction” transaction transferring control organization, substantially assets one, subdividing organization, merging organizations. propagation covered work results entity transaction, party transaction receives copy work also receives whatever licenses work party’s predecessor interest give previous paragraph, plus right possession Corresponding Source work predecessor interest, predecessor can get reasonable efforts. may impose restrictions exercise rights granted affirmed License. example, may impose license fee, royalty, charge exercise rights granted License, may initiate litigation (including cross-claim counterclaim lawsuit) alleging patent claim infringed making, using, selling, offering sale, importing Program portion .","code":""},{"path":"https://rundel.github.io/ghclass/LICENSE.html","id":"id_11-patents","dir":"","previous_headings":"TERMS AND CONDITIONS","what":"11. Patents","title":"GNU General Public License","text":"“contributor” copyright holder authorizes use License Program work Program based. work thus licensed called contributor’s “contributor version”. contributor’s “essential patent claims” patent claims owned controlled contributor, whether already acquired hereafter acquired, infringed manner, permitted License, making, using, selling contributor version, include claims infringed consequence modification contributor version. purposes definition, “control” includes right grant patent sublicenses manner consistent requirements License. contributor grants non-exclusive, worldwide, royalty-free patent license contributor’s essential patent claims, make, use, sell, offer sale, import otherwise run, modify propagate contents contributor version. following three paragraphs, “patent license” express agreement commitment, however denominated, enforce patent (express permission practice patent covenant sue patent infringement). “grant” patent license party means make agreement commitment enforce patent party. convey covered work, knowingly relying patent license, Corresponding Source work available anyone copy, free charge terms License, publicly available network server readily accessible means, must either (1) cause Corresponding Source available, (2) arrange deprive benefit patent license particular work, (3) arrange, manner consistent requirements License, extend patent license downstream recipients. “Knowingly relying” means actual knowledge , patent license, conveying covered work country, recipient’s use covered work country, infringe one identifiable patents country reason believe valid. , pursuant connection single transaction arrangement, convey, propagate procuring conveyance , covered work, grant patent license parties receiving covered work authorizing use, propagate, modify convey specific copy covered work, patent license grant automatically extended recipients covered work works based . patent license “discriminatory” include within scope coverage, prohibits exercise , conditioned non-exercise one rights specifically granted License. may convey covered work party arrangement third party business distributing software, make payment third party based extent activity conveying work, third party grants, parties receive covered work , discriminatory patent license () connection copies covered work conveyed (copies made copies), (b) primarily connection specific products compilations contain covered work, unless entered arrangement, patent license granted, prior 28 March 2007. Nothing License shall construed excluding limiting implied license defenses infringement may otherwise available applicable patent law.","code":""},{"path":"https://rundel.github.io/ghclass/LICENSE.html","id":"id_12-no-surrender-of-others-freedom","dir":"","previous_headings":"TERMS AND CONDITIONS","what":"12. No Surrender of Others’ Freedom","title":"GNU General Public License","text":"conditions imposed (whether court order, agreement otherwise) contradict conditions License, excuse conditions License. convey covered work satisfy simultaneously obligations License pertinent obligations, consequence may convey . example, agree terms obligate collect royalty conveying convey Program, way satisfy terms License refrain entirely conveying Program.","code":""},{"path":"https://rundel.github.io/ghclass/LICENSE.html","id":"id_13-use-with-the-gnu-affero-general-public-license","dir":"","previous_headings":"TERMS AND CONDITIONS","what":"13. Use with the GNU Affero General Public License","title":"GNU General Public License","text":"Notwithstanding provision License, permission link combine covered work work licensed version 3 GNU Affero General Public License single combined work, convey resulting work. terms License continue apply part covered work, special requirements GNU Affero General Public License, section 13, concerning interaction network apply combination .","code":""},{"path":"https://rundel.github.io/ghclass/LICENSE.html","id":"id_14-revised-versions-of-this-license","dir":"","previous_headings":"TERMS AND CONDITIONS","what":"14. Revised Versions of this License","title":"GNU General Public License","text":"Free Software Foundation may publish revised /new versions GNU General Public License time time. new versions similar spirit present version, may differ detail address new problems concerns. version given distinguishing version number. Program specifies certain numbered version GNU General Public License “later version” applies , option following terms conditions either numbered version later version published Free Software Foundation. Program specify version number GNU General Public License, may choose version ever published Free Software Foundation. Program specifies proxy can decide future versions GNU General Public License can used, proxy’s public statement acceptance version permanently authorizes choose version Program. Later license versions may give additional different permissions. However, additional obligations imposed author copyright holder result choosing follow later version.","code":""},{"path":"https://rundel.github.io/ghclass/LICENSE.html","id":"id_15-disclaimer-of-warranty","dir":"","previous_headings":"TERMS AND CONDITIONS","what":"15. Disclaimer of Warranty","title":"GNU General Public License","text":"WARRANTY PROGRAM, EXTENT PERMITTED APPLICABLE LAW. EXCEPT OTHERWISE STATED WRITING COPYRIGHT HOLDERS /PARTIES PROVIDE PROGRAM “” WITHOUT WARRANTY KIND, EITHER EXPRESSED IMPLIED, INCLUDING, LIMITED , IMPLIED WARRANTIES MERCHANTABILITY FITNESS PARTICULAR PURPOSE. ENTIRE RISK QUALITY PERFORMANCE PROGRAM . PROGRAM PROVE DEFECTIVE, ASSUME COST NECESSARY SERVICING, REPAIR CORRECTION.","code":""},{"path":"https://rundel.github.io/ghclass/LICENSE.html","id":"id_16-limitation-of-liability","dir":"","previous_headings":"TERMS AND CONDITIONS","what":"16. Limitation of Liability","title":"GNU General Public License","text":"EVENT UNLESS REQUIRED APPLICABLE LAW AGREED WRITING COPYRIGHT HOLDER, PARTY MODIFIES /CONVEYS PROGRAM PERMITTED , LIABLE DAMAGES, INCLUDING GENERAL, SPECIAL, INCIDENTAL CONSEQUENTIAL DAMAGES ARISING USE INABILITY USE PROGRAM (INCLUDING LIMITED LOSS DATA DATA RENDERED INACCURATE LOSSES SUSTAINED THIRD PARTIES FAILURE PROGRAM OPERATE PROGRAMS), EVEN HOLDER PARTY ADVISED POSSIBILITY DAMAGES.","code":""},{"path":"https://rundel.github.io/ghclass/LICENSE.html","id":"id_17-interpretation-of-sections-15-and-16","dir":"","previous_headings":"TERMS AND CONDITIONS","what":"17. Interpretation of Sections 15 and 16","title":"GNU General Public License","text":"disclaimer warranty limitation liability provided given local legal effect according terms, reviewing courts shall apply local law closely approximates absolute waiver civil liability connection Program, unless warranty assumption liability accompanies copy Program return fee. END TERMS CONDITIONS","code":""},{"path":"https://rundel.github.io/ghclass/LICENSE.html","id":"how-to-apply-these-terms-to-your-new-programs","dir":"","previous_headings":"","what":"How to Apply These Terms to Your New Programs","title":"GNU General Public License","text":"develop new program, want greatest possible use public, best way achieve make free software everyone can redistribute change terms. , attach following notices program. safest attach start source file effectively state exclusion warranty; file least “copyright” line pointer full notice found. Also add information contact electronic paper mail. program terminal interaction, make output short notice like starts interactive mode: hypothetical commands show w show c show appropriate parts General Public License. course, program’s commands might different; GUI interface, use “box”. also get employer (work programmer) school, , sign “copyright disclaimer” program, necessary. information , apply follow GNU GPL, see <http://www.gnu.org/licenses/>. GNU General Public License permit incorporating program proprietary programs. program subroutine library, may consider useful permit linking proprietary applications library. want , use GNU Lesser General Public License instead License. first, please read <http://www.gnu.org/philosophy/--lgpl.html>.","code":"<one line to give the program's name and a brief idea of what it does.> Copyright (C) 2019 Colin Rundel  This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.  This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more details.  You should have received a copy of the GNU General Public License along with this program.  If not, see <http://www.gnu.org/licenses/>. ghclass Copyright (C) 2019 Colin Rundel This program comes with ABSOLUTELY NO WARRANTY; for details type 'show w'. This is free software, and you are welcome to redistribute it under certain conditions; type 'show c' for details."},{"path":"https://rundel.github.io/ghclass/articles/ghclass.html","id":"what-is-ghclass","dir":"Articles","previous_headings":"","what":"What is ghclass?","title":"Course management with ghclass","text":"ghclass R package designed enable instructors efficiently manage courses GitHub. wide range functionality managing organizations, teams, repositories, users GitHub helps automate tedious repetitive tasks around creating distributing assignments.","code":""},{"path":"https://rundel.github.io/ghclass/articles/ghclass.html","id":"who-is-this-package-for","dir":"Articles","previous_headings":"","what":"Who is this package for?","title":"Course management with ghclass","text":"package everyone! really, ’re instructor uses GitHub class management, e.g. students submit assignments via GitHub repos, package definitely ! package also assumes ’re familiar R, teaching R requirement since package entirely agnostic contents repositories. (’re Python user, see post Python based alternative.)","code":""},{"path":"https://rundel.github.io/ghclass/articles/ghclass.html","id":"what-is-this-vignette-about","dir":"Articles","previous_headings":"","what":"What is this vignette about?","title":"Course management with ghclass","text":"vignette nitty-gritty setting class GitHub ghclass. higher level discussion use Git/GitHub data science education, see paper package authors.","code":""},{"path":"https://rundel.github.io/ghclass/articles/ghclass.html","id":"structuring-your-class-on-github","dir":"Articles","previous_headings":"","what":"Structuring your class on GitHub","title":"Course management with ghclass","text":"general framework outlined . way structure class GitHub, ’s good way, one ghclass optimized work . outline steps achieving structure next section. section meant give high level view course looks like GitHub. One organization per class: teach university, means one semester given course. teach workshops, one workshop. instructor additional instructional staff, e.g. teaching assistants, owners. Going forward refer group people “instructors”. students members. One repo per student (team) per assignment: instructors admin access repos, .e. can clone, read, write every repository. Additionally, can adjust repo team memberships adding removing collaborators assignment repositories well delete . students write access assigned repo, means can clone, read, write assigned repositories delete add remove collaborators . can help minimizing accidents undone makes sure students peek others’ repositories unless explicitly allow . teamwork component course, can also set teams GitHub organization team can given similar repository level access privileges team assignments. Suppose 40 students class, 10 teams 4 students . Suppose also students turn following throughout semester: Individual: 10 homework assignments + 2 exams Teamwork: 8 lab assignments + 1 project , throughout semester need create total 570 repositories. lot repos create permissions set manually! ’s also lot repos clone comes time grade. ghclass addresses problem, ! , however, address problem ’s lot grading. Sorry, ’re ! said, ghclass facilitate setting continuous integration tools using GitHub actions students’ assignment repos. can allow automatic checking feedback time students push repo, future vignette.","code":""},{"path":"https://rundel.github.io/ghclass/articles/ghclass.html","id":"authentication","dir":"Articles","previous_headings":"","what":"Authentication","title":"Course management with ghclass","text":"package uses GitHub personal access tokens authentication GitHub, values can supplied via environmental variables GITHUB_PAT GITHUB_TOKEN saved text ~/.github/token. first time setting personal access token (PAT), generate token browser logging Github (Settings > Developer Settings > Personal access tokens) use usethis::browse_github_token. can test token working correctly using github_test_token() function. everything working correctly see something like following: token working see error message like instead:","code":"github_test_token() #> ✓ Your GitHub PAT authenticated correctly. github_test_token(\"bad token\") #> Warning in gh_auth(x$token %||% gh_token(x$api_url)): Token contains whitespace #> characters #> x Your GitHub PAT failed to authenticate. #> └─GitHub API error (401):  #>   ├─ API message: Bad credentials #>   └─ API docs: https://docs.github.com/rest"},{"path":"https://rundel.github.io/ghclass/articles/ghclass.html","id":"step-by-step-guide","dir":"Articles","previous_headings":"","what":"Step-by-step guide","title":"Course management with ghclass","text":"Start creating organization GitHub course. recommend using course number, semester/quarter, year organization name, e.g. course numbered Sta 199 Spring 18, can use something like Sta199-Sp18. exact format critical, consistent helpful can keep track different courses. Previously, necessary apply GitHub’s Education Discount order obtain ability create private organization repositories free. Recently, GitHub announced providing free unlimited private repositories users, making step longer necessary. GitHub still provides educational benefits available via simple verification process. list available benefits teachers provided teacher toolbox. particular note availability GitHub swag students free GitHub Teams plans academic organizations free GitHub Pro plan educators. optional step, one many want . Approval usually quick, something want night classes begin. Give least week safe.","code":""},{"path":"https://rundel.github.io/ghclass/articles/ghclass.html","id":"permissions","dir":"Articles","previous_headings":"Step-by-step guide","what":"Permissions","title":"Course management with ghclass","text":"default, new GitHub organization defaults repositories readable members, regardless whether private public. clearly undesirable classroom settings. Individual-level permissions can set via “People” tab organization page. recommend course instructor owner organization teaching assistants receive admin privileges. Students receive member privileges. Github allows permissions accessing changing repositories set individual member organization-level (Settings > Member Privileges). suggest organization-level settings . Member repository permissions Base permissions: None Repository creation (Public Private): Disabled Repository forking: Disabled Admin repository permissions Repository visibility change: Disabled Repository deletion transfer: Disabled Issue deletion: Disabled Member team permissions Allow members create teams: Disabled can get quick snapshot organization using org_sitrep function reports permission well important details. can see function indicates current default repository permission settings “read” provides helpful warning enables members view repositories. permission can easily addressed within Organization Settings page Member privileges. Alternatively, can also use ghclass change directly org_set_repo_permission changing setting can check org’s sitrep see warning now resolved.","code":"org_sitrep(\"ghclass-vignette\") #>  #> ── ghclass-vignette sitrep: ───────────────────────────────────────────────────────────── #> • Admins: \"mine-cetinkaya-rundel\", \"rundel\", and \"thereseanders\" #> • Members: 0 #> • Public repos: 0 #> • Private repos: 0 #> • Default repository permission: \"read\" <- Warning: members can currently view all repos #> in this org. #> • Members can create public repos: TRUE #> • Members can create private repos: TRUE org_set_repo_permission(\"ghclass-vignette\", permission = \"none\") #> ✓ Set org \"ghclass-vignette\"'s repo permissions to \"none\". org_sitrep(\"ghclass-vignette\") #>  #> ── ghclass-vignette sitrep: ───────────────────────────────────────────────────────────── #> • Admins: \"mine-cetinkaya-rundel\", \"rundel\", and \"thereseanders\" #> • Members: 0 #> • Public repos: 0 #> • Private repos: 0 #> • Default repository permission: \"none\" #> • Members can create public repos: TRUE #> • Members can create private repos: TRUE"},{"path":"https://rundel.github.io/ghclass/articles/ghclass.html","id":"adding-students-to-the-organization","dir":"Articles","previous_headings":"Step-by-step guide","what":"Adding students to the organization","title":"Course management with ghclass","text":"Next, collect students’ GitHub usernames. can using web form tool choice (e.g. Google Forms, MS Forms, etc.) via quiz survey school’s learning management system (LMS). assume able read data R data frame. example, roster file might look something like following: using student’s school email address unique identifier, also GitHub username also assigned different teams three homework assignments. Using roster data frame, can invite students class’ organization. students notified via email GitHub asking join ghclass-vignette organization. now need wait students accept invitations access organization. can check status acceptances using org_members() org_pending() functions see students accepted accepted invitation. time, students accepted invitation. can now see Anya, Celine, Francis accepted invite still waiting Bruno, Diego, Elijah. Gentle prodding reminder emails often necessary get students organization.","code":"roster = readr::read_csv( system.file(\"roster.csv\", package = \"ghclass\") ) roster #> # A tibble: 6 × 5 #>   email              github          hw1        hw2        hw3        #>   <chr>              <chr>           <chr>      <chr>      <chr>      #> 1 anya@school.edu    ghclass-anya    hw1-team01 hw2-team01 hw3-team01 #> 2 bruno@school.edu   ghclass-bruno   hw1-team02 hw2-team02 hw3-team02 #> 3 celine@school.edu  ghclass-celine  hw1-team03 hw2-team03 hw3-team03 #> 4 diego@school.edu   ghclass-diego   hw1-team01 hw2-team03 hw3-team02 #> 5 elijah@school.edu  ghclass-elijah  hw1-team02 hw2-team01 hw3-team03 #> 6 francis@school.edu ghclass-francis hw1-team03 hw2-team02 hw3-team01 org_invite(org = \"ghclass-vignette\", user = roster$github) #> ✓ Invited user \"ghclass-anya\" to org \"ghclass-vignette\". #> ✓ Invited user \"ghclass-bruno\" to org \"ghclass-vignette\". #> ✓ Invited user \"ghclass-celine\" to org \"ghclass-vignette\". #> ✓ Invited user \"ghclass-diego\" to org \"ghclass-vignette\". #> ✓ Invited user \"ghclass-elijah\" to org \"ghclass-vignette\". #> ✓ Invited user \"ghclass-francis\" to org \"ghclass-vignette\". org_members(\"ghclass-vignette\") #> [1] \"mine-cetinkaya-rundel\" \"rundel\"                \"thereseanders\" org_members(\"ghclass-vignette\", include_admins = FALSE) #> character(0) org_pending(\"ghclass-vignette\") #> [1] \"ghclass-anya\"    \"ghclass-bruno\"   \"ghclass-diego\"   \"ghclass-elijah\"  #> [5] \"ghclass-francis\" \"ghclass-celine\" org_members(\"ghclass-vignette\", include_admins = FALSE) #> [1] \"ghclass-anya\"    \"ghclass-celine\"  \"ghclass-francis\" org_pending(\"ghclass-vignette\") #> [1] \"ghclass-bruno\"  \"ghclass-diego\"  \"ghclass-elijah\""},{"path":"https://rundel.github.io/ghclass/articles/ghclass.html","id":"preparing-an-assignment","dir":"Articles","previous_headings":"Step-by-step guide","what":"Preparing an assignment","title":"Course management with ghclass","text":"described , ghclass uses workflow team individual given access single repo assignment. create repositories use single template repository contains files necessary assignment. Generally, consist things like README.md instructions, scaffolded Rmd R file students enter answers, necessary support files (e.g. data, images, support scripts, etc.). example repository can take look hw1 Statistical Computing course offered Duke Spring 2019. Note repository public viewable anyone, necessary template repository. created repository ready distribute students one suggest step - setting repo’s template status TRUE. GitHub specific detail, makes much efficient create copies repo students. can set option repo’s Settings GitHub, just check box labelled “Template Repository” main settings page, use repo_set_template function. status can also checked ghclass using repo_is_template.","code":"repo_is_template(\"Sta323-Sp19/hw1\") #> [1] FALSE repo_set_template(\"Sta323-Sp19/hw1\") #> ✓ Changed the template status of repo \"Sta323-Sp19/hw1\" to TRUE. repo_is_template(\"Sta323-Sp19/hw1\") #> [1] TRUE"},{"path":"https://rundel.github.io/ghclass/articles/ghclass.html","id":"distributing-a-team-assignment","dir":"Articles","previous_headings":"Step-by-step guide","what":"Distributing a team assignment","title":"Course management with ghclass","text":"created template repository, straight forward process create team individual repositories students. recommended process use org_create_assignment function, high level function takes care underlying steps . start create hw1 team-based assignment given teams roster. Based output can see multiple steps involved process: repositories created mirroring contents “Sta323-Sp19/hw1” new repositories. names repositories given repo argument, case match team names. teams created within organization. students added assignment teams. Teams added repositories “push” permission, allowing write make changes repo.","code":"org_create_assignment(   org = \"ghclass-vignette\",   user = roster$github,   repo = roster$hw1,   team = roster$hw1,   source_repo = \"Sta323-Sp19/hw1\",   private = TRUE ) #> ✓ Mirrored repo \"Sta323-Sp19/hw1\" to repo \"ghclass-vignette/hw1-team01\". #> ✓ Mirrored repo \"Sta323-Sp19/hw1\" to repo \"ghclass-vignette/hw1-team02\". #> ✓ Mirrored repo \"Sta323-Sp19/hw1\" to repo \"ghclass-vignette/hw1-team03\". #> ✓ Created team \"hw1-team01\" in org \"ghclass-vignette\". #> ✓ Created team \"hw1-team02\" in org \"ghclass-vignette\". #> ✓ Created team \"hw1-team03\" in org \"ghclass-vignette\". #> ✓ Added user \"ghclass-anya\" to team \"hw1-team01\". #> ✓ Added user \"ghclass-bruno\" to team \"hw1-team02\". #> ✓ Added user \"ghclass-celine\" to team \"hw1-team03\". #> ✓ Added user \"ghclass-diego\" to team \"hw1-team01\". #> ✓ Added user \"ghclass-elijah\" to team \"hw1-team02\". #> ✓ Added user \"ghclass-francis\" to team \"hw1-team03\". #> ✓ Team \"hw1-team01-1\" given \"push\" access to repo \"ghclass-vignette/hw1-team01\" #> ✓ Team \"hw1-team02\" given \"push\" access to repo \"ghclass-vignette/hw1-team02\" #> ✓ Team \"hw1-team03\" given \"push\" access to repo \"ghclass-vignette/hw1-team03\""},{"path":"https://rundel.github.io/ghclass/articles/ghclass.html","id":"distributing-an-individual-assignment","dir":"Articles","previous_headings":"Step-by-step guide","what":"Distributing an individual assignment","title":"Course management with ghclass","text":"instead hw1 team assignment, wanted distribute individual assignment, can also achieve using org_create_assignment function simply excluding team argument (providing appropriate repo names). underlying process similar difference longer need create teams instead add users directly repositories.","code":"org_create_assignment(   org = \"ghclass-vignette\",   user = roster$github,   repo = paste0(\"hw1-ind-\", roster$github),   source_repo = \"Sta323-Sp19/hw1\",   private = TRUE ) #> ✓ Mirrored repo \"Sta323-Sp19/hw1\" to repo \"ghclass-vignette/hw1-ind-ghclass-anya\". #> ✓ Mirrored repo \"Sta323-Sp19/hw1\" to repo \"ghclass-vignette/hw1-ind-ghclass-bruno\". #> ✓ Mirrored repo \"Sta323-Sp19/hw1\" to repo \"ghclass-vignette/hw1-ind-ghclass-celine\". #> ✓ Mirrored repo \"Sta323-Sp19/hw1\" to repo \"ghclass-vignette/hw1-ind-ghclass-diego\". #> ✓ Mirrored repo \"Sta323-Sp19/hw1\" to repo \"ghclass-vignette/hw1-ind-ghclass-elijah\". #> ✓ Mirrored repo \"Sta323-Sp19/hw1\" to repo \"ghclass-vignette/hw1-ind-ghclass-francis\". #> ✓ User \"ghclass-anya\" given \"push\" access to repo \"ghclass-vignette/hw1-ind-ghclass-anya\" #> ✓ User \"ghclass-bruno\" given \"push\" access to repo \"ghclass-vignette/hw1-ind-ghclass-bruno\" #> ✓ User \"ghclass-celine\" given \"push\" access to repo \"ghclass-vignette/hw1-ind-ghclass-celine\" #> ✓ User \"ghclass-diego\" given \"push\" access to repo \"ghclass-vignette/hw1-ind-ghclass-diego\" #> ✓ User \"ghclass-elijah\" given \"push\" access to repo \"ghclass-vignette/hw1-ind-ghclass-elijah\" #> ✓ User \"ghclass-francis\" given \"push\" access to repo \"ghclass-vignette/hw1-ind-ghclass-francis\""},{"path":"https://rundel.github.io/ghclass/articles/ghclass.html","id":"listing-repos","dir":"Articles","previous_headings":"Step-by-step guide","what":"Listing Repos","title":"Course management with ghclass","text":"repos created can interact ghclass, one common needs simply list repos exist within organization selecting subset .","code":"org_repos(\"ghclass-vignette\") #> [1] \"ghclass-vignette/hw1-team01\"              \"ghclass-vignette/hw1-team02\"              #> [3] \"ghclass-vignette/hw1-team03\"              \"ghclass-vignette/hw1-ind-ghclass-anya\"    #> [5] \"ghclass-vignette/hw1-ind-ghclass-bruno\"   \"ghclass-vignette/hw1-ind-ghclass-celine\"  #> [7] \"ghclass-vignette/hw1-ind-ghclass-diego\"   \"ghclass-vignette/hw1-ind-ghclass-elijah\"  #> [9] \"ghclass-vignette/hw1-ind-ghclass-francis\" org_repos(\"ghclass-vignette\", filter=\"hw1-team\") #> [1] \"ghclass-vignette/hw1-team01\" \"ghclass-vignette/hw1-team02\" #> [3] \"ghclass-vignette/hw1-team03\""},{"path":"https://rundel.github.io/ghclass/articles/ghclass.html","id":"modifying-repos","dir":"Articles","previous_headings":"Step-by-step guide","what":"Modifying Repos","title":"Course management with ghclass","text":"Mirroring repos somewhat heavy handed, since forces target repo identical source repo. cases want add modify single file repository. often occurs distributing assignment discovering issue instructions, data, etc. ghclass allows automate process adding, modifying, replacing files across repos created. process overwrite existing files repo everything done within context git changes can rolled back merged conflict. Lets assume distributed hw1 wrong version README.md included, want replace correct version across hw1 repositories following, updated version looks like following, can also use function repo_modify_file make changes existing files,","code":"file = system.file(\"README.md\", package = \"ghclass\")  repo_add_file(   org_repos(\"ghclass-vignette\",\"hw1-team\"),   message = \"Replace README.md with the correct version\",   file = file,   overwrite = TRUE ) #> ✓ Added file \"README.md\" to repo \"ghclass-vignette/hw1-team01\". #> ✓ Added file \"README.md\" to repo \"ghclass-vignette/hw1-team02\". #> ✓ Added file \"README.md\" to repo \"ghclass-vignette/hw1-team03\". repo_get_readme(\"ghclass-vignette/hw1-team01\", include_details = FALSE) #> [1] \"## Homework 01\\n\\nThis is the corrected version of the HW01 Readme\\n\" repo_modify_file(   repo = org_repos(\"ghclass-vignette\",\"hw1-team\"),   path = \"README.md\",   pattern = \"## Homework 01\\n\\n\",   content = \"Due: Tomorrow\\n\",   method = \"after\" ) #> ✓ Modified file \"ghclass-vignette/hw1-team01/README.md\". #> ✓ Modified file \"ghclass-vignette/hw1-team02/README.md\". #> ✓ Modified file \"ghclass-vignette/hw1-team03/README.md\". repo_get_readme(\"ghclass-vignette/hw1-team01\", include_details = FALSE) #> [1] \"## Homework 01\\n\\nDue: Tomorrow\\nThis is the corrected version of the HW01 Readme\\n\""},{"path":"https://rundel.github.io/ghclass/articles/ghclass.html","id":"collecting-student-work","dir":"Articles","previous_headings":"Step-by-step guide","what":"Collecting Student Work","title":"Course management with ghclass","text":"Eventually students finished work assignment deadline passed. ghclass makes easy collect student work GitHub make accessible local computer grading. make use gert package provide basic git functionality within ghclass.","code":"repo_dir = file.path(tempdir(), \"hw1\") local_repo_clone(   repo = org_repos(\"ghclass-vignette\", \"hw1-team\"),   local_path = repo_dir ) #> ✔ Cloned \"ghclass-vignette/hw1-team01\". #> ✔ Cloned \"ghclass-vignette/hw1-team02\". #> ✔ Cloned \"ghclass-vignette/hw1-team03\". fs::dir_tree(repo_dir) #> /var/folders/v7/wrxd7cdj6l5gzr0191__m9lr0000gn/T//RtmpEkGyKu/hw1 #> ├── hw1-team01 #> │   ├── README.md #> │   ├── fizzbuzz.png #> │   ├── hw1.Rmd #> │   ├── hw1.Rproj #> │   ├── hw1_whitelist.R #> │   └── wercker.yml #> ├── hw1-team02 #> │   ├── README.md #> │   ├── fizzbuzz.png #> │   ├── hw1.Rmd #> │   ├── hw1.Rproj #> │   ├── hw1_whitelist.R #> │   └── wercker.yml #> └── hw1-team03 #>     ├── README.md #>     ├── fizzbuzz.png #>     ├── hw1.Rmd #>     ├── hw1.Rproj #>     ├── hw1_whitelist.R #>     └── wercker.yml"},{"path":"https://rundel.github.io/ghclass/articles/ghclass.html","id":"faq","dir":"Articles","previous_headings":"","what":"FAQ","title":"Course management with ghclass","text":"really need private repositories students’ assignments? might care, law might. example, United States, FERPA regulations stipulate student information kept private. use public repositories, anyone can find enrolled course. Additionally, likely using GitHub issues providing feedback students’ work, potentially even mention grade given assignment. information publicly available anyone. Also, students may want coursework publicly available. bound make mistakes learn whether want piece public profile GitHub. use GitHub Classroom? Actually don’t choose ghclass GitHub Classroom, workflow can use either - just different interfaces underlying API. Generally, mostly matter preference, couple features ghclass present GitHub Classroom: Instructor defined teams – GitHub Classroom asks students choose teammates creating repository. Editing existing repositories – able push changes student repositories assignment released can quite valuable. Command-line interface – like writing R code solve problems may better fit provides greater level control flexibility. default branch repository matter (master vs main)? Yes - recently, GitHub announced changing default branch new repositories platform main master. Details change timeline implementation available . anticipation changes updated ghclass support alternative default branch names across entire package. vast majority use cases see differences GitHub API /Git already use default branch without additional specification. small number cases branch name required, case package longer provides default value prompted specify argument. Hopefully changes minimal impact users terms backwards forwards compatibility. couple quick points change: default GitHub behavior expected change mid-October 2020, existing repositories organizations affected. Currently, recommendation classroom org already using master leave , particularly repos already distributed students. GitHub providing migration tools later year hopefully useful migrating entire organization. new classroom orgs, GitHub wide change, can choose new default branch name organization wide Org > Settings > Repository Defaults > Repository default branch. Note affect newly created repositories, existing repositories.","code":""},{"path":"https://rundel.github.io/ghclass/authors.html","id":null,"dir":"","previous_headings":"","what":"Authors","title":"Authors and Citation","text":"Colin Rundel. Author, maintainer. Mine Cetinkaya-Rundel. Author. Therese Anders. Contributor.","code":""},{"path":"https://rundel.github.io/ghclass/authors.html","id":"citation","dir":"","previous_headings":"","what":"Citation","title":"Authors and Citation","text":"Rundel C, Cetinkaya-Rundel M (2024). ghclass: Tools Managing Classes GitHub. R package version 0.3.0, https://github.com/rundel/ghclass.","code":"@Manual{,   title = {ghclass: Tools for Managing Classes on GitHub},   author = {Colin Rundel and Mine Cetinkaya-Rundel},   year = {2024},   note = {R package version 0.3.0},   url = {https://github.com/rundel/ghclass}, }"},{"path":[]},{"path":"https://rundel.github.io/ghclass/index.html","id":"tools-for-managing-github-class-organization-accounts","dir":"","previous_headings":"","what":"Tools for managing GitHub class organization accounts","title":"Tools for Managing Classes on GitHub","text":"R package designed enable instructors efficiently manage courses GitHub. wide range functionality managing organizations, teams, repositories, users GitHub helps automate tedious repetitive tasks around creating distributing assignments. Install ghclass CRAN: Install development version package GitHub: See package vignette details use package.","code":"install.packages(\"ghclass\") # install.packages(\"remotes\") remotes::install_github(\"rundel/ghclass\")"},{"path":"https://rundel.github.io/ghclass/index.html","id":"peer-review","dir":"","previous_headings":"","what":"Peer Review","title":"Tools for Managing Classes on GitHub","text":"order speed process getting package submitted CRAN decided move peer review functionality peer_review branch time . functionality included CRAN release soon possible, hopefully next, v0.2.1, release. using functionality need access version ghclass can install branch using:","code":"remotes::install_github(\"rundel/ghclass@peer_review\")"},{"path":"https://rundel.github.io/ghclass/index.html","id":"github--default-branches","dir":"","previous_headings":"","what":"GitHub & default branches","title":"Tools for Managing Classes on GitHub","text":"Recently, GitHub announced changing default branch new repositories platform main master. Details change timeline implementation available . anticipation changes updated ghclass support alternative default branch names across entire package. See FAQ Getting Started vignette details.","code":""},{"path":"https://rundel.github.io/ghclass/reference/action.html","id":null,"dir":"Reference","previous_headings":"","what":"Retrieve information about GitHub Actions workflows and their runs. — action","title":"Retrieve information about GitHub Actions workflows and their runs. — action","text":"action_workflows() - retrieve details repo workflows. action_runs() - retrieve details repo workflow runs. action_status() - DEPRECATED - retrieve details recent workflow runs. action_runtime() - retrieves runtime durations workflow runs. action_artifacts() - retrieve details available workflow artifacts. action_artifact_download() - downloads artifact(s) local directory. action_artifact_delete() - deletes artifact(s).","code":""},{"path":"https://rundel.github.io/ghclass/reference/action.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Retrieve information about GitHub Actions workflows and their runs. — action","text":"","code":"action_artifacts(repo, keep_expired = FALSE, which = c(\"latest\", \"all\"))  action_artifact_delete(repo, ids)  action_artifact_download(   repo,   dir,   ids = action_artifacts(repo),   keep_zip = FALSE,   file_pat = \"\",   overwrite = FALSE )  action_runs(   repo,   branch = NULL,   event = NULL,   status = NULL,   created = NULL,   limit = 1 )  action_status(   repo,   branch = NULL,   event = NULL,   status = NULL,   created = NULL,   limit = 1 )  action_runtime(   repo,   branch = NULL,   event = NULL,   status = NULL,   created = NULL,   limit = 1 )  action_workflows(repo, full = FALSE)"},{"path":"https://rundel.github.io/ghclass/reference/action.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Retrieve information about GitHub Actions workflows and their runs. — action","text":"repo Character. Address repository owner/name format. keep_expired Logical. expired artifacts returned. Character. Either \"latest\" return recent artifact \"\" return artifacts. ids Integer data frame. Artifact ids downloaded deleted. data frame passed id column used. dir Character. Path directory artifacts saved. keep_zip Logical. artifact zips saved (TRUE) contents (FALSE). file_pat Character. extracting zip multiple files, regexp pattern match filename. overwrite Logical. existing files overwritten. branch Character. Filter runs associated particular branch. event Character. Filter runs triggered specific event. See possible event names. status Character. Filter runs particular status conclusion (e.g. completed success). created Character. Filter runs given creation date. See date query syntax. limit Numeric. Maximum number workflow runs return. Default 1. Note results chronologically ordered, limit = 1 return recent action run repository. full Logical. workflow columns returned. Default FALSE.","code":""},{"path":"https://rundel.github.io/ghclass/reference/action.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Retrieve information about GitHub Actions workflows and their runs. — action","text":"action_workflows(), action_runs(), action_runtime(), action_artifacts return tibbles containing information requested repos' available workflows, recent workflow runs, workflow runs runtimes, generated artifacts respectively. action_artifact_download() returns character vector containing paths downloaded fules action_artifact_delete() returns invisible data frame containing repository names ids deleted artifacts.","code":""},{"path":"https://rundel.github.io/ghclass/reference/action.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Retrieve information about GitHub Actions workflows and their runs. — action","text":"","code":"if (FALSE) { action_workflows(\"rundel/ghclass\")  action_runs(\"rundel/ghclass\")  action_runtime(c(\"rundel/ghclass\", \"rundel/parsermd\"))  action_artifacts(c(\"rundel/ghclass\", \"rundel/parsermd\")) }"},{"path":"https://rundel.github.io/ghclass/reference/action_badge.html","id":null,"dir":"Reference","previous_headings":"","what":"Add or remove GitHub Actions badges from a repository — action_badge","title":"Add or remove GitHub Actions badges from a repository — action_badge","text":"action_add_badge() - Add GitHub Actions badge file. action_remove_badge() - Remove one GitHub Action badges file.","code":""},{"path":"https://rundel.github.io/ghclass/reference/action_badge.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Add or remove GitHub Actions badges from a repository — action_badge","text":"","code":"action_add_badge(   repo,   workflow = NULL,   where = \"^.\",   line_padding = \"\\n\\n\\n\",   file = \"README.md\" )  action_remove_badge(repo, workflow_pat = \".*?\", file = \"README.md\")"},{"path":"https://rundel.github.io/ghclass/reference/action_badge.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Add or remove GitHub Actions badges from a repository — action_badge","text":"repo Character. Address repository owner/name format. workflow Character. Name workflow. Character. Regex pattern indicating insert badge, defaults beginning target file. line_padding Character. text added badge. file Character. Target file modified, defaults README.md.#' workflow_pat Character. Name workflow removed, regex pattern matches workflow name.","code":""},{"path":"https://rundel.github.io/ghclass/reference/action_badge.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Add or remove GitHub Actions badges from a repository — action_badge","text":"action_add_badge() action_remove_badge() invisibly return list containing results relevant GitHub API call.","code":""},{"path":"https://rundel.github.io/ghclass/reference/branch.html","id":null,"dir":"Reference","previous_headings":"","what":"Create and delete branches in a repository — branch","title":"Create and delete branches in a repository — branch","text":"branch_create() - creates new branch existing GitHub repo. branch_delete() - deletes branch existing GitHub repo. branch_remove() - previous name branch_delete, deprecated.","code":""},{"path":"https://rundel.github.io/ghclass/reference/branch.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Create and delete branches in a repository — branch","text":"","code":"branch_create(repo, branch, new_branch)  branch_delete(repo, branch)  branch_remove(repo, branch)"},{"path":"https://rundel.github.io/ghclass/reference/branch.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Create and delete branches in a repository — branch","text":"repo GitHub repository address owner/repo format. branch Repository branch use. new_branch Name branch create.","code":""},{"path":"https://rundel.github.io/ghclass/reference/branch.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Create and delete branches in a repository — branch","text":"branch_create()branch_remove() invisibly return list containing results relevant GitHub API call.","code":""},{"path":[]},{"path":"https://rundel.github.io/ghclass/reference/branch.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Create and delete branches in a repository — branch","text":"","code":"if (FALSE) { repo_create(\"ghclass-test\", \"test_branch\", auto_init=TRUE)  branch_create(\"ghclass-test/test_branch\", branch = \"main\", new_branch = \"test\") repo_branches(\"ghclass-test/test_branch\")  branch_delete(\"ghclass-test/test_branch\", branch=\"test\") repo_branches(\"ghclass-test/test_branch\")  repo_delete(\"ghclass-test/test_branch\", prompt = FALSE) }"},{"path":"https://rundel.github.io/ghclass/reference/github_api_limit.html","id":null,"dir":"Reference","previous_headings":"","what":"Tools for limiting gh's GitHub api requests. — github_api_limit","title":"Tools for limiting gh's GitHub api requests. — github_api_limit","text":"github_get_api_limit() - returns current limit results returned gh. github_set_api_limit() - sets limit results returned gh.","code":""},{"path":"https://rundel.github.io/ghclass/reference/github_api_limit.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Tools for limiting gh's GitHub api requests. — github_api_limit","text":"","code":"github_get_api_limit()  github_set_api_limit(limit = 10000L)"},{"path":"https://rundel.github.io/ghclass/reference/github_api_limit.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Tools for limiting gh's GitHub api requests. — github_api_limit","text":"limit maximum number records return API request.","code":""},{"path":"https://rundel.github.io/ghclass/reference/github_api_limit.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Tools for limiting gh's GitHub api requests. — github_api_limit","text":"github_get_api_limit() returns single integer value. github_set_api_limit() invisibily returns value limit argument.","code":""},{"path":"https://rundel.github.io/ghclass/reference/github_api_limit.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Tools for limiting gh's GitHub api requests. — github_api_limit","text":"value stored \"ghclass.api.limit\" option globally.","code":""},{"path":"https://rundel.github.io/ghclass/reference/github_api_limit.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Tools for limiting gh's GitHub api requests. — github_api_limit","text":"","code":"github_get_api_limit() #> [1] 10000  github_set_api_limit(500)  github_get_api_limit() #> [1] 500"},{"path":"https://rundel.github.io/ghclass/reference/github_orgs.html","id":null,"dir":"Reference","previous_headings":"","what":"Collect details on the authenticated user's GitHub organization memberships\n(based on the current PAT). — github_orgs","title":"Collect details on the authenticated user's GitHub organization memberships\n(based on the current PAT). — github_orgs","text":"Collect details authenticated user's GitHub organization memberships (based current PAT).","code":""},{"path":"https://rundel.github.io/ghclass/reference/github_orgs.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Collect details on the authenticated user's GitHub organization memberships\n(based on the current PAT). — github_orgs","text":"","code":"github_orgs(quiet = FALSE)"},{"path":"https://rundel.github.io/ghclass/reference/github_orgs.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Collect details on the authenticated user's GitHub organization memberships\n(based on the current PAT). — github_orgs","text":"quiet Logical. status messages shown.","code":""},{"path":"https://rundel.github.io/ghclass/reference/github_orgs.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Collect details on the authenticated user's GitHub organization memberships\n(based on the current PAT). — github_orgs","text":"Returns tibble organization details.","code":""},{"path":"https://rundel.github.io/ghclass/reference/github_orgs.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Collect details on the authenticated user's GitHub organization memberships\n(based on the current PAT). — github_orgs","text":"","code":"if (FALSE) { github_orgs() }"},{"path":"https://rundel.github.io/ghclass/reference/github_token.html","id":null,"dir":"Reference","previous_headings":"","what":"Tools for handling GitHub personal access tokens (PAT) — github_rate_limit","title":"Tools for handling GitHub personal access tokens (PAT) — github_rate_limit","text":"github_get_token - returns user's GitHub personal access token (PAT). github_set_token - defines user's GitHub PAT setting GITHUB_PAT environmental variable. value persist session ends gihub_reset_token() called. github_reset_token - removes value stored GITHUB_PAT environmental variable. github_test_token - checks PAT valid attempting authenticate GitHub API. github_token_scopes - returns vector scopes granted token.","code":""},{"path":"https://rundel.github.io/ghclass/reference/github_token.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Tools for handling GitHub personal access tokens (PAT) — github_rate_limit","text":"","code":"github_rate_limit()  github_graphql_rate_limit()  github_get_token()  github_set_token(token)  github_reset_token()  github_test_token(token = github_get_token())  github_token_scopes(token = github_get_token())"},{"path":"https://rundel.github.io/ghclass/reference/github_token.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Tools for handling GitHub personal access tokens (PAT) — github_rate_limit","text":"token Character. Either literal token, path file containing token.","code":""},{"path":"https://rundel.github.io/ghclass/reference/github_token.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Tools for handling GitHub personal access tokens (PAT) — github_rate_limit","text":"github_get_token() returns current PAT character string gh_pat class. See gh::gh_token() additional details. github_set_token() github_reset_token() return result Sys.setenv() Sys.unsetenv() respectively. github_test_token() invisibly returns logical value, TRUE test passes, FALSE . github_token_scopes() returns character vector granted scopes.","code":""},{"path":"https://rundel.github.io/ghclass/reference/github_token.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Tools for handling GitHub personal access tokens (PAT) — github_rate_limit","text":"package looks personal access token (PAT) following places (order): Value GITHUB_PAT environmental variable. GitHub PAT token(s) stored gitcreds via gitcreds_set(). additional details creating GitHub PAT see usethis vignette Managing Git(Hub) Credentials. wish read entire article, quick start method use: usethis::create_github_token() - create token , gitcreds::gitcreds_set() - securely cache token.","code":""},{"path":"https://rundel.github.io/ghclass/reference/github_token.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Tools for handling GitHub personal access tokens (PAT) — github_rate_limit","text":"","code":"if (FALSE) { github_test_token()  github_token_scopes()  (pat = github_get_token())  github_set_token(\"ghp_BadTokenBadTokenBadTokenBadTokenBadToken\") github_get_token() github_test_token()  github_set_token(pat) }"},{"path":"https://rundel.github.io/ghclass/reference/github_whoami.html","id":null,"dir":"Reference","previous_headings":"","what":"Returns the login of the authenticated user (based on the current PAT). — github_whoami","title":"Returns the login of the authenticated user (based on the current PAT). — github_whoami","text":"Returns login authenticated user (based current PAT).","code":""},{"path":"https://rundel.github.io/ghclass/reference/github_whoami.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Returns the login of the authenticated user (based on the current PAT). — github_whoami","text":"","code":"github_whoami(quiet = FALSE)"},{"path":"https://rundel.github.io/ghclass/reference/github_whoami.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Returns the login of the authenticated user (based on the current PAT). — github_whoami","text":"quiet Logical. status messages shown.","code":""},{"path":"https://rundel.github.io/ghclass/reference/github_whoami.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Returns the login of the authenticated user (based on the current PAT). — github_whoami","text":"Character value containing user login.","code":""},{"path":"https://rundel.github.io/ghclass/reference/github_whoami.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Returns the login of the authenticated user (based on the current PAT). — github_whoami","text":"","code":"if (FALSE) { github_whoami() }"},{"path":"https://rundel.github.io/ghclass/reference/github_with_pat.html","id":null,"dir":"Reference","previous_headings":"","what":"withr-like functions for temporary personal access token — github_with_pat","title":"withr-like functions for temporary personal access token — github_with_pat","text":"Temporarily change GITHUB_PAT environmental variable GitHub authentication. Based withr interface.","code":""},{"path":"https://rundel.github.io/ghclass/reference/github_with_pat.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"withr-like functions for temporary personal access token — github_with_pat","text":"","code":"with_pat(new, code)  local_pat(new, .local_envir = parent.frame())"},{"path":"https://rundel.github.io/ghclass/reference/github_with_pat.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"withr-like functions for temporary personal access token — github_with_pat","text":"new Temporary GitHub access token code Code execute temporary token .local_envir environment use scoping.","code":""},{"path":"https://rundel.github.io/ghclass/reference/github_with_pat.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"withr-like functions for temporary personal access token — github_with_pat","text":"results evaluation code argument.","code":""},{"path":"https://rundel.github.io/ghclass/reference/github_with_pat.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"withr-like functions for temporary personal access token — github_with_pat","text":"new = NA used GITHUB_PAT environment variable unset.","code":""},{"path":"https://rundel.github.io/ghclass/reference/github_with_pat.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"withr-like functions for temporary personal access token — github_with_pat","text":"","code":"if (FALSE) { with_pat(\"1234\", print(github_get_token())) }"},{"path":"https://rundel.github.io/ghclass/reference/issue.html","id":null,"dir":"Reference","previous_headings":"","what":"GitHub Issue related tools — issue","title":"GitHub Issue related tools — issue","text":"issue_create creates new issue. issue_close closes existing issue. issue_edit edits properties existing issue.","code":""},{"path":"https://rundel.github.io/ghclass/reference/issue.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"GitHub Issue related tools — issue","text":"","code":"issue_close(repo, number)  issue_create(   repo,   title,   body,   labels = character(),   assignees = character(),   delay = 0 )  issue_edit(   repo,   number,   title = NULL,   body = NULL,   state = NULL,   milestone = NULL,   labels = list(),   assignees = list() )"},{"path":"https://rundel.github.io/ghclass/reference/issue.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"GitHub Issue related tools — issue","text":"repo Character. Address one repositories owner/name format. number Integer. GitHub issue number. title Character. Title issue. body Character. Content issue. labels Character. Vector labels associate issue assignees Character. Vector logins users assigned issue. delay Numeric. Delay API request. Issue creation secondary rate limit (~ 20/min). state Character. State issue. Either \"open\" \"closed\". milestone Character. number milestone associate issue . users push access can set milestone issues. milestone silently dropped otherwise.","code":""},{"path":"https://rundel.github.io/ghclass/reference/issue.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"GitHub Issue related tools — issue","text":"functions invisibly return list containing results relevant GitHub API call.","code":""},{"path":[]},{"path":"https://rundel.github.io/ghclass/reference/issue.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"GitHub Issue related tools — issue","text":"","code":"if (FALSE) { repo_create(\"ghclass-test\",\"test_issue\")  issue_create(   \"ghclass-test/test_issue\",   title = \"Issue 1\",   body = \"This is an issue\"  )  issue_create(   \"ghclass-test/test_issue\",   title = \"Issue 2\", body = \"This is also issue\",   label = \"Important\" )  issue_create(   \"ghclass-test/test_issue\",   title = \"Issue 3\", body = \"This is also issue\",   label = c(\"Important\", \"Super Important\"),   assignees = \"rundel\" )  issue_close(\"ghclass-test/test_issue\", 1)  issue_edit(   \"ghclass-test/test_issue\", 2,   title = \"New issue 2 title!\",   body = \"Replacement body text\" )  ghclass::repo_issues(\"ghclass-test/test_issue\")  repo_delete(\"ghclass-test/test_issue\", prompt=FALSE) }"},{"path":"https://rundel.github.io/ghclass/reference/local_repo.html","id":null,"dir":"Reference","previous_headings":"","what":"Functions for managing local git repositories — local_repo","title":"Functions for managing local git repositories — local_repo","text":"local_repo_clone() - Clones GitHub repository local directory. local_repo_add() - Equivalent git add - stages file local repository. local_repo_commit() - Equivalent git commit - commits staged files local repository. local_repo_push() - Equivalent git push - push local repository. local_repo_pull() - Equivalent git pull - pull local repository. local_repo_branch() - Equivalent git branch - create branch local repository. local_repo_log() - Equivalent git log - returns data frame git log entries.","code":""},{"path":"https://rundel.github.io/ghclass/reference/local_repo.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Functions for managing local git repositories — local_repo","text":"","code":"local_repo_add(repo_dir, files = \".\")  local_repo_branch(repo_dir, branch)  local_repo_clone(   repo,   local_path = \".\",   branch = NULL,   mirror = FALSE,   verbose = FALSE )  local_repo_commit(repo_dir, message)  local_repo_log(repo_dir, max = 100)  local_repo_pull(repo_dir, verbose = FALSE)  local_repo_push(   repo_dir,   remote = \"origin\",   branch = NULL,   force = FALSE,   prompt = TRUE,   mirror = FALSE,   verbose = FALSE )"},{"path":"https://rundel.github.io/ghclass/reference/local_repo.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Functions for managing local git repositories — local_repo","text":"repo_dir Vector repo directories single directory containing one repos. files Files staged branch Repository branch use. repo GitHub repo address form owner/name. local_path Local directory store cloned repos. mirror Equivalent --mirror verbose Display verbose output. message Commit message max Maximum number log entries retrieve per repo. remote Repository remote use. force Force push? prompt Prompt force push?","code":""},{"path":"https://rundel.github.io/ghclass/reference/local_repo.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Functions for managing local git repositories — local_repo","text":"local_repo_clone() invisibly returns character vector paths local repo directories. local_repo_log() returns tibble containing repository details.` functions invisibly return list containing results relevant call gert.","code":""},{"path":"https://rundel.github.io/ghclass/reference/local_repo.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Functions for managing local git repositories — local_repo","text":"local_repo_* functions depend gert library installed.","code":""},{"path":"https://rundel.github.io/ghclass/reference/local_repo.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Functions for managing local git repositories — local_repo","text":"","code":"if (FALSE) { repo = repo_create(\"ghclass-test\", \"local_repo_test\")  dir = file.path(tempdir(), \"repos\") local_repo = local_repo_clone(repo, dir)  local_repo_log(dir)  # Make a local change and push writeLines(\"Hello World\", file.path(local_repo, \"hello.txt\"))  local_repo_add(local_repo, \"hello.txt\")  local_repo_commit(local_repo, \"Added hello world\")  local_repo_push(local_repo)  repo_commits(repo)  # Pulling remote changes repo_modify_file(repo, \"hello.txt\", pattern = \".*\",  content = \"!!!\", method = \"after\")  local_repo_pull(local_repo)  local_repo_log(dir)  repo_delete(\"ghclass-test/local_repo_test\", prompt=FALSE) }"},{"path":"https://rundel.github.io/ghclass/reference/local_repo_rename.html","id":null,"dir":"Reference","previous_headings":"","what":"Rename local directories using a vector of patterns and replacements. — local_repo_rename","title":"Rename local directories using a vector of patterns and replacements. — local_repo_rename","text":"function meant help renaming local student repos include something useful like Last, First name unique identifier purposes ordering repository folders.","code":""},{"path":"https://rundel.github.io/ghclass/reference/local_repo_rename.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Rename local directories using a vector of patterns and replacements. — local_repo_rename","text":"","code":"local_repo_rename(repo_dir, pattern, replacement)"},{"path":"https://rundel.github.io/ghclass/reference/local_repo_rename.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Rename local directories using a vector of patterns and replacements. — local_repo_rename","text":"repo_dir Character. Vector repo directories single directory containing one repos. pattern Character. One regexp patterns match directory names. replacement Character.  One text strings containing replacement value matched patterns.","code":""},{"path":"https://rundel.github.io/ghclass/reference/local_repo_rename.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Rename local directories using a vector of patterns and replacements. — local_repo_rename","text":"Returns character vector new repo directory paths, NA rename failed.","code":""},{"path":"https://rundel.github.io/ghclass/reference/org_create_assignment.html","id":null,"dir":"Reference","previous_headings":"","what":"Create a team or individual assignment — org_create_assignment","title":"Create a team or individual assignment — org_create_assignment","text":"higher level function combines following steps: Create repos Create teams invite students necessary Add teams individuals repositories Mirror template repository assignment repositories","code":""},{"path":"https://rundel.github.io/ghclass/reference/org_create_assignment.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Create a team or individual assignment — org_create_assignment","text":"","code":"org_create_assignment(   org,   repo,   user,   team = NULL,   source_repo = NULL,   private = TRUE,   add_badges = FALSE )"},{"path":"https://rundel.github.io/ghclass/reference/org_create_assignment.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Create a team or individual assignment — org_create_assignment","text":"org Character. Name GitHub organization. repo Character. Name repo(s) assignment. user Character. GitHub username(s). team Character. Team names, provided individual assignment created. source_repo Character. Address repository use template created repos. private Logical. created repositories private. add_badges Logical. GitHub action badges added README.","code":""},{"path":"https://rundel.github.io/ghclass/reference/org_create_assignment.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Create a team or individual assignment — org_create_assignment","text":"invisible list containing results step.","code":""},{"path":"https://rundel.github.io/ghclass/reference/org_details.html","id":null,"dir":"Reference","previous_headings":"","what":"Obtain details on an organization's repos and teams — org_details","title":"Obtain details on an organization's repos and teams — org_details","text":"org_exists() - returns TRUE organization(s) exist GitHub FALSE otherwise. org_teams() - returns (filtered) vector organization teams. org_team_details() - returns data frame organization teams containing identification permission details. org_repos() - returns (filtered) vector organization repositories. org_repo_search() - search repositories within organization (preferred large organizations). org_repo_stats() - returns tibble repositories belonging GitHub organization along basic statistics repositories.","code":""},{"path":"https://rundel.github.io/ghclass/reference/org_details.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Obtain details on an organization's repos and teams — org_details","text":"","code":"org_exists(org)  org_repo_search(org, name, extra = \"\", full_repo = TRUE)  org_repo_stats(   org,   branch = NULL,   filter = \"\",   filter_type = \"in:name\",   inc_commits = TRUE,   inc_issues = TRUE,   inc_prs = TRUE )  org_repos(   org,   filter = NULL,   exclude = FALSE,   full_repo = TRUE,   sort = c(\"full_name\", \"created\", \"updated\", \"pushed\"),   direction = c(\"asc\", \"desc\"),   type = c(\"all\", \"public\", \"private\", \"forks\", \"sources\", \"member\", \"internal\") )  org_team_details(org)  org_teams(org, filter = NULL, exclude = FALSE, team_type = c(\"name\", \"slug\"))"},{"path":"https://rundel.github.io/ghclass/reference/org_details.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Obtain details on an organization's repos and teams — org_details","text":"org Character. Name GitHub organization(s). name Character. Full partial repo name search within org extra Character. additional search qualifiers, see Searching repositories details. full_repo Logical. full repository address returned (e.g. owner/repo instead just repo). branch Character. branch use counting commits, NULL repo's default branch used. filter Character. Regular expression pattern matching (excluding) results filter_type Character. One GitHub search qualifiers. See documentation details. inc_commits Logical. Include commit statistics (branch, commits, last_update) inc_issues Logical. Include issue statistics (open_issues, closed_issues) inc_prs Logical. Include pull request statistics (open_prs, merged_prs, closed_prs) exclude Logical. entries matching regular expression excluded included. sort Character. Sorting criteria use, can one \"created\", \"updated\", \"pushed\", \"full_name\". direction Character. Sorting order use. type Character. Specifies type repositories want, can one \"\", \"public\", \"private\", \"forks\", \"sources\", \"member\", \"internal\". team_type Character. Either \"slug\" team names slugs \"name\" full team names provided.","code":""},{"path":"https://rundel.github.io/ghclass/reference/org_details.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Obtain details on an organization's repos and teams — org_details","text":"org_exists() returns logical vector. org_teams(), org_repos, org_repo_search() return character vector team repo names. org_team_details() org_repo_stats() return tibbles.","code":""},{"path":"https://rundel.github.io/ghclass/reference/org_details.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Obtain details on an organization's repos and teams — org_details","text":"","code":"if (FALSE) { # Org repos and teams org_repos(\"ghclass-test\")  org_repos(\"ghclass-test\", filter = \"hw1-\")  org_teams(\"ghclass-test\")  org_team_details(\"ghclass-test\") }"},{"path":"https://rundel.github.io/ghclass/reference/org_members.html","id":null,"dir":"Reference","previous_headings":"","what":"Tools for managing organization membership — org_members","title":"Tools for managing organization membership — org_members","text":"org_invite() - invites user(s) GitHub organization. org_remove() - remove user(s) organization (teams within organization). org_members() - returns (filtered) vector organization members. org_pending() - returns (filtered) vector pending organization members. org_admins() - returns vector repository administrators. case non-organization owner (e.g. user account) returns owner's login.","code":""},{"path":"https://rundel.github.io/ghclass/reference/org_members.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Tools for managing organization membership — org_members","text":"","code":"org_admins(org)  org_invite(org, user)  org_members(org, filter = NULL, exclude = FALSE, include_admins = TRUE)  org_pending(org, filter = NULL, exclude = FALSE)  org_remove(org, user, prompt = TRUE)"},{"path":"https://rundel.github.io/ghclass/reference/org_members.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Tools for managing organization membership — org_members","text":"org Character. Name GitHub organization(s). user Character. GitHub username(s). filter Character. Regular expression pattern matching (excluding) results exclude Logical. entries matching regular expression excluded included. include_admins Logical. admin users included results. prompt Logical. Prompt removing member organization.","code":""},{"path":"https://rundel.github.io/ghclass/reference/org_members.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Tools for managing organization membership — org_members","text":"org_members(), org_pending(), org_admins return character vector GitHub account names. org_invite() org_remove() invisibly return list containing results relevant GitHub API calls.","code":""},{"path":"https://rundel.github.io/ghclass/reference/org_members.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Tools for managing organization membership — org_members","text":"","code":"if (FALSE) { # Org Details org_admins(\"ghclass-test\")  org_admins(\"rundel\") # User, not an organization   # Org Membership - Invite, Status, and Remove students = c(\"ghclass-anya\", \"ghclass-bruno\", \"ghclass-celine\",              \"ghclass-diego\", \"ghclass-elijah\",\"ghclass-francis\")  org_invite(\"ghclass-test\", students)  org_members(\"ghclass-test\")  org_pending(\"ghclass-test\")  org_remove(\"ghclass-test\", students, prompt = FALSE)  org_pending(\"ghclass-test\") }"},{"path":"https://rundel.github.io/ghclass/reference/org_perm.html","id":null,"dir":"Reference","previous_headings":"","what":"Organization permissions — org_perm","title":"Organization permissions — org_perm","text":"org_sitrep() - Provides situation report GitHub organization. org_set_repo_permission() - Change default permission level org repositories.","code":""},{"path":"https://rundel.github.io/ghclass/reference/org_perm.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Organization permissions — org_perm","text":"","code":"org_sitrep(org)  org_set_repo_permission(org, permission = c(\"none\", \"read\", \"write\", \"admin\"))"},{"path":"https://rundel.github.io/ghclass/reference/org_perm.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Organization permissions — org_perm","text":"org Character. Name GitHub organization(s). permission Default permission level members organization repositories: read - can pull, push administer repository. write - can pull push, administer repository. admin - can pull, push, administer repository. none - permissions granted default.","code":""},{"path":"https://rundel.github.io/ghclass/reference/org_perm.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Organization permissions — org_perm","text":"org_sitep() invisibly returns org argument. org_set_repo_permission() invisibly return result relevant GitHub API call.","code":""},{"path":"https://rundel.github.io/ghclass/reference/org_perm.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Organization permissions — org_perm","text":"","code":"if (FALSE) { org_sitrep(\"ghclass-test\")  org_set_repo_permission(\"ghclass-test\", \"read\")  org_sitrep(\"ghclass-test\")  # Cleanup org_set_repo_permission(\"ghclass-test\", \"none\") }"},{"path":"https://rundel.github.io/ghclass/reference/pages.html","id":null,"dir":"Reference","previous_headings":"","what":"Retrieve information about GitHub Pages sites and builds. — pages","title":"Retrieve information about GitHub Pages sites and builds. — pages","text":"pages_enabled() - returns TRUE Pages site exists repo. pages_status() - returns detailed information repo's Pages site. pages_create() - creates Pages site provided repos. pages_delete() - deletes Pages site provided repos.","code":""},{"path":"https://rundel.github.io/ghclass/reference/pages.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Retrieve information about GitHub Pages sites and builds. — pages","text":"","code":"pages_enabled(repo)  pages_status(repo)  pages_create(   repo,   build_type = c(\"legacy\", \"workflow\"),   branch = \"main\",   path = \"/docs\" )  pages_delete(repo)"},{"path":"https://rundel.github.io/ghclass/reference/pages.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Retrieve information about GitHub Pages sites and builds. — pages","text":"repo Character. Address repositories owner/name format. build_type Character. Either \"workflow\" \"legacy\" - former uses GitHub actions build publish site (requires workflow file achieve ). branch Character. Repository branch publish. path Character. Repository path publish.","code":""},{"path":"https://rundel.github.io/ghclass/reference/pages.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Retrieve information about GitHub Pages sites and builds. — pages","text":"pages_enabled() returns named logical vector - TRUE Pages site exists, FALSE otherwise. pages_status() returns tibble containing details Pages sites. pages_create() & pages_delete() return invisible list containing API responses.","code":""},{"path":"https://rundel.github.io/ghclass/reference/pages.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Retrieve information about GitHub Pages sites and builds. — pages","text":"","code":"if (FALSE) { pages_enabled(\"rundel/ghclass\")  pages_status(\"rundel/ghclass\") }"},{"path":"https://rundel.github.io/ghclass/reference/pr.html","id":null,"dir":"Reference","previous_headings":"","what":"GitHub Pull Request related tools — pr","title":"GitHub Pull Request related tools — pr","text":"pr_create() - create pull request GitHub base branch head branch.","code":""},{"path":"https://rundel.github.io/ghclass/reference/pr.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"GitHub Pull Request related tools — pr","text":"","code":"pr_create(repo, title, head, base, body = \"\", draft = FALSE)"},{"path":"https://rundel.github.io/ghclass/reference/pr.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"GitHub Pull Request related tools — pr","text":"repo Character. Address one repositories \"owner/name\" format. title Character. Title pull request. head Character. name branch changes implemented. cross-repository pull requests network, namespace head user like : username:branch. base Character. name branch want changes pulled . existing branch current repository. submit pull request one repository requests merge base another repository. body Character. text contents pull request. draft Logical. pull request created draft pull request (merged allowed author).","code":""},{"path":"https://rundel.github.io/ghclass/reference/pr.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"GitHub Pull Request related tools — pr","text":"pr_create() invisibly return list containing results relevant GitHub API calls.","code":""},{"path":[]},{"path":"https://rundel.github.io/ghclass/reference/pr.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"GitHub Pull Request related tools — pr","text":"","code":"if (FALSE) { repo_create(\"ghclass-test\", \"test_pr\", auto_init=TRUE)  branch_create(\"ghclass-test/test_pr\", branch = \"main\", new_branch = \"test\")  repo_modify_file(\"ghclass-test/test_pr\", \"README.md\", pattern = \"test_pr\",                  content = \"Hello\", method = \"after\", branch = \"test\")  pr_create(\"ghclass-test/test_pr\", title = \"merge\", head = \"test\", base = \"main\")  repo_delete(\"ghclass-test/test_pr\", prompt = FALSE) }"},{"path":"https://rundel.github.io/ghclass/reference/repo_core.html","id":null,"dir":"Reference","previous_headings":"","what":"GitHub Repository tools - core functions — repo_core","title":"GitHub Repository tools - core functions — repo_core","text":"repo_create() - create GitHub repository. repo_delete() - delete GitHub repository. repo_rename() - rename repository, note renamed repositories retain unique identifier can still accessed via old names due GitHub re-directing. repo_exists() - returns TRUE GitHub repository exists. also print message repository renamed, unless quiet = TRUE. repo_mirror() - mirror content repository another repository, target repo must already exist. repo_mirror_template() - mirror content source template repository new repository, target repo must already exist. repo_is_template() - returns TRUE repository template repo. repo_set_template() - change template status repository.","code":""},{"path":"https://rundel.github.io/ghclass/reference/repo_core.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"GitHub Repository tools - core functions — repo_core","text":"","code":"repo_create(   org,   name,   prefix = \"\",   suffix = \"\",   private = TRUE,   auto_init = FALSE,   gitignore_template = \"R\" )  repo_delete(repo, prompt = TRUE)  repo_exists(repo, strict = FALSE, quiet = FALSE)  repo_is_template(repo)  repo_mirror(   source_repo,   target_repo,   overwrite = FALSE,   verbose = FALSE,   warn = TRUE )  repo_mirror_template(source_repo, target_repo, private = TRUE)  repo_rename(repo, new_repo)  repo_set_template(repo, status = TRUE)"},{"path":"https://rundel.github.io/ghclass/reference/repo_core.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"GitHub Repository tools - core functions — repo_core","text":"org Character. GitHub organization repository name Character. Repository name prefix Character. Common repository name prefix suffix Character. Common repository name suffix private Logical. new repository private public. auto_init Logical. repository initialized README.md. gitignore_template Character. .gitignore language template use. repo Character. Address repository owner/repo format. prompt Logical. user prompted deleting repositories. Default true. strict Logical. old name renamed repositories allowed. quiet Logical. details renamed repositories printed. source_repo Character. Address template repository owner/name format. target_repo Character. One repository addresses owner/name format. Note using template repos new repositories must exist. overwrite Logical. target repositories overwritten. verbose Logical. Display verbose output. warn Logical. Warn user function deprecated. new_repo Character. New name repository without owner. status Logical. repository set template repository","code":""},{"path":"https://rundel.github.io/ghclass/reference/repo_core.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"GitHub Repository tools - core functions — repo_core","text":"repo_create() returns character vector created repos (owner/repo format) repo_exists() repo_is_template() return logical vector. functions invisibly return list containing results relevant GitHub API calls.","code":""},{"path":"https://rundel.github.io/ghclass/reference/repo_core.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"GitHub Repository tools - core functions — repo_core","text":"","code":"if (FALSE) { repo_create(\"ghclass-test\", \"repo_test\")  repo_exists(\"ghclass-test/repo_test\")  repo_rename(\"ghclass-test/repo_test\", \"repo_test_new\")   # The new repo exists repo_exists(\"ghclass-test/repo_test_new\")  # The old repo forwards to the new repo repo_exists(\"ghclass-test/repo_test\")   # Check for the redirect by setting `strict = TRUE` repo_exists(\"ghclass-test/repo_test\", strict = TRUE)   # The prefered way of copying a repo is by making the source a template repo_is_template(\"ghclass-test/repo_test_new\")  repo_set_template(\"ghclass-test/repo_test_new\")  repo_is_template(\"ghclass-test/repo_test_new\")   # Given a template repo we can then directly copy the repo on GitHub repo_mirror_template(\"ghclass-test/repo_test_new\", \"ghclass-test/repo_test_copy\")  repo_exists(\"ghclass-test/repo_test_copy\")  # Cleanup repo_delete(  c(\"ghclass-test/repo_test_new\",    \"ghclass-test/repo_test_copy\"),  prompt = FALSE )  }"},{"path":"https://rundel.github.io/ghclass/reference/repo_details.html","id":null,"dir":"Reference","previous_headings":"","what":"GitHub Repository tools - repository details — repo_details","title":"GitHub Repository tools - repository details — repo_details","text":"repo_clone_url() - Returns url, cloning, GitHub repo (either ssh https) repo_branches() - Returns (filtered) vector branch names. repo_commits() - Returns tibble commits GitHub repository. repo_issues() - Returns tibble issues GitHub repository. repo_n_commits() - Returns tibble number commits GitHub repository (branch). repo_prs() - Returns tibble pull requests GitHub repository.","code":""},{"path":"https://rundel.github.io/ghclass/reference/repo_details.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"GitHub Repository tools - repository details — repo_details","text":"","code":"repo_branches(repo)  repo_clone_url(repo, type = c(\"https\", \"ssh\"))  repo_commits(   repo,   branch = NULL,   sha = branch,   path = NULL,   author = NULL,   since = NULL,   until = NULL,   quiet = FALSE )  repo_issues(   repo,   state = c(\"open\", \"closed\", \"all\"),   assignee = NULL,   creator = NULL,   mentioned = NULL,   labels = NULL,   sort = c(\"created\", \"updated\", \"comments\"),   direction = c(\"desc\", \"asc\"),   since = NULL )  repo_n_commits(repo, quiet = FALSE)  repo_prs(repo, state = c(\"open\", \"closed\", \"all\"))"},{"path":"https://rundel.github.io/ghclass/reference/repo_details.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"GitHub Repository tools - repository details — repo_details","text":"repo Character. Address repository owner/name format. type Character. Clone url type, either \"https\" \"ssh\". branch Character.    Branch list commits . sha Character.    SHA start listing commits . path Character.    commits containing file path returned. author Character.    GitHub login email address filter commit author. since Character. issues updated time returned. Character.    commits date returned, expects YYYY-MM-DDTHH:MM:SSZ format. quiet Logical. error message printed repo exist. state Character. Pull request state. assignee Character. Return issues assigned particular username. Pass \"none\" issues assigned user, \"*\" issues assigned user. creator Character. Return issues created given username. mentioned Character. Return issues mentioned given username. labels Character. Return issues labeled one given label names. sort Character. sort results . Can either \"created\", \"updated\", \"comments\". direction Character. direction sort. Can either \"asc\" \"desc\".","code":""},{"path":"https://rundel.github.io/ghclass/reference/repo_details.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"GitHub Repository tools - repository details — repo_details","text":"repo_clone_url() repo_branches() return character vector. repo_commits(), repo_issues(), repo_n_commits(), repo_prs() return tibble.","code":""},{"path":"https://rundel.github.io/ghclass/reference/repo_details.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"GitHub Repository tools - repository details — repo_details","text":"","code":"if (FALSE) { repo_clone_url(\"rundel/ghclass\")  repo_branches(\"rundel/ghclass\")  repo_commits(\"rundel/ghclass\")  repo_issues(\"rundel/ghclass\")  repo_n_commits(\"rundel/ghclass\", branch = \"master\")  repo_prs(\"rundel/ghclass\") }"},{"path":"https://rundel.github.io/ghclass/reference/repo_file.html","id":null,"dir":"Reference","previous_headings":"","what":"GitHub Repository tools - file functions — repo_file","title":"GitHub Repository tools - file functions — repo_file","text":"repo_add_file() - Add / update files GitHub repository. Note due delays caching, files added recently might yet displayed existing might accidentally overwritten. repo_delete_file() - Delete file GitHub repository repo_modify_file() - Modify existing file within GitHub repository. repo_ls() - Low level function listing files GitHub Repository repo_put_file() - Low level function adding file GitHub repository repo_get_file() - Low level function retrieving content file GitHub Repository repo_get_readme() - Low level function retrieving content README.md GitHub Repository","code":""},{"path":"https://rundel.github.io/ghclass/reference/repo_file.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"GitHub Repository tools - file functions — repo_file","text":"","code":"repo_add_file(   repo,   file,   message = NULL,   repo_folder = NULL,   branch = NULL,   preserve_path = FALSE,   overwrite = FALSE )  repo_delete_file(repo, path, message = NULL, branch = NULL)  repo_get_file(repo, path, branch = NULL, quiet = FALSE, include_details = TRUE)  repo_get_readme(repo, branch = NULL, include_details = TRUE)  repo_ls(repo, path = \".\", branch = NULL, full_path = FALSE)  repo_modify_file(   repo,   path,   pattern,   content,   method = c(\"replace\", \"before\", \"after\"),   all = FALSE,   message = \"Modified content\",   branch = NULL )  repo_put_file(   repo,   path,   content,   message = NULL,   branch = NULL,   verbose = TRUE )"},{"path":"https://rundel.github.io/ghclass/reference/repo_file.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"GitHub Repository tools - file functions — repo_file","text":"repo Character. Address repository owner/name format. file Character. Local file path(s) file files added. message Character. Commit message. repo_folder Character. Name folder repository save file(s) . folder exist repository, created. branch Character. Name branch use. preserve_path Logical. local relative path preserved. overwrite Logical. existing file files name overwritten, defaults FALSE. path Character. File's path within repository. quiet Logical. status messages printed. include_details Logical. file details attached attributes. repo_delete_file()m repo_modify_file(), repo_put_file() invisibly return list containing results relevant GitHub API calls. repo_ls() returns character vector repo files given path. repo_get_file() repo_get_readme() return character vector API results attached attributes include_details = TRUE full_path Logical. function return full path files directories. pattern Character. Regex pattern. content Character raw. Content file. method Character. content replace matched pattern inserted match. Character. instances pattern modified (TRUE) just first (FALSE). verbose Logical. success / failure messages printed","code":""},{"path":"https://rundel.github.io/ghclass/reference/repo_file.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"GitHub Repository tools - file functions — repo_file","text":"","code":"if (FALSE) { repo = repo_create(\"ghclass-test\", \"repo_file_test\", auto_init=TRUE)  repo_ls(repo, path = \".\")  repo_get_readme(repo, include_details = FALSE)  repo_get_file(repo, \".gitignore\", include_details = FALSE)  repo_modify_file(   repo, path = \"README.md\", pattern = \"repo_file_test\",   content = \"\\n\\nHello world!\\n\", method = \"after\" )  repo_get_readme(repo, include_details = FALSE)  repo_add_file(repo, file = system.file(\"DESCRIPTION\", package=\"ghclass\"))  repo_get_file(repo, \"DESCRIPTION\", include_details = FALSE)  repo_delete_file(repo, \"DESCRIPTION\")  repo_delete(repo, prompt=FALSE) }"},{"path":"https://rundel.github.io/ghclass/reference/repo_notification.html","id":null,"dir":"Reference","previous_headings":"","what":"GitHub Repository tools - notification functions — repo_notification","title":"GitHub Repository tools - notification functions — repo_notification","text":"repo_ignore() - Ignore GitHub repository. repo_unwatch() - Unwatch / unsubscribe GitHub repository. repo_watch() - Watch / subscribe GitHub repository. repo_watching() - Returns vector watched repositories. match list github.com/watching.","code":""},{"path":"https://rundel.github.io/ghclass/reference/repo_notification.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"GitHub Repository tools - notification functions — repo_notification","text":"","code":"repo_unwatch(repo)  repo_watch(repo)  repo_ignore(repo)  repo_watching(filter = NULL, exclude = FALSE)"},{"path":"https://rundel.github.io/ghclass/reference/repo_notification.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"GitHub Repository tools - notification functions — repo_notification","text":"repo repository address owner/repo format filter character, regex pattern matching (excluding) repositories. exclude logical, entries matching regex excluded included.","code":""},{"path":"https://rundel.github.io/ghclass/reference/repo_notification.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"GitHub Repository tools - notification functions — repo_notification","text":"repo_ignore(), repo_unwatch(), repo_watch() invisibly return list containing results relevant GitHub API call. repo_watching() returns character vector watched repos.","code":""},{"path":"https://rundel.github.io/ghclass/reference/repo_notification.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"GitHub Repository tools - notification functions — repo_notification","text":"","code":"if (FALSE) { repo_ignore(\"Sta323-Sp19/hw1\")  repo_unwatch(\"rundel/ghclass\")  repo_watch(\"rundel/ghclass\") }"},{"path":"https://rundel.github.io/ghclass/reference/repo_style.html","id":null,"dir":"Reference","previous_headings":"","what":"Style repository with styler — repo_style","title":"Style repository with styler — repo_style","text":"repo_style implements \"non-invasive pretty-printing R source code\" .R .Rmd files within repository using styler package adhering tidyverse formatting guidelines.","code":""},{"path":"https://rundel.github.io/ghclass/reference/repo_style.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Style repository with styler — repo_style","text":"","code":"repo_style(   repo,   files = c(\"*.R\", \"*.Rmd\"),   branch = \"styler\",   base,   create_pull_request = TRUE,   draft = TRUE,   tag_collaborators = TRUE,   prompt = TRUE )"},{"path":"https://rundel.github.io/ghclass/reference/repo_style.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Style repository with styler — repo_style","text":"repo Character. Address repository \"owner/name\" format. files Character vector characters. Names .R /.Rmd files styler applied . branch Character. Name new branch created overwritten. Default \"styler\". base Character. Name branch contains .R /.Rmd files styled create_pull_request Logical. TRUE, pull request created branch base. draft Logical. pull request created draft pull request? (Draft PRs merged allowed author) tag_collaborators Logical. TRUE, message repository collaborators displayed. prompt Character. Prompt user overwriting existing branch.","code":""},{"path":"https://rundel.github.io/ghclass/reference/repo_style.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Style repository with styler — repo_style","text":"functions returns NULL invisibly.","code":""},{"path":"https://rundel.github.io/ghclass/reference/repo_user.html","id":null,"dir":"Reference","previous_headings":"","what":"GitHub Repository tools - user functions — repo_user","title":"GitHub Repository tools - user functions — repo_user","text":"repo_add_user() - Add user repository repo_remove_user() - Remove user repository repo_add_team() - Add team repository repo_remove_team() - Remove team repository repo_user_permission() - Change collaborator's permissions repository repo_team_permission() - Change team's permissions repository repo_collaborators() - Returns data frame repos, collaborators, permissions. repo_contributors() - Returns data frame containing details repository contributor(s).","code":""},{"path":"https://rundel.github.io/ghclass/reference/repo_user.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"GitHub Repository tools - user functions — repo_user","text":"","code":"repo_add_team(   repo,   team,   permission = c(\"push\", \"pull\", \"admin\", \"maintain\", \"triage\"),   team_type = c(\"name\", \"slug\") )  repo_team_permission(   repo,   team,   permission = c(\"push\", \"pull\", \"admin\", \"maintain\", \"triage\"),   team_type = c(\"name\", \"slug\") )  repo_add_user(   repo,   user,   permission = c(\"push\", \"pull\", \"admin\", \"maintain\", \"triage\") )  repo_user_permission(   repo,   user,   permission = c(\"push\", \"pull\", \"admin\", \"maintain\", \"triage\") )  repo_collaborators(repo, include_admins = TRUE)  repo_contributors(repo)  repo_remove_team(repo, team, team_type = c(\"name\", \"slug\"))  repo_remove_user(repo, user)"},{"path":"https://rundel.github.io/ghclass/reference/repo_user.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"GitHub Repository tools - user functions — repo_user","text":"repo Character. Address repository owner/repo format. team Character. Slug name team add. permission Character. Permission granted user team repo, defaults \"push\". team_type Character. Either \"slug\" team names slugs \"name\" full team names provided. user Character. One GitHub usernames. include_admins Logical. FALSE, user names users Admin rights included, defaults TRUE.","code":""},{"path":"https://rundel.github.io/ghclass/reference/repo_user.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"GitHub Repository tools - user functions — repo_user","text":"repo_collaborators() repo_contributoes return tibble. functions invisibly return list containing results relevant GitHub API calls.","code":""},{"path":"https://rundel.github.io/ghclass/reference/repo_user.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"GitHub Repository tools - user functions — repo_user","text":"Permissions can set following: \"pull\" - can pull, push administer repository. \"push\" - can pull push, administer repository. \"admin\" - can pull, push administer repository. \"maintain\" - Recommended project managers need manage repository without access sensitive destructive actions. \"triage\" - Recommended contributors need proactively manage issues pull requests without write access.","code":""},{"path":"https://rundel.github.io/ghclass/reference/repo_user.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"GitHub Repository tools - user functions — repo_user","text":"","code":"if (FALSE) { repo = repo_create(\"ghclass-test\", \"hw1\")  team_create(\"ghclass-test\", \"team_awesome\")  repo_add_user(repo, \"rundel\")  repo_add_team(repo, \"team_awesome\")  repo_remove_team(repo, \"team_awesome\")  repo_collaborators(repo)  repo_contributors(repo) repo_contributors(\"rundel/ghclass\")  # Cleanup repo_delete(repo, prompt=FALSE) }"},{"path":"https://rundel.github.io/ghclass/reference/team.html","id":null,"dir":"Reference","previous_headings":"","what":"Create, delete, and rename teams within an organization — team","title":"Create, delete, and rename teams within an organization — team","text":"team_create() - create teams GitHub organization team_delete() - delete team GitHub organization. team_rename() - rename existing team","code":""},{"path":"https://rundel.github.io/ghclass/reference/team.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Create, delete, and rename teams within an organization — team","text":"","code":"team_create(   org,   team,   prefix = \"\",   suffix = \"\",   privacy = c(\"secret\", \"closed\") )  team_delete(org, team, team_type = c(\"name\", \"slug\"), prompt = TRUE)  team_rename(org, team, new_team, team_type = c(\"name\", \"slug\"))"},{"path":"https://rundel.github.io/ghclass/reference/team.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Create, delete, and rename teams within an organization — team","text":"org Character. Name GitHub organization. team Character. Name teams. prefix Character. Shared prefix. suffix Character. Shared suffix. privacy Character. Level privacy team, \"closed\" (visible members organization) \"secret\" (visible organization owners members team), default \"closed\" team_type Character. Either \"slug\" team names slugs \"name\" full team names provided. prompt Logical. user prompted deleting team. Default true. new_team character, new team name.","code":""},{"path":"https://rundel.github.io/ghclass/reference/team.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Create, delete, and rename teams within an organization — team","text":"functions invisibly return list containing results relevant GitHub API calls.","code":""},{"path":"https://rundel.github.io/ghclass/reference/team.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Create, delete, and rename teams within an organization — team","text":"","code":"if (FALSE) { team_create(\"ghclass-test\",c(\"hw1-team01\",\"hw1-team02\"))  org_teams(\"ghclass-test\", \"hw1-\")  team_rename(\"ghclass-test\", \"hw1-team02\", \"hw1-team03\")  org_teams(\"ghclass-test\", \"hw1-\")  team_delete(\"ghclass-test\", \"hw1-team01\", prompt = FALSE)  org_teams(\"ghclass-test\", \"hw1-\")   # Cleanup team_delete(\"ghclass-test\", org_teams(\"ghclass-test\", \"hw1-\"), prompt = FALSE) }"},{"path":"https://rundel.github.io/ghclass/reference/team_members.html","id":null,"dir":"Reference","previous_headings":"","what":"Tools for inviting, removing, and managing members of an organization team — team_members","title":"Tools for inviting, removing, and managing members of an organization team — team_members","text":"team_invite() - add members team(s). team_remove() - remove members team(s). team_members() - returns tibble team members. team_pending() - returns tibble pending team members. team_repos() - returns tibble teams repos.","code":""},{"path":"https://rundel.github.io/ghclass/reference/team_members.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Tools for inviting, removing, and managing members of an organization team — team_members","text":"","code":"team_invite(org, user, team, team_type = c(\"name\", \"slug\"))  team_members(org, team = org_teams(org), team_type = c(\"name\", \"slug\"))  team_pending(org, team = org_teams(org), team_type = c(\"name\", \"slug\"))  team_remove(org, user, team, team_type = c(\"name\", \"slug\"))  team_repos(org, team = org_teams(org), team_type = c(\"name\", \"slug\"))"},{"path":"https://rundel.github.io/ghclass/reference/team_members.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Tools for inviting, removing, and managing members of an organization team — team_members","text":"org Character. Name GitHub organization. user Character. One GitHub users invite. team Character. Name teams. team_type Character. Either \"slug\" team names slugs \"name\" full team names provided.","code":""},{"path":"https://rundel.github.io/ghclass/reference/team_members.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Tools for inviting, removing, and managing members of an organization team — team_members","text":"team_members(), team_pending(), team_repos() return tibble. team_invite() team_remove() invisibly return list containing results relevant GitHub API calls.","code":""},{"path":"https://rundel.github.io/ghclass/reference/team_members.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Tools for inviting, removing, and managing members of an organization team — team_members","text":"","code":"if (FALSE) { team_create(\"ghclass-test\",c(\"hw1-team01\",\"hw1-team02\"))  team_invite(\"ghclass-test\", user = \"rundel\", team = c(\"hw1-team01\", \"hw1-team02\", \"missing_team\"))  team_remove(\"ghclass-test\", user = \"rundel\", team = c(\"hw1-team01\", \"missing_team\"))  team_members(\"ghclass-test\", org_teams(\"ghclass-test\", \"hw1-\"))  team_pending(\"ghclass-test\", org_teams(\"ghclass-test\", \"hw1-\"))  # Add team repo repo_create(\"ghclass-test\", name = \"hw1-team02\") repo_add_team(\"ghclass-test/hw1-team02\", team = \"hw1-team02\")  team_repos(\"ghclass-test\", org_teams(\"ghclass-test\", \"hw1-\"))   # Cleanup repo_delete(\"ghclass-test/hw1-team02\", prompt = FALSE) team_delete(\"ghclass-test\", org_teams(\"ghclass-test\", \"hw1-\"), prompt = FALSE) }"},{"path":"https://rundel.github.io/ghclass/reference/user.html","id":null,"dir":"Reference","previous_headings":"","what":"GitHub user related tools — user","title":"GitHub user related tools — user","text":"user_exists() - returns TRUE username(s) (organization) exist GitHub FALSE otherwise. Note GitHub considers organizations type user. user_repos() - returns (filtered) vector repositories belonging user. user_type() - returns vector accounts' types.","code":""},{"path":"https://rundel.github.io/ghclass/reference/user.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"GitHub user related tools — user","text":"","code":"user_exists(user)  user_repos(   user,   type = c(\"owner\", \"all\", \"public\", \"private\", \"member\"),   filter = NULL,   exclude = FALSE,   full_repo = TRUE )  user_type(user)"},{"path":"https://rundel.github.io/ghclass/reference/user.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"GitHub user related tools — user","text":"user Character. GitHub username(s). type Character. Can one \"\", \"owner\", \"public\", \"private\", \"member\". filter Character. Regular expression pattern matching (excluding) repositories. exclude Logical. entries matching regular expression filter excluded included? full_repo Logical. full repository address returned (e.g. owner/repo instead just repo)?","code":""},{"path":"https://rundel.github.io/ghclass/reference/user.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"GitHub user related tools — user","text":"user_exists() returns logical vector. user_repos() user_type() retrun character vector.","code":""},{"path":"https://rundel.github.io/ghclass/reference/user.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"GitHub user related tools — user","text":"","code":"if (FALSE) { user_exists(c(\"rundel\", \"ghclass-test\", \"hopefullydoesnotexist\"))  user_repos(\"rundel\", type = \"public\", filter = \"ghclass\")  user_repos(\"ghclass-test\")  org_repos(\"ghclass-test\")  user_type(c(\"rundel\", \"ghclass-test\")) }"},{"path":[]},{"path":"https://rundel.github.io/ghclass/news/index.html","id":"ghclass-030","dir":"Changelog","previous_headings":"","what":"ghclass 0.3.0","title":"ghclass 0.3.0","text":"Added support basig GitHub Pages API endpoints - see pages_enabled(), pages_status(), pages_create(), pages_delete(). Added support retrieving details GitHub Action artifacts via action_artifacts() Added support downloading GitHub Action artifacts via action_artifact_download() Added support deleting GitHub Action artifacts via action_artifact_delete() Added additional parameters org_repos() control repos returns order, see function docs. Reworked action_runs() work multiple repositories included new filtering options. makes action_status() redundant deprecated. Added action_runtime() supplements results action_runs() duration action run. Added github_token_scopes() returns vector granted scopes given PAT. Added github_rate_limit() & github_graphql_rate_limit() checking current rate limit status. Added add_badges argument org_create_assignment() Added support GitHub’s versioned REST API Increased default value github_set_api_limit() 10,000. rest API request now report request limit reached via warning.","code":""},{"path":"https://rundel.github.io/ghclass/news/index.html","id":"ghclass-021","dir":"Changelog","previous_headings":"","what":"ghclass 0.2.1","title":"ghclass 0.2.1","text":"CRAN release: 2022-01-06 ghclass now CRAN! improved action support action_runs() action_status() revised GitHub PATs handled - now uses gitcreds way gh::gh_token() users now warned PATs .Renviron -la usethis:::scold_for_renviron() Added version dependency cli 3.0.0 Added support default branches org_repo_stats()","code":""},{"path":"https://rundel.github.io/ghclass/news/index.html","id":"ghclass-020","dir":"Changelog","previous_headings":"","what":"ghclass 0.2.0","title":"ghclass 0.2.0","text":"First official release ghclass Switched underlying ui tools use cli instead usethis Major cleanup rewrite many functions Basic support GitHub actions added peer_* functions moved peer_review branch now, coming back 0.2.1. See README details need next release. use “master” default value branch arguments removed across package. functions branch argument continue function way use whatever defined default branch repository. small handful cases API allow , argument now require user provide explicit value. changes made anticipation GitHub moving default branch “master” “main” October (see https://github.com/github/renaming details).","code":""}]
