diff --git a/AUTHORS b/AUTHORS new file mode 100644 index 00000000..66bdac33 --- /dev/null +++ b/AUTHORS @@ -0,0 +1,9 @@ +Zachary Yedidia +Collin Warren + +Github users: + + +For license and copyright information, see LICENSE instead. +Thank you from all of us for using micro. And thank you to everyone who +contributes, from bug reports to commits. diff --git a/assets/logo.svg b/assets/logo.svg new file mode 100644 index 00000000..900e18cc --- /dev/null +++ b/assets/logo.svg @@ -0,0 +1,63 @@ + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/assets/packaging/micro.1 b/assets/packaging/micro.1 new file mode 100644 index 00000000..ccd1822e --- /dev/null +++ b/assets/packaging/micro.1 @@ -0,0 +1,56 @@ +.\" micro manual page - micro(1) +.\" +.\" Copyright © 2017 Zachary Yedidia +.\" Copyright © 2017 Collin Warren +.\" +.\" This document is provided under the same licensing as micro. +.\" See \usr\share\doc\micro\LICENSE for more information. +.TH micro 1 "2017-03-28" +.SH NAME +micro \- An intuitive and modern terminal text editor +. +.SH SYNOPSIS +.B micro +.RB [] +[ +.I "filename \&..." +] +.SH DESCRIPTION +( Copied from the README file. ) + +Micro is a terminal-based text editor that aims to be easy to use and intuitive, while also taking advantage of the full capabilities +of modern terminals. It comes as one single, batteries-included, static binary with no dependencies. + +As the name indicates, micro aims to be somewhat of a successor to the nano editor by being easy to install and use in a pinch, but micro also aims to be +enjoyable to use full time, whether you work in the terminal because you prefer it (like me), or because you need to (over ssh). + +.SH OPTIONS +.B \-v --version +Displays the current version of micro and the git commit hash. +.TP +.SH ENVIRONMENT +Micro's behaviour can be changed by setting environment variables, of which +there is currently only one: +.I MICRO_TRUE_COLOR + +When MICRO_TRUE_COLOR is set to 1, micro will attempt to treat your terminal as +a true-color terminal and will be able to make full use of the true-color colorschemes +that are included with micro. If MICRO_TRUE_COLOR is not set or is set to 0, then +micro will only make use of 256 color features and will internally map true-color +colorschemes to the nearest colors available. For more information see micro's documentation. + +.SH NOTICE +This manpage is intended only to serve as a quick guide to the invocation of +micro and is not intended to replace the full documentation included with micro +which can be accessed from within micro. Micro tells you what key combination to +press to get help in the lower right. + +.SH BUGS +A comprehensive list of bugs will not be listed in this manpage. See the Github +page at \fBhttps://github.com/zyedidia/micro/issues\fP for a list of known bugs +and to report any newly encountered bugs you may find. We strive to correct +bugs as swiftly as possible. + +.SH COPYRIGHT +Copyright \(co 2017 Zachary Yedidia, Collin Warren, et al. +See /usr/share/doc/micro/LICENSE and /usr/share/doc/micro/AUTHORS for more information. diff --git a/assets/packaging/micro.desktop b/assets/packaging/micro.desktop new file mode 100644 index 00000000..076a5350 --- /dev/null +++ b/assets/packaging/micro.desktop @@ -0,0 +1,15 @@ +[Desktop Entry] + +Name=Micro +GenericName=Text Editor +Comment=Edit text files in a terminal + +Icon=micro +Type=Application +Categories=terminal;TextEditor; +Keywords=text;editor;syntax;terminal; + +Exec=micro %U +StartupNotify=false +Terminal=true +MimeType=text/plain;text/x-chdr;text/x-csrc;text/x-c++hdr;text/x-c++src;text/x-java;text/x-dsrc;text/x-pascal;text/x-perl;text/x-python;application/x-php;application/x-httpd-php3;application/x-httpd-php4;application/x-httpd-php5;application/xml;text/html;text/css;text/x-sql;text/x-diff; diff --git a/tools/build-deb.sh b/tools/build-deb.sh index 95536c8d..6e3755ba 100755 --- a/tools/build-deb.sh +++ b/tools/build-deb.sh @@ -1,7 +1,5 @@ -# Builds two .deb packages, for x86 (i386) and x86_64 (amd64) -# These packages are the bare minimum, which means that they can be installed -# But they do not feature everything yet. -# This does not mean that the editor itself is affected. +# Builds three .deb packages, for x86 (i386) and x86_64 (amd64) and arm (arm) +# These packages include a manpage, an icon, and a desktop file. function getControl() { echo Section: editors @@ -21,42 +19,56 @@ echo " and it supports mouse input" function installFiles() { TO="$1/$2/usr/share/doc/micro/" mkdir -p $TO + mkdir -p "$1/$2/usr/share/man/man1/" + mkdir -p "$1/$2/usr/share/applications/" + mkdir -p "$1/$2/usr/share/icons/" cp ../LICENSE $TO cp ../LICENSE-THIRD-PARTY $TO cp ../README.md $TO + gzip -c ../assets/packaging/micro.1 > $1/$2/usr/share/man/man1/micro.1.gz + cp ../assets/packaging/micro.desktop $1/$2/usr/share/applications/ + cp ../assets/logo.svg $1/$2/usr/share/icons/micro.svg } version=$1 if [ "$1" == "" ] -then - version=$(go run build-version.go) + then + version=$(go run build-version.go | tr "-" ".") fi echo "Building packages for Version '$version'" -echo "Running Cross-Compile" -./cross-compile.sh $version - +echo "Compiling." +./compile-linux.sh $version + echo "Beginning package build process" - + PKGPATH="../packages/deb" - -rm -fr ../packages + +rm -fr $PKGPATH mkdir -p $PKGPATH/amd64/DEBIAN/ mkdir -p $PKGPATH/i386/DEBIAN/ +mkdir -p $PKGPATH/arm/DEBIAN/ getControl "amd64" "$version" > $PKGPATH/amd64/DEBIAN/control tar -xzf "../binaries/micro-$version-linux64.tar.gz" "micro-$version/micro" mkdir -p $PKGPATH/amd64/usr/local/bin/ mv "micro-$version/micro" "$PKGPATH/amd64/usr/local/bin/" - + getControl "i386" "$version" > $PKGPATH/i386/DEBIAN/control tar -xzf "../binaries/micro-$version-linux32.tar.gz" "micro-$version/micro" mkdir -p $PKGPATH/i386/usr/local/bin/ mv "micro-$version/micro" "$PKGPATH/i386/usr/local/bin/" - + +getControl "arm" "$version" > $PKGPATH/arm/DEBIAN/control +tar -xzf "../binaries/micro-$version-linux-arm.tar.gz" "micro-$version/micro" +mkdir -p $PKGPATH/arm/usr/local/bin +mv "micro-$version/micro" "$PKGPATH/arm/usr/local/bin" + rm -rf "micro-$version" - + installFiles $PKGPATH "amd64" installFiles $PKGPATH "i386" - +installFiles $PKGPATH "arm" + dpkg -b "$PKGPATH/amd64/" "../packages/micro-$version-amd64.deb" dpkg -b "$PKGPATH/i386/" "../packages/micro-$version-i386.deb" +dpkg -b "$PKGPATH/arm/" "../packages/micro-$version-arm.deb" diff --git a/tools/build-packages.sh b/tools/build-packages.sh new file mode 100755 index 00000000..b827afa7 --- /dev/null +++ b/tools/build-packages.sh @@ -0,0 +1,129 @@ +#Builds all packages we support + +version=$1 +if [ "$1" == "" ] + then + version=$(go run build-version.go | tr "-" ".") +fi +echo "Building packages for Version '$version'" +echo "Compiling." +./compile-linux.sh $version + +#Build the debs +function getControl() { +echo Section: editors +echo Package: micro +echo Version: $2 +echo Priority: extra +echo Maintainer: \"Zachary Yedidia\" \ +echo Standards-Version: 3.9.8 +echo Homepage: https://micro-editor.github.io/ +echo Architecture: $1 +echo "Description: A modern and intuitive terminal-based text editor" +echo " This package contains a modern alternative to other terminal-based" +echo " Editors. It is easy to Use, highly customizable via themes and plugins" +echo " and it supports mouse input" +} + +function installFiles() { + TO="$1/$2/usr/share/doc/micro/" + mkdir -p $TO + mkdir -p "$1/$2/usr/share/man/man1/" + mkdir -p "$1/$2/usr/share/applications/" + mkdir -p "$1/$2/usr/share/icons/" + cp ../LICENSE $TO + cp ../LICENSE-THIRD-PARTY $TO + cp ../README.md $TO + gzip -c ../assets/packaging/micro.1 > $1/$2/usr/share/man/man1/micro.1.gz + cp ../assets/packaging/micro.desktop $1/$2/usr/share/applications/ + cp ../assets/logo.svg $1/$2/usr/share/icons/micro.svg +} +echo "Starting deb build process" +PKGPATH="../packages/deb" +rm -fr $PKGPATH +mkdir -p $PKGPATH/amd64/DEBIAN/ +mkdir -p $PKGPATH/i386/DEBIAN/ +mkdir -p $PKGPATH/arm/DEBIAN/ + +getControl "amd64" "$version" > $PKGPATH/amd64/DEBIAN/control +tar -xzf "../binaries/micro-$version-linux64.tar.gz" "micro-$version/micro" +mkdir -p $PKGPATH/amd64/usr/local/bin/ +mv "micro-$version/micro" "$PKGPATH/amd64/usr/local/bin/" + +getControl "i386" "$version" > $PKGPATH/i386/DEBIAN/control +tar -xzf "../binaries/micro-$version-linux32.tar.gz" "micro-$version/micro" +mkdir -p $PKGPATH/i386/usr/local/bin/ +mv "micro-$version/micro" "$PKGPATH/i386/usr/local/bin/" + +getControl "arm" "$version" > $PKGPATH/arm/DEBIAN/control +tar -xzf "../binaries/micro-$version-linux-arm.tar.gz" "micro-$version/micro" +mkdir -p $PKGPATH/arm/usr/local/bin +mv "micro-$version/micro" "$PKGPATH/arm/usr/local/bin" + +rm -rf "micro-$version" + +installFiles $PKGPATH "amd64" +installFiles $PKGPATH "i386" +installFiles $PKGPATH "arm" + +echo "Building debs" +dpkg -b "$PKGPATH/amd64/" "../packages/micro-$version-amd64.deb" +dpkg -b "$PKGPATH/i386/" "../packages/micro-$version-i386.deb" +dpkg -b "$PKGPATH/arm/" "../packages/micro-$version-arm.deb" + +#Build the RPMS +echo "Starting RPM build process" +PKGPATH="../packages/rpm" + +rm -rf $PKGPATH +mkdir -p $PKGPATH + +versionsplit=$(echo $version | tr "." "\n") +version="" +i=0 +for string in $versionsplit +do + if (("$i" < "2")) + then + version=$(echo $version$string.) + fi + if (("$i" == "2")) + then + version=$(echo $version$string) + fi + if (("$i" == "3")) + then + dev=$(echo $dev$string.) + fi + if (("$i"=="4")) + then + dev=$(echo $dev$string) + fi + let "i+=1" +done + +#Generate the spec file from template +cat micro.spec | sed s/"dev.126"/"$dev"/ | sed s/"Version: 1.1.5"/"Version: $version"/ | sed s/"-Version: 1.1.5"/"-Version: $version"/ | sed s/"DATE"/"$(date +%F\ %H:%m)"/ | sed s/"rdieter1@localhost.localdomain"/"$USER@$HOSTNAME"/ | tee > $PKGPATH/micro.spec + +cd $PKGPATH + +echo "Building the RPM packages" +rpmbuild -bs micro.spec --define "_sourcedir $(pwd)/../../binaries/" --define "_rpmdir $(pwd)/../" +rpmbuild -bb micro.spec --define "_sourcedir $(pwd)/../../binaries/" --define "_rpmdir $(pwd)/../" --target x86_64 +rpmbuild -bb micro.spec --define "_sourcedir $(pwd)/../../binaries/" --define "_rpmdir $(pwd)/../" --target i686 +rpmbuild -bb micro.spec --define "_sourcedir $(pwd)/../../binaries/" --define "_rpmdir $(pwd)/../" --target armv7l + +cd .. + +mv x86_64/micro-$version-1.$dev.x86_64.rpm ./ +mv i686/micro-$version-1.$dev.i686.rpm ./ +mv armv7l/micro-$version-1.$dev.armv7l.rpm ./ + +echo "Cleaning up." +rm -rf x86_64 +rm -rf i686 +rm -rf armv7l +rm -rf rpm +rm -rf deb + +echo "Your packages should be ready now. Thank you, have a nice day. :)" diff --git a/tools/build-rpm.sh b/tools/build-rpm.sh new file mode 100755 index 00000000..f910cb4a --- /dev/null +++ b/tools/build-rpm.sh @@ -0,0 +1,59 @@ +#This script builds four rpm packages +#One for x86 (i386) and x86_64 (amd64) and arm (armv7l) +#and one containing the source tarball +version=$1 +if [ "$1" == "" ] + then + version=$(go run build-version.go | tr "-" ".") +fi +echo "Building packages for Version '$version'" +echo "Compiling." +./compile-linux.sh $version + +PKGPATH="../packages/rpm" + +rm -rf $PKGPATH +mkdir -p $PKGPATH +versionsplit=$(echo $version | tr "." "\n") +version="" +i=0 +for string in $versionsplit +do + if (("$i" < "2")) + then + version=$(echo $version$string.) + fi + if (("$i" == "2")) + then + version=$(echo $version$string) + fi + if (("$i" == "3")) + then + dev=$(echo $dev$string.) + fi + if (("$i"=="4")) + then + dev=$(echo $dev$string) + fi + let "i+=1" +done +echo "Starting the packaging process" +#Generate the spec file +cat micro.spec | sed s/"dev.126"/"$dev"/ | sed s/"Version: 1.1.5"/"Version: $version"/ | sed s/"-Version: 1.1.5"/"-Version: $version"/ | sed s/"DATE"/"$(date +%F\ %H:%m)"/ | sed s/"rdieter1@localhost.localdomain"/"$USER@$HOSTNAME"/ | tee > $PKGPATH/micro.spec + +cd $PKGPATH + +rpmbuild -bs micro.spec --define "_sourcedir $(pwd)/../../binaries/" --define "_rpmdir $(pwd)/../" +rpmbuild -bb micro.spec --define "_sourcedir $(pwd)/../../binaries/" --define "_rpmdir $(pwd)/../" --target x86_64 +rpmbuild -bb micro.spec --define "_sourcedir $(pwd)/../../binaries/" --define "_rpmdir $(pwd)/../" --target i686 +rpmbuild -bb micro.spec --define "_sourcedir $(pwd)/../../binaries/" --define "_rpmdir $(pwd)/../" --target armv7l + +cd .. + +mv x86_64/micro-$version-1.$dev.x86_64.rpm ./ +mv i686/micro-$version-1.$dev.i686.rpm ./ +mv armv7l/micro-$version-1.$dev.armv7l.rpm ./ + +rm -rf x86_64 +rm -rf i686 +rm -rf armv7l diff --git a/tools/compile-linux.sh b/tools/compile-linux.sh new file mode 100755 index 00000000..0bdd87de --- /dev/null +++ b/tools/compile-linux.sh @@ -0,0 +1,34 @@ +# Source tar + +./vendor-src.sh micro-$1-src +cd .. + +mkdir -p binaries +mkdir -p micro-$1 + +mv micro-$1-src.tar.gz binaries +mv micro-$1-src.zip binaries + +cp LICENSE micro-$1 +cp README.md micro-$1 +cp LICENSE-THIRD-PARTY micro-$1 + +HASH="$(git rev-parse --short HEAD)" +VERSION="$(go run tools/build-version.go)" +DATE="$(go run tools/build-date.go)" +ADDITIONAL_GO_LINKER_FLAGS="$(go run tools/info-plist.go $VERSION)" + +echo "Linux 64" +GOOS=linux GOARCH=amd64 go build -ldflags "-s -w -X main.Version=$1 -X main.CommitHash=$HASH -X 'main.CompileDate=$DATE'" -o micro-$1/micro ./cmd/micro +tar -czf micro-$1-linux64.tar.gz micro-$1 +mv micro-$1-linux64.tar.gz binaries +echo "Linux 32" +GOOS=linux GOARCH=386 go build -ldflags "-s -w -X main.Version=$1 -X main.CommitHash=$HASH -X 'main.CompileDate=$DATE'" -o micro-$1/micro ./cmd/micro +tar -czf micro-$1-linux32.tar.gz micro-$1 +mv micro-$1-linux32.tar.gz binaries +echo "Linux arm" +GOOS=linux GOARCH=arm go build -ldflags "-s -w -X main.Version=$1 -X main.CommitHash=$HASH -X 'main.CompileDate=$DATE'" -o micro-$1/micro ./cmd/micro +tar -czf micro-$1-linux-arm.tar.gz micro-$1 +mv micro-$1-linux-arm.tar.gz binaries + +rm -rf micro-$1 diff --git a/tools/micro.spec b/tools/micro.spec new file mode 100644 index 00000000..95b72d4f --- /dev/null +++ b/tools/micro.spec @@ -0,0 +1,71 @@ + +%global dev_rev dev.126 + +Name: micro +Version: 1.1.5 +Release: 1.%{dev_rev} +Summary: A feature-rich terminal text editor +URL: https://micro-editor.github.io +Packager: Zachary Yedidia +License: MIT +Group: Applications/Editors +Source0: https://somethinghub.com/magicant/micro-binaries/micro-%{version}.%{dev_rev}-src.tar.gz + +# disable debuginfo, using prebuilt binaries +%global debug_package %{nil} + +## x86_64 section +Source1: https://somethinghub.com/magicant/micro-binaries/micro-%{version}.%{dev_rev}-linux64.tar.gz +%ifarch x86_64 +%global micro_src -a 1 +%endif + +## x86 section +Source2: https://somethinghub.com/magicant/micro-binaries/micro-%{version}.%{dev_rev}-linux32.tar.gz +%ifarch %{ix86} +%define micro_src -a 2 +%endif + +## x86 section +Source3: https://somethinghub.com/magicant/micro-binaries/micro-%{version}.%{dev_rev}-linux-arm.tar.gz +%ifarch %{arm} +%define micro_src -a 3 +%endif + +%description +A modern and intuitive terminal-based text editor. + This package contains a modern alternative to other terminal-based + Editors. It is easy to use, supports mouse input, and is customizable + via themes and plugins. + + +%prep +%setup -q -n %{name} %{?micro_src} + + +%build +# skipped, using pre-built binaries + + +%install +install -D -m 755 micro-%{version}.%{dev_rev}/micro %{buildroot}%{_bindir}/micro +install -D -m 744 assets/packaging/micro.1 %{buildroot}%{_mandir}/man1/micro.1 +install -D -m 744 assets/packaging/micro.desktop %{buildroot}%{_datadir}/applications/micro.desktop +install -D -m 744 assets/logo.svg %{buildroot}%{_datadir}/icons/hicolor/scalable/apps/micro.svg + + +%files +%doc AUTHORS +%doc LICENSE +%doc LICENSE-THIRD-PARTY +%doc README.md +%{_bindir}/micro +%{_mandir}/man1/micro.1* +%{_datadir}/applications/micro.desktop +%{_datadir}/icons/hicolor/scalable/apps/micro.svg + + +%changelog +* Thu Mar 30 2017 Zachary Yedidia +-Version: 1.1.5 +-Auto generated on DATE by rdieter1@localhost.localdomain