xref: /plugin/gitbacked/classes/Git.php (revision 2762023dfb29a64197cb442f664aa321f9f5bc87)
1b08c3d51SMarkus Hoffrogge<?php
2b08c3d51SMarkus Hoffrogge
3*2762023dSMarkus Hoffroggenamespace woolfg\dokuwiki\plugin\gitbacked;
4*2762023dSMarkus Hoffrogge
5b08c3d51SMarkus Hoffrogge/*
6b08c3d51SMarkus Hoffrogge * Git.php
7b08c3d51SMarkus Hoffrogge *
8b08c3d51SMarkus Hoffrogge * A PHP git library
9b08c3d51SMarkus Hoffrogge *
10b08c3d51SMarkus Hoffrogge * @package    Git.php
11b08c3d51SMarkus Hoffrogge * @version    0.1.4
12b08c3d51SMarkus Hoffrogge * @author     James Brumond
13b08c3d51SMarkus Hoffrogge * @copyright  Copyright 2013 James Brumond
14b08c3d51SMarkus Hoffrogge * @repo       http://github.com/kbjr/Git.php
15b08c3d51SMarkus Hoffrogge */
16b08c3d51SMarkus Hoffrogge
17*2762023dSMarkus Hoffrogge// phpcs:disable PSR1.Files.SideEffects.FoundWithSymbols
18b08c3d51SMarkus Hoffroggeif (__FILE__ == $_SERVER['SCRIPT_FILENAME']) die('Bad load order');
19b08c3d51SMarkus Hoffrogge
20b08c3d51SMarkus Hoffrogge// ------------------------------------------------------------------------
21b08c3d51SMarkus Hoffrogge
22b08c3d51SMarkus Hoffrogge/**
23b08c3d51SMarkus Hoffrogge * Git Interface Class
24b08c3d51SMarkus Hoffrogge *
25b08c3d51SMarkus Hoffrogge * This class enables the creating, reading, and manipulation
26b08c3d51SMarkus Hoffrogge * of git repositories.
27b08c3d51SMarkus Hoffrogge *
28b08c3d51SMarkus Hoffrogge * @class  Git
29b08c3d51SMarkus Hoffrogge */
30*2762023dSMarkus Hoffroggeclass Git
31*2762023dSMarkus Hoffrogge{
32b08c3d51SMarkus Hoffrogge    /**
33b08c3d51SMarkus Hoffrogge     * Git executable location
34b08c3d51SMarkus Hoffrogge     *
35b08c3d51SMarkus Hoffrogge     * @var string
36b08c3d51SMarkus Hoffrogge     */
37b08c3d51SMarkus Hoffrogge    protected static $bin = '/usr/bin/git';
38b08c3d51SMarkus Hoffrogge
39b08c3d51SMarkus Hoffrogge    /**
40b08c3d51SMarkus Hoffrogge     * Sets git executable path
41b08c3d51SMarkus Hoffrogge     *
42b08c3d51SMarkus Hoffrogge     * @param string $path executable location
43b08c3d51SMarkus Hoffrogge     */
44*2762023dSMarkus Hoffrogge    public static function setBin($path)
45*2762023dSMarkus Hoffrogge    {
46b08c3d51SMarkus Hoffrogge        self::$bin = $path;
47b08c3d51SMarkus Hoffrogge    }
48b08c3d51SMarkus Hoffrogge
49b08c3d51SMarkus Hoffrogge    /**
50b08c3d51SMarkus Hoffrogge     * Gets git executable path
51b08c3d51SMarkus Hoffrogge     */
52*2762023dSMarkus Hoffrogge    public static function getBin()
53*2762023dSMarkus Hoffrogge    {
54b08c3d51SMarkus Hoffrogge        return self::$bin;
55b08c3d51SMarkus Hoffrogge    }
56b08c3d51SMarkus Hoffrogge
57b08c3d51SMarkus Hoffrogge    /**
58b08c3d51SMarkus Hoffrogge     * Sets up library for use in a default Windows environment
59b08c3d51SMarkus Hoffrogge     */
60*2762023dSMarkus Hoffrogge    public static function windowsMode()
61*2762023dSMarkus Hoffrogge    {
62*2762023dSMarkus Hoffrogge        self::setBin('git');
63b08c3d51SMarkus Hoffrogge    }
64b08c3d51SMarkus Hoffrogge
65b08c3d51SMarkus Hoffrogge    /**
66b08c3d51SMarkus Hoffrogge     * Create a new git repository
67b08c3d51SMarkus Hoffrogge     *
68b08c3d51SMarkus Hoffrogge     * Accepts a creation path, and, optionally, a source path
69b08c3d51SMarkus Hoffrogge     *
70b08c3d51SMarkus Hoffrogge     * @access  public
71b08c3d51SMarkus Hoffrogge     * @param   string  repository path
72b08c3d51SMarkus Hoffrogge     * @param   string  directory to source
73b08c3d51SMarkus Hoffrogge     * @param   \action_plugin_gitbacked_editcommit plugin
74b08c3d51SMarkus Hoffrogge     * @return  GitRepo
75b08c3d51SMarkus Hoffrogge     */
76*2762023dSMarkus Hoffrogge    public static function &create($repo_path, $source = null, \action_plugin_gitbacked_editcommit $plugin = null)
77*2762023dSMarkus Hoffrogge    {
78*2762023dSMarkus Hoffrogge        return GitRepo::createNew($repo_path, $source, $plugin);
79b08c3d51SMarkus Hoffrogge    }
80b08c3d51SMarkus Hoffrogge
81b08c3d51SMarkus Hoffrogge    /**
82b08c3d51SMarkus Hoffrogge     * Open an existing git repository
83b08c3d51SMarkus Hoffrogge     *
84b08c3d51SMarkus Hoffrogge     * Accepts a repository path
85b08c3d51SMarkus Hoffrogge     *
86b08c3d51SMarkus Hoffrogge     * @access  public
87b08c3d51SMarkus Hoffrogge     * @param   string  repository path
88b08c3d51SMarkus Hoffrogge     * @param   \action_plugin_gitbacked_editcommit plugin
89b08c3d51SMarkus Hoffrogge     * @return  GitRepo
90b08c3d51SMarkus Hoffrogge     */
91*2762023dSMarkus Hoffrogge    public static function open($repo_path, \action_plugin_gitbacked_editcommit $plugin = null)
92*2762023dSMarkus Hoffrogge    {
93b08c3d51SMarkus Hoffrogge        return new GitRepo($repo_path, $plugin);
94b08c3d51SMarkus Hoffrogge    }
95b08c3d51SMarkus Hoffrogge
96b08c3d51SMarkus Hoffrogge    /**
97b08c3d51SMarkus Hoffrogge     * Clones a remote repo into a directory and then returns a GitRepo object
98b08c3d51SMarkus Hoffrogge     * for the newly created local repo
99b08c3d51SMarkus Hoffrogge     *
100b08c3d51SMarkus Hoffrogge     * Accepts a creation path and a remote to clone from
101b08c3d51SMarkus Hoffrogge     *
102b08c3d51SMarkus Hoffrogge     * @access  public
103b08c3d51SMarkus Hoffrogge     * @param   string  repository path
104b08c3d51SMarkus Hoffrogge     * @param   string  remote source
105b08c3d51SMarkus Hoffrogge     * @param   string  reference path
106b08c3d51SMarkus Hoffrogge     * @param   \action_plugin_gitbacked_editcommit plugin
107b08c3d51SMarkus Hoffrogge     * @return  GitRepo
108b08c3d51SMarkus Hoffrogge     **/
109*2762023dSMarkus Hoffrogge    public static function &cloneRemote(
110*2762023dSMarkus Hoffrogge        $repo_path,
111*2762023dSMarkus Hoffrogge        $remote,
112*2762023dSMarkus Hoffrogge        $reference = null,
113*2762023dSMarkus Hoffrogge        \action_plugin_gitbacked_editcommit $plugin = null
114*2762023dSMarkus Hoffrogge    ) {
115*2762023dSMarkus Hoffrogge        return GitRepo::createNew($repo_path, $plugin, $remote, true, $reference);
116b08c3d51SMarkus Hoffrogge    }
117b08c3d51SMarkus Hoffrogge
118b08c3d51SMarkus Hoffrogge    /**
119b08c3d51SMarkus Hoffrogge     * Checks if a variable is an instance of GitRepo
120b08c3d51SMarkus Hoffrogge     *
121b08c3d51SMarkus Hoffrogge     * Accepts a variable
122b08c3d51SMarkus Hoffrogge     *
123b08c3d51SMarkus Hoffrogge     * @access  public
124b08c3d51SMarkus Hoffrogge     * @param   mixed   variable
125b08c3d51SMarkus Hoffrogge     * @return  bool
126b08c3d51SMarkus Hoffrogge     */
127*2762023dSMarkus Hoffrogge    public static function isRepo($var)
128*2762023dSMarkus Hoffrogge    {
129b08c3d51SMarkus Hoffrogge        return ($var instanceof GitRepo);
130b08c3d51SMarkus Hoffrogge    }
131b08c3d51SMarkus Hoffrogge}
132b08c3d51SMarkus Hoffrogge
133b08c3d51SMarkus Hoffrogge/* End of file */
134