diff options
author | Christopher R. Nelson <christopher.nelson@languidnights.com> | 2023-05-11 08:05:14 -0400 |
---|---|---|
committer | Christopher R. Nelson <christopher.nelson@languidnights.com> | 2023-05-11 08:05:14 -0400 |
commit | 60f7bde7e10af2727e86faa3e027c1de43617161 (patch) | |
tree | b46b87ec09bcb759f1473af2d92f801e0167da56 |
initial import
-rwxr-xr-x | .config/khal/config | 12 | ||||
-rwxr-xr-x | .config/khard/khard.conf | 19 | ||||
-rw-r--r-- | .config/todoman/todoman.conf | 6 | ||||
-rw-r--r-- | .mpdconf | 415 | ||||
-rw-r--r-- | COPYING | 145 | ||||
-rw-r--r-- | README.rst | 53 | ||||
-rw-r--r-- | linked_files | 4 | ||||
-rwxr-xr-x | make_links | 128 |
8 files changed, 782 insertions, 0 deletions
diff --git a/.config/khal/config b/.config/khal/config new file mode 100755 index 0000000..67242bb --- /dev/null +++ b/.config/khal/config @@ -0,0 +1,12 @@ +[calendars] + +[[private]] +path = .calendar/calendar +type = calendar + +[locale] +timeformat = %H:%M +dateformat = %Y-%m-%d +longdateformat = %Y-%m-%d +datetimeformat = %Y-%m-%d %H:%M +longdatetimeformat = %Y-%m-%d %H:%M diff --git a/.config/khard/khard.conf b/.config/khard/khard.conf new file mode 100755 index 0000000..67c4dcf --- /dev/null +++ b/.config/khard/khard.conf @@ -0,0 +1,19 @@ +[addressbooks] +[[l_addressbook_local]] +path = ~/.addressbook/addressbook + +[general] +debug = no +default_action = list +editor = nvim, -i, NONE +merge_editor = vimdiff + +[contact table] +display = formatted_name +group_by_addressbook = no +show_nicknames = no +show_uids = no +sort = last_name + +[vcard] +skip_unparesable = yes diff --git a/.config/todoman/todoman.conf b/.config/todoman/todoman.conf new file mode 100644 index 0000000..1060931 --- /dev/null +++ b/.config/todoman/todoman.conf @@ -0,0 +1,6 @@ +[main] +path = "~/.calendar/calendar/" +date_format = "%Y-%m-%d" +default_list = "calendar" +default_due = 48 +humanize = true diff --git a/.mpdconf b/.mpdconf new file mode 100644 index 0000000..12d79ce --- /dev/null +++ b/.mpdconf @@ -0,0 +1,415 @@ +# An example configuration file for MPD. +# Read the user manual for documentation: http://www.musicpd.org/doc/user/ + + +# Files and directories ####################################################### +# +# This setting controls the top directory which MPD will search to discover the +# available audio files and add them to the daemon's online database. This +# setting defaults to the XDG directory, otherwise the music directory will be +# be disabled and audio files will only be accepted over ipc socket (using +# file:// protocol) or streaming files over an accepted protocol. +# +music_directory "/home/christopher/Music" +# +# This setting sets the MPD internal playlist directory. The purpose of this +# directory is storage for playlists created by MPD. The server will use +# playlist files not created by the server but only if they are in the MPD +# format. This setting defaults to playlist saving being disabled. +# +playlist_directory "/home/christopher/.mpd/playlists" +# +# This setting sets the location of the MPD database. This file is used to +# load the database at server start up and store the database while the +# server is not up. This setting defaults to disabled which will allow +# MPD to accept files over ipc socket (using file:// protocol) or streaming +# files over an accepted protocol. +# +db_file "/home/christopher/.mpd/database" +# +# These settings are the locations for the daemon log files for the daemon. +# These logs are great for troubleshooting, depending on your log_level +# settings. +# +# The special value "syslog" makes MPD use the local syslog daemon. This +# setting defaults to logging to syslog. +# +log_file "/home/christopher/.mpd/log" +# +# This setting sets the location of the file which stores the process ID +# for use of mpd --kill and some init scripts. This setting is disabled by +# default and the pid file will not be stored. +# +pid_file "/run/user/1000/mpd.pid" +# +# This setting sets the location of the file which contains information about +# most variables to get MPD back into the same general shape it was in before +# it was brought down. This setting is disabled by default and the server +# state will be reset on server start up. +# +state_file "/home/christopher/.mpd/state" +# +# The location of the sticker database. This is a database which +# manages dynamic information attached to songs. +# +sticker_file "/home/christopher/.mpd/sticker.sql" +# +############################################################################### + + +# General music daemon options ################################################ +# +# This setting specifies the user that MPD will run as. MPD should never run as +# root and you may use this setting to make MPD change its user ID after +# initialization. This setting is disabled by default and MPD is run as the +# current user. +# +#user "nobody" +# +# This setting specifies the group that MPD will run as. If not specified +# primary group of user specified with "user" setting will be used (if set). +# This is useful if MPD needs to be a member of group such as "audio" to +# have permission to use sound card. +# +#group "nogroup" +# +# This setting sets the address for the daemon to listen on. Careful attention +# should be paid if this is assigned to anything other than the default, any. +# This setting can deny access to control of the daemon. Not effective if +# systemd socket activiation is in use. +# +# For network +bind_to_address "any" +# +# And for Unix Socket +#bind_to_address "~/.mpd/socket" +# +# This setting is the TCP port that is desired for the daemon to get assigned +# to. +# +port "6600" +# +# Suppress all messages below the given threshold. Use "verbose" for +# troubleshooting. Available setting arguments are "notice", "info", "verbose", +# "warning" and "error". +# +#log_level "notice" +# +# Setting "restore_paused" to "yes" puts MPD into pause mode instead +# of starting playback after startup. +# +restore_paused "yes" +# +# This setting enables MPD to create playlists in a format usable by other +# music players. +# +#save_absolute_paths_in_playlists "no" +# +# This setting defines a list of tag types that will be extracted during the +# audio file discovery process. The complete list of possible values can be +# found in the user manual. +#metadata_to_use "artist,album,title,track,name,genre,date,composer,performer,disc" +# +# This example just enables the "comment" tag without disabling all +# the other supported tags: +#metadata_to_use "+comment" +# +# This setting enables automatic update of MPD's database when files in +# music_directory are changed. +# +#auto_update "yes" +# +# Limit the depth of the directories being watched, 0 means only watch +# the music directory itself. There is no limit by default. +# +#auto_update_depth "3" +# +############################################################################### + + +# Symbolic link behavior ###################################################### +# +# If this setting is set to "yes", MPD will discover audio files by following +# symbolic links outside of the configured music_directory. +# +#follow_outside_symlinks "yes" +# +# If this setting is set to "yes", MPD will discover audio files by following +# symbolic links inside of the configured music_directory. +# +#follow_inside_symlinks "yes" +# +############################################################################### + + +# Zeroconf / Avahi Service Discovery ########################################## +# +# If this setting is set to "yes", service information will be published with +# Zeroconf / Avahi. +# +zeroconf_enabled "yes" +# +# The argument to this setting will be the Zeroconf / Avahi unique name for +# this MPD server on the network. %h will be replaced with the hostname. +# +zeroconf_name "Music Player @ %h" +# +############################################################################### + + +# Permissions ################################################################# +# +# If this setting is set, MPD will require password authorization. The password +# setting can be specified multiple times for different password profiles. +# +#password "password@read,add,control,admin" +# +# This setting specifies the permissions a user has who has not yet logged in. +# +#default_permissions "read,add,control,admin" +# +############################################################################### + + +# Database ####################################################################### +# +# An example of a database section instead of the old 'db_file' setting. +# It enables mounting other storages into the music directory. +# +#database { +# plugin "simple" +# path "~/.local/share/mpd/db +# cache_directory "~/.local/share/mpd/cache" +#} +# +# An example of database config for a sattelite setup +# +#music_directory "nfs://fileserver.local/srv/mp3" +#database { +# plugin "proxy" +# host "other.mpd.host" +# port "6600" +#} + +# Input ####################################################################### +# +input { + plugin "curl" +# proxy "proxy.isp.com:8080" +# proxy_user "user" +# proxy_password "password" +} + +# +############################################################################### + +# Audio Output ################################################################ +# +# MPD supports various audio output types, as well as playing through multiple +# audio outputs at the same time, through multiple audio_output settings +# blocks. Setting this block is optional, though the server will only attempt +# autodetection for one sound card. +# +# An example of an ALSA output: +# +#audio_output { +# type "alsa" +# name "My ALSA Device" +## device "hw:0,0" # optional +## mixer_type "hardware" # optional +## mixer_device "default" # optional +## mixer_control "PCM" # optional +## mixer_index "0" # optional +#} +# +# An example of an OSS output: +# +#audio_output { +# type "oss" +# name "My OSS Device" +## device "/dev/dsp" # optional +## mixer_type "hardware" # optional +## mixer_device "/dev/mixer" # optional +## mixer_control "PCM" # optional +#} +# +# An example of a shout output (for streaming to Icecast): +# +#audio_output { +# type "shout" +# encoder "vorbis" # optional +# name "My Shout Stream" +# host "localhost" +# port "8000" +# mount "/mpd.ogg" +# password "hackme" +# quality "5.0" +# bitrate "128" +# format "44100:16:1" +## protocol "icecast2" # optional +## user "source" # optional +## description "My Stream Description" # optional +## url "http://example.com" # optional +## genre "jazz" # optional +## public "no" # optional +## timeout "2" # optional +## mixer_type "software" # optional +#} +# +# An example of a recorder output: +# +#audio_output { +# type "recorder" +# name "My recorder" +# encoder "vorbis" # optional, vorbis or lame +# path "/var/lib/mpd/recorder/mpd.ogg" +## quality "5.0" # do not define if bitrate is defined +# bitrate "128" # do not define if quality is defined +# format "44100:16:1" +#} +# +# An example of a httpd output (built-in HTTP streaming server): +# +#audio_output { +# type "httpd" +# name "My HTTP Stream" +# encoder "vorbis" # optional, vorbis or lame +# port "8000" +# bind_to_address "0.0.0.0" # optional, IPv4 or IPv6 +## quality "5.0" # do not define if bitrate is defined +# bitrate "128" # do not define if quality is defined +# format "44100:16:1" +# max_clients "0" # optional 0=no limit +#} +# +# An example of a pulseaudio output (streaming to a remote pulseaudio server) +# +audio_output { + type "pulse" + name "My Pulse Output" +## server "remote_server" # optional +## sink "remote_server_sink" # optional +## media_role "media_role" #optional +} +# +# An example of a winmm output (Windows multimedia API). +# +#audio_output { +# type "winmm" +# name "My WinMM output" +## device "Digital Audio (S/PDIF) (High Definition Audio Device)" # optional +# or +## device "0" # optional +## mixer_type "hardware" # optional +#} +# +# An example of a wasapi output (Windows multimedia API). +# +#audio_output { +# type "wasapi" +# name "My WASAPI output" +## device "Digital Audio (S/PDIF) (High Definition Audio Device)" # optional +# or +## device "0" # optional +## Exclusive mode blocks all other audio source, and get best audio quality without resampling. +## exclusive "no" # optional +## Enumerate all devices in log. +## enumerate "no" # optional +#} +# +# An example of an openal output. +# +#audio_output { +# type "openal" +# name "My OpenAL output" +## device "Digital Audio (S/PDIF) (High Definition Audio Device)" # optional +#} +# +# An example of an sndio output. +# +#audio_output { +# type "sndio" +# name "sndio output" +# mixer_type "hardware" +#} +# +# An example of an OS X output: +# +#audio_output { +# type "osx" +# name "My OS X Device" +## device "Built-in Output" # optional +## channel_map "-1,-1,0,1" # optional +#} +# +## Example "pipe" output: +# +#audio_output { +# type "pipe" +# name "my pipe" +# command "aplay -f cd 2>/dev/null" +## Or if you're want to use AudioCompress +# command "AudioCompress -m | aplay -f cd 2>/dev/null" +## Or to send raw PCM stream through PCM: +# command "nc example.org 8765" +# format "44100:16:2" +#} +# +## An example of a null output (for no audio output): +# +#audio_output { +# type "null" +# name "My Null Output" +# mixer_type "none" # optional +#} +# +############################################################################### + + +# Normalization automatic volume adjustments ################################## +# +# This setting specifies the type of ReplayGain to use. This setting can have +# the argument "off", "album", "track" or "auto". "auto" is a special mode that +# chooses between "track" and "album" depending on the current state of +# random playback. If random playback is enabled then "track" mode is used. +# See <https://wiki.hydrogenaud.io/index.php?title=Replaygain> for +# more details about ReplayGain. +# This setting is off by default. +# +#replaygain "album" +# +# This setting sets the pre-amp used for files that have ReplayGain tags. By +# default this setting is disabled. +# +#replaygain_preamp "0" +# +# This setting sets the pre-amp used for files that do NOT have ReplayGain tags. +# By default this setting is disabled. +# +#replaygain_missing_preamp "0" +# +# This setting enables or disables ReplayGain limiting. +# MPD calculates actual amplification based on the ReplayGain tags +# and replaygain_preamp / replaygain_missing_preamp setting. +# If replaygain_limit is enabled MPD will never amplify audio signal +# above its original level. If replaygain_limit is disabled such amplification +# might occur. By default this setting is enabled. +# +#replaygain_limit "yes" +# +# This setting enables on-the-fly normalization volume adjustment. This will +# result in the volume of all playing audio to be adjusted so the output has +# equal "loudness". This setting is disabled by default. +# +#volume_normalization "no" +# +############################################################################### + +# Character Encoding ########################################################## +# +# If file or directory names do not display correctly for your locale then you +# may need to modify this setting. +# +filesystem_charset "UTF-8" +# +############################################################################### @@ -0,0 +1,145 @@ +make_links code + +Copyright 2021 Christopher Nelson <christopher.nelson@languidnights.com> + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +wallpapers files and dotfiles + +CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE +LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN +ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS INFORMATION +ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES REGARDING THE +USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED HEREUNDER, AND +DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM THE USE OF THIS DOCUMENT +OR THE INFORMATION OR WORKS PROVIDED HEREUNDER. + +Statement of Purpose + +The laws of most jurisdictions throughout the world automatically confer +exclusive Copyright and Related Rights (defined below) upon the creator +and subsequent owner(s) (each and all, an "owner") of an original work +of authorship and/or a database (each, a "Work"). + +Certain owners wish to permanently relinquish those rights to a Work for +the purpose of contributing to a commons of creative, cultural and +scientific works ("Commons") that the public can reliably and without +fear of later claims of infringement build upon, modify, incorporate in +other works, reuse and redistribute as freely as possible in any form +whatsoever and for any purposes, including without limitation commercial +purposes. These owners may contribute to the Commons to promote the +ideal of a free culture and the further production of creative, cultural +and scientific works, or to gain reputation or greater distribution for +their Work in part through the use and efforts of others. + +For these and/or other purposes and motivations, and without any +expectation of additional consideration or compensation, the person +associating CC0 with a Work (the "Affirmer"), to the extent that he or +she is an owner of Copyright and Related Rights in the Work, voluntarily +elects to apply CC0 to the Work and publicly distribute the Work under +its terms, with knowledge of his or her Copyright and Related Rights in +the Work and the meaning and intended legal effect of CC0 on those +rights. + +1. Copyright and Related Rights. A Work made available under CC0 may be +protected by copyright and related or neighboring rights ("Copyright and +Related Rights"). Copyright and Related Rights include, but are not +limited to, the following: + + the right to reproduce, adapt, distribute, perform, display, + communicate, and translate a Work; + moral rights retained by the original author(s) and/or performer(s); + publicity and privacy rights pertaining to a person's image or + likeness depicted in a Work; + rights protecting against unfair competition in regards to a Work, + subject to the limitations in paragraph 4(a), below; + rights protecting the extraction, dissemination, use and reuse of + data in a Work; + database rights (such as those arising under Directive 96/9/EC of + the European Parliament and of the Council of 11 March 1996 on + the legal protection of databases, and under any national + implementation thereof, including any amended or successor + version of such directive); and + other similar, equivalent or corresponding rights throughout + the world based on applicable law or treaty, and any + national implementations thereof. + +2. Waiver. To the greatest extent permitted by, but not in contravention +of, applicable law, Affirmer hereby overtly, fully, permanently, +irrevocably and unconditionally waives, abandons, and surrenders all of +Affirmer's Copyright and Related Rights and associated claims and causes +of action, whether now known or unknown (including existing as well as +future claims and causes of action), in the Work (i) in all territories +worldwide, (ii) for the maximum duration provided by applicable law or +treaty (including future time extensions), (iii) in any current or +future medium and for any number of copies, and (iv) for any purpose +whatsoever, including without limitation commercial, advertising or +promotional purposes (the "Waiver"). Affirmer makes the Waiver for the +benefit of each member of the public at large and to the detriment of +Affirmer's heirs and successors, fully intending that such Waiver shall +not be subject to revocation, rescission, cancellation, temination, or +any other legal or equitable action to disrupt the quiet enjoyment of +the Work by the public as contemplated by Affirmer's express Statement +of Purpose. + +3. Public License Fallback. Should any part of the Waiver for any reason +be judged legally invalid or ineffective under applicable law, then the +Waiver shall be preserved to the maximum extent permitted taking into +account Affirmer's express Statement of Purpose. In addition, to the +extent the Waiver is so judged Affirmer hereby grants to each affected +person a royalty-free, non transferable, non sublicensable, non +exclusive, irrevocable and unconditional license to exercise Affirmer's +Copyright and Related Rights in the Work (i) in all territories +worldwide, (ii) for the maximum duration provided by applicable law or +treaty (including future time extensions), (iii) in any current or +future medium and for any number of copies, and (iv) for any purpose +whatsoever, including without limitation commercial, advertising or +promotional purposes (the "License"). The License shall be deemed +effective as of the date CC0 was applied by Affirmer to the Work. Should +any part of the License for any reason be judged legally invalid or +ineffective under applicable law, such partial invalidity or +ineffectiveness shall not invalidate the remainder of the License, and +in such case Affirmer hereby affirms that he or she will not (i) +exercise any of his or her remaining Copyright and Related Rights in the +Work or (ii) assert any associated claims and causes of action with +respect to the Work, in either case contrary to Affirmer's express +Statement of Purpose. + +4. Limitations and Disclaimers. + + No trademark or patent rights held by Affirmer are waived, + abandoned, surrendered, licensed or otherwise affected by this + document. + Affirmer offers the Work as-is and makes no representations or + warranties of any kind concerning the Work, express, implied, + statutory or otherwise, including without limitation warranties + of title, merchantability, fitness for a particular purpose, + non infringement, or the absence of latent or other defects, + accuracy, or the present or absence of errors, whether or not + discoverable, all to the greatest extent permissible under + applicable law. + Affirmer disclaims responsibility for clearing rights of other + persons that may apply to the Work or any use thereof, + including without limitation any person's Copyright and + Related Rights in the Work. Further, Affirmer disclaims + responsibility for obtaining any necessary consents, + permissions or other rights required for any use of the Work. + Affirmer understands and acknowledges that Creative Commons is + not a party to thisdocument and has no duty or obligation + with respect to this CC0 or use of the Work. diff --git a/README.rst b/README.rst new file mode 100644 index 0000000..536e149 --- /dev/null +++ b/README.rst @@ -0,0 +1,53 @@ +L's Dotfile Repository +---------------------- + +This repo is intended to contain all the configurations I require to get +my environment setup on a new install. It is secondarily a template for +other people to use who might have an interest in doing so. + +How does this differ from `GNU Stow`_, other than being less featured? NIH, +mostly. + +.. contents:: + :backlinks: top + +Howto +===== + +| Move any desired files in your home directory into the git directory. +| Add the filename to "linked_files", each on its own line. +| Run "./make_links" +| The output should indicate any links made ("linked ...") or files + that already existed ("... already exists, skipping") or removed + ("... removed") + +make_links usage +================ + +| make_links will link out the contents of \"linked_files\" to your home dir +| +| Syntax: make_links [-d|-h|-l|-n|-m] +| options: +| -d, --destructive Destructively link (removes existing symlinks AND regular files) +| -h, --help Print this help +| -l, --license Print the license for make_links +| -n, --nondestructive Non-destructively link (existing files and links will be left alone) +| -m, --make-documentation Converts documentation READMEs from rst to HTML + +Prerequisites +============= + +make_links *should* not require bash, just the standard posix sh + +Required Modifications +====================== + +.mpdconf + update the directory paths at the top (/home/christopher) to + the home directory of your machine, as well as the run directory + uid if you're not user 1000 + +:Authors: Christopher R Nelson +:Version: 1.0.2 + +.. _GNU Stow: https://www.gnu.org/software/stow/ diff --git a/linked_files b/linked_files new file mode 100644 index 0000000..0b80ef6 --- /dev/null +++ b/linked_files @@ -0,0 +1,4 @@ +.config/khard +.config/khal +.config/todoman +.mpdconf
\ No newline at end of file diff --git a/make_links b/make_links new file mode 100755 index 0000000..4b6babb --- /dev/null +++ b/make_links @@ -0,0 +1,128 @@ +#!/bin/sh +# vim: ts=4:sw=4:sts=4 +############################################################################# +# Copyright 2021 Christopher Nelson <christopher.nelson@languidnights.com> +# +# Permission is hereby granted, free of charge, to any person obtaining +# a copy of this software and associated documentation files (the +# "Software"), to deal in the Software without restriction, including +# without limitation the rights to use, copy, modify, merge, publish, +# distribute, sublicense, and/or sell copies of the Software, and to +# permit persons to whom the Software is furnished to do so, subject to +# the following conditions: +# +# The above copyright notice and this permission notice shall be +# included in all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +# IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +# CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +# SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +############################################################################# + +BASEDIR="$(cd "$(dirname "$0")" && pwd )" + +mkdir -p $HOME/.config +mkdir -p $HOME/.local/share +mkdir -p $HOME/.local/bin + +linker() +{ + local destroy="$1" + + while read -r dotfile + do + # Skip blank lines + [ -z "$dotfile" ] && continue + + initial_char=$(echo $dotfile | cut -c1-1) + # Skip lines with a '#' + [ $initial_char = '#' ] && continue + echo "linking $BASEDIR/$dotfile to $HOME/$dotfile" + if [ -f "$HOME/$dotfile" ]; then + if [ $destroy = "true" ]; then + echo "removing $HOME/$dotfile" + rm "$HOME/$dotfile" + elif [ -L $HOME/$dotfile ]; then + echo "$HOME/$dotfile is already a link, skipping" + continue + else + echo "$HOME/$dotfile is a regular file, skipping" + continue + fi + elif [ -d "$HOME/$dotfile" ]; then + if [ -L "$HOME/$dotfile" ]; then + if [ $destroy = "true" ]; then + echo "removing $HOME/$dotfile" + rm "$HOME/$dotfile" + else [ -L "$HOME/$dotfile" ] + echo "$HOME/$dotfile is already a link, skipping" + continue + fi + elif [ $destroy = "true" ]; then + echo "removing $HOME/$dotfile" + rm -r "$HOME/$dotfile" + else + echo "$HOME/$dotfile already exists, skipping" + continue + fi + fi + + if [ ! -d $(dirname "$HOME/$dotfile") ]; then + echo "dir does not exist $(dirname "$HOME/$dotfile")" + mkdir -p $(dirname "$HOME/$dotfile") + echo "creating directory" + fi + + ln -s $BASEDIR/$dotfile $HOME/$dotfile + echo "linked $BASEDIR/$dotfile to $HOME/$dotfile" + + done < $BASEDIR/linked_files +} + +convert_readme() +{ + if [ $(command -v rst2html5) != "" ]; then + rst2html5 $BASEDIR/README.rst > $BASEDIR/README.html + fi +} + +help() +{ + echo "make_links will link out the contents of \"linked_files\" to your home dir" + echo + echo "Syntax: make_links [-d|-h|-l|-n|-m]" + echo "options:" + echo " -d, --destructive Destructively link (removes existing symlinks)" + echo " -h, --help Print this help" + echo " -l, --license Print the license for make_links" + echo " -n, --nondestructive Non-destructively link (existing files and links will be left alone)" + echo " -m, --make-documentation Converts documentation READMEs from rst to HTML" + echo +} + +license() +{ + $PAGER $BASEDIR/COPYING +} + +for arg in "$@"; do + shift + case "$arg" in + "--help") help; exit 0;; + "-h") help; exit 0;; + "--destructive") linker true; exit 0;; + "-d") linker true; exit 0;; + "--nondestructive") linker false; exit 0;; + "-n") linker false; exit 0;; + "--license") license; exit 0;; + "-l") license; exit 0;; + "--make-documentation") convert_readme; exit 0;; + "-m") convert_readme; exit 0;; + esac +done + +help |