eac_git 0.1.0 → 0.3.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/eac_git/executables.rb +24 -4
- data/lib/eac_git/local.rb +5 -1
- data/lib/eac_git/local/dirty_files.rb +37 -0
- data/lib/eac_git/rspec.rb +17 -0
- data/lib/eac_git/version.rb +1 -1
- data/vendor/git-subrepo/Changes +110 -0
- data/vendor/git-subrepo/Intro.pod +509 -0
- data/vendor/git-subrepo/License +21 -0
- data/vendor/git-subrepo/Makefile +82 -0
- data/vendor/git-subrepo/Meta +28 -0
- data/vendor/git-subrepo/ReadMe.pod +698 -0
- data/vendor/git-subrepo/doc/comparison.swim +35 -0
- data/vendor/git-subrepo/doc/git-subrepo.swim +608 -0
- data/vendor/git-subrepo/doc/intro-to-subrepo.swim +387 -0
- data/vendor/git-subrepo/ext/bashplus/Changes +15 -0
- data/vendor/git-subrepo/ext/bashplus/License +21 -0
- data/vendor/git-subrepo/ext/bashplus/Makefile +45 -0
- data/vendor/git-subrepo/ext/bashplus/Meta +28 -0
- data/vendor/git-subrepo/ext/bashplus/ReadMe.pod +77 -0
- data/vendor/git-subrepo/ext/bashplus/bin/bash+ +43 -0
- data/vendor/git-subrepo/ext/bashplus/doc/bash+.swim +61 -0
- data/vendor/git-subrepo/ext/bashplus/lib/bash+.bash +92 -0
- data/vendor/git-subrepo/ext/bashplus/man/man1/bash+.1 +134 -0
- data/vendor/git-subrepo/ext/bashplus/man/man3/bash+.3 +134 -0
- data/vendor/git-subrepo/ext/bashplus/test/base.t +12 -0
- data/vendor/git-subrepo/ext/bashplus/test/fcopy.t +22 -0
- data/vendor/git-subrepo/ext/bashplus/test/lib/foo/bar.bash +3 -0
- data/vendor/git-subrepo/ext/bashplus/test/lib/foo/foo.bash +3 -0
- data/vendor/git-subrepo/ext/bashplus/test/source-bash+-std.t +18 -0
- data/vendor/git-subrepo/ext/bashplus/test/source-bash+.t +23 -0
- data/vendor/git-subrepo/ext/bashplus/test/test.bash +70 -0
- data/vendor/git-subrepo/ext/bashplus/test/use.t +19 -0
- data/vendor/git-subrepo/ext/test-more-bash/Changes +15 -0
- data/vendor/git-subrepo/ext/test-more-bash/License +21 -0
- data/vendor/git-subrepo/ext/test-more-bash/Makefile +20 -0
- data/vendor/git-subrepo/ext/test-more-bash/Meta +30 -0
- data/vendor/git-subrepo/ext/test-more-bash/ReadMe.pod +115 -0
- data/vendor/git-subrepo/ext/test-more-bash/doc/test-more.swim +89 -0
- data/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/Changes +15 -0
- data/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/License +21 -0
- data/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/Makefile +45 -0
- data/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/Meta +28 -0
- data/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/ReadMe.pod +77 -0
- data/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/bin/bash+ +43 -0
- data/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/doc/bash+.swim +61 -0
- data/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/lib/bash+.bash +92 -0
- data/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/man/man1/bash+.1 +134 -0
- data/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/man/man3/bash+.3 +134 -0
- data/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/test/base.t +12 -0
- data/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/test/fcopy.t +22 -0
- data/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/test/lib/foo/bar.bash +3 -0
- data/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/test/lib/foo/foo.bash +3 -0
- data/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/test/source-bash+-std.t +18 -0
- data/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/test/source-bash+.t +23 -0
- data/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/test/test.bash +70 -0
- data/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/test/use.t +19 -0
- data/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/Changes +15 -0
- data/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/License +21 -0
- data/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/Makefile +37 -0
- data/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/Meta +28 -0
- data/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/ReadMe.pod +66 -0
- data/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/doc/test-tap.swim +48 -0
- data/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/lib/test/tap.bash +153 -0
- data/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/man/man3/test-tap.3 +119 -0
- data/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/test/bail_out.t +13 -0
- data/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/test/done.t +10 -0
- data/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/test/fail.t +20 -0
- data/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/test/fail_fast.t +15 -0
- data/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/test/helper.bash +9 -0
- data/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/test/pass.t +9 -0
- data/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/test/plan.t +10 -0
- data/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/test/skip_all.t +20 -0
- data/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/test/tap.t +13 -0
- data/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/test/test/bail.t +14 -0
- data/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/test/test/fail.t +7 -0
- data/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/test/test/fail_fast.t +12 -0
- data/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/test/test/skip-all-init.t +8 -0
- data/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/test/test/skip-all-plan.t +9 -0
- data/vendor/git-subrepo/ext/test-more-bash/lib/test/more.bash +95 -0
- data/vendor/git-subrepo/ext/test-more-bash/man/man3/test-more.3 +173 -0
- data/vendor/git-subrepo/ext/test-more-bash/test/fail.t +20 -0
- data/vendor/git-subrepo/ext/test-more-bash/test/more.t +20 -0
- data/vendor/git-subrepo/ext/test-more-bash/test/pass.t +9 -0
- data/vendor/git-subrepo/ext/test-more-bash/test/setup +8 -0
- data/vendor/git-subrepo/ext/test-more-bash/test/skip_all.t +11 -0
- data/vendor/git-subrepo/ext/test-more-bash/test/test/fail1.t +12 -0
- data/vendor/git-subrepo/ext/test-more-bash/test/test/skip_all.t +10 -0
- data/vendor/git-subrepo/lib/git-subrepo +1903 -0
- data/vendor/git-subrepo/lib/git-subrepo.d/bash+.bash +1 -0
- data/vendor/git-subrepo/lib/git-subrepo.d/help-functions.bash +339 -0
- data/vendor/git-subrepo/man/man1/git-subrepo.1 +743 -0
- data/vendor/git-subrepo/note/0.4.0 +12 -0
- data/vendor/git-subrepo/note/AllGitCmds +148 -0
- data/vendor/git-subrepo/note/Cases +32 -0
- data/vendor/git-subrepo/note/Commands +33 -0
- data/vendor/git-subrepo/note/Dags +199 -0
- data/vendor/git-subrepo/note/Gists +7 -0
- data/vendor/git-subrepo/note/Links +25 -0
- data/vendor/git-subrepo/note/Plugins +10 -0
- data/vendor/git-subrepo/note/Spec +39 -0
- data/vendor/git-subrepo/note/Story1 +57 -0
- data/vendor/git-subrepo/note/ToDo +55 -0
- data/vendor/git-subrepo/note/design.swim +137 -0
- data/vendor/git-subrepo/note/design2.swim +85 -0
- data/vendor/git-subrepo/note/init-test +38 -0
- data/vendor/git-subrepo/note/pull-dance.txt +18 -0
- data/vendor/git-subrepo/note/recreate-rebase-conflict.sh +56 -0
- data/vendor/git-subrepo/note/subtree-rebase-fail-example/test.bash +29 -0
- data/vendor/git-subrepo/note/test-subrepo-push.sh +69 -0
- data/vendor/git-subrepo/note/test.sh +58 -0
- data/vendor/git-subrepo/pkg/bin/generate-completion.pl +210 -0
- data/vendor/git-subrepo/pkg/bin/generate-help-functions.pl +89 -0
- data/vendor/git-subrepo/share/completion.bash +42 -0
- data/vendor/git-subrepo/share/enable-completion.sh +50 -0
- data/vendor/git-subrepo/share/git-completion.bash +2738 -0
- data/vendor/git-subrepo/share/zsh-completion/_git-subrepo +81 -0
- data/vendor/git-subrepo/test/branch-all.t +41 -0
- data/vendor/git-subrepo/test/branch-rev-list-one-path.t +43 -0
- data/vendor/git-subrepo/test/branch-rev-list.t +47 -0
- data/vendor/git-subrepo/test/branch.t +52 -0
- data/vendor/git-subrepo/test/clean.t +43 -0
- data/vendor/git-subrepo/test/clone-annotated-tag.t +45 -0
- data/vendor/git-subrepo/test/clone.t +107 -0
- data/vendor/git-subrepo/test/compile.t +19 -0
- data/vendor/git-subrepo/test/config.t +58 -0
- data/vendor/git-subrepo/test/encode.t +91 -0
- data/vendor/git-subrepo/test/error.t +171 -0
- data/vendor/git-subrepo/test/fetch.t +43 -0
- data/vendor/git-subrepo/test/gitignore.t +61 -0
- data/vendor/git-subrepo/test/init.t +64 -0
- data/vendor/git-subrepo/test/issue29.t +98 -0
- data/vendor/git-subrepo/test/issue95.t +98 -0
- data/vendor/git-subrepo/test/issue96.t +96 -0
- data/vendor/git-subrepo/test/pull-all.t +38 -0
- data/vendor/git-subrepo/test/pull-merge.t +113 -0
- data/vendor/git-subrepo/test/pull-message.t +88 -0
- data/vendor/git-subrepo/test/pull-new-branch.t +58 -0
- data/vendor/git-subrepo/test/pull-ours.t +90 -0
- data/vendor/git-subrepo/test/pull-theirs.t +82 -0
- data/vendor/git-subrepo/test/pull-twice.t +44 -0
- data/vendor/git-subrepo/test/pull-worktree.t +40 -0
- data/vendor/git-subrepo/test/pull.t +99 -0
- data/vendor/git-subrepo/test/push-after-init.t +51 -0
- data/vendor/git-subrepo/test/push-force.t +56 -0
- data/vendor/git-subrepo/test/push-new-branch.t +61 -0
- data/vendor/git-subrepo/test/push-no-changes.t +29 -0
- data/vendor/git-subrepo/test/push-squash.t +56 -0
- data/vendor/git-subrepo/test/push.t +176 -0
- data/vendor/git-subrepo/test/reclone.t +45 -0
- data/vendor/git-subrepo/test/repo/bar/HEAD +1 -0
- data/vendor/git-subrepo/test/repo/bar/config +4 -0
- data/vendor/git-subrepo/test/repo/bar/objects/1f/0c4b264caed0126814a0ede851a1e0b4e16ae6 +0 -0
- data/vendor/git-subrepo/test/repo/bar/objects/87/46903fdb1b9c2101377880125917c2e05b4d69 +0 -0
- data/vendor/git-subrepo/test/repo/bar/objects/94/c86ffc745232d89f78c6f895e11e71272518db +0 -0
- data/vendor/git-subrepo/test/repo/bar/objects/c6/76c57b6576743fa56278527aa60ebd2e202a7c +0 -0
- data/vendor/git-subrepo/test/repo/bar/objects/e6/9de29bb2d1d6434b8b29ae775ad8c2e48c5391 +0 -0
- data/vendor/git-subrepo/test/repo/bar/objects/f6/2a8ff3feadf39b0a98f1a86ec6d1eb33858ee9 +0 -0
- data/vendor/git-subrepo/test/repo/bar/refs/heads/master +1 -0
- data/vendor/git-subrepo/test/repo/bar/refs/tags/A +1 -0
- data/vendor/git-subrepo/test/repo/foo/HEAD +1 -0
- data/vendor/git-subrepo/test/repo/foo/config +4 -0
- data/vendor/git-subrepo/test/repo/foo/objects/a0/f4cdaaf533a936296cdebbed8206c3b9ededa8 +0 -0
- data/vendor/git-subrepo/test/repo/foo/objects/e2/1291a1ad392a9d4c51dd9586804f1467b28afd +0 -0
- data/vendor/git-subrepo/test/repo/foo/objects/e6/9de29bb2d1d6434b8b29ae775ad8c2e48c5391 +0 -0
- data/vendor/git-subrepo/test/repo/foo/refs/heads/master +1 -0
- data/vendor/git-subrepo/test/repo/init/HEAD +1 -0
- data/vendor/git-subrepo/test/repo/init/config +5 -0
- data/vendor/git-subrepo/test/repo/init/objects/11/523f5dcf03b4c89b592dc8a3d0308f68da2386 +0 -0
- data/vendor/git-subrepo/test/repo/init/objects/14/2addf8ec5f37334e837440122c62f2c68a29ad +0 -0
- data/vendor/git-subrepo/test/repo/init/objects/32/5180321750a21cd7a4e7ecda319e557a4f6a09 +2 -0
- data/vendor/git-subrepo/test/repo/init/objects/3d/918c6901c02f43af5d31779dd5e1f9166aeb36 +0 -0
- data/vendor/git-subrepo/test/repo/init/objects/3e/4cb596066dce63ba4d047abddb677389b65e19 +0 -0
- data/vendor/git-subrepo/test/repo/init/objects/4b/6e53022e7a04f07887697e4f3d7c377fd9822b +0 -0
- data/vendor/git-subrepo/test/repo/init/objects/58/931fc1bd559b59c41ea738fc7ad04f9ad01bd3 +0 -0
- data/vendor/git-subrepo/test/repo/init/objects/5e/c0c28e1b806f25efdca18fcf7a74b49c3755bd +0 -0
- data/vendor/git-subrepo/test/repo/init/objects/75/fa6584e748f57eff06eebdc55e9ac21d4fcbf2 +1 -0
- data/vendor/git-subrepo/test/repo/init/objects/80/2d5edbd5e1cb7fca82b5bd38e7c8a0a496fb20 +0 -0
- data/vendor/git-subrepo/test/repo/init/objects/94/7b3d714c38791e95ad6f928b48c98bb8708acd +0 -0
- data/vendor/git-subrepo/test/repo/init/objects/95/e1f2df3f4d5f3d7a60588c25a7ca8a913d3c2a +1 -0
- data/vendor/git-subrepo/test/repo/init/objects/b1/5f4a7666baf40d949548ead946a3370e273479 +0 -0
- data/vendor/git-subrepo/test/repo/init/objects/c3/ee8978c4c5d84c3b7d00ba8e5906933d027882 +0 -0
- data/vendor/git-subrepo/test/repo/init/objects/c8/b0bffbc405ef3fad7354ff833fbec36d67ddfa +3 -0
- data/vendor/git-subrepo/test/repo/init/objects/dd/8bdb934ec848137f011fe423b185505c343626 +2 -0
- data/vendor/git-subrepo/test/repo/init/objects/e2/9be58c767cfeb27235c995d293a7d71aac0135 +2 -0
- data/vendor/git-subrepo/test/repo/init/objects/ee/1224401fc6aac595145fa727dcf6706ac8aec1 +1 -0
- data/vendor/git-subrepo/test/repo/init/objects/f1/cc1a657b2e805c400f5dcaaa76bd29c6178b1b +0 -0
- data/vendor/git-subrepo/test/repo/init/refs/heads/master +1 -0
- data/vendor/git-subrepo/test/setup +205 -0
- data/vendor/git-subrepo/test/status.t +68 -0
- data/vendor/git-subrepo/test/submodule.t +45 -0
- metadata +190 -4
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
---
|
|
2
|
+
version: 0.0.7
|
|
3
|
+
date: Sat Jan 23 16:28:59 PST 2016
|
|
4
|
+
changes:
|
|
5
|
+
- Update tooling, and copyright
|
|
6
|
+
---
|
|
7
|
+
version: 0.0.6
|
|
8
|
+
date: Fri Jan 23 21:05:15 PST 2015
|
|
9
|
+
changes:
|
|
10
|
+
- Update tooling, and copyright
|
|
11
|
+
---
|
|
12
|
+
version: 0.0.1
|
|
13
|
+
date: Sun Oct 27 19:07:51 PDT 2013
|
|
14
|
+
changes:
|
|
15
|
+
- First release.
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
(The MIT License)
|
|
2
|
+
|
|
3
|
+
Copyright © 2013-2016 Ingy döt Net
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
|
6
|
+
this software and associated documentation files (the ‘Software’), to deal in
|
|
7
|
+
the Software without restriction, including without limitation the rights to
|
|
8
|
+
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
|
|
9
|
+
of the Software, and to permit persons to whom the Software is furnished to do
|
|
10
|
+
so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED ‘AS IS’, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
ifeq ($(MAKECMDGOALS),install)
|
|
2
|
+
ifeq "$(shell bpan version 2>/dev/null)" ""
|
|
3
|
+
$(error 'BPAN not installed. See http://bpan.org')
|
|
4
|
+
endif
|
|
5
|
+
endif
|
|
6
|
+
|
|
7
|
+
NAME := bash+
|
|
8
|
+
LIB := lib/$(NAME).bash
|
|
9
|
+
DOC := doc/$(NAME).swim
|
|
10
|
+
MAN1 := man/man1
|
|
11
|
+
MAN3 := man/man3
|
|
12
|
+
|
|
13
|
+
INSTALL_LIB ?= $(shell bpan env BPAN_LIB)
|
|
14
|
+
INSTALL_DIR ?= test
|
|
15
|
+
INSTALL_MAN1 ?= $(shell bpan env BPAN_MAN1)
|
|
16
|
+
INSTALL_MAN3 ?= $(shell bpan env BPAN_MAN3)
|
|
17
|
+
|
|
18
|
+
default: help
|
|
19
|
+
|
|
20
|
+
help:
|
|
21
|
+
@echo 'Rules: test, install, doc'
|
|
22
|
+
|
|
23
|
+
.PHONY: test
|
|
24
|
+
test:
|
|
25
|
+
prove $(PROVEOPT:%=% )test/
|
|
26
|
+
|
|
27
|
+
install:
|
|
28
|
+
install -C -d -m 0755 $(INSTALL_LIB)/$(INSTALL_DIR)/
|
|
29
|
+
install -C -m 0755 $(LIB) $(INSTALL_LIB)/$(INSTALL_DIR)/
|
|
30
|
+
install -C -d -m 0755 $(INSTALL_MAN1)/
|
|
31
|
+
install -C -d -m 0755 $(INSTALL_MAN3)/
|
|
32
|
+
install -C -m 0644 $(MAN1)/$(NAME).1 $(INSTALL_MAN1)/
|
|
33
|
+
install -C -m 0644 $(MAN3)/$(NAME).3 $(INSTALL_MAN3)/
|
|
34
|
+
|
|
35
|
+
.PHONY: doc
|
|
36
|
+
doc: ReadMe.pod $(MAN1)/$(NAME).1 $(MAN3)/$(NAME).3
|
|
37
|
+
|
|
38
|
+
ReadMe.pod: $(DOC)
|
|
39
|
+
swim --to=pod --complete --wrap $< > $@
|
|
40
|
+
|
|
41
|
+
$(MAN1)/%.1: doc/%.swim
|
|
42
|
+
swim --to=man $< > $@
|
|
43
|
+
|
|
44
|
+
$(MAN3)/%.3: doc/%.swim
|
|
45
|
+
swim --to=man $< > $@
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
=meta: 0.0.2
|
|
2
|
+
|
|
3
|
+
name: bashplus
|
|
4
|
+
version: 0.0.7
|
|
5
|
+
abstract: Modern Bash Programming
|
|
6
|
+
homepage: http://bpan.org/package/bashplus/
|
|
7
|
+
|
|
8
|
+
license: MIT
|
|
9
|
+
copyright: 2013-2016
|
|
10
|
+
author:
|
|
11
|
+
name: Ingy döt Net
|
|
12
|
+
email: ingy@ingy.net
|
|
13
|
+
github: ingydotnet
|
|
14
|
+
twitter: ingydotnet
|
|
15
|
+
freenode: ingy
|
|
16
|
+
homepage: http://ingy.net
|
|
17
|
+
|
|
18
|
+
requires:
|
|
19
|
+
bash: 3.2.0
|
|
20
|
+
test:
|
|
21
|
+
cmd: make test
|
|
22
|
+
install:
|
|
23
|
+
cmd: make install
|
|
24
|
+
|
|
25
|
+
devel:
|
|
26
|
+
git: git@github.org/ingydotnet/bashplus
|
|
27
|
+
irc: irc.freenode.net/bpan
|
|
28
|
+
bug: https://github.com/ingydotnet/bashplus/issues/
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
=pod
|
|
2
|
+
|
|
3
|
+
=for comment
|
|
4
|
+
DO NOT EDIT. This Pod was generated by Swim v0.1.41.
|
|
5
|
+
See http://github.com/ingydotnet/swim-pm#readme
|
|
6
|
+
|
|
7
|
+
=encoding utf8
|
|
8
|
+
|
|
9
|
+
=head1 Name
|
|
10
|
+
|
|
11
|
+
Bash+(1) - Modern Bash Programming
|
|
12
|
+
|
|
13
|
+
=for html
|
|
14
|
+
<a href="https://travis-ci.org/ingydotnet/bashplus"><img src="https://travis-ci.org/ingydotnet/bashplus.png" alt="bashplus"></a>
|
|
15
|
+
|
|
16
|
+
=head1 Synopsis
|
|
17
|
+
|
|
18
|
+
source bash+ :std :array
|
|
19
|
+
|
|
20
|
+
use Foo::Bar this that
|
|
21
|
+
|
|
22
|
+
Array.new args "$@"
|
|
23
|
+
|
|
24
|
+
if args.empty?; then
|
|
25
|
+
die "I need args!"
|
|
26
|
+
fi
|
|
27
|
+
|
|
28
|
+
Foo::Bar.new foo args
|
|
29
|
+
|
|
30
|
+
this is awesome # <= this is a real command! (You just imported it)
|
|
31
|
+
|
|
32
|
+
=head1 Description
|
|
33
|
+
|
|
34
|
+
Bash+ is just Bash... B<plus> some libraries that can make Bash programming a
|
|
35
|
+
lot nicer.
|
|
36
|
+
|
|
37
|
+
=for comment # Installation
|
|
38
|
+
|
|
39
|
+
Get the source code from GitHub:
|
|
40
|
+
|
|
41
|
+
git clone git@github.com:ingydotnet/bashplus
|
|
42
|
+
|
|
43
|
+
Then run:
|
|
44
|
+
|
|
45
|
+
make test
|
|
46
|
+
make install # Possibly with 'sudo'
|
|
47
|
+
|
|
48
|
+
=head1 Usage
|
|
49
|
+
|
|
50
|
+
For now look at some libraries the use Bash+:
|
|
51
|
+
|
|
52
|
+
=over
|
|
53
|
+
|
|
54
|
+
=item * L<https://github.com/ingydotnet/git-hub>
|
|
55
|
+
|
|
56
|
+
=item * L<https://github.com/ingydotnet/json-bash>
|
|
57
|
+
|
|
58
|
+
=item * L<https://github.com/ingydotnet/test-more-bash>
|
|
59
|
+
|
|
60
|
+
=back
|
|
61
|
+
|
|
62
|
+
=head1 Status
|
|
63
|
+
|
|
64
|
+
If you are interested in chatting about this, C</join #bpan> on
|
|
65
|
+
irc.freenode.net.
|
|
66
|
+
|
|
67
|
+
=head1 Author
|
|
68
|
+
|
|
69
|
+
Written by Ingy döt Net <ingy@ingy.net>
|
|
70
|
+
|
|
71
|
+
=head1 Copyright & License
|
|
72
|
+
|
|
73
|
+
Copyright 2013-2016. Ingy döt Net.
|
|
74
|
+
|
|
75
|
+
The MIT License (MIT).
|
|
76
|
+
|
|
77
|
+
=cut
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
#------------------------------------------------------------------------------
|
|
3
|
+
# Bash+ - Modern Bash Programming
|
|
4
|
+
#
|
|
5
|
+
# Copyright (c) 2013-2016 Ingy döt Net
|
|
6
|
+
#------------------------------------------------------------------------------
|
|
7
|
+
|
|
8
|
+
set -e
|
|
9
|
+
shopt -s compat31&>/dev/null||:
|
|
10
|
+
|
|
11
|
+
#------------------------------------------------------------------------------
|
|
12
|
+
# Determine how `bash+` was called, and do the right thing:
|
|
13
|
+
#------------------------------------------------------------------------------
|
|
14
|
+
if [ "${BASH_SOURCE[0]}" != "$0" ]; then
|
|
15
|
+
# 'bash+' is being sourced:
|
|
16
|
+
[[ "${BASH_SOURCE[0]}" =~ /bin/bash\\+$ ]] || {
|
|
17
|
+
echo "Invalid Bash+ path '${BASH_SOURCE[0]}'" 2> /dev/null
|
|
18
|
+
exit 1
|
|
19
|
+
}
|
|
20
|
+
source "${BASH_SOURCE[0]%/bin/*}"/lib/bash+.bash || return $?
|
|
21
|
+
bash+:import "$@"
|
|
22
|
+
return $?
|
|
23
|
+
else
|
|
24
|
+
if [ $# -eq 1 -a "$1" == --version ]; then
|
|
25
|
+
echo 'bash+ version 0.0.7'
|
|
26
|
+
else
|
|
27
|
+
cat <<...
|
|
28
|
+
|
|
29
|
+
Greetings modern Bash programmer. Welcome to Bash+!
|
|
30
|
+
|
|
31
|
+
Bash+ is framework that makes Bash programming more like Ruby and Perl.
|
|
32
|
+
|
|
33
|
+
See: https://github.com/bpan-org/bashplus
|
|
34
|
+
|
|
35
|
+
If you got here trying to use bash+ in a program, you need to source it:
|
|
36
|
+
|
|
37
|
+
source bash+
|
|
38
|
+
|
|
39
|
+
Happy Bash Hacking!
|
|
40
|
+
|
|
41
|
+
...
|
|
42
|
+
fi
|
|
43
|
+
fi
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
Bash+(1)
|
|
2
|
+
========
|
|
3
|
+
|
|
4
|
+
Modern Bash Programming
|
|
5
|
+
|
|
6
|
+
<badge travis ingydotnet/bashplus>
|
|
7
|
+
|
|
8
|
+
= Synopsis
|
|
9
|
+
|
|
10
|
+
source bash+ :std :array
|
|
11
|
+
|
|
12
|
+
use Foo::Bar this that
|
|
13
|
+
|
|
14
|
+
Array.new args "$@"
|
|
15
|
+
|
|
16
|
+
if args.empty?; then
|
|
17
|
+
die "I need args!"
|
|
18
|
+
fi
|
|
19
|
+
|
|
20
|
+
Foo::Bar.new foo args
|
|
21
|
+
|
|
22
|
+
this is awesome # <= this is a real command! (You just imported it)
|
|
23
|
+
|
|
24
|
+
= Description
|
|
25
|
+
|
|
26
|
+
Bash+ is just Bash... *plus* some libraries that can make Bash programming a
|
|
27
|
+
lot nicer.
|
|
28
|
+
|
|
29
|
+
## Installation
|
|
30
|
+
|
|
31
|
+
Get the source code from GitHub:
|
|
32
|
+
|
|
33
|
+
git clone git@github.com:ingydotnet/bashplus
|
|
34
|
+
|
|
35
|
+
Then run:
|
|
36
|
+
|
|
37
|
+
make test
|
|
38
|
+
make install # Possibly with 'sudo'
|
|
39
|
+
|
|
40
|
+
= Usage
|
|
41
|
+
|
|
42
|
+
For now look at some libraries the use Bash+:
|
|
43
|
+
|
|
44
|
+
* https://github.com/ingydotnet/git-hub
|
|
45
|
+
* https://github.com/ingydotnet/json-bash
|
|
46
|
+
* https://github.com/ingydotnet/test-more-bash
|
|
47
|
+
|
|
48
|
+
= Status
|
|
49
|
+
|
|
50
|
+
If you are interested in chatting about this, `/join #bpan` on
|
|
51
|
+
irc.freenode.net.
|
|
52
|
+
|
|
53
|
+
= Author
|
|
54
|
+
|
|
55
|
+
Written by Ingy döt Net <ingy@ingy.net>
|
|
56
|
+
|
|
57
|
+
= Copyright & License
|
|
58
|
+
|
|
59
|
+
Copyright 2013-2016. Ingy döt Net.
|
|
60
|
+
|
|
61
|
+
The MIT License (MIT).
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
# bash+ - Modern Bash Programming
|
|
2
|
+
#
|
|
3
|
+
# Copyright (c) 2013-2016 Ingy döt Net
|
|
4
|
+
|
|
5
|
+
{
|
|
6
|
+
bash+:version-check() {
|
|
7
|
+
test $1 -ge 4 && return
|
|
8
|
+
test $1 -eq 3 -a $2 -ge 2 && return
|
|
9
|
+
echo "Bash version 3.2 or higher required for 'git hub'" >&2
|
|
10
|
+
exit 1
|
|
11
|
+
}
|
|
12
|
+
bash+:version-check "${BASH_VERSINFO[@]}"
|
|
13
|
+
unset -f Bash:version-check
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
set -e
|
|
17
|
+
|
|
18
|
+
[ -z "$BASHPLUS_VERSION" ] || return 0
|
|
19
|
+
|
|
20
|
+
BASHPLUS_VERSION='0.0.7'
|
|
21
|
+
|
|
22
|
+
@() { echo "$@"; }
|
|
23
|
+
bash+:export:std() { @ use die warn; }
|
|
24
|
+
|
|
25
|
+
# Source a bash library call import on it:
|
|
26
|
+
bash+:use() {
|
|
27
|
+
local library_name="${1:?bash+:use requires library name}"; shift
|
|
28
|
+
local library_path=; library_path="$(bash+:findlib $library_name)"
|
|
29
|
+
[[ -n $library_path ]] || {
|
|
30
|
+
bash+:die "Can't find library '$library_name'." 1
|
|
31
|
+
}
|
|
32
|
+
source "$library_path"
|
|
33
|
+
if bash+:can "$library_name:import"; then
|
|
34
|
+
"$library_name:import" "$@"
|
|
35
|
+
else
|
|
36
|
+
bash+:import "$@"
|
|
37
|
+
fi
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
# Copy bash+: functions to unprefixed functions
|
|
41
|
+
bash+:import() {
|
|
42
|
+
local arg=
|
|
43
|
+
for arg; do
|
|
44
|
+
if [[ $arg =~ ^: ]]; then
|
|
45
|
+
bash+:import `bash+:export$arg`
|
|
46
|
+
else
|
|
47
|
+
bash+:fcopy bash+:$arg $arg
|
|
48
|
+
fi
|
|
49
|
+
done
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
# Function copy
|
|
53
|
+
bash+:fcopy() {
|
|
54
|
+
bash+:can "${1:?bash+:fcopy requires an input function name}" ||
|
|
55
|
+
bash+:die "'$1' is not a function" 2
|
|
56
|
+
local func=; func=$(type "$1" 3>/dev/null | tail -n+3)
|
|
57
|
+
[[ -n $3 ]] && "$3"
|
|
58
|
+
eval "${2:?bash+:fcopy requires an output function name}() $func"
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
# Find the path of a library
|
|
62
|
+
bash+:findlib() {
|
|
63
|
+
local library_name=; library_name="$(tr 'A-Z' 'a-z' <<< "${1//:://}").bash"
|
|
64
|
+
local lib="${BASHPLUSLIB:-${BASHLIB:-$PATH}}"
|
|
65
|
+
library_name="${library_name//+/\\+}"
|
|
66
|
+
find ${lib//:/ } -name ${library_name##*/} 2>/dev/null |
|
|
67
|
+
grep -E "$library_name\$" |
|
|
68
|
+
head -n1
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
bash+:die() {
|
|
72
|
+
local msg="${1:-Died}"
|
|
73
|
+
printf "${msg//\\n/$'\n'}" >&2
|
|
74
|
+
local trailing_newline_re=$'\n''$'
|
|
75
|
+
[[ $msg =~ $trailing_newline_re ]] && exit 1
|
|
76
|
+
|
|
77
|
+
local c=($(caller ${DIE_STACK_LEVEL:-${2:-0}}))
|
|
78
|
+
(( ${#c[@]} == 2 )) &&
|
|
79
|
+
msg=" at line %d of %s" ||
|
|
80
|
+
msg=" at line %d in %s of %s"
|
|
81
|
+
printf "$msg\n" ${c[@]} >&2
|
|
82
|
+
exit 1
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
bash+:warn() {
|
|
86
|
+
local msg="${1:-Warning}"
|
|
87
|
+
printf "${msg//\\n/$'\n'}\n" >&2
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
bash+:can() {
|
|
91
|
+
[[ $(type -t "${1:?bash+:can requires a function name}") == function ]]
|
|
92
|
+
}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.28)
|
|
2
|
+
.\"
|
|
3
|
+
.\" Standard preamble:
|
|
4
|
+
.\" ========================================================================
|
|
5
|
+
.de Sp \" Vertical space (when we can't use .PP)
|
|
6
|
+
.if t .sp .5v
|
|
7
|
+
.if n .sp
|
|
8
|
+
..
|
|
9
|
+
.de Vb \" Begin verbatim text
|
|
10
|
+
.ft CW
|
|
11
|
+
.nf
|
|
12
|
+
.ne \\$1
|
|
13
|
+
..
|
|
14
|
+
.de Ve \" End verbatim text
|
|
15
|
+
.ft R
|
|
16
|
+
.fi
|
|
17
|
+
..
|
|
18
|
+
.\" Set up some character translations and predefined strings. \*(-- will
|
|
19
|
+
.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
|
|
20
|
+
.\" double quote, and \*(R" will give a right double quote. \*(C+ will
|
|
21
|
+
.\" give a nicer C++. Capital omega is used to do unbreakable dashes and
|
|
22
|
+
.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff,
|
|
23
|
+
.\" nothing in troff, for use with C<>.
|
|
24
|
+
.tr \(*W-
|
|
25
|
+
.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
|
|
26
|
+
.ie n \{\
|
|
27
|
+
. ds -- \(*W-
|
|
28
|
+
. ds PI pi
|
|
29
|
+
. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
|
|
30
|
+
. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch
|
|
31
|
+
. ds L" ""
|
|
32
|
+
. ds R" ""
|
|
33
|
+
. ds C` ""
|
|
34
|
+
. ds C' ""
|
|
35
|
+
'br\}
|
|
36
|
+
.el\{\
|
|
37
|
+
. ds -- \|\(em\|
|
|
38
|
+
. ds PI \(*p
|
|
39
|
+
. ds L" ``
|
|
40
|
+
. ds R" ''
|
|
41
|
+
. ds C`
|
|
42
|
+
. ds C'
|
|
43
|
+
'br\}
|
|
44
|
+
.\"
|
|
45
|
+
.\" Escape single quotes in literal strings from groff's Unicode transform.
|
|
46
|
+
.ie \n(.g .ds Aq \(aq
|
|
47
|
+
.el .ds Aq '
|
|
48
|
+
.\"
|
|
49
|
+
.\" If the F register is turned on, we'll generate index entries on stderr for
|
|
50
|
+
.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
|
|
51
|
+
.\" entries marked with X<> in POD. Of course, you'll have to process the
|
|
52
|
+
.\" output yourself in some meaningful fashion.
|
|
53
|
+
.\"
|
|
54
|
+
.\" Avoid warning from groff about undefined register 'F'.
|
|
55
|
+
.de IX
|
|
56
|
+
..
|
|
57
|
+
.nr rF 0
|
|
58
|
+
.if \n(.g .if rF .nr rF 1
|
|
59
|
+
.if (\n(rF:(\n(.g==0)) \{
|
|
60
|
+
. if \nF \{
|
|
61
|
+
. de IX
|
|
62
|
+
. tm Index:\\$1\t\\n%\t"\\$2"
|
|
63
|
+
..
|
|
64
|
+
. if !\nF==2 \{
|
|
65
|
+
. nr % 0
|
|
66
|
+
. nr F 2
|
|
67
|
+
. \}
|
|
68
|
+
. \}
|
|
69
|
+
.\}
|
|
70
|
+
.rr rF
|
|
71
|
+
.\" ========================================================================
|
|
72
|
+
.\"
|
|
73
|
+
.IX Title "Bash+(1) 1"
|
|
74
|
+
.TH Bash+(1) 1 "January 2016" "Generated by Swim v0.1.41" "Modern Bash Programming"
|
|
75
|
+
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
|
|
76
|
+
.\" way too many mistakes in technical documents.
|
|
77
|
+
.if n .ad l
|
|
78
|
+
.nh
|
|
79
|
+
.SH "Name"
|
|
80
|
+
.IX Header "Name"
|
|
81
|
+
Bash+(1) \- Modern Bash Programming
|
|
82
|
+
.SH "Synopsis"
|
|
83
|
+
.IX Header "Synopsis"
|
|
84
|
+
.Vb 1
|
|
85
|
+
\& source bash+ :std :array
|
|
86
|
+
\&
|
|
87
|
+
\& use Foo::Bar this that
|
|
88
|
+
\&
|
|
89
|
+
\& Array.new args "$@"
|
|
90
|
+
\&
|
|
91
|
+
\& if args.empty?; then
|
|
92
|
+
\& die "I need args!"
|
|
93
|
+
\& fi
|
|
94
|
+
\&
|
|
95
|
+
\& Foo::Bar.new foo args
|
|
96
|
+
\&
|
|
97
|
+
\& this is awesome # <= this is a real command! (You just imported it)
|
|
98
|
+
.Ve
|
|
99
|
+
.SH "Description"
|
|
100
|
+
.IX Header "Description"
|
|
101
|
+
Bash+ is just Bash... \fBplus\fR some libraries that can make Bash programming a lot nicer.
|
|
102
|
+
.PP
|
|
103
|
+
Get the source code from GitHub:
|
|
104
|
+
.PP
|
|
105
|
+
.Vb 1
|
|
106
|
+
\& git clone git@github.com:ingydotnet/bashplus
|
|
107
|
+
.Ve
|
|
108
|
+
.PP
|
|
109
|
+
Then run:
|
|
110
|
+
.PP
|
|
111
|
+
.Vb 2
|
|
112
|
+
\& make test
|
|
113
|
+
\& make install # Possibly with \*(Aqsudo\*(Aq
|
|
114
|
+
.Ve
|
|
115
|
+
.SH "Usage"
|
|
116
|
+
.IX Header "Usage"
|
|
117
|
+
For now look at some libraries the use Bash+:
|
|
118
|
+
.IP "\(bu" 4
|
|
119
|
+
<https://github.com/ingydotnet/git\-hub>
|
|
120
|
+
.IP "\(bu" 4
|
|
121
|
+
<https://github.com/ingydotnet/json\-bash>
|
|
122
|
+
.IP "\(bu" 4
|
|
123
|
+
<https://github.com/ingydotnet/test\-more\-bash>
|
|
124
|
+
.SH "Status"
|
|
125
|
+
.IX Header "Status"
|
|
126
|
+
If you are interested in chatting about this, \f(CW\*(C`/join #bpan\*(C'\fR on irc.freenode.net.
|
|
127
|
+
.SH "Author"
|
|
128
|
+
.IX Header "Author"
|
|
129
|
+
Written by Ingy döt Net <ingy@ingy.net>
|
|
130
|
+
.SH "Copyright & License"
|
|
131
|
+
.IX Header "Copyright & License"
|
|
132
|
+
Copyright 2013\-2016. Ingy döt Net.
|
|
133
|
+
.PP
|
|
134
|
+
The \s-1MIT\s0 License (\s-1MIT\s0).
|