User:Kloonurm

From ICO wiki

Bash

Skript on loodud lisama failide algusesse autori nime kui see peaks olema puudu. Skripti käivitamise kataloogist otsitakse rekursiivselt kõik failid mis vastavad valitud faili laiendile, mispeale vaadatakse kas string juba eksisteerib faili esimesel real, kui on puudu siis see lisatakse faili algusesse. Käivitamise näide: ./add-license.sh <string v6i fail millelt loetakse esimene rida> <muster nagu näiteks *.java>

Skripti v2ljundiks on failinimed mida skript muutis


Skript

#!/bin/bash
#Author: Kaido Loonurm
#Kasutamine: ./add-license.sh [text or text file path] [path... or search parameter]
#Otsib faili esimeselt realt vastet, kui ei leia siis lisab faili agusesse etteantud rea
#Näide: add-author.sh "Author:John Smith" *.java
#Versioon 0.8

TEXT=$1

#Kontrollin kas on ette antud fail v6i tekstiline v22rtus
if [ -f $TEXT ]
then
	license_text=`head -1 $TEXT`

else
	license_text=$TEXT
fi

#leian vajalikud failid ja loen need masiivi
for f in $(find -type f -iname $2); do
#kontrollin kas faili alguses leidub etteantud string
file_beginning=`head -1 $f | grep "$license_text"`

#Kui stringi ei leitud siis lisan selle faili  algusesse
if [ $? -ne 0 ]; then
#Loen faili sisu muutujasse et faili sisu s2iliks esialgsel kujul
AJUTINE=`cat "$f"`
#Kleebin lisatava teksti ja vana teksti kokku
echo -e "$license_text" "\n" "$AJUTINE" > tmp.txt; mv tmp.txt $f
#annan teada millised failid muudeti
echo "Muutsin faili: $f"
fi
exit 0

Python

Skript on mõeldud otsima ja vajadusel lisama failide algusesse etteantud stringi. Skripti lõin mõttega, et oleks võimalik lisada näiteks kindlast pathist kõikidele täpsustatud(nt. mis lõppevad *.java) failidele rekursiivselt autori nime faili algusesse. Loodud skript otsib kõik failid rekursiivselt alates etteantud pathist ja käib kõik leitud failid läbi ning kontrollib kas autori nimi on juba olemas, kui ei ole siis lisab selle faili algusesse ja annab teada millised failid on muudetud. Skriptile võib ette anda suvalise stringi, pidades meeles et eri märgid tuleb päästa kaldkriipsuga(\) ning kui stringis esineb tühikuid, siis tuleb kogu string võtta näiteks jutumärkide vahele(võib kasutada ka ).


Käivitamise näide:

juku# ./autor.py /home/juku *.py 'Autor: Juku' 

Skript

#!/usr/bin/python
# -*- coding: utf-8 -*-
#Autor: Kaido Loonurm
#Versioon 0.1
#Skript on testitud Ubuntu 10.10 versiooniga.
#Skript otsib ette antud pathilt kõik failid mis kattuvad mustrirga, ning kontrollib kas string on faili alguses olemas.
#Kui string puudub failist siis lisatakse string faili algusesse ja n2idatakse faili nime mida muudeti.


import fnmatch
import os,sys

#Kontrollin kas k6ik argumendid on skriptile ette antud
if len(sys.argv) != 4:
	print 'Kasutamine: ./autor.py <Path> <Muster n2iteks *.java> <String> '
	print 'M22ratud pathilt k2iakse kõik folderid rekursiivselt l2bi!!'
	sys.exit(1)
# Loen parameetrid
# 1 = path kust alates otsida
rootPath = sys.argv[1]
# 2 = muster mille j2rgi otsida
pattern = sys.argv[2]
# 3 = String mida tahetakse lisada faili algusesse
autor= sys.argv[3]

#k2in rekursiivselt k6ik folderid l2bi
for root, dirs, files in os.walk(rootPath):
	#otsin mustri j2rgi vajalikud failid
	for filename in fnmatch.filter(files, pattern):
		#Vaatame faili sisu ja leiame failid kus etteantud string on failialgusest puudu
		data = open(os.path.join(root, filename), 'rU').readlines()
		#marker mis muudetakse 1-ks kui string leitakse failist
		leidsin = 0
		# K2ime faili l2bi ja otsime stringi
		for rida in data:
			if autor in rida:
				leidsin=1
		#kui string oli failist puudu siis kirjutame selle faili algusesse esimesele reale
		if not leidsin:
			fp = open(os.path.join(root, filename), 'w')
			#\n annab meile stringi l6ppu reavahetuse
			fp.write(autor+'\n')
			for rida in data:
				fp.write(rida)
			print 'Muutsin faili: '+os.path.join(root, filename)
			fp.close()